Dylan Posté(e) le 11 avril 2010 Signaler Partager Posté(e) le 11 avril 2010 Bonjour/Bonsoir à tous,J'aimerais refaire la même chose que dans cette vidéo pour Vice City.Mais je ne trouve pas le moyen de faire se refermer les "portes" a partir du main.scm, Pour ce qui est de la partie 3D c'est bon, je ne voit juste pas comment "dire" au main.scm de faire se rapprocher ces deux portes. ( screen demain si besoin ). Merci d'avance, Dylan. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dylan Posté(e) le 13 avril 2010 Auteur Signaler Partager Posté(e) le 13 avril 2010 Personne ne peut m'aider ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vicolaships Posté(e) le 13 avril 2010 Signaler Partager Posté(e) le 13 avril 2010 Mais si, attends un peu une réponse :Objet$X = 0.0$Y = 0.0Model.Load(#AD_FLATDOOR)038B: load_requested_modelswait 10107: $portail = create_object #AD_FLATDOOR at $X $Y 4.00177: set_object $portail Z_angle_to 0.0wait 2000 :Near_doorwait 1if and00ED: actor $PLAYER_ACTOR 0 near_point $X $Y radius 5.0 5.0 on_footnot $X >= 5.0jf @NOT_near_door$X += 0.0301BC: put_object $portail at $X $Y 4.0jump @Near_door :Not_near_doorwait 1if and80ED: not actor $PLAYER_ACTOR 0 near_point $X $Y radius 5.0 5.0 on_foot$X >= 0.0jf @Near_door$X += -0.0501BC: put_object $portail at $X $Y 4.0jump @Near_door http://www.macreacity.com/topic/33804-les-opcodes-de-sanny-builder/ Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dylan Posté(e) le 13 avril 2010 Auteur Signaler Partager Posté(e) le 13 avril 2010 Merci! Sa m'aide déjà vraiment beaucoup ! Seulement, une chose me perturbe, mon objet doit s'appeler AD_FLATDOOR ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vicolaships Posté(e) le 13 avril 2010 Signaler Partager Posté(e) le 13 avril 2010 #XXXXXXC'est un identifiant (généralement le nom du fichier DFF) qui permet de dire que c'est tel objet et non un autre, après faut que tu choisisses l'objet et que tu le mettes.L'identifiant de l'objet (comme tu appelles l'objet dans le SCM) c'est $portail dans l'exemple Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dylan Posté(e) le 13 avril 2010 Auteur Signaler Partager Posté(e) le 13 avril 2010 (modifié) J'ai utiliser cela, juste pour voir si sa fonctionnait bien: :test wait 1 model.Load(#par) 038B: load_requested_models 0054: store_player $PLAYER_CHAR position_to $899 $900 $901 if 00E1: key_pressed 0 19 jf @test 0107: $portail = create_object #par at $899 $900 $901 wait 100 jump @test Et a mon grand étonnement, la porte apparaît, mais tombe et passe a travers le sol, pourquoi ? ps: "par" est le nom de mon objet edit: le fichier de collision est bien la Modifié le 13 avril 2010 par Dylan Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vicolaships Posté(e) le 13 avril 2010 Signaler Partager Posté(e) le 13 avril 2010 Déjà vire moi le Model.load et le load req de la boucle Sinon à chaque fois qu'il vérifie la condition, il recharge ton model, étant donné qu'il le fait toutes les millisecondes, c'est pas terrible côté optimisation.Tu le mets juste avant dans un autre label ca règle le problème. Ensuite je sais pas pourquoi ca tombe, essaie avec un autre model voir ce que ca donne. La avec ton script, une porte apparait quand t'appuies sur une touche.Accessoirement l'opcode : 0054: store_player $PLAYER_CHAR position_to $899 $900 $901 est pas très judicieux seul, tu spawn un objet sur le player, le jeu aime pas trop. Pour décaller l'objet utilises un truc du genre:0009: $899 += 1.0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dylan Posté(e) le 13 avril 2010 Auteur Signaler Partager Posté(e) le 13 avril 2010 (modifié) T'es un génie! je teste ça edit: J'ai tester avec ca: :test_0 model.Load(#par) 038B: load_requested_models :test_1 0009: $899 += 1.0 0054: store_player $PLAYER_CHAR position_to $899 $900 $901 if 00E1: key_pressed 0 19 jf @test_1 0107: $portail = create_object #par at $899 $900 $901 wait 100 jump @test_1 et le jeu bloque au démarrage Modifié le 13 avril 2010 par Dylan Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vicolaships Posté(e) le 14 avril 2010 Signaler Partager Posté(e) le 14 avril 2010 Un peu de logique voyons, tu essaies d'ajouter 1 à une coordonnée qui n'existe pas encore. Donc première chose j'ai inversé le store et le +1.Ensuite j'ai mit le store et le 2e opcode dans la 2e partie. Le jeu lis de cette manière: il lit le nom du label, jusqu'au IF, il vérifie la condition, si elle est fausse il repart du nom du label et recommence jusqu'à ce que la condition soit remplie.Donc toi à chaque fois il store les coordonnées du joueurs, qui servent pas forcément, en les mettant après je JF (jump if false), il ne fera un Store des coordonnées que si la condition est vérifiée (et donc que tu auras besoin de ces coordonnées) J'ai aussi remplacé le store player pos par un store actor pos qui marche beaucoup mieux. :test_0Model.Load(#AD_FLATDOOR)038B: load_requested_models wait 100 :test_1wait 100if00E1: key_pressed 0 14 // TOUCHER SAUTER jf @test_100A0: store_actor $PLAYER_ACTOR position_to $x $y $z0172: $zA = actor $PLAYER_ACTOR Z_angle wait 100009: $x += 1.00009: $zA += 90.0wait 100107: $portail = create_object #AD_FLATDOOR at $x $y $z0177: set_object $portail Z_angle_to $zAwait 100 jump @test_1 A titre indicatif, le jeu créé un objet par défaut à l'angle 0.0. Si tu veux que l'angle de l'objet soit le même que l'acteur, suffit de faire un store angle et un set objet angle (évidement tu définis pas l'angle de l'objet avant de l'avoir créé!) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dylan Posté(e) le 14 avril 2010 Auteur Signaler Partager Posté(e) le 14 avril 2010 (modifié) C'est parfait ! Merci beaucoup je te tien au courant de l'avancée du projet edit: J'ai juste un petit soucis, j'aimerais que les portes se referme, uniquement, si le player est dans la "sphere" ( que j'aurais créé entre les 2 portes). Mais je ne trouve pas l'opcode me permettant de le faire Saurais-tu lequel utiliser ? Modifié le 14 avril 2010 par Dylan Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vicolaships Posté(e) le 14 avril 2010 Signaler Partager Posté(e) le 14 avril 2010 Dans ce cas la condition est: 00FE: actor $PLAYER_ACTOR sphere 0 in_sphere X Y Z radius A B X X Y Z, coordonnées du centre de la sphèreA rayon suivant XB suivant YC suivant Z (suivant Z mets 10 ca suffit la plupart du temps) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dylan Posté(e) le 15 avril 2010 Auteur Signaler Partager Posté(e) le 15 avril 2010 (modifié) Merci beaucoup! mais, j'ai un petit problème avec cette opcode: j'ai voulu tester quelque chose ;<code> :TESTModel.Load(#BRASSKNUCKLE)038B: load_requested_models wait 100 :TEST_0$PARACHUTE = Pickup.Create(#BRASSKNUCKLE, 1, 75.2059, -812.6706, 90.464)03BC: $SPHERE1 = create_sphere 99.8955 -798.8403 10.4633 1.0 if and 00E1: key_pressed 0 19 00FE: actor $PLAYER_ACTOR sphere 0 in_sphere 99.8955 -798.8403 10.4633 radius 1.0 1.0 10.0jf @TEST_0 0055: put_player $PLAYER_CHAR at 76.7232 -810.1667 90.464 wait 1000 jump @TEST_0 </code> Le jeu démarre et se fige tout de suite Modifié le 15 avril 2010 par Dylan Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dylan Posté(e) le 16 avril 2010 Auteur Signaler Partager Posté(e) le 16 avril 2010 Vicolaships ? Je pense a une chose, t'es sur que l'opcode fonctionne sous Vice City ? parce que je l'ai retrouver dans ceux de San Andreas Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vicolaships Posté(e) le 17 avril 2010 Signaler Partager Posté(e) le 17 avril 2010 Ton erreur est malheureusement un peu bête ! En fait dans ta condition : Tu n'as oublié qu'une petite ligne, mais qui est fatale, le jeu vérifie la condition suivant un cycle, il vérifie tous les 10 ms, les 100ms, enfin ce que tu veux ! Encore faut-il lui préciser, sinon il est perdu, ne sait pas tous les combien de temps vérifier et bug.Si on ne fait que rajouter le WAIT il va répéter tout ce qui est après (le wait) et avant le JF tous les X temps (X étant le temps indiqué dans le wait, ici 200 ms). Or a ce que je sache tu ne veux pas créé une infinité de marqueurs et de parachutes, juste un seul ! :TestModel.Load(#BRASSKNUCKLE)038B: load_requested_modelswait 100$PARACHUTE = Pickup.Create(#BRASSKNUCKLE, 1, 76.7232, -810.1667, 90.464)03BC: $SPHERE1 = create_sphere 99.89 -798.84 28.0 radius 1.0 :TEST_0wait 100if and00E1: key_pressed 0 1900FE: actor $PLAYER_ACTOR sphere 0 in_sphere 99.89 -798.84 28.0 radius 1.0 1.0 10.0jf @TEST_0fade 0 500wait 50000A1: put_actor $PLAYER_ACTOR at 76.7232 -810.1667 90.464wait 100fade 1 400wait 1000jump @TEST_0 Si j'ai bien comprit, tu veux que quand le joueur marche dans un marqueur, ca lui fasse un saut en parachute, déjà ta technique pour donner le parachute est loin d'être la meilleur, mieux vaut faire un GIVE WEAPON (le parachute est considéré par le jeu comme une arme), je te renvoie à mon joli tutoriel: Créer un saut en parachute Pour la beauté de la chose, je t'ai rajouté des FONDUS (fade en anglais), le principe du fade est simple:fade A XA = 0 ou 1, 0 passe du jeu vers le noir, 1 du noir vers le jeu.X = Durée, plus la durée est longue, plus ca mettra de temps à devenir noir/transparent.On mets un petit fade avant la téléportation pour pas voir qu'on téléporte (mais pas long), et un petit après pour revenir en douceur. C'est plus agréable visuellement ! Et pour finir, j'ai modifié ton opcode PUT PLAYER par un PUT ACTOR (put player ca marche pas, put actor ca marche !) PS: A l'avenir, soit un peu plus patient, laisse moi une semaine pour répondre. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dylan Posté(e) le 17 avril 2010 Auteur Signaler Partager Posté(e) le 17 avril 2010 (modifié) Merci infiniment ! Désolé de t'avoir pressé Je te tiens ( les autres aussi ) au courant de l'avancée du projet Dylan. Modifié le 17 avril 2010 par Dylan Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dylan Posté(e) le 17 avril 2010 Auteur Signaler Partager Posté(e) le 17 avril 2010 (modifié) Et oui, c'est à nouveau moi J'ai encore un problème :/j'en suis a la partie ou le player tombe, et pour declencher le parachute, j'aie fais sa: :para_0thread 'para_0'model.Load(#MAVERICK)038B: load_requested_models jump @paraend_thread :parathread 'para'wait 1000819: $distance = actor $PLAYER_ACTOR distance_from_ground 00A0: store_actor $PLAYER_ACTOR position_to $x $y $zif and0020: $distance > 1.0 00E1: key_pressed 0 1701B8: set_player $PLAYER_CHAR armed_weapon_to 1jf @para00A5: $parachute = create_car #MAVERICK at $x $y $z wait 10036A: put_actor $PLAYER_ACTOR in_car $parachute jump @paraend_threadSeulement sa bug ( comme d'habitude ), enfin, juste le script bug, le jeu, pour sa part, tourne parfaitement Ce que je veux dire, c'est que le parachute ne se déclenche pas ( ici c'est un hélico je sais, mais ne t'inquiète pas pour ca, la je sais ce que je fait ^^ ) Modifié le 18 avril 2010 par Dylan Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vicolaships Posté(e) le 18 avril 2010 Signaler Partager Posté(e) le 18 avril 2010 Il y à des choses que je t'ai déjà dit, tu fais pas attention du tout à ce que je te raconte ! 01B8: set_player $PLAYER_CHAR armed_weapon_to 1C'est pas une condition ca, ca veut dire que ca CHOISIT l'arme 1, donc ca n'a rien à faire dans le IF AND; je pense que tu voulais vérifier que le joueur à l'arme 1; l'opcode qui fait ca c'est:02D8: actor $PLAYER_ACTOR current_weapon == 1 Pour une question de logique j'ai ajouté une condition, imagine que ton mec est dans le maverick et qu'il appuie sur la touche, les conditions sont réunis, le jeu va recréer un hélico ... Donc il faut bloquer si le joueur est dans un maverick :80DD: not actor $PLAYER_ACTOR driving_car_with_model #MAVERICK 0819: $distance = actor $PLAYER_ACTOR distance_from_groundCelui là tu as besoin de le renouveler, en fait la valeur $distance ne pas varie pas tant que tu ne l'actualises pas. (on la laisse donc ou elle est !) 00A0: store_actor $PLAYER_ACTOR position_to $x $y $zJe t'ai déjà dit de le mettre juste après le JF, pas besoin de faire enregistrer au jeu ta position à chaque fois qu'il vérifie la condition, il y à besoin de l'enregistrer uniquement quand la condition est vérifiée, tu le mets donc après le JF. Sauf que, le petit problème de ton script c'est qu'il marche sous l'eau, alors si tu veux qu'il marche sous l'eau fais pas la correction dans la suite, mais si tu veux pas que ca marche dans l'eau, il faut que la coordonnée z soit supérieure à 0 (niveau de la mer = 0). Donc il faut que la valeur s'actualise, donc il faut mettre le store entre le label et le IF cette fois ! De cette façon les coordonnées sont actualisés à chaque boucle (mais cette fois c'est justifié). :para_0thread 'para_0'model.Load(#MAVERICK)038B: load_requested_modelswait 10jump @paraend_thread :parathread 'para'wait 1000819: $distance = actor $PLAYER_ACTOR distance_from_ground00A0: store_actor $PLAYER_ACTOR position_to $x $y $zif and0020: $distance > 1.00020: $z > 0.500E1: key_pressed 0 1702D8: actor $PLAYER_ACTOR current_weapon == 180DD: not actor $PLAYER_ACTOR driving_car_with_model #MAVERICKjf @para0009: $z += 0.5wait 1000A5: $parachute = create_car #MAVERICK at $x $y $zwait 10036A: put_actor $PLAYER_ACTOR in_car $parachutejump @paraend_threadSous GTA SA ca marche parfaitement Si tu comprends pas quelque chose que j'ai fait, n'hésites pas. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dylan Posté(e) le 18 avril 2010 Auteur Signaler Partager Posté(e) le 18 avril 2010 (modifié) Je suis vraiment désolé d'être SI LOURD Mais bon, comme on dit; c'est en faisant des erreurs qu'on apprend, non ? Ce qui m'embête le plus, c'est que, quand je lis ce que toi tu met, tout me parait on ne peut plus logique, et je me demande pourquoi je n'y aie pas penser ( le manque d'expérience sans doute ) Sinon, il y a une chose qui me perturbe : 0009: $z += 0.5 Pourquoi mettre le '+' avant le '=' ? ca signifie '>=' ? edit: Il doit y avoir une erreur dans le script je pense, car rien ne se passe, j'ai beau sauter et appuyer sur la touche '17' le maverick n'apparait pas Modifié le 19 avril 2010 par Dylan Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vicolaships Posté(e) le 18 avril 2010 Signaler Partager Posté(e) le 18 avril 2010 Le $z += 0.5 ca signifie qu'on prend l'actuelle valeur de Z et on y rajoute 0.5 c'est une façon de pas spawner le maverick pile sur toi (tu peux le supprimer mais ca peux buger de temps en temps)En gros si $z = 5.0, après l'opcode $z vaut 5.5 "<=" c'est une condition, on vérifie qu'une valeur est inférieure ou égale. Mon opcode moi, c'est de l'incrémentation, on rajoute à une variable une valeur.Comme type de conditions tu as: == : Strictement égal<= : Inférieur ou égalnot <= : N'est pas inférieure ou égal Yen a d'autres mais avec ca on fait le principal. Peut être que tu sautes pas assez haut, ou que l'opcode "distance from ground" ne fonctionne pas sous GTA VC ! Essaies de désactiver l'opcode distance from ground (tu te places sur la ligne puis tu fais Ctrl + Q) et ré essaies. Le problème vient certainement de là. (un opcode que tu prends dans GTA SA existe pas nécessairement dans GTA VC !) Bye (si t'as des questions hésites pas, c'est pas moi que tu déranges) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dylan Posté(e) le 19 avril 2010 Auteur Signaler Partager Posté(e) le 19 avril 2010 (modifié) D'accord, merci beaucoup, je testerais ça directement après les cours.Bonne journée. edit: J'ai beau désactiver l'opcode, ça ne fonctionne toujours pas Modifié le 19 avril 2010 par Dylan Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dylan Posté(e) le 19 avril 2010 Auteur Signaler Partager Posté(e) le 19 avril 2010 Sa y est !!! J'ai réussi En faite, il y avait DEUX lignes à retirer ^^' regarde: :para_0thread 'para_0'model.Load(#MAVERICK)038B: load_requested_modelswait 10jump @paraend_thread :parathread 'para'wait 100//0819: $distance = actor $PLAYER_ACTOR distance_from_ground00A0: store_actor $PLAYER_ACTOR position_to $x $y $zif and//0020: $distance > 1.00020: $z > 0.500E1: key_pressed 0 1702D8: actor $PLAYER_ACTOR current_weapon == 180DD: not actor $PLAYER_ACTOR driving_car_with_model #MAVERICKjf @para0009: $z += 0.5wait 1000A5: $parachute = create_car #MAVERICK at $x $y $zwait 10036A: put_actor $PLAYER_ACTOR in_car $parachutejump @paraend_thread Maintenant sa marche parfaitement! encore juste quelque détails à régler ( comme la vitesse de démarrage du véhicule, son poid, ect .. ) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vicolaships Posté(e) le 19 avril 2010 Signaler Partager Posté(e) le 19 avril 2010 Pour démarrer les pales de l'hélico instantanément: (pas facile à trouver dans Ctrl + Alt + 2 quand on sait pas quoi chercher...)0825: set_helicopter $ID instant_rotor_start Pour le poids je vois pas ce que tu veux dire/régler. En fait il suffit de désactiver 1 ligne, celle qui vérifie dans la condition que la hauteur par rapport au sol est supérieure à 1.0. Mais du coup celle d'avant devient inutile, autant la désactiver ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dylan Posté(e) le 19 avril 2010 Auteur Signaler Partager Posté(e) le 19 avril 2010 (modifié) Merci! c'est sa que je cherchais, et en parlant du poids, j'entendais par là, qu'il descende moins vite que si l'hélico tombait. edit: l'opcode ne semble pas fonctionner sous gta vc Modifié le 19 avril 2010 par Dylan Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dylan Posté(e) le 19 avril 2010 Auteur Signaler Partager Posté(e) le 19 avril 2010 (modifié) J'ai voulu essayer quelque chose pour faire en sorte que l'hélico descende lentement, mais une fois que je suis dans l'hélico, après 1 ou 2 petites secondes, je meurt. peux-tu à nouveau m'éclairer ? Je suppose que le problème doit venir du "00A6: destroy_car $parachute" non ? :para_0thread 'para_0'model.Load(#MAVERICK)038B: load_requested_modelswait 10jump @paraend_thread :parathread 'para'wait 10000A0: store_actor $PLAYER_ACTOR position_to $x $y $zif and0020: $z > 12.000E1: key_pressed 0 1702D8: actor $PLAYER_ACTOR current_weapon == 180DF: not actor $PLAYER_ACTOR driving jf @para0009: $z += 0.5wait 1000A5: $parachute = create_car #MAVERICK at $x $y $zwait 10036A: put_actor $PLAYER_ACTOR in_car $parachutewait 10jump @para_2end_thread :para_2thread 'para_2'04A2: heli $parachute fly_to $x $y $z speed 30 wait 10000009: $z += $z - 2.5if0020: $z < 10.5jf @para_2wait 10000A6: destroy_car $parachute jump @paraif 0020: $z > 10.5jf @para_2 wait 10jump @para_2end_thread Autre chose : Comment différencies-tu les opcodes de conditions des autres ? Modifié le 19 avril 2010 par Dylan Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vicolaships Posté(e) le 19 avril 2010 Signaler Partager Posté(e) le 19 avril 2010 Je sais pas exactement ce que tu veux faire, mais c'est pas détruire l'hélico qui va ralentir sa chute ?! (et oui, quand tu détruis un véhicule alors que tu est dedans, ca te tue). Ta condition veut rien dire, t'as toujours pas comprit comment on les construisait: :LabelBOUCLEifCONDITIONjf @LabelRÉALISATIONEn gros, BOUCLE se répète tous le temps tant que la CONDITION n'est pas remplie (si la CONDITION n'est pas remplie, ca boucle à l'infini par défaut).RÉALISATION c'est ce qui se passe si CONDITION est vraie. (dans n'importe quel autre cas, ca boucle.Remarque: BOUCLE doit impérativement comprendre au moins un wait sinon ca plante (wait 1 par exemple) 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.