[script] besoin d'une verif

Répondre
Partager Rechercher
coucou j ai besoin d'un verif sur mon script
le principe , le pc bute une bestiole , et il aura acces a un nvx dialogue que si le bete est morte

donc j'ai mis
Code PHP:

void main()
{
SetLocalInt(GetPCSpeaker(),"bete",1);

dans OnDeath de ma bete, c'est juste ?
et ensuite

Code PHP:

int StartingConditional()
{
    if(!(
GetLocalInt(GetPCSpeaker(), "bete") == 1))
        return 
FALSE;

    return 
TRUE;

et ça en condition d'execution du dialogue

mais pas l'air de marché , j vois pas , quelle quiche .....
le truc, c'est le "GetPCSpeaker"
tu demande à la bête de dire qui l'a tuée mais la pauvre est déjà morte :/
bon en fait, c surtt qu'un getPCSpeaker ca s'emploi uniquement dans un dialogue (speaker quoi ^_^)

donc doit y avoir un moyen de récupérer le killer

(GetLastKiller() bien marrant ca : c'est lui le dernier à m'avoir tué arrrggg ! ! ! (comme le chateau) )
ben a priori j' ai trouvé mon erreur , erreur de quiche d'ailleur , comme je m en veux, j'ai inversé le FALSE et le TRUE et voilà a marche LOL
Tout simplement par ce que un if(en une) {ligne sa donne; ca;}

Alors que un
if (getmachin()==1)
{
en plusieur;
lignes;
est plus clair;
}

est un peu plus clair surtout pour les script à 500 lignes voir plus
Oui c'est bien ce que ca veux dire et c'est pourquoi un dernier PC a avoir parler sur un OnDeath me choc Comme le dis Reyan c'est pour les Dialogue cette fonction... Enfin bon
Grumph


Heuuu personnellement, j'ai toujours utilisé les if en une ligne et je n'ai jamais eu de problème ????


Et excusez de vous contredire, étant programmeur aussi de métier, mais faîtes plus de 600 lignes par jour et vous verrez très rapidement que les if en une ligne sont très utiles.


Car tout simplement, ce n'est pas toujours facile de repérer les "{" ou "}" de tel if quand vous avez beaucoup de conditions.

Alors si vous rajoutez aussi pour les if en 1 lignes cela, vous risquez de vous perdre encore plus.
Je dis bien surtout quand vous ne respectez pas aussi tout à fait la structure d'un code.

Je sais pas, je trouve ça super logique et rapide, dès que je vois un "if" et que je ne vois pas de "{" "}" c'est que cela va agir que sur une seule ligne...

Enfin bon, après chacun à sa manière de voir ^^.
ouai ben moi, j'avais fait 5 conditions sur un dialogue, et ça marchait mais alors vraiment pas du tout avec des ifs en 1 ligne, après je met tout en if {} et pis miracle ça marche...
ba je ne peux pas te dire autre chose que tu n'as pas de pot

De toute façon chacun à sa manière de développer.

Mais je peux confirmer, que mon compilateur n'a jamais eu de souci
Je pense que le seul danger des if à une ligne c'est les else, mais sinon je confirme que le compilateur n'a aucun problème avec, du moins je n'en ai jamais observé (sauf si tu fais une déclaration de variable à l'intérieur, mais ça c'est normal).


Mais de toute façon, c'est la plupart du temps inutile de mettre un if dans ce genre de mini-script pour condition d'exécution.

Il suffit de faire :
Code PHP:

int StartingConditional()
{
    return 
GetLocalInt(GetPCSpeaker(), "bete") == 1;

Par ailleurs je confirme que GetPCSpeaker() dans un OnDeath, ça relève pour le moins d'une pratique de programmation hasardeuse....
ba je savais bien que j'avais raison

sinon ba merci pour la structure là jedai, encore un truc à savoir pour alleger des tas de test débiles
j'aurais jamais pensé que ca aurait marché
JEDAÏ si je comprend bien ton mini script :
Il test si la variable est egal a 1 ??

Ben c'est super j'connaissais pas comme syntax j vais utilisé ça plustôt alors c est plus leger et plus rapide

Merci encore
Comment ça j'ai pas de potes?
Bah, en fait ça m'est arrivé dans plusieurs dialogues ces histoire avec une structure du style :
Code PHP:

if (GetLocalInt(oPC"variable") == 1) return TRUE
Sinon c'est vrai que dans les autres scripts, j'utilise parfois des :
Code PHP:

if (GetLocalInt(oPC"variable") == 1)
            
SendMessageToPC(oPC"C'est bon !");
         else
            
SendMessageToPC(oPC"C'est pas bon !"); 
Surtout que je code la plupart du temps comme ça en C et en C++, mais je fait pas super confiance à Bioware vous voyez
Je déplore l'absence de gestion des fonctions en une ligne.

Et puis pour en revenir, il est innutile d'écrire
Code PHP:

if(GetLocalInt(oTruc,"Bidule") == 1
Un simple
Code PHP:

if(GetLocalInt(oTruc,"Bidule")) 

vu que la constante TRUE est égale à 1, et que (1n==true).

Pareil pour l'inverse !
Code PHP:

if(!GetLocalInt(oTruc,"Bidule")) 

équivaut à
Code PHP:

if(GetLocalInt(oTruc,"Bidule") == 0
ou même a
Code PHP:

if(!(GetLocalInt(oTruc,"Bidule")==1)) 

oui mais si ca peu prendre comme valeur d'autre truc que 1 ou 0, que va donner le test
Code PHP:

if(GetLocalInt(oTruc,"Bidule")) 

?
je demande hein, parce que je sais pas
Code PHP:

if(-1// Retourne TRUE
if(0// Retourne FALSE
if(1// Retourne TRUE
if(2// Retourne TRUE 
Tout ce qui est différent de 0 retourne TRUE, même les négatifs.

Pour ce qui est des ifs en une ligne, c'est à mon sens un faux débat... Quelque soit le style d'écriture, le résultat compilé est le même et le temps d'execution aussi. A partir de là, chacun fait ce qu'il veut...

En NWScript, cette technique ne s'applique qu'aux if (me semble-t-il), en C, il s'agit de toutes les accolades qui peuvent être omises si elles ne renferment qu'une fonction. Mais encore une fois, ce n'est qu'une question de style de codage, comme le nombre d'indentation ou la place des accolades (sur la meme ligne ? En dessous aligné ? En dessous indenté ? Etc...)
Mais si CdN, tu peux tout à fait supprimer les accolades si tu n'as qu'une fonction dedans même avec les structures conditionnelles et de boucles autres que "if", tout à fait comme en C, exemple :
https://forums.jeuxonline.info/showthread.php?t=175917

Ah et une bonne nouvelle : la 1.30 introduit enfin le mot-clé const (constante) dans le compilateur officiel, bien qu'un certain nombre des optimisations que ça devrait permettre ne soient pas encore effectuées, mais j'ai confiance, ça viendra, ça viendra....
Ha voui, j'avais oublié les boucles. En fait, il n'y a qu'avec les fonctions qu'on ne peut pas se le permettre.. Dommage.

Bravo à BioWare pour le const. A quand un préprocesseur digne de ce nom ?
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés