| | Trop de script tue le script ? | |
|
+4K!r4 Dislogical _DaRk_ Cyanure 8 participants | Auteur | Message |
---|
Cyanure Chevalier de l'Enfer
Nombre de messages : 580
| Sujet: Trop de script tue le script ? Jeu 15 Juil 2010, 19:32 | |
| Il y a un truc que je ne comprends pas, j'ai un compte à rebours tout beau, tout copié sur KDiZD, mais il est complétement erratique sur mon niveau... la faute aux 50 autres scripts ? | |
| | | _DaRk_ Membre banni
Nombre de messages : 8487 Age : 34 Localisation : 71300 Montceau les Mines Clan(s) : BaseQ
| Sujet: Re: Trop de script tue le script ? Jeu 15 Juil 2010, 19:55 | |
| Non, si tu fais ça bien, aucune raison que ça bugue, t'as loupé un truc. | |
| | | Dislogical Icône du Péché
Nombre de messages : 7529 Age : 34 Localisation : ...Somewhere Inside The Bowels Of Endlessness... Clan(s) : [OFP] Obnoxious French People
| Sujet: Re: Trop de script tue le script ? Jeu 15 Juil 2010, 21:12 | |
| Y'a pas un petit point virgule manquant, ou une variante mal adaptée? | |
| | | K!r4 Capable de trouver une texture dans un megawad. Sans frais de port.
Nombre de messages : 8245 Localisation : =) Clan(s) : Cheese Lovers
| Sujet: Re: Trop de script tue le script ? Jeu 15 Juil 2010, 21:14 | |
| Le mieux pour le savoir, c'est de voir l'ensemble du code, même si c'est indigeste. | |
| | | Cyanure Chevalier de l'Enfer
Nombre de messages : 580
| Sujet: Re: Trop de script tue le script ? Ven 16 Juil 2010, 09:04 | |
| - Spoiler:
- Code:
-
script 2 (void) { if (zone1 + zone2 + zone3 == 3) { if (langue == 1) { print (s: "Felicitations"); sectordamage (31,300,22,0,damage_nonplayers); } if (langue == 2) { print (s: "Congratulations"); sectordamage (31,300,22,0,damage_nonplayers); } if (langue == 3) { print (s: "Gluckwunsche"); sectordamage (31,300,22,0,damage_nonplayers); } if (langue == 4) { print (s: "Felicitationes"); sectordamage (31,300,22,0,damage_nonplayers); } } else { chrono = chrono-1; hudmessagebold(s:"\cG", d:chrono, s:" \cCSeconds Left"; HUDMSG_FADEINOUT, 19, CR_UNTRANSLATED, 0.5, 0.1, 0.9, 0.0, 0.2); delay(35); restart; } }
Pour le "if", tout est en ordre, et le "else", je n'ai même pas encore mis le choix de la langue, donc c'est assez clair… dans le jeu, il y a entre 1 et 5 (environ) décrémentation par seconde, alors que ça devrait rester constant. | |
| | | K!r4 Capable de trouver une texture dans un megawad. Sans frais de port.
Nombre de messages : 8245 Localisation : =) Clan(s) : Cheese Lovers
| Sujet: Re: Trop de script tue le script ? Ven 16 Juil 2010, 09:36 | |
| Essaye "chrono == chrono-1;" ? | |
| | | [WH]-Wilou84 Rêveur perpétuel
Nombre de messages : 30919 Age : 40 Localisation : Paris, France
| Sujet: Re: Trop de script tue le script ? Ven 16 Juil 2010, 10:20 | |
| On dirait que tu ne testes jamais quand ton chrono descend plus bas que 0, ça peut donner lieu à des boucles infinies. Il faut donc faire quitter le script lorsque chrono vaut -1 ou inférieur par exemple. @ K!r4 : "==" serait pour une comparaison, là je pense qu'elle veut bel et bien faire une affectation de valeur. Mais c'était bien essayé au vu de la précédente erreur :p "chrono--;" est-il disponible en ACS ? _________________ Un peuple qui élit des corrompus, des renégats, des imposteurs, des voleurs et des traîtres n'est pas victime ! Il est complice. George Orwell
| |
| | | Cyanure Chevalier de l'Enfer
Nombre de messages : 580
| Sujet: Re: Trop de script tue le script ? Ven 16 Juil 2010, 10:54 | |
| Oui, c'est bien pour changer la valeur, mais bien essayé Il suffira de mettre un autre script qui bloque le script 2 une fois le chrono à 0, rien de compliqué, normalement. chrono-- est disponible, mais ça me fait exactement le même problème. | |
| | | [WH]-Wilou84 Rêveur perpétuel
Nombre de messages : 30919 Age : 40 Localisation : Paris, France
| Sujet: Re: Trop de script tue le script ? Ven 16 Juil 2010, 11:05 | |
| Peut-être pas besoin de nouveau script : avant de faire ton "restart", teste simplement la valeur de chrono, et ne fais un restart que si chrono est >= 0, ça marcherait j'imagine _________________ Un peuple qui élit des corrompus, des renégats, des imposteurs, des voleurs et des traîtres n'est pas victime ! Il est complice. George Orwell
| |
| | | Xsnake Baron de l'Enfer
Nombre de messages : 951 Localisation : Bordeaux, France Clan(s) : #Ex.DoP
| Sujet: Re: Trop de script tue le script ? Ven 16 Juil 2010, 11:40 | |
| - Cyanure a écrit:
- Spoiler:
- Code:
-
script 2 (void) { if (zone1 + zone2 + zone3 == 3) { if (langue == 1) { print (s: "Felicitations"); sectordamage (31,300,22,0,damage_nonplayers); } if (langue == 2) { print (s: "Congratulations"); sectordamage (31,300,22,0,damage_nonplayers); } if (langue == 3) { print (s: "Gluckwunsche"); sectordamage (31,300,22,0,damage_nonplayers); } if (langue == 4) { print (s: "Felicitationes"); sectordamage (31,300,22,0,damage_nonplayers); } } else { chrono = chrono-1; hudmessagebold(s:"\cG", d:chrono, s:" \cCSeconds Left"; HUDMSG_FADEINOUT, 19, CR_UNTRANSLATED, 0.5, 0.1, 0.9, 0.0, 0.2); delay(35); restart; } }
Pour le "if", tout est en ordre, et le "else", je n'ai même pas encore mis le choix de la langue, donc c'est assez clair… dans le jeu, il y a entre 1 et 5 (environ) décrémentation par seconde, alors que ça devrait rester constant. Pour les différentes langues dans l'ACS : http://zdoom.org/wiki/LANGUAGE Ca t'évitera de faire 200 if suivant la langue de l'utilisateur. Ensuite remplace "chrono = chrono-1;" par - Code:
-
chrono--; D'autre part, le "Else" ne nécessite pas d'accolades - Code:
-
else chrono--; hudmessagebold(s:"\cG", d:chrono, s:" \cCSeconds Left"; HUDMSG_FADEINOUT, 19, CR_UNTRANSLATED, 0.5, 0.1, 0.9, 0.0, 0.2); delay(35); restart;
Puis, un "restart", même dans un "Else", redémarre tout le script depuis le début il me semble. Comme le dit Wilou, fais en attention que ton timer n'aille pas dans les négatifs. Tu peux toujours regarder dans mon wad iu-part5 map28 au pire... | |
| | | [WH]-Wilou84 Rêveur perpétuel
Nombre de messages : 30919 Age : 40 Localisation : Paris, France
| Sujet: Re: Trop de script tue le script ? Ven 16 Juil 2010, 12:02 | |
| Sans accolades, tout ce qui est à la suite du else sera exécuté ? En C en tout cas il faut des accolades, sinon seule la première instruction sera exécutée, pour l'ACS je sais pas trop mais j'imagine qu'il vaut mieux en mettre, question de sécurité _________________ Un peuple qui élit des corrompus, des renégats, des imposteurs, des voleurs et des traîtres n'est pas victime ! Il est complice. George Orwell
| |
| | | Xsnake Baron de l'Enfer
Nombre de messages : 951 Localisation : Bordeaux, France Clan(s) : #Ex.DoP
| Sujet: Re: Trop de script tue le script ? Ven 16 Juil 2010, 12:34 | |
| Mouais, c'est juste que j'évite de foutre des trucs inutiles quand je rédige mes propres scripts Après, chacun sa façon de coder... | |
| | | Cyanure Chevalier de l'Enfer
Nombre de messages : 580
| Sujet: Re: Trop de script tue le script ? Ven 16 Juil 2010, 18:06 | |
| Merci pour le lien, dommage que je ne l'avais pas vu avant Comme dit plus haut, j'ai aussi essayé "chrono--;", mais le résultat est le même, le décompte n'est pas régulier du tout. Pour le restart, ça redémarre bien tout le script, mais c'est volontaire. | |
| | | yetimothee Cyberdémon
Nombre de messages : 4331 Age : 31 Clan(s) : SL
| Sujet: Re: Trop de script tue le script ? Lun 19 Juil 2010, 19:12 | |
| Salut, juste une idée pour rendre ton script moins indigeste : Charge toutes les chaines de caractère des différentes langue dans un script s'ouvrant au début de la map. De cette façon, tu n'auras plus qu'à appeler la chaine contenant le message à afficher à l'écran dans ton code, donc tu gagnes beaucoup de place. De plus, est-il possible d'utiliser des switches plutôt que des if à répétitions, en ACS (comme montré ci dessous) ? - Code:
-
switch(variable) { case 1: //Si variable = 1 print(s: "variable = 1"); case 2: // Si variable = 2 print(s: "variable = 2"); case default: // Si variable n'est pas égale aux autres cas print(s: "variable n'est pas égale à une valeur attendue); }
Sinon, pour une question de relecture du code, il vaut mieux mettre les blocs d'instructions de plusieurs lignes entre accolades, ou alors avec une indentation différente (comme en python). Néanmoins, comme l'ACS est emprunté directement du C, à mon avis la question ne se pose même pas... D'autre part, où est initialisé la variable chrono ? Est-ce une variable globale ? Parce que là, il manque des éléments dans ton code pour qu'on puisse t'aider convenablement, je pense. | |
| | | Cyanure Chevalier de l'Enfer
Nombre de messages : 580
| Sujet: Re: Trop de script tue le script ? Mer 21 Juil 2010, 13:54 | |
| En clair tu me dis pareil que Xsnake, mais en moins compréhensible, non ? Je n'ai pas Doom sous la main, mais la variable chrono est initialisé sur un script du genre - Spoiler:
- Code:
-
Script 486 enter { if (gameskill () == skill_easy) { chrono = 500; } if (gameskill () == skill_normal) { chrono = 250; } if (gameskill () == skill_hard) { chrono = 100; } }
donc avec le "enter", aucun problème ne peux pas venir de là, normalement. | |
| | | ZyklonB Cyberdémon
Nombre de messages : 4325 Age : 31 Localisation : Chez toi, je vide ton frigo. Clan(s) : #RFest : Rocket Fest
| Sujet: Re: Trop de script tue le script ? Mer 21 Juil 2010, 15:13 | |
| Personnellement j'aurai mis des "else" après chaque "if" pour enchainer sur le "if" suivant* ou j'aurais mis un switch. EDIT:(*)= Un peu comme ça: - Code:
-
Script 486 enter { if (gameskill () == skill_easy) { chrono = 500; } else{ if (gameskill () == skill_normal) { chrono = 250; } else{ if (gameskill () == skill_hard) { chrono = 100; } } } } | |
| | | [WH]-Wilou84 Rêveur perpétuel
Nombre de messages : 30919 Age : 40 Localisation : Paris, France
| Sujet: Re: Trop de script tue le script ? Jeu 22 Juil 2010, 13:52 | |
| Il te manque un cas "général" tout à la fin. _________________ Un peuple qui élit des corrompus, des renégats, des imposteurs, des voleurs et des traîtres n'est pas victime ! Il est complice. George Orwell
| |
| | | ZyklonB Cyberdémon
Nombre de messages : 4325 Age : 31 Localisation : Chez toi, je vide ton frigo. Clan(s) : #RFest : Rocket Fest
| Sujet: Re: Trop de script tue le script ? Jeu 22 Juil 2010, 14:51 | |
| Ah "Shiga"! On s'embrouille facilement avec tout ces if et else.... C'est pour ça que c'est mieux les switch pour ce genre de cas qu'une série de if et else... | |
| | | Cyanure Chevalier de l'Enfer
Nombre de messages : 580
| Sujet: Re: Trop de script tue le script ? Lun 26 Juil 2010, 19:46 | |
| Pas besoin d'un cas "général", il n'y a que ces trois niveau de difficulté (grâce à un niveau d'intro à la Quake)
Et cette partie du script marche correctement, même si elle n'est pas forcément bien optimisée. | |
| | | K!r4 Capable de trouver une texture dans un megawad. Sans frais de port.
Nombre de messages : 8245 Localisation : =) Clan(s) : Cheese Lovers
| Sujet: Re: Trop de script tue le script ? Lun 26 Juil 2010, 20:00 | |
| Miam, c'est quand les tests ? | |
| | | Cyanure Chevalier de l'Enfer
Nombre de messages : 580
| Sujet: Re: Trop de script tue le script ? Lun 26 Juil 2010, 20:15 | |
| Aucune idée, pour l'instant j'ai le niveau d'introduction ainsi que deux niveaux de presque fini (à priori j'ai juste ce problème de décompte à régler)
Après ça, les choses devraient aller un poil plus vite, ce sera du "y'a plus qu'à" | |
| | | Cyanure Chevalier de l'Enfer
Nombre de messages : 580
| Sujet: Re: Trop de script tue le script ? Ven 30 Juil 2010, 14:11 | |
| Problème résolu, en fait j'avais bêtement entouré la zone de départ par des lignes "répétables" actionnant le script. | |
| | | Contenu sponsorisé
| Sujet: Re: Trop de script tue le script ? | |
| |
| | | | Trop de script tue le script ? | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |