Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
louisdespi Floodeur prématuré
Inscrit le: 21 Oct 2007 Messages: 437 Sujets: 70
|
Posté le: 07/12/12 00:30 Sujet du message: [IA] Faire parler un script IA + couleur + nom + son |
|
|
I/ Faire parler un script IA + couleur + nom + son
a) Intro
Ce rapide tutoriel a pour but de vous donner un exemple de fonction permettant de faire "parler" une IA comme un autre joueur dans le canal [tous] via son script.ai.
b) Modifier son fichier.ai
Les deux fonctions qui suivent et la définition de variable globale sont à rajouter dans le fichier.ai de l'IA que vous souhaitez faire parler.
Jass: |
globals
sound chatSound = CreateSound( "Sound\\Interface\\InGameChatWhat1.wav", false, false, false, 10, 10, "" )
endglobals
function ColorName takes playercolor color, string name returns string
if color == ConvertPlayerColor(0) then
return "|c00ff0000"+name+"|r : "
elseif color == ConvertPlayerColor(1) then
return "|c000000ff"+name+"|r : "
elseif color == ConvertPlayerColor(2) then
return "|c0000ffff"+name+"|r : "
elseif color == ConvertPlayerColor(3) then
return "|c00660099"+name+"|r : "
elseif color == ConvertPlayerColor(4) then
return "|c00ffff00"+name+"|r : "
elseif color == ConvertPlayerColor(5) then
return "|c00ff9933"+name+"|r : "
elseif color == ConvertPlayerColor(6) then
return "|c0000ff00"+name+"|r : "
elseif color == ConvertPlayerColor(7) then
return "|c00dd00ff"+name+"|r : "
elseif color == ConvertPlayerColor(8) then
return "|c00dddddd"+name+"|r : "
elseif color == ConvertPlayerColor(9) then
return "|c0033ccff"+name+"|r : "
elseif color == ConvertPlayerColor(10) then
return "|c007fffd4"+name+"|r : "
else
return "|c00660000"+name+"|r : "
endif
endfunction
//======================================================
function DisplayToAll takes string text returns nothing
local integer i = 0
local string add = ColorName(GetPlayerColor(Player(GetAiPlayer())),"")
loop
call DisplayTimedTextToPlayer(Player(i),0,0,15,add+text)
set i = i + 1
exitwhen i == 12
endloop
call StartSound(chatSound)
endfunction |
N'oubliez pas de configurer un nom à l'IA en argument de la fonction ColorName.
Jass: | local string add = ColorName(GetPlayerColor(Player(GetAiPlayer())),"") |
c) Utiliser le nouveau système
Rien de plus simple ! Il vous suffit d'appeler DisplayToAll et lui donner en argument ce que vous voulez que votre IA dise. Cela peut aussi servir dans le but de réaliser certains test sur votre IA
Jass: | call DisplayToAll("Ce joueur est un joueur controle par l'ordinateur") |
Les accents et autres caractères spéciaux ne sont pas supportés.
Imaginons que le joueur soit orange, voici ce que cela donnerait si l'on lui donne comme nom :"Sylvanas (Hauts Elfes)"
Résultat en jeu : Sylvanas (Hauts Elfes) : Ce joueur est un joueur controle par l'ordinateur (avec le petit son du chat) _________________
Dernière édition par louisdespi le 08/12/12 12:07; édité 2 fois |
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 07/12/12 11:48 Sujet du message: |
|
|
Au lieu de la loop, si GetLocalPlayer() est utilisable dans un .ai tu peux faire :
call DisplayTimedTextFromPlayer(GetLocalPlayer(),0,0,15,add+s)
From et non ToPlayer, car GetLocalPlayer() bug dans un replay, et DisplayTimedTextFromPlayer affiche le message pour tous les joueurs, du moment que l'argument joueur est valide.
Pour cette fonction l'argument joueur a une autre utilité, l'utilisation des strings spéciaux te que %s (et d'autres ?)
Et pour ColorName j'aurais utilisé une loop plutôt que ce long if. _________________
Le violet, c'est moche. |
|
Revenir en haut |
|
|
louisdespi Floodeur prématuré
Inscrit le: 21 Oct 2007 Messages: 437 Sujets: 70
|
|
Revenir en haut |
|
|
Zeatlan Floodeur prématuré
Inscrit le: 12 Mai 2012 Messages: 424 Sujets: 60
|
|
Revenir en haut |
|
|
louisdespi Floodeur prématuré
Inscrit le: 21 Oct 2007 Messages: 437 Sujets: 70
|
Posté le: 07/12/12 22:13 Sujet du message: |
|
|
La ça dépend, tu peux trouver des fichier .ai de différente manière.
Lesquelles sont :
-Créer une IA via l'éditeur d'IA du World Editor. Et ensuite l'exporter en faisant Ctrl+E ou fichier --> Exporter script...
A l'emplacement que tu auras choisi se trouvera un fichier.ai
-Il y a aussi moyen de récupérer les IA du jeu de base (human.ai, elf.ai, undead.ai ,orc.ai) en utilisant un programme tel que MPQEditor.
-Editer et créer soi-même son propre fichier.ai avec des programmes comme le bloc note ou JassCraft _________________
|
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
|
Revenir en haut |
|
|
louisdespi Floodeur prématuré
Inscrit le: 21 Oct 2007 Messages: 437 Sujets: 70
|
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 08/12/12 11:56 Sujet du message: |
|
|
Plus de code à écrire -> verbeux.
Par contre il ne faut pas tomber dans l'excès.
Evite ces noms courts pour les arguments de fonction, ils ne sont pas explicites.
J'aurais plutôt choisi "color" et "text" par exemple. _________________
Le violet, c'est moche.
Dernière édition par Troll-Brain le 08/12/12 11:59; édité 1 fois |
|
Revenir en haut |
|
|
louisdespi Floodeur prématuré
Inscrit le: 21 Oct 2007 Messages: 437 Sujets: 70
|
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
|
Revenir en haut |
|
|
louisdespi Floodeur prématuré
Inscrit le: 21 Oct 2007 Messages: 437 Sujets: 70
|
Posté le: 08/12/12 12:08 Sujet du message: |
|
|
Troll-Brain a écrit: | Par contre il ne faut pas tomber dans l'excès.
Evite ces noms courts pour les arguments de fonction, ils ne sont pas explicites.
J'aurais plutôt choisi "color" et "text" par exemple. |
Voilà qui est fait ! _________________
|
|
Revenir en haut |
|
|
|