Rechercher
 
 

Résultats par :
 


Rechercher Recherche avancée

Derniers sujets
» FR-mapping ! ouverture du site prochainement
par Wolf_silver Jeu 28 Nov - 17:19

» Nightmare prend les commandes
par Wolf_silver Mer 27 Nov - 15:49

» SITE HEBERGER FERME !
par Razor1700 Ven 25 Mai - 13:36

» problème de motivation
par Enzotoy Dim 25 Oct - 20:33

» [FR-Mapping mod]Changer soi-même son menu principale!!
par Wolf_silver Sam 24 Oct - 17:19

Le Deal du moment :
Réassort du coffret Pokémon 151 ...
Voir le deal

Partie 3 (scripteur avancées)

Voir le sujet précédent Voir le sujet suivant Aller en bas

Partie 3 (scripteur avancées) Empty Partie 3 (scripteur avancées)

Message par Wolf_silver Sam 17 Oct - 17:49

Salut à tous nous revoilà pour la partie 3 de "Comment scripter sur WAW?" la partie 3 a pris beaucoup de temps pour venir mais je voulais juste être sûr de ce que je vous raconte!

Alors on va commencer avec les "return"

C'est quelque chose de vraiment très simple à utiliser et qui est surtout utile pour optimiser ( = reduire le nombres de lignes) votre script

Si vous mettez:
Code:
DefinedVariables()
{
variables = 2;
return variables;
}
PrintVariables()
{
variables = DefinedVariables();
iprintlnbold (variables);
}

en résultat le "iprintlnbold" va afficher 2 regardons en détail le code:
Code:
DefinedVariables()
{
variables = 2; // définition de la variables "variables" à 2
return variables; // le fameux return
}
PrintVariables()
{
variables = DefinedVariables(); // "variables" est égal non pas à la fonction DefinedVariables() mais au return de cette fonction (s'il n'y en a pas  je crois que variables obtient la valeur de "undefined")
iprintlnbold (variables); // Imprime la valeurs de variables
}


On aurai pu même faire encore plus court!:
Code:
DefinedVariables()
{
return 2; // et oui on peut mettre ce que l'on veux derrière un return ou presque  !
}
PrintVariables()
{
variables = DefinedVariables(); // "variables" est égal non pas à la fonction DefinedVariables() mais au return de cette fonction (s'il n'y en a pas  je crois que variables obtient la valeur de "undefined")
iprintlnbold (variables); // Imprime la valeurs de variables
}
et donc voilà à quoi sert un return! Ce n'est pas forcement quelque chose de facile à utiliser mais l'optimisation peut-être énorme si vous l'utilisez correctement!

Les arguments

ah... les arguments qu'est ce que ça peut être pratique...

vous remarqué que des fois dans les noms de fonctions vous pouvez avoir des truc de ce genre:
Code:
CheckRound(round_number)

ce qui est entre parenthèses est UN argument de la fonction "CheckRound"

voici l'utilité que peut avoir un argument:
Code:
CheckVariables(variables)
{
iprintlbold (variables);
}

Non non il n'y aura pas d'erreur de variables non initialisés!! puisque en fait (dans ce cas là) écrire ceci:
Code:
CheckVariables(variables)

Correspond à écrire ceci:
Code:
CheckVariables()
variables = undefined;

hop encore un moyen d'optimiser votre script!! mais c'est vrais que ça ne change pas grand chose en vérité la réelle utilité des arguments est différente!
Code:
DefinedVariables()
{
variables = 2
thread CheckVariables(variables)
}
CheckVariables(variables)
{
iprintlbold (variables);
}

Va vous mettre 2 à l'écran
comment?
c'est très simple:

Code:
DefinedVariables()
{
variables = 2 // Définition de la variables à la valeur 2
thread CheckVariables(variables) // thread la fonction CheckVariables en donnant pour le 1er argument de la fonction (il peut y'en avoir plusieurs nous verrons ça plus tard) la valeurs de variables
}
CheckVariables(variables) // vous connaissez déjà
{
iprintlbold (variables); // imprime à l'écran la valeur de variables soit 2
}

oui car de base variables(de la fonction DefinedVariables()) != variables(de la fonction CheckVariables())
c'est très important de retenir ceçi!! une variables est défini que dans sa fonction et non pas dans tout le .gsc (sauf certain type de variables que je vais parler plus tard)

Code:
DefinedVariables()
{
variables = 2 // Définition de la variables à la valeur 2
variables2 = 5 // Définition de la variables2 à la valeur 5
thread CheckVariables(variables, variables2) // thread la fonction CheckVariables en donnant pour le 1er argument de la fonction la valeurs de variables et pour le 2nd argument
// la valeur de variables 2 soit 5
}
CheckVariables(variables, variables3) // vous connaissez déjà mais cette fois si en double arguments attention!! Si j'ai écris variables3 c'est uniquement pour que vous comprenez que vous n'êtes pas //obligés de mettre les même noms de variables en argument et dans le thread
{
iprintlbold (variables); // imprime à l'écran la valeur de variables soit 2
iprintlbold (variables3); // imprime à l'écran la valeur de variables3 soit 5
}

Les classes

En fait les classes ont déjà été utiliser depuis la partie 1 sans que vous le sachiez

exemple de variables sans classe:
Code:
round_start = 1;

exemple de variables avec classe:
Code:
level.round_start = 1;

en fait dans le 1er cas de figure la variable ""round_start" est défini est à la valeur 1 alors que dans le 2nd cas de figure la variable ""round_start" appartenant à la variables "level" est défini est à la valeur 1, c'et assez compliqué à comprendre surtout que level est une classe très spéciale car level est en permanence initialisés grâce à:
Code:
#include common_scripts\utility;
#include maps\_utility;
#include maps\_zombiemode_utility;
#include maps\_anim;

et l'utilité (uniquement pour la classe level) de mettre level.round_start est que cette variables va être défini à cette valeur dans TOUTES les fonctions du .gsc!!

Exemple:
Code:
Fonction1()
{
level.round_start = 1;
}
Fonction2
{
iprintlnbold (level.round_start); // imprimera la valeur 1
}

autrement il y'a une autre classe, la plus connue "players" elle comme toute les autres c'est à dire qu'elle n'est pas défini par défault pour la définir il faut juste mettre:
Code:
players = get_players();

get_players(); est une fonction avec un système de return et intégrée par défault grâce aux #includes

vous vous souvenez des arrays ?:
Code:

players = get_players(); // définit la classe players
 for ( i = 0; i < players.size; i++ ) // vous connaissez déjà si non retournez à la partie 2!
{
players[i] thread Fonction2(); // même chose
}

Exemple de script :
Code:

Fonction1()
{
players = get_players(); // définit la classe players
points = 0;
 for ( i = 0; i < players.size; i++ ) // vous connaissez déjà si non retournez à la partie 2!
{
players[i] thread Fonction2(players[i], points); // pratique les arguments non?
}
}
Fonction2(players) // surtout pas de [i] !!
{
if (players.points == 1) // très compliqué à comprendre! si les points de la classe players[i] (sans [i] tous les joueurs auraient le même nombre de points) donc de UN joueurs égale la valeur 1 alors...
{
players giveweapon( "ray_gun" ); // donner le lasers  uiquement pour le joueur qui remplit la condition
players switchtoweapon( "ray_gun" ); // Switcher sur le laser uniquement sur le joueur qui remplit la condition
}
}
Wolf_silver
Wolf_silver
Administrateur
Administrateur

Messages : 947
Réputation : 4
Date d'inscription : 23/04/2015
Age : 25
Localisation : Pontault-Combault, île de France

https://frmappingcod5.forumgaming.fr

Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum