Archives des forums MMO/MMORPG > Forums divers > Le refuge des tests > Script PHP (nwn)!
Script PHP (nwn)!
Par coolstar le 10/12/2002 à 1:44:05 (#2748837)
;)
Une petite remarque encore! pour le TIP aux nbs...
1) C'est la ligne int bRun = FALSE; ici qui signifie le fait de "MARCHER"... mais avec TRUE cela permet de faire "COURRIR"! distincition que ne permet pas ActionForceFollowObject (qui n'incite d'ailleurs pas simplement à joindre une "Cible", mais transforme tout bonnement le "Sujet" en Suivant a priori permanent de la "Cible")...
2) Lorsqu'on hésite sur une ligne a priori juste, on vérifie la cohérence de son contenu... Ainsi, si l'on observe cette ligne...AssignCommand(ogarde_01,ActionForceFollowObject(object ogarde_02, float fFollowDistance=2.0f));
Comme on peut le voir, tout y est... TOUT justement... il faut donc faire le tri et retirer les "appellations" de Variables que sont object & float et ne laisser que les "dénominations" choisies ogarde_02 & fFollowDistance...
3) ... Sachant que, par ailleurs, lorsque l'on lit fFollowDistance=0.0f dans la "version proposée par défaut", il faut comprendre "valeur par défaut = 0.0"... la valeur pouvant être bien sûr modifiée...
4) D'autre part... il est d'usage d'écrire "object ogarde_01" avec oGarde_01 (o étant pour rappeler la nature de la "Variable" employée et Garde "avec MAJUSCULE" pour distinguer clairement chaque mot clé inscrit!)... et, perso, j'éviterais de mettre "_" pour laisser ça aux Tags et au Refs... inspirez-vous des conventions d'usage soumises dans l'Aide de l'Editeur de Scripts...
5) Pour rajouter quelque chose encore... je dirais qu'afin de faciliter la lecture du Script (et donc minimiser les impaires!), il est préférable de décaler les lignes selon leur "position" en son sein... et selon l'usage encore, la pratique veut que les lignes soient décalées de 4 "espaces"... Ainsi l'on peut bien repérer et distinguer les Commandes du void main() des if ou des while et des switch... et ainsi, plus il y a de sous-parties qui s'incèrent, plus il faut décaler les lignes (de même que les "Accolades", pour bien pouvoir en faire le compte!)...
Aussi, Evitez...
void main()
{
object ogarde_01=GetObjectByTag("garde_01");
object ogarde_02=GetObjectByTag("garde_02");
AssignCommand(ogarde_01,ActionForceFollowObject(object ogarde_02, float fFollowDistance=2.0f));
}
Mais préférez...void main()
{
object oGarde01 = GetObjectByTag("garde_01");
object oGarde02 = GetObjectByTag("garde_02");
float fFollowDistance = 2.0;
AssignCommand(oGarde01,ActionForceFollowObject(oGarde02, fFollowDistance));
}
6) Enfin, préférez effectivement définir au préalable les "Variables" (object/string/float/int...), plutôt que d'en intégrer directement les éléments dans la Fonction "appelée" (ça permet d'éviter de surcharger le CPU en cas de grandes quantités récurrentes de Variables... de mieux se répérer aussi... et même d'éviter des erreurs inattendues de Aurora!)...
7) N'oubliez pas que lorsque vous utilisez le Filtre (A droite dans l'Editeur de Scripts!), cela vous permet de retrouver n'importe quel "objet encodé" (Fonctions/Constantes...) à partir d'un morceau seulement de sa "terminologie" (et sans tenir compte des obligations de MAJUSCULES!)... Aussi, ne vous gênez surtout pas pour vous en servir!
8) Autres aspects intéressants du Filtre... cliquer sur l'"objet" ainsi trouvée permet de voir apparaître son "articulation" (ce qui le compose!) dans la "Zone de Texte" de l'Aide (en bas dans l'Editeur)... et double-cliquer sur l'"objet" permet par ailleurs de l'insérer automatiquement dans le Script (à hauteur alors de la position du curseur!)...
9) Enfin, concernant l'Aide, il est possible de Copier/Coller dans le Script le contenu ainsi apparu dans sa "Zone de Texte"... sachant qu'il faut bien sûr compléter le Script en mettant en ordre Toutes les "Variables" présentées en son sein...
10) Et n'oubliez surtout pas que lorsque un Script ne compile pas cela est toujours signifié en détail... Vous savez toujours quelle est la première ligne incriminée (ce qui veut dire, hélas aussi, que s'il y en a d'autres vous ne le saurez qu'en corrigeant la première en faute d'abord!)... et vous saurez aussi le plus souvent pourquoi (même si Tout ne peut être explicité!)... donc évitez de tourner en rond et d'appeler à l'aide sans avoir cherché auparavant!
11) Et si d'aventure il vous arrive d'hésiter lors d'un prob de Compilation... double-cliquez sur la Fonction possiblement incriminée dans votre Script afin de vérifier qu'elle est bien écrite (ça ne marche qu'avec les "Fonctions"!)... si c le cas, elle apparaîtra dans l'Aide, autrement il n'y aura rien (même pour simple omission de MAJUSCULES!)... observez bien, par ailleurs, si les "Terminologie" d'usage telles que les "Variables" (ainsi que OBJECT_SELF/While/Switch...) apparaissent bien en bleu (1 faute, et ce n'est plus le cas!)... et soumettez les Constantes au Filtre, afin de vous assurer que leur saisie est bien complète... A savoir que pour connaître Toutes les Variables présentes dans le Script "en cours" il suffit juste de sélectionner Variables dans le Filtre (sans rien y mettre!)...
12) Utilisez les balises (ou PHP) pour présenter vos Scripts dans les Forums, c beaucoup+mieux! merci...
13) Et Merci encore à tous ceux qui m'ont permis de pouvoir Troller à mon tour les nbs comme moi!! :D
;)
UNE EXPLORATION PERSONNELLE DES VARIABLES LOCALES!!!
Par coolstar le 10/12/2002 à 12:57:48 (#2751067)
//::///////////////////////////////////////////////
//:: FileName ab0_var_marquage
//:://////////////////////////////////////////////
/*
SCRIPT BASIQUE : "Marquage" d'une Cible par une Variable.
Ce Script attache une Variable définie à une Cible précise
et lui alloue par ailleurs une Valeur pnctuelle de "classement"...
*/
//:://////////////////////////////////////////////
//:: Created By: Docteur coolstar "Honorable canard"
//:: Created On: 10/12/2002 02:20:00
//:://////////////////////////////////////////////
void main()
{
object oObject = GetObjectByTag("cible_variable"); // Cible précise du "marquage" par la Variable.
string sVarName = "variable"; // Nom de la Variable définie.
int nValue = 1; // Assignation de la Valeur à la Variable définie.
// Initialisation de la Variable sur le Cible désirée.
SetLocalInt(oObject, sVarName, nValue);
}
//::///////////////////////////////////////////////
//:: FileName ab0_cdt_variable
//:://////////////////////////////////////////////
/*
SCRIPT BASIQUE : (Conditions d'exécution) Recherche d'une Variable.
Ce Script vérifie si la cible est bien "marquée" par la Variable recherchée
et vérifie par ailleurs la Validité de la Valeur actuelle qui lui est donnée,
avant de valider la Condition et d'initialiser cette partie du Dialogue...
*/
//:://////////////////////////////////////////////
//:: Created By: Docteur coolstar "Honorable canard"
//:: Created On: 10/12/2002 01:10:43
//:://////////////////////////////////////////////
int StartingConditional()
{
object oObject = GetObjectByTag("cible_variable"); // Cible du "scan" de la Variable.
string sVarName = "variable"; // Nom de la Variable recherchée.
int iValueCondition = GetLocalInt(oObject, sVarName); // Initiation de la Recherche.
// Execution de cette partie du Dialogue si la "Condition de Recherche" est Valide.
return iValueCondition == 1;
}
//::///////////////////////////////////////////////
//:: FileName ab0_var_delete
//:://////////////////////////////////////////////
/*
SCRIPT BASIQUE : Annulation de la Variable désignée en cours.
Ce Script annule sur l'objet spécifique le "marquage" de la Variable
demandée, effaçant ainsi la Valeur ponctuelle allouée...
*/
//:://////////////////////////////////////////////
//:: Created By: Docteur coolstar "Honorable canard"
//:: Created On: 10/12/2002 05:24:00
//:://////////////////////////////////////////////
void main()
{
object oObject = GetObjectByTag("cible_variable"); // Cible concernée par l'annulation.
string sVarName = "variable"; // Nom de la Variable devant être effacée.
// Remise à zéro effective de la Variable concernée sur l'objet spécifique.
DeleteLocalInt(oObject, sVarName);
}
JOL Archives 1.0.1
@ JOL / JeuxOnLine