Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > ce script me fatigue
ce script me fatigue
Par ruru666 le 11/2/2003 à 15:20:53 (#3214852)
Créez un NPC et un Loup-garou avec le creature Wizard.
Mettez ce script sur le OnHeartBeat de chacun.
Ensuite, mettez le tag du NPC comme la ResRef du loup-garou et inversement.
Nommez votre loup-garou "Werewolf"
à faire pour chaque couple NPC/LG.
Mettez NPC en commoner et Loup-Garou en Hostile, c'est plus crédible;-)
Début du script
/////////////////////////////////////////////////////
//:Le loup-garou
//:de VorpalBlade depuis Bioware
//:Traduit/Modifié par MrCocktail pour NWN-fr.com
/////////////////////////////////////////////////////
void ChangeWerewolf(object oObject, string sTemp);
void ChangeTo(string sTemp, location lLoc);
void main()
{
int bDay = GetIsDay();
string sMyName = GetName(OBJECT_SELF);
string sChangeTo = GetTag(OBJECT_SELF);
object oMe = OBJECT_SELF;
// If I'm a man and its night or I'm a WW and it is day.
if (((sMyName != "Werewolf") && (!bDay)) || ((sMyName == "Werewolf") && (bDay))){
AssignCommand(GetModule(), ChangeWerewolf(oMe, sChangeTo));
}
}
void ChangeWerewolf(object oObject, string sTemp)
{
// Prend la location de l'un, le détruit, fait apparaitre l'autre
effect eVis = EffectVisualEffect(VFX_FNF_HOWL_MIND);
location lLoc = GetLocation(oObject);
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis, lLoc, 2.0f);
DestroyObject(oObject);
DelayCommand(0.5f, ChangeTo(sTemp, lLoc));
}
void ChangeTo(string sTemp, location lLoc)
{
CreateObject(OBJECT_TYPE_CREATURE, sTemp, lLoc);
effect eVis = EffectVisualEffect(VFX_COM_CHUNK_RED_SMALL);
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis, lLoc, 2.0f);
}
Tres interressant mais g des problemes :
Je met le meme blueprint du loup garou au nivo du tag du npc, et le blueprint du npc dans le tag du loup garou, consequance : la nuit mon loup garou clignote au rythm du OHB (disparait pour devenir humain, puis redisparait pour devenir loup).
Et le jour tout s arrete sil etait en humain il reste humain et s 'il etait loup il reste loup
Par Verchanal le 11/2/2003 à 15:23:28 (#3214872)
L'idée c'est que dés qu'il voit un PC la nuit , il se change en Werewolf et dés que le werewolf voit un PC de jour, il se change en humain.
Par ruru666 le 11/2/2003 à 15:29:19 (#3214912)
De plus je suis incapable de scripté je suis un simple utilisateur donc ce script a peutetre un defaut ou son utilisation est mal expliké pour un neophite comme moi...
Par ruru666 le 11/2/2003 à 15:38:02 (#3214959)
:merci: :maboule: :merci:
Par Jaha Effect le 11/2/2003 à 16:13:39 (#3215197)
Jaha Effect :D
Par ruru666 le 11/2/2003 à 17:04:06 (#3215554)
Car c lourd de pa pouvoir creer des loup avec d otres blueprint (pour les wp et tout...)
Par Thungril le 11/2/2003 à 19:11:48 (#3216534)
Par Jaha Effect le 11/2/2003 à 19:18:19 (#3216594)
if (((sMyName != "Werewolf") && (!bDay)) || ((sMyName == "Werewolf") && (bDay)))
Si tu change le tag de ta créature en jeu il faut le changer ici aussi dans cette partie du code.
Jaha Effect :D
Par Reyan le 11/2/2003 à 19:25:05 (#3216647)
Provient du message de ruru666
ben mon cher jaha, g trouvé comment il marchait pas s'il y avait une erreure (j'en suis malheureusement incapable), mais toi ki est plutot bon comment explike tu ke deslors ke lon veut changer les blueprint et tag ca ne marche plus ? et ca me fait le symptome ke je decris au tout debut ?????????????????????
Car c lourd de pa pouvoir creer des loup avec d otres blueprint (pour les wp et tout...)
en fait c'est à cause des astuces du script :D
pour vérifier que la créature est un loup, il vérifie que son nom est ou non Werewolf
je crois que tu fait une erreur jaha :chut:
les tags interviennent ici : string sChangeTo = GetTag(OBJECT_SELF);
en fait l'astuce c'est que la creature va se transformer en "son tag", autrement dit, si tu change les tags, ba il faut qu'il y est une créature avec le tag changé, en bluesprint :)
Par ruru666 le 11/2/2003 à 19:25:25 (#3216649)
ken je met autre chose ke "werewolf" pdt la nuit le loup meurt pour laisser la place a l'humain et vice versa sans arret et pdt le jour plus rien... HELP !!!
Par Reyan le 11/2/2003 à 19:39:02 (#3216746)
avec gus1 comme bluesprint du gus1 etc.
mais il fau faire attention de bien laissé comme nom Werewolf à chaque loup :) ou alors faut faire un script par gus/loup :monstre:
Par Jaha Effect le 11/2/2003 à 19:49:41 (#3216805)
Jaha Effect :D
Par ruru666 le 12/2/2003 à 16:50:54 (#3223420)
Provient du message de Reyan
ce que tu peux faire, c'est creer un loup pour chaque gus, et un gus pour chaque loup, au gus 1 tu met comme tag "LOUP1" et au loup 1 "GUS1", au gus 2 "LOUP2" et au loup 2"GUS2"
avec gus1 comme bluesprint du gus1 etc.
mais il fau faire attention de bien laissé comme nom Werewolf à chaque loup :) ou alors faut faire un script par gus/loup :monstre:
Et ben tu peu essayer si ca marche je te paye une epée +1
Je l ais fais et refais je modifier le script pour les nouveau en mettant le nouveau blueprint du werewolf2, et ce ki ce produit et ce ke g expliké au debut de mon pot c a d :
la nuit le loup n arrete pa de mourir et revenir en humain pour revenir en loup sans arret ! et le jour ki soit humain ou loup il reste sous cette aparence.... LASSANT !....
Par Reyan le 12/2/2003 à 17:46:35 (#3223948)
mais il faut bien penser a mettre Werewolf comme nom des loups :p
bon, je te propose un truc pour pouvoir mettre le nom et le tag que tu veux à tes loups et à tes NPC :
dans le onspawn de tes loups, tu mets ca :
void main()
{
SetLocalInt(OBJECT_SELF, "LOUP", TRUE);
SetLocalString(OBJECT_SELF, "LOUP_GAROU", "TAG_DU_NPC");
//TAG_DU_NPC doit correspondre au tag du NPC qui se transforme en ce loup, à la majuscule près
}
et dans le onspawn des NPC tu met :
void main()
{
SetLocalInt(OBJECT_SELF, "LOUP", TRUE);
SetLocalString(OBJECT_SELF, "LOUP_GAROU", "TAG_DU_LOUP");
//TAG_DU_NPC doit correspondre au tag du Loup en qui se transforme ce NPC, à la majuscule près
}
et enfin dans le onheartbeat de tout ce petit monde :
/////////////////////////////////////////////////////
//:Le loup-garou
//:de VorpalBlade depuis Bioware
//:Traduit/Modifié par MrCocktail pour NWN-fr.com
//modif de Reyan : necessite un SetLocalInt et un SetLocalSring dans le onspawn
/////////////////////////////////////////////////////
void ChangeWerewolf(object oObject, string sTemp);
void ChangeTo(string sTemp, location lLoc);
void main()
{
int bDay = GetIsDay();
int nLoup = GetLocalInt(OBJECT_SELF, "LOUP");
string sChangeTo = GetLocalString(OBJECT_SELF, "LOUP_GAROU");
object oMe = OBJECT_SELF;
// If I'm a man and its night or I'm a WW and it is day.
if (((nLoup == FALSE) && (!bDay)) || ((nLoup == TRUE) && (bDay))){
AssignCommand(GetModule(), ChangeWerewolf(oMe, sChangeTo));
}
}
void ChangeWerewolf(object oObject, string sTemp)
{
// Prend la location de l'un, le détruit, fait apparaitre l'autre
effect eVis = EffectVisualEffect(VFX_FNF_HOWL_MIND);
location lLoc = GetLocation(oObject);
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis, lLoc, 2.0f);
DestroyObject(oObject);
DelayCommand(0.5f, ChangeTo(sTemp, lLoc));
}
void ChangeTo(string sTemp, location lLoc)
{
CreateObject(OBJECT_TYPE_CREATURE, sTemp, lLoc);
effect eVis = EffectVisualEffect(VFX_COM_CHUNK_RED_SMALL);
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, eVis, lLoc, 2.0f);
}
enfin bon :maboule:
Par ruru666 le 12/2/2003 à 18:28:32 (#3224294)
ENCORE MERCI A TOI je t enverais une epee +2 pour la peine !!
JOL Archives 1.0.1
@ JOL / JeuxOnLine