[TUTORIEL] Aide aux dialogues et commandes
Posté : sam. 14 juil. 2007, 15:56
Alors voilà afin d'aider les apprentis modeurs voici quelques aides aux sujets de certaines commandes ainsi qu'une petite liste de commandes bien pratique. Il est évident qu'il en manque mais pour commencer ce sera pas mal. J'invite d'ailleurs les codeurs à ne pas hésiter à m'aider à faire la liste des différentes commandes oubliées afin que je les ajoute voir, que je les commente pour celle qui sont un peu plus complexe. Je compte d'ailleurs sur vous pour me corriger en cas d'erreur majeure.
En ce qui concerne les commandes manquantes je pense surtout à celles utilisées lors des cutscene vu que je ne m’en suis toujours pas servi.
Je rappelle deux liens qui couvrent déjà l'essentiel tout en essayant de ne par réécrire ce qui y a déjà été expliqué.
Pour les romances
Pour la création plus générale de NPC
Alors voici une liste de commandes que vous pouvez utiliser lors de vos dialogues ou de vos scripts :
Commandes :
En ce qui concerne les commandes manquantes je pense surtout à celles utilisées lors des cutscene vu que je ne m’en suis toujours pas servi.
Je rappelle deux liens qui couvrent déjà l'essentiel tout en essayant de ne par réécrire ce qui y a déjà été expliqué.
Pour les romances
Pour la création plus générale de NPC
Alors voici une liste de commandes que vous pouvez utiliser lors de vos dialogues ou de vos scripts :
Commandes :
- Ajouter de l’expérience : AddexperienceParty(12000)
- Ajoute la valeur à une variable : IncrementGlobal("P$NPC","LOCALS",1)
- Activer une variable : SetGlobal("J$NPC","GLOBAL",1)
- Appliquer un sort :
Code : Tout sélectionner
ApplySpell(Myself,DRYAD_TELEPORT)[/color] [*][color=deepskyblue]Caractéristique maximum requise : CheckStatLT(Player1,12,CHR)[/color] [*][color=deepskyblue]Caractéristique minimum requise : CheckStatGT(Player1,11,CHR)[/color] [*][color=deepskyblue]Chapitre requis : GlobalLT("Chapter","GLOBAL",4)[/color] [*][color=deepskyblue]Créer une créature : CreateCreature("J$NPC",[2105.2330],6)[/color] [*][color=deepskyblue]Joue une animation : CreateVisualEffect("SPFLESHS",[1470.1403])[/color] [*][color=deepskyblue]Joue tel ou tel musique : PlaySound("O#son")[/color] [*][color=deepskyblue]Kit :[code] Kit(Player1,BOUNTYHUNTER) [/color] [*][color=deepskyblue]Mort d’une crétature ou d’un perso : Dead("Imoen2"))[/color] [*][color=deepskyblue]Partir de la zone : EscapeArea[/color] [*][color=deepskyblue]Pas de combat : CombatCounter(0)[/color] [*][color=deepskyblue]Persos valide : !StateCheck("Player1"",CD_STATE_NOTVALID[/color] [*][color=deepskyblue]Prendre de l’argent : TakePartyGold(100)[/color] [*][color=deepskyblue]Quitter la partie : LeaveParty[/color] [*][color=deepskyblue]Réputation minimum : ReputationGT(Player1,10) [/color] [*][color=deepskyblue]Sexe du personnage : Gender(Player1,MALE)[/color] [*][color=deepskyblue]Vérification de la présence d’un personnage dans le groupe : InParty(Myself)[/color] [*][color=deepskyblue]Vérification de la présence d’ennemis : See([ENEMY]) ici oui des ennemi !See([ENEMY]) ici non-présence d’ennemis[/color] [*][color=deepskyblue]Vérification du type de zone : !AreaType(DUNGEON) ou FOREST ou CITY[/color] [*][color=deepskyblue]Vérification d’une zone : AreaCheck("AR0800")[/color] [*][color=deepskyblue]Vois le preso : [code]See(Player1)[/color][/list][color=deepskyblue] :!: Je rappelle que mettre un "!" devant une commande reviens à faire l'inverse.[/color] [b][u][color=cyan]Interjections :[/color][/u][/b] [color=deepskyblue][u]INTERJECT_COPY_TRANS soit I_C_T[/u][/color] [color=deepskyblue]Afin que notre NPC puisse s’exprimer pendant les événements du jeu il faut utiliser la commande INTERJECT_COPY_TRANS.[/color] [color=deepskyblue]Ceci-dis pour pouvoir utiliser cette commande il faut tout d’abord comprendre son fonctionnement.[/color] [color=deepskyblue]Pour commencer il nous faut utiliser Near Infinity. En effet pour savoir ou Weidu doit ajouter votre phrase il y a quelques références à trouver. Disons que nous voulons un PJ qui réagit lorsque Firkrag parle de l’héritage du PJ. [/color] [color=deepskyblue]Il faut d'abord trouver le fichier de dialogue existant concerné : ici FIRKRA02, puis dans Near infinity on cherche la phrase que dira Firkrag avant que le NPC ne prenne la parole. Vous prenez celle de votre choix ici la phrase concernée est dans « state 07 ».[/color] [color=deepskyblue]Munis de ces informations voici ce que nous devons écrire.[/color] [color=deepskyblue]Par défaut dans le fichier XXXXJ[/color] [quote] [color=lemonchiffon][color=deepskyblue]I_C_T FIRKRA02 07 NPCFIRGRAG1[/color] [color=deepskyblue]== XXXXJ IF ~InParty("NPC") InMyArea("NPC") !StateCheck("NPC",CD_STATE_NOTVALID)~ THEN ~Quoi t’es un enfant de Bhall !!~ THEN END[/color] [/color][/quote] [color=deepskyblue]Voilà ! Pour les explications : XXXXJ est, ais-je encore besoin de le rappeler : le fichier J de votre NPC. NPCFIRGRAG1 est le nom du bloc qui va intervenir vous pouvez mettre ce que vous voulez.[/color] [color=deepskyblue]Vous pouvez allonger en faisait parler Firkrag puis encore le NPC en mettant à la suite == et le bon nom de fichier. Et ce tant que vous n’avez pas mis END.[/color] [b][u][color=cyan]IsGabber(Player1)[/color][/u][/b] [color=deepskyblue]Exemple :[/color] [quote] [color=lemonchiffon][color=deepskyblue]IF ~IsGabber(Player1)[/color] [color=deepskyblue]CombatCounter(0)~[/color] [color=deepskyblue]THEN BEGIN NPC#Flirts[/color] [color=deepskyblue]SAY ~(Votre compagnon semble inattentif...)~[/color] [color=deepskyblue]++ ~(Vous lui mettez une claque)~ GOTO ( bon vous connaissez la suite hein ?)[/color] [color=deepskyblue]+ ~RandomNum(2,1)~ + ~(Vous lui mettez votre pied au c**)~ GOTO (comme d’habitude)[/color] [color=deepskyblue]+ ~RandomNum(2,2)~ + ~(Vous lui mettez votre pied au c**)~ GOTO (idem)[/color] [color=deepskyblue]END[/color] [/color][/quote] [color=deepskyblue]Bon j’ai pas terminé le bloc mais vous DEVEZ savoir faire maintenant sinon abandonnez votre mod.[/color] [color=deepskyblue]Lorsque vous mettez RandomNum(2,1) puis (2,2) ça veut dire que le jeu choisira l’un ou l’autre des deux dialogues. C’est la fonction aléatoire.[/color] [b][u][color=cyan]CHAIN[/color][/u][/b] [color=deepskyblue]A placer dans le fichier de dlg BXXXX ici BNPC[/color] [color=deepskyblue]Cette commande permet de faire un banter en entre deux personnages ou plus de votre équipe.[/color] [color=deepskyblue]Disons NPC et Valygar[/color] [quote] [color=lemonchiffon][color=deepskyblue]CHAINE IF ~InParty("NPC") See("NPC")[/color] [color=deepskyblue]!StateCheck("NPC",CD_STATE_NOTINVALID)[/color] [color=deepskyblue]InParty("Valygar") See("Valygar") [/color] [color=deepskyblue]!StateCheck("Valygar",CD_STATE_NOTINVALID) [/color] [color=deepskyblue]CombatCounter(0)[/color] [color=deepskyblue]Global("NPCValygar1","GLOBAL",0)[/color] [color=deepskyblue]THEN BNPC NPCValygar1[/color] [color=deepskyblue]== BValyga ~...~[/color] [color=deepskyblue]DO ~SetGlobal("NPCValygar1","GLOBAL",1)~[/color] [color=deepskyblue]== BNP ~...~[/color] [color=deepskyblue]== BValyga ~...~[/color] [color=deepskyblue]== BNPC ~C'est reposant.~[/color] [color=deepskyblue]EXIT[/color] [/color][/quote][color=deepskyblue]Avant chaque nouvelle réplique vous devez indiquer quel fichier et donc quel personnage associé à ce fichier va parler. A priori vous n’avez pas besoin de faire un script pour dire quand vous voulez que ce dialogue ce lance c’est le jeu qui gère ça mais cela n’empêche pas d’en faire un quand même si vous voulez que vos banters ce lancent à un moment précis.[/color] [color=deepskyblue]Voilà c’est tout pour le moment ![/color]