Vicolaships Posté(e) le 17 avril 2007 Signaler Partager Posté(e) le 17 avril 2007 Le Langage SCM 1. Matériel et connaissances nécessaires 1.1 Matériel: Vous aurez besoin de SannyBuilder et de San Andreas 1.2 Connaissances: Vous pouvez très bien partir de rien, moi même n'ayant absolument aucune autre notion de code que le SCM 2. Création d'un SCM basic 2.1 Démarrage: Démarrer SannyBuilder, charger le fichier main.scm contenu dans le dossier */San Andreas/data/script Un chargement va s'effectuer le main.scm sera chargé, vous pouvez constater la longueur considérable du code (Environ 535.000 lignes). Mais nous n'allons pas travailler sur ce main là, nous allons supprimer l'intégralité du contenu du fichier (Ctrl + A > Supprimer). Nous allons maintenant insérez ce que j'appelle un Main Basic, c'est un code très court qui ne contient aucune missions aucun paquet cachés etc... On à seulement gardé le strict minimum. DEFINE OBJECTS 0 DEFINE MISSIONS 0 DEFINE EXTERNAL_SCRIPTS 0 DEFINE UNKNOWN_EMPTY_SEGMENT 0 DEFINE UNKNOWN_THREADS_MEMORY 0 //-------------MAIN--------------- 03A4: name_thread 'MAIN' 042C: set_total_missions_to 0 030D: set_total_mission_points_to 187 0997: (unknown) 1339 01F0: set_max_wanted_level_to 6 0111: set_wasted_busted_check_to 0 00C0: set_current_time 8 0 016A: fade 0 10 ms 01B6: set_weather 0 04BB: select_interior 0 // select render area 04E4: unknown_refresh_game_renderer_at 2488.5623 -1666.8645 03CB: set_camera 2488.5623 -1666.8645 13.3757 0053: $PLAYER_CHAR = create_player #NULL at 2488.5623 -1668.8645 12.8757 :MAIN 07AF: $PLAYER_GROUP = player $PLAYER_CHAR group 01F5: $PLAYER_ACTOR = create_emulated_actor_from_player $PLAYER_CHAR 0373: set_camera_directly_behind_player 0173: set_actor $PLAYER_ACTOR z_angle_to 262.0 0001: wait 100 087B: set_player $PLAYER_CHAR clothes "VEST" "VEST" body_part 0 087B: set_player $PLAYER_CHAR clothes "JEANSDENIM" "JEANS" body_part 2 087B: set_player $PLAYER_CHAR clothes "SNEAKERBINCBLK" "SNEAKER" body_part 3 087B: set_player $PLAYER_CHAR clothes "PLAYER_FACE" "HEAD" body_part 1 070D: build_player $PLAYER_CHAR 016C: restart_if_wasted at 2027.77 -1420.52 15.99 angle 137.0 unknown 0 016D: restart_if_busted at 1550.6801 -1675.49 14.51 angle 90.0 unknown 0 016A: fade 1 1000 ms 004E: end_thread Insérez ce code dans le main et compilez (F7), cela permet d'enregistrer votre fichier en quelque sorte. Démarrez une partie (F8 dans Sanny) ou par un raccourci (SannyBuilder et le main peuvent rester ouvert). Comme vous pouvez le voir vous commencez près de la maison de CJ et tout est normal sauf qu'il n'y à pas de vidéo d'intro, de missions etc... 2.2 Premiers abords: Nous allons maintenant de tenter de comprendre ce langage, tout d'abord on remarque qu'il est en Anglais (logique) donc si vous avez du mal avec l'anglais utilisez un outil de traduction. Prenons les choses dans l'ordre : DEFINE OBJECTS 0 DEFINE MISSIONS 0 DEFINE EXTERNAL_SCRIPTS 0 // Use -1 in order not to compile AAA script DEFINE UNKNOWN_EMPTY_SEGMENT 0 DEFINE UNKNOWN_THREADS_MEMORY 0 > Sans grand interet DÉFINIR LES OBJETS 0 DÉFINIR LES MISSIONS 0 DÉFINIR l'utilisation -1 de scripts externes 0 // pour ne pas compiler le script AAA DÉFINISSENT UNKNOWN_EMPTY_SEGMENT 0 DÉFINIR UNKNOWN_THREADS_MEMORY 0 On passe à la suite qui va être plus intéressante, maintenant je ne fais plus une traduction Google (qui reste limité) mais je la fais moi même. Je ne garde que les lignes que j'ai compris / qui sont importantes 042C: set_total_missions_to 0 01F0: set_max_wanted_level_to 6 00C0: set_current_time 8 0 set_weather 0 fade 0 10 select_interior 0 $PLAYER_CHAR = Player.Create(#NULL, 2488.56, -1668.86, 12.87) $PLAYER_ACTOR = Actor.EmulateFromPlayer($PLAYER_CHAR) Camera.SetBehindPlayer Actor.Angle($PLAYER_ACTOR) = 262.0 wait 1 Player.SetClothes($PLAYER_CHAR, "VEST", "VEST", Torso) Player.SetClothes($PLAYER_CHAR, "JEANSDENIM", "JEANS", Legs) Player.SetClothes($PLAYER_CHAR, "SNEAKERBINCBLK", "SNEAKER", Shoes) Player.SetClothes($PLAYER_CHAR, "PLAYER_FACE", "HEAD", Head) Player.Build($PLAYER_CHAR) wait 1 016C: restart_if_wasted at 2027.77 -1420.52 15.99 angle 137.0 unknown 0 016D: restart_if_busted at 1550.6801 -1675.49 14.51 angle 90.0 unknown 0 07FB: set_interior 'MADDOGS' accessible 0 // Madd Dogg's Crib fade 1 1000 042C: set_total_missions_to 0 042C: C'est le préfixe du code, parfois il n'y est pas car SannyBuilder raccourci l'Opcode set_total_mission_to 0: Il n'y a aucune mission 01F0: set_max_wanted_level_to 6: Le niveau maximal de recherche est de 6 (si la valeur est à zéro on ne peut plus avoir de police au trousses) [...] fade 0 10: Fade = fondu, un fondu c'est quand on passe du transparent vers une couleur, d'une couleur vers du transparent ou d'une couleur vers du transparent. C'est une sorte de calque qu'on rajoute par dessus l'écran. Un fade 0 sera un fondu qui ira du transparent vers le noir. Un fade 1 sera un fondu qui ira du noir vers le transparent (par défaut). La deuxième valeur est exprimé en milisecondes (1000 ms = 1s) fade 0 10: Fondu du transparent vers le noir en 10 milisecondes fade 1 1000: Fondu du noir vers le transparent en 1 seconde [...] $PLAYER_CHAR = Player.Create(#NULL, 2488.56, -1668.86, 12.87) $PLAYER_CHAR = Joueur (nous) Cet opcode détermine l'endroit ou vous apparaitrez dans le jeu, les coordonées se font suivants les axe X Y et Z. (Dans l'exemple on apparaissera devant la maison de CJ) [...] 016C: restart_if_wasted at 2027.77 -1420.52 15.99 angle 137.0 unknown 0 016D: restart_if_busted at 1550.6801 -1675.49 14.51 angle 90.0 unknown 0 Wasted = Mort Busted = "Choppé" ---------- De cette façon, la plupart des Opcodes sont compréhensibles, même si certains sont plus compliqués et il faut essayer de trouver comment ils marchent ---------- Les valeurs de temps sont exprimées en milisecondes. Opcode = Syntaxe d'une ligne, action ou constations, ensembles de toutes les choses possibles dans San Andreas. Par Vicolaships Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Galdon Posté(e) le 22 avril 2007 Signaler Partager Posté(e) le 22 avril 2007 Bonjours, je trouve ce sujet super, quand on maitrise ce langage, on doit pouvoir faire de superbes machinima ! Je me suis lancé dans l'aventure, j'ai copié le "Main Basic", j'ai compilé, et j'ai lancé le jeu, en chargant une partie ou en en lancant une nouvelle, même resultat: la barre de chargement va jusqu'au bout, mais aprés, plantage, retour sous windows avec une boite "voulez vous envoyer un rapport d'erreur..." Comment je fait? Merci Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vicolaships Posté(e) le 22 avril 2007 Auteur Signaler Partager Posté(e) le 22 avril 2007 Apparement le main est erroné, je ne sais pas comment j'ai fait mon compte mais je suis désolé Voilà un main qui marche (et testé) : DEFINE OBJECTS 0 DEFINE MISSIONS 0 DEFINE EXTERNAL_SCRIPTS 0 DEFINE UNKNOWN_EMPTY_SEGMENT 0 DEFINE UNKNOWN_THREADS_MEMORY 0 //-------------MAIN--------------- 03A4: name_thread 'MAIN' 042C: set_total_missions_to 0 030D: set_total_mission_points_to 187 0997: (unknown) 1339 01F0: set_max_wanted_level_to 6 0111: set_wasted_busted_check_to 0 00C0: set_current_time 8 0 016A: fade 0 10 ms 01B6: set_weather 0 04BB: select_interior 0 // select render area 04E4: unknown_refresh_game_renderer_at 2488.5623 -1666.8645 03CB: set_camera 2488.5623 -1666.8645 13.3757 0053: $PLAYER_CHAR = create_player #NULL at 2488.5623 -1668.8645 12.8757 :MAIN 07AF: $PLAYER_GROUP = player $PLAYER_CHAR group 01F5: $PLAYER_ACTOR = create_emulated_actor_from_player $PLAYER_CHAR 0373: set_camera_directly_behind_player 0173: set_actor $PLAYER_ACTOR z_angle_to 262.0 0001: wait 100 087B: set_player $PLAYER_CHAR clothes "VEST" "VEST" body_part 0 087B: set_player $PLAYER_CHAR clothes "JEANSDENIM" "JEANS" body_part 2 087B: set_player $PLAYER_CHAR clothes "SNEAKERBINCBLK" "SNEAKER" body_part 3 087B: set_player $PLAYER_CHAR clothes "PLAYER_FACE" "HEAD" body_part 1 070D: build_player $PLAYER_CHAR 016C: restart_if_wasted at 2027.77 -1420.52 15.99 angle 137.0 unknown 0 016D: restart_if_busted at 1550.6801 -1675.49 14.51 angle 90.0 unknown 0 016A: fade 1 1000 ms 004E: end_thread Encore désolé, j'ai prévenu les modérateurs pour qu'ils fassent la modification dans le tutoriel, merci d'avoir posé ta question et bonne chance pour la suite ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Brezho Posté(e) le 22 avril 2007 Signaler Partager Posté(e) le 22 avril 2007 voilà c'est fait. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lepro49 Posté(e) le 18 octobre 2007 Signaler Partager Posté(e) le 18 octobre 2007 Salut, Quand je vais dans script, le main.scm n'est pas dedans :s Où est-il ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vicolaships Posté(e) le 18 octobre 2007 Auteur Signaler Partager Posté(e) le 18 octobre 2007 Salut, Quand je vais dans script, le main.scm n'est pas dedans :s Où est-il ?Bonsoir, euh ca ne se peut pas. (ca voudrais dire que ton jeu marche ni quand tu démarres une partie ni quand tu charges une partie). Regarde dans le dossier GTA San Andreas/data/script il doit y avoir main.scm et script.img; si tu trouves pas fait une recherche dans le dossier de GTA Sa. A+ PS: Si c'est pour Vice City (c'est pas le même main basic) le fichier main.scm est directement dans le dossier data Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.