Source : Script Menu Base C

EROOTIIK

VIP
Inscription
2 Novembre 2011
Messages
4 176
Réactions
3 454
Points
24 883
RGCoins
75
You must be registered for see images attach

Vu qu'il y a maintenant un compilateur pour les scripts, j'en ai profité pour convertir ma base asm en C, j'ai aussi mis quelques options pour vous aider à comprendre cette base, avec un petit exemple d'édition de mémoire grâce à l'adresse slow motion release par @Popomo malheureusement j'ai pas trouvé d'autres adresses pour avoir un code plus complexe pour l'édition de mémoire, l'option pour changer le niveau contient un bon exemple d'utilisation des variables globales.

La source est disponible ici :
Le compilateur :
 
Dernière édition:
Merci c'est ce que je chercher.

Mais quesqu'un nooby comme moi va bien pouvoir en faire.....:trollface:
 
You must be registered for see images attach

Vu qu'il y a maintenant un compilateur pour les scripts, j'en ai profité pour convertir ma base asm en C, j'ai aussi mis quelques options pour vous aider à comprendre cette base, avec un petit exemple d'édition de mémoire grâce à l'adresse slow motion release par @Popomo malheureusement j'ai pas trouvé de source pour avoir un code plus complexe pour l'édition de mémoire, l'option pour changer le niveau contient un bon exemple d'utilisation des variables globales.

La source est disponible ici :
Thank's pour le partage :ok:.
 
J'ai mis à jour la base de façon à ce qu'on soit plus obligé d'utiliser mes fichiers const32.h natives32.h, j'ai corrigé l'avertissement à la compilation, et j'ai corrigé un soucis de placement de texte avec les bools, après vérification dans l'eboot avec ida il s'avère que les déclarations des natives release avec le compilateur fonctionnent aussi du coup j'ai tout remis comme avant, à la base je les avaient changé par les déclarations utilisés dans les scripts de R*.
 
J'ai mis à jour la base de façon à ce qu'on soit plus obligé d'utiliser mes fichiers const32.h natives32.h, j'ai corrigé l'avertissement à la compilation, et j'ai corrigé un soucis de placement de texte avec les bools, après vérification dans l'eboot avec ida il s'avère que les déclarations des natives release avec le compilateur fonctionnent aussi du coup j'ai tout remis comme avant, à la base je les avaient changé par les déclarations utilisés dans les scripts de R*.

mPFK6wOiTpyIQ0Y4EMLhNw.png

Cool, merci pour le temps que tu passes a faire tous sa.
 
Tiens moi j'ai une question pour le spawnCar, si je prends le vieux code de mon sprx les autres joueurs pourront pas voir le vehicle, tu coup tu utilises quel native pour le rendre visible ?

Et comme je suis sympa je file une merde que je vient de tester et qui a l'air d'etre pas trop mal.

Code:
bool nfs;
void _nfs() {
    Ped playerPed = PLAYER_PED_ID();
    Vehicle vehicle = GET_VEHICLE_PED_IS_USING(playerPed);
    if (IS_PED_IN_ANY_VEHICLE(playerPed, 0)) {
        if (IS_CONTROL_PRESSED(2, INPUT_FRONTEND_RT) && IS_CONTROL_PRESSED(2, INPUT_FRONTEND_LT))
            SET_VEHICLE_FORWARD_SPEED(vehicle, 0);

        if (IS_CONTROL_JUST_PRESSED(2, INPUT_FRONTEND_LT)) //justarriere
            SET_VEHICLE_FORWARD_SPEED(vehicle, 0);
        if (IS_CONTROL_PRESSED(2, INPUT_FRONTEND_LT)) { //arriere
            float Speed = GET_ENTITY_SPEED(vehicle) + 1.0f;
            SET_VEHICLE_FORWARD_SPEED(vehicle, -Speed);
        }
        if (IS_CONTROL_PRESSED(2, INPUT_FRONTEND_RT)) { //avant
            float Speed = GET_ENTITY_SPEED(vehicle) + 1.0f;
            SET_VEHICLE_FORWARD_SPEED(vehicle, Speed);
        }
    }
    if (IS_PED_IN_ANY_VEHICLE(playerPed, 0) && !IS_VEHICLE_ON_ALL_WHEELS(vehicle)) {
        SET_INPUT_EXCLUSIVE(2, INPUT_SCRIPT_LB);
        if (IS_CONTROL_PRESSED(2, INPUT_SCRIPT_LB)) {
            vector3 Rot = GET_ENTITY_ROTATION(vehicle, 2);
            float RotEntity = Rot.z + 1.0f;
            SET_ENTITY_ROTATION(vehicle, Vector3(Rot.x, Rot.y, RotEntity), 2, 1);
        }
        if (IS_CONTROL_PRESSED(2, INPUT_SCRIPT_RB)) {
            vector3 Rot = GET_ENTITY_ROTATION(vehicle, 2);
            float RotEntity = Rot.z - 1.0f;
            SET_ENTITY_ROTATION(vehicle, Vector3(Rot.x, Rot.y, RotEntity), 2, 1);
        }
        if (IS_CONTROL_PRESSED(2, INPUT_FRONTEND_RT) && IS_CONTROL_PRESSED(2, INPUT_FRONTEND_LT))
            SET_VEHICLE_FORWARD_SPEED(vehicle, 0);
        if (IS_CONTROL_JUST_PRESSED(2, INPUT_FRONTEND_LT)) //justarriere
            SET_VEHICLE_FORWARD_SPEED(vehicle, 0);
        if (IS_CONTROL_PRESSED(2, INPUT_FRONTEND_LT)) { //arriere
            float Speed = GET_ENTITY_SPEED(vehicle) + 1.0f;
            SET_VEHICLE_FORWARD_SPEED(vehicle, -Speed);
        }
        if (IS_CONTROL_PRESSED(2, INPUT_FRONTEND_RT)) { //avant
            float Speed = GET_ENTITY_SPEED(vehicle) + 1.0f;
            SET_VEHICLE_FORWARD_SPEED(vehicle, Speed);
        }
    }
}
 
You must be registered for see images attach

Vu qu'il y a maintenant un compilateur pour les scripts, j'en ai profité pour convertir ma base asm en C, j'ai aussi mis quelques options pour vous aider à comprendre cette base, avec un petit exemple d'édition de mémoire grâce à l'adresse slow motion release par @Popomo malheureusement j'ai pas trouvé d'autres adresses pour avoir un code plus complexe pour l'édition de mémoire, l'option pour changer le niveau contient un bon exemple d'utilisation des variables globales.

La source est disponible ici :
Le compilateur :
Merci du partage
 
Encore 1 gros merci a erootiik pour cette base, je m'eclate bien avec, elle est simple a comprendre et c'est simple aussi de mettre les chose en place.

Si des fois sa interesse des gens spawn_char_option(......);
enjoy.

Code:
void draw_option_char_setup(const char* text) {
    SET_TEXT_RIGHT_JUSTIFY(1);
    draw_text_setup();
    SET_TEXT_WRAP(0, 0.924 + safezoneX);
    if (currentOption + 1 == optionCount)
        text_color_purple();
    else
        text_color_white();
    BEGIN_TEXT_COMMAND_DISPLAY_TEXT("STRING");
    ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text);
    END_TEXT_COMMAND_DISPLAY_TEXT(Vector2(1 + safezoneX, textPosY + safezoneY));
}
void add_char(const char* text, int *var, char** display, int* hash, int min, int max, int interval, int intervalFast, int index) {
    if (draw_option(text, false)) {
        if (currentOption + 1 == optionCount) {
            add_instructional_button(SFB_BUTTON_DPAD_LEFT_RIGHT, "HEIST_IB_CONFPL");
            if (fast)
                interval = intervalFast;
            if (leftPressed) {
                *var -= interval;
                if (*var < min)
                    *var = max;
            }
            else if (rightPressed) {
                *var += interval;
                if (*var > max)
                    *var = min;
            }
            if (xPressed) {
                switch (index) {
                case 1:
                    hash_veh = hash[*var];
                    spawnVehicle = true;
                    return;
                case 2: //ped
                    return;
                case 3: //obj
                    return;
                }
            }
        }
        draw_option_char_setup(display[*var]);
    }
}
uint hash_veh;
bool spawnVehicle;
int spawnedVeh;
int scrollSuperSport;
char* d_VehSuperSport[11] = { "Truffade Adder", "Overflod Entity XF", "Grotti Cheetah", "Pegassi Infernus", "Pegassi Vacca", "Vapid Bullet", "Coil Voltic", "Pegassi Zentorno", "Grotti Turismo R", "Pegassi Osiris", "Progen T20" };
int h_VehSuperSport[11] = { 0xB779A091, 0xB2FE5CF9, 0xB1D95DA0, 0x18F25AC7, 0x142E0DC3, 0x9AE6DDA1, 0x9F4B77BE, 0xAC5DF515, 0x185484E1, 0x767164D6, 0x6322B39A };

add_char("Super Sport", &scrollSuperSport, d_VehSuperSport, h_VehSuperSport, 0, 10, 1, 1, 1);
 
Pour utiliser des caractères spéciaux, genre des lettres avec accents vous devez changer l'encodage de chaque fichier contenant des caractères spéciaux en allant dans Fichier > Options d'enregistrement avancées... puis sélectionnez "Unicode (UTF-8 sans signature) - Page de code 65001" ou "Unicode (UTF-8 without signature) - Ccodepage 65001" en anglais, rajoute ça au sujet.

À noter que la structure des fichiers script est la même pour PS4 et donc que vous pourrez récupérer votre menu sur cette dernière sans pratiquement rien changer.
 
Dernière édition:
À noter que la structure des fichiers script est la même pour PS4 et donc que vous pourrez récupérer votre menu sur cette dernière sans pratiquement rien changer.

Le probleme c'est avec quoi tu ouvres(si tu arrives a aller le chercher) update.rpf, ni open4, ni liberty5 fait sa.
Sinon ouais normalement c'est les meme native que la version pc.
 
Retour
Haut