Oyez, oyez !

Les résultats du vote sur les meilleurs RPG de tous les temps sont désormais dévoilés dans ce message !

Merci à toutes et à tous pour votre participation !

N'hésitez pas à aller commenter, ajouter des jeux auxquels vous n'auriez pas pensé...

[TUTORIEL] Aide aux dialogues et commandes

Répondre
Avatar du membre
xena
Gnoll
Messages : 151
Enregistré le : mar. 21 mars 2006, 08:56
Contact :
Statut : Hors ligne

[TUTORIEL] Aide aux dialogues et commandes

.

Message par xena »

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 :
  • 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]
Venez voir mon mod en cours : Trriviahn et optionnellement Aireen
Et là : mes idées de kits !
Avatar du membre
Shinook
Ours des cavernes
Messages : 1102
Enregistré le : mar. 18 mai 2004, 17:12
Localisation : Angers
Contact :
Statut : Hors ligne
.

Message par Shinook »

Sympas l'idée de ce tutorial. Je me permets peut-être juste une toute petite remarque, pour les nouveaux modeurs. Tu as mélangé les commandes d'actions et les triggers, peut-être vaudrait-il mieux les séparer, pour une meilleure compréhension, non ?

Autre chose, voici aussi le lien vers IESDP, qui rassemble toutes ces commandes et même beaucoup d'autres, en anglais, mais au combien pratique. Il y a d'ailleurs la possibilité de le télécharger. Voici le lien : http://iesdp.gibberlings3.net/

Avatar du membre
xena
Gnoll
Messages : 151
Enregistré le : mar. 21 mars 2006, 08:56
Contact :
Statut : Hors ligne
.

Message par xena »

Originally posted by Shinook@dimanche 15 juillet 2007 à 13:04
Sympas l'idée de ce tutorial. Je me permets peut-être juste une toute petite remarque, pour les nouveaux modeurs. Tu as mélangé les commandes d'actions et les triggers, peut-être vaudrait-il mieux les séparer, pour une meilleure compréhension, non ?

Autre chose, voici aussi le lien vers IESDP, qui rassemble toutes ces commandes et même beaucoup d'autres, en anglais, mais au combien pratique. Il y a d'ailleurs la possibilité de le télécharger. Voici le lien : http://iesdp.gibberlings3.net/
[snapback]280965[/snapback]


Heu oui une fois que j'y ai eu posté j'y ai pensé aussi :8: mais comme après y avoir passé une bonne après midi j'en pouvais plus et je me suis dis stop ! Si j'ai du courage je trierai mais j'ai tellement de courage que j'ai pas pris le temps de relire les fautes et comme quand je tape mes doigts vont moins vite que mon cerveau...
Bon mais le premier qui se plain je l'oriente vers le tuto de weidu en Anglais et il se débrouille :diable: .

Et vu le nombre de gens qui savent coder comparé aux gens qui écrivent des tutoriaux surtout vous plaignez pas hein :notme:
Venez voir mon mod en cours : Trriviahn et optionnellement Aireen
Et là : mes idées de kits !
Non inscrit
Statut : Hors ligne
.

Message par Non inscrit »

Bonjour,
Je suis en train de me mettre à créer un petit pnj.
Je cherche un tutorial sur comment rajouter des triggers pendant un dialogue.
Du genre :
Un dialogue entre mon NPC moddé et le PC.
Le pc lui dit qu'il est très fort etc et qu'il pourrait casser un mur à mains nues.
J'aimerai que cette phrase servent à déclencher une action du NPC, celui-ci, confiant irait devant un mur et essaierai de le casser (en échouant bien évidemment).
Ainsi il perdrait quelque pv.

C'est possible ?
Avatar du membre
Isaya
Adepte de Grondemarteau
Planaire
Messages : 6990
Enregistré le : mar. 22 juil. 2003, 21:03
Localisation : Plaisir
Contact :
Statut : Hors ligne
.

Message par Isaya »

Un petit point de vocabulaire pour commencer : un trigger est une condition de déclenchement de quelque chose. Du point de vue d'un dialogue, c'est donc ce qui va initier un échange. Puisque tu évoques une réaction à un dialogue, ce que tu veux correspondrait davantage à une action.

Ce que tu décris me fait penser à une petite animation pendant laquelle le personnage s'attaquerait à un mur puis abandonnerait au bout de quelques secondes (pendant ce temps, le jeu bloquerait les actions). Ce genre de chose s'effectue à partir d'un script qualifié de "cutscene" (intermède ?). Je ne suis pas certain qu'il soit possible de lancer un script à partir d'un dialogue. Mais un moyen couramment utilisé est d'affecter une valeur à une variable que le script du personnage utilisera comme trigger pour déclencher quelque chose. Et à partir d'un script, il est tout à fait possible de lancer une "cutscene".

Une chose est sûre, si tu veux faire une telle scène, tu devras ajouter dans le script de déclenchement des contraintes liées aux zones dans lesquelles tu prévois de pouvoir déclencher l'action. En effet, il faut être sûr d'être à côté d'un mur et savoir y placer le personnage pour simuler l'effet.
Une solution consisterait alors à déclencher le dialogue initial (dans lequel le PC lui dit qu'il est fort) à un endroit précis ayant un mur à proximité, pour lequel ton script de "cutscene" serait conçu.

Enfin, pour montrer le personnage en train de frapper, il faudrait peut-être le faire se battre à mains nues. Si nécessaire, il faudrait recourir à un personnage invisible contre lequel il se battrait (tu pourrais l'appeler "mur" pour que les affichages du combat ait un sens), avec résistance maximum à tout type de dégat.

Au final, la scène représenterait quand même pas mal de travail...
Mais ton idée est très sympa donc ça vaudrait sûrement le coup.
Répondre

Retourner vers « Tutoriels »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité