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 à ne pas rater :
Pokémon EV06 : où acheter le Bundle Lot 6 Boosters Mascarade ...
Voir le deal

Partie 1

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

Partie 1 Empty Partie 1

Message par Wolf_silver Jeu 2 Juil - 8:32

Hello, Je demarre une petite serie que certaine personne m'ont proposé de faire en MP c'est comment scripter sur WAW?

J'y vais à petit pas ne vous inquiètez pas Wink

les prérequis
il vous faut absolument un autre éditeur de texte que le bloc-notes ca va vous rendre la vie plus facile particuliérement grâce aux couleurs

Personelement j'utilise notepad ++ mais on peut aussi utiliser sublime text par exemple

[Vous devez être inscrit et connecté pour voir ce lien]

une fois notepad installé et ouvert alllez sur paramètrages >>> confiurateur de coloration syntaxique >>> C++ >>> et ajoutez "gsc" à ext. utilisateur en bas

Après ça créez un .gsc qui va s'appellez" monscript.gsc"

Ajoutez y ce code:
Code:
#include common_scripts\utility;
#include maps\_utility;
#include maps\_zombiemode_utility;
#include maps\_anim;

ça il vous faut TOUJOURS le mettre dans chaque script
Cela permet d'appeler des fonctions très utiles

mais... qu'est ce qu'une fonction?? et appeler c'est quoi??


Chaque chose en son temps! tout d'abord sachez qu'une fonction commence par

Code:
NOM_DE_LA_FONCTION()
{


et se termine par:

Code:
}
NOM_D'UNE_AUTRE_FONCTION()


Ce qui donne:

Code:
NOM_DE_LA_FONCTION()
{

}
NOM_D'UNE_AUTRE_FONCTION()


Alors allez-y inserez ce code dans votre script en changeant le nom de la fonction en per exemple "TestScript"!
Attention!!:

Bon c'est bien beau mais il n'y a aucun script dans cette fonction... et de plus elle n'est pas chargée!!

Pour la chargé deux méthodes:

Code:
thread maps\monscript::TestScript();

ou:

Code:
maps\monscript::TestScript();


Dans notre cas c'est la 1ére méthode! Ne me demandez pas pourquoi vous ne comprendrez pas pour l'instant!

Il faut donc mettre:

Code:
thread maps\monscript::TestScript();


Dans nazi_zombie_???.gsc en DESSOUS de (Car ça commence par thread):

Code:
maps\_zombiemode::main();


Attention!!:

Bon on a correctement créer et appeler la fonction mais une fois de plus en jeu il n'y aura aucune différences!

Bon on va rajouter du code alors... que dites-vous de si le joueur trouve 1 object par terre un message s'affiche ??

Tout d'abord entre les crochets de la fonction rajoutez:


Code:
Object1_trig = getEnt("object1_trig", "targetname");
Object1 = getEnt("object1" , "targetname");
level.object_found = 0


Voici ce que l'on appeles des variables elles servent à donner une valeur à un nom ou bien associer un nom à une entité(sur radiant)
en occurence il vous faut créer un script_model sur radiant avec comme targetname "object1" et un trigger_use avec comme targetname "object1_trig".
Mais la variable "level.object_found" qui est égal à 0 ce qui servira plus tard surtout la 2ème partie...

Mais pourquoi un trigger_uses et un script_model??? comment savoir quoi créer??


C'est très simple un script_model car il vous faut un model pour votre object et le misc_model ne marche pas d'où le nom: Script_model!!

Et un trigger_use car sinon vous ne pourrez pas intéragir avec le model et "use" en anglais signifie "utilisez"

puis rajoutez au script:


Code:
Object1_trig waittill("trigger");
   Object1_trig delete();
   Object1 delete();


La 1ère ligne veut dire que l'on attend que le trigger avec pour targetname : "object1_trig" (d'où l'intérêt des variables) est en attente d'activation et une fois le trigger activé on passe à ligne d'en dessous
qui signifie que le trigger disparait de la map puis quelques millièmes de secondes plus tard(au minimum) c'est au tour du model!


Suivant ajoutez ceci:


Code:
while(1)
{
}


Gné??  Question moi y'en a pas comprendre!??   Suspect   affraid


C'est normal! c'est le début! "while" est en fait ce qu'on appelle une boucle conditionnel c'est à dire que tant que la condition est vrai entre parenthèses la boucle se répètes! là en occurences j'ai mis "1" ce qui permet à la boucle de ne jamais s'arrêter elle est infinie!

Attention!!:

Mettez entre la boucle ce code:

Code:
      if (level.object_found == 0)
{
      iprintlnbold("1 object de trouve!");
         level.object_found = 1;   
         break;
}


Un peu compliquer?? non vraiment pas en vérité la 1ère ligne dit que "si" la variable level.object_found est égal à 0 affichez le message "1 object de trouve!"
oui oui je sais..:
puis  mettre la valeur level.object_found à "1" en enfin casser la boucle pour que l'on loupe ce qui est après bon on occurence il n'y a rien mais bon ^^ il le faut quand même sinon la map peut freezer à l'activation du trigger provisoirement ou ... pas Smile! et attention à ne pas vous emmeler les pinceaux avec les crochets car if en rajoute de nouveaux!


Oh et au fait qu'est ce qu'est un commentaire c'est EXTREMEMENT simple! c'est une partie du script qui n'esst pas lu par le jeu et le launcher il servent juste d'indications ou à prendre des notes ou encore a faire des backup avec des lignes de script

Un commentaire commence toujours toujours par:

Code:
// Ceci n'est pas lu par le jeu


ou alors:

Code:
/*
Ceci n'est pas lu par le jeu!
Cette ligne nom plus!
*/
Cette ligne ci par contre est lu...

Code source du script en entier:
Code:
#include common_scripts\utility;
#include maps\_utility;
#include maps\_zombiemode_utility;
#include maps\_anim;

TestScript()
{
Object1_trig = getEnt("object1_trig", "targetname");
Object1 = getEnt("object1" , "targetname");
level.object_found = 0
while(1)
{
      if (level.object_found == 0)
{
      iprintlnbold("1 object de trouve!");
         level.object_found = 1;   
         break;
}
}
}


Dernière édition par Wolf_silver le Jeu 2 Juil - 8:58, édité 3 fois
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

Partie 1 Empty Re: Partie 1

Message par Wolf_silver Jeu 2 Juil - 8:52

Vous avez bien compris?? passons aux exercices bounce

Exercice:
1)Changer de nom de fonction et de nom de script
2)Changer le message qui apparait
3)Changer de nom de variables et de targetnames dans radiant
4) (plus compliqué) 3 objects dans la map ! et pour 1 object trouvé telle message ; pour 2 objects un autre etc...

indices:
-Utliser une fonction pour chaque object peut être une bonne chose...
-level.object_found va vous êtres utile!
-souvenez vous de "break"

Postez vos réponces ici! la solution à l'enigme va venir dans la prochaine partie....
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

Partie 1 Empty Re: Partie 1

Message par Razor1700 Jeu 2 Juil - 16:48

Pour faire un secret en plusieurs étape Est-ce que je dois break mes while a l'intérieur d'une étape?Ou simplement faire en sorte qu'une condition soit remplis pour passer a la phase suivante de l'étape?
Et aussi Est-ce que le jeu peut "sauter" un while a la condition non remplis si un autre while est remplis?
Razor1700
Razor1700
Prestige 13
Prestige 13

Messages : 386
Réputation : 1
Date d'inscription : 25/04/2015
Age : 26
Localisation : Moselle

Revenir en haut Aller en bas

Partie 1 Empty Re: Partie 1

Message par Wolf_silver Jeu 2 Juil - 17:12

Pour faire un secret en plusieurs étape Est-ce que je dois break mes while a l'intérieur d'une étape?

Ca depend si c'est une boucle infini ou que tu veux que la s'arrête même si la condition de la boucle est vérifié oui

Ou simplement faire en sorte qu'une condition soit remplis pour passer a la phase suivante de l'étape?

ça marche aussi mais ça dépend de ta façon de créer le script

Et aussi Est-ce que le jeu peut "sauter" un while a la condition non remplis si un autre while est remplis?

Ben oui dans le while que tu veux sauter met en condition par exemple "mavaleur est égal à 1" et dans le while qui va faire sauter l'autre while met mavaleur à la valeur 1 si le while est joué

Mais franchement je ne pense pas que ce soit forcement utile il y'a aussi deux autres type de boucles que j'expliquerai demain Wink (doWhile() et for())
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

Partie 1 Empty Re: Partie 1

Message par Razor1700 Jeu 2 Juil - 22:23

level.object_found c'est bien juste une variable c'est pas une ligne propre au code de cod(je demande psk le . dans la variable m'intrigue)
Razor1700
Razor1700
Prestige 13
Prestige 13

Messages : 386
Réputation : 1
Date d'inscription : 25/04/2015
Age : 26
Localisation : Moselle

Revenir en haut Aller en bas

Partie 1 Empty Re: Partie 1

Message par Wolf_silver Ven 3 Juil - 9:22

alors oui et non c'est un peu difficile de te répondre...

Dis toi juste que la lègere différence ne sert que pour des commandes que tu n'utiliseras certainement jamais de ta vie!
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

Partie 1 Empty Re: Partie 1

Message par Razor1700 Ven 3 Juil - 16:34

Code:
#include common_scripts\utility;
#include maps\_utility;
#include maps\_zombiemode_utility;
#include maps\_anim;

Etapes_secret()
{
e1_trig = getEnt("e1_trig", "targetname");
e1 = getEnt("e1" , "targetname");
e2_trig = getEnt("e2_trig", "targetname");
e2 = getEnt("e2" , "targetname");
e3_trig = getEnt("e3_trig", "targetname");
e3 = getEnt("e3" , "targetname");


level.object_found = 0
while(1)
{
e1_trig waittill("trigger");
e1_trig delete();
e1 delete();
if (level.object_found == 0)
{
     iprintlnbold("Qu'est ce que c'est que ce truc!");
        level.object_found = 1;  
        break;
}
if (level.object_found == 1)
{
     iprintlnbold("Un deuxième par là!");
        level.object_found = 2;  
        break;
}
if (level.object_found == 2)
{
     iprintlnbold("Je crois que c'est le dernier!");
        level.object_found = 3;  
        break;
}
}
while(1)
{
e2_trig waittill("trigger");
e2_trig delete();
e2 delete();
if (level.object_found == 0)
{
     iprintlnbold("Qu'est ce que c'est que ce truc!");
        level.object_found = 1;  
        break;
}
if (level.object_found == 1)
{
     iprintlnbold("Un deuxième par là!");
        level.object_found = 2;  
        break;
}
if (level.object_found == 2)
{
     iprintlnbold("Je crois que c'est le dernier!");
        level.object_found = 3;  
        break;
}

}
while(1)
{
e3_trig waittill("trigger");
e3_trig delete();
e3 delete();
if (level.object_found == 0)
{
     iprintlnbold("Qu'est ce que c'est que ce truc!");
        level.object_found = 1;  
        break;
}
if (level.object_found == 1)
{
     iprintlnbold("Un deuxième par là!");
        level.object_found = 2;  
        break;
}
if (level.object_found == 2)
{
     iprintlnbold("Je crois que c'est le dernier!");
        level.object_found = 3;  
        break;
}

}
}
Razor1700
Razor1700
Prestige 13
Prestige 13

Messages : 386
Réputation : 1
Date d'inscription : 25/04/2015
Age : 26
Localisation : Moselle

Revenir en haut Aller en bas

Partie 1 Empty Re: Partie 1

Message par Razor1700 Ven 3 Juil - 16:36

Je sais que ça fait barbare sans mettre une fonction par objet mais je voulais laisser toute la première étape dans la même fonction
Razor1700
Razor1700
Prestige 13
Prestige 13

Messages : 386
Réputation : 1
Date d'inscription : 25/04/2015
Age : 26
Localisation : Moselle

Revenir en haut Aller en bas

Partie 1 Empty Re: Partie 1

Message par Wolf_silver Ven 3 Juil - 16:38

Pas loin! tu aurais dù créer plus de fonction tu vas voir pourquoi! j'ai quasiment finis la partie 2 Smile mais c'est vrai que cet exo était compliquer...
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

Partie 1 Empty Re: Partie 1

Message par Razor1700 Ven 3 Juil - 16:43

C'est pour la suite enfait je voulais faire en sorte que lorque cette 1ere étape est fini la deuxième peut commencer
Razor1700
Razor1700
Prestige 13
Prestige 13

Messages : 386
Réputation : 1
Date d'inscription : 25/04/2015
Age : 26
Localisation : Moselle

Revenir en haut Aller en bas

Partie 1 Empty Re: Partie 1

Message par Wolf_silver Ven 3 Juil - 18:02

alors dans ce cas bravo! mais petit détail:
il faut utiliser une méthode différente pour afficher les accents et autres caractères spéciaux)

or tu en a mis ce qui te mettras des points à la place en jeu
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

Partie 1 Empty Re: Partie 1

Message par Wolf_silver Ven 3 Juil - 18:04

Partie 2 dispo:
[Vous devez être inscrit et connecté pour voir ce lien]
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

Partie 1 Empty Re: Partie 1

Message par Contenu sponsorisé


Contenu sponsorisé


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