La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
FAQ
Rechercher
Liste des Membres
Groupes d'utilisateurs
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
S'enregistrer Se connecter pour vérifier ses messages privés Connexion
La date/heure actuelle est 01/11/2024 02:24:18
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Voir le sujet précédent ¤ Voir le sujet suivant | |
---|---|
Auteur | Message |
yellow submarine Grand Chevalier Messages: 143 |
Bonjour à tous
je cherche à empécher un PJ sur son cheval d'entrer ainsi dans un lieu donc j ai repris le script pour faire partir le bestiau puis je le remanier et ça ne marche pas, ou ai-je fait la c bêtise NWScript :
void main() { object oPC=GetEnteringObject(); object oCavallo=GetObjectByTag("gsc_cavallo"); int nMaxCavalli=GetMaxHenchmen(); int i; RemoveHenchman(oPC,oCavallo); AssignCommand(oCavallo,SetIsDestroyable(TRUE,FALSE,FALSE)); DestroyObject(oCavallo); } avez vous une idée _________________ Rien ne vaut la recherche lorsqu'on veut trouver quelque chose. [J. R. R. Tolkien] |
Revenir en haut | |
BenGorre Légende vivante Messages: 301 |
Deja pourquoi as tu mis "nMaxCavalli" si tu l'utilise pas apres?
Ensuite tu devrais preciser quelhak de chevauc montés tu utilise car il en existe plusieurs dont 3 biens a ma connaissance. Ensuite ce script ne supprimerai le chaval que si il serait a coté du PJ sinon c'est normal que rien ne se passe puisque quand il est monté le PJ et le cheval ne font plus qu'un et ce un est le PJ. Donc tu as besoin du script qui fait descendre de cheval si tu le donne je peus te le modifier sans problemes pour avoir ce que je pense que tu veus. Ce script est peut etre dans le OnUsed car generalement on utilise la selle sur soi pour descendre (dans les 3 bons hacks que je connais en tout cas). PS: ca c'est ce que j'appelle du condensé _________________ La mort n'est rien seul le fait de mourir est terrible Henry Fielding 1745 Le serveur Filandre a été stoppé pour le moment, je on travail à la conversion vers NWN2. |
Revenir en haut | |
yellow submarine Grand Chevalier Messages: 143 |
Bonjour
le Hak concené c'est Rideable Horses le script pour faire descendre de cheval, est actionné lorsque l'on active la selle (si on est à cheval ) le cheval se positionne à côté dans evenements module : OnActivateItem j'ai mis NWScript :
Note : le code affiché ci-dessus n'est pas rendu tel qu'il devrait l'être réellement, en particulier des sauts de lignes sont automatiquement insérés pour éviter de casser la mise en page. En le copiant/collant, vous résoudrez ce problème. Voilà le script gsc_include NWScript :
//:////////////////////////////////////////////// //:: Name Gilean Sistema Cavalli //:: FileName gsc_include //:: Copyright (c) 2001 Bioware Corp. //:///////////////////////////////////////////// /* Rideable Horse system made from Ardemor Persistent World on [http] */ //:///////////////////////////////////////////// //:: Created By: Gilean //:: Created On: 04.03.05 //:///////////////////////////////////////////// const int SKILL_CAVALCARE = 27; const int CD_CAVALCARE=24; //Tiro da effettuare per superare il disarcionamento int nRiga2daCavalloUmano=1036;//Riga del 2da corrispondente al cavaliere umano int nRiga2daCavalloElfo=1037;//Riga del 2da corrispondente al cavaliere elfo int nRiga2daCavalloNano=1038;//Riga del 2da corrispondente al cavaliere nano int nRiga2daCavalloGnomo=1039;//Riga del 2da corrispondente al cavaliere gnomo int nRiga2daCavalloHalfling=1032;//Riga del 2da corrispondente al cavaliere gnomo int nRiga2daCavalloOrco=1033;//Riga del 2da corrispondente al cavaliere mezz'orco //Questa funzione ritorna il numero di 2da correlato alla razza che cavalca int GSC_AssegnaCavalloARazza(object oPC); //Questa funzione fa montare (o smontare) a cavallo oPC umano; void GSC_SellaPG(object oPC,object oCavallo); //Questa funzione controlla che oPCnon abbia gia' un cavallo //evocato void GSC_CreaCavallooPonyInStalla(object oPC,string sTagCavallo); //Da porre nell'evento on activated item del modulo void GSC_AttivaSella(); //Questa funzione risetta l'apparenza normale del cavallo e del pg //la puoi porre in on client enter per far ritornare //Cavallo e cavaliere separati int GSC_SmontaDaCavallo(object oPC); //Da porre in on client enter del modulo, fa tornare il PG //con le fattezze normali void GSC_OnClientEnter(object oPC); //Ritorna TRUE se oCavallo e' il cavallo di oPC int GSC_GetMasterOfHorse(object oPC,object oCavallo); // Questa funzione posta in onCombatRoundEnd del mob //Fa il check su disarcionare void GSC_CheckDisarcionare(object oMob); //La funzione da porre in on death del modulo //Fa smontare il pg dalla sella e distrugge cavallo e cintura void GSC_OnPGDeath(object oPC); //LA funzione ritorna TRUE se oPC sta cavalcando una cavalcatura. int GSC_IsPGRidingHorse(object oPC); //Questa funzione posta nell'evento OnEquipItem del modulo //fa si che oPC non equipaggi oggetti proibiti mentre cavalce void GSC_OnEquipItem(object oPC,object ItemEquipped); /////////////////////////////////////////////// int GSC_IsPGRidingHorse(object oPC) /////////////////////////////////////////////// { if(GetAppearanceType(oPC)==nRiga2daCavalloUmano || GetAppearanceType(oPC)==nRiga2daCavalloElfo ||GetAppearanceType(oPC)==nRiga2daCavalloNano ||GetAppearanceType(oPC)==nRiga2daCavalloGnomo || GetAppearanceType(oPC)==nRiga2daCavalloHalfling || GetAppearanceType(oPC)==nRiga2daCavalloOrco) return TRUE; else return FALSE; } /////////////////////////////////////////////// int GSC_AssegnaCavalloARazza(object oPC) /////////////////////////////////////////////// { int nRace=GetRacialType(oPC); switch(nRace) { case(RACIAL_TYPE_HUMAN): return nRiga2daCavalloUmano; break; case(RACIAL_TYPE_HALFELF): return nRiga2daCavalloUmano; break; case(RACIAL_TYPE_ELF): return nRiga2daCavalloElfo; break; case(RACIAL_TYPE_DWARF): return nRiga2daCavalloNano; break; case(RACIAL_TYPE_GNOME): return nRiga2daCavalloGnomo; break; case(RACIAL_TYPE_HALFLING): return nRiga2daCavalloHalfling; break; case(RACIAL_TYPE_HALFORC): return nRiga2daCavalloOrco; break; default: { FloatingTextStringOnCreature("La tua razza non e' in grado di cavalcare",oPC,FALSE); return 0; } } return 0; } /////////////////////////////////////////////// int GSC_SmontaDaCavallo(object oPC) /////////////////////////////////////////////// { if(GetAppearanceType(oPC)==nRiga2daCavalloUmano) { SetCreatureAppearanceType(oPC,6); object oCavallo=CreateObject(OBJECT_TYPE_CREATURE,"gsc_cavallo",GetLocation(oPC),TRUE); SetLocalObject(oCavallo,"gsc_padrone",oPC); AddHenchman(oPC,oCavallo); return TRUE; } else if(GetAppearanceType(oPC)==nRiga2daCavalloElfo) { SetCreatureAppearanceType(oPC,1); object oCavallo=CreateObject(OBJECT_TYPE_CREATURE,"gsc_cavallo",GetLocation(oPC),TRUE); SetLocalObject(oCavallo,"gsc_padrone",oPC); AddHenchman(oPC,oCavallo); return TRUE; } else if(GetAppearanceType(oPC)==nRiga2daCavalloNano) { SetCreatureAppearanceType(oPC,0); object oCavallo=CreateObject(OBJECT_TYPE_CREATURE,"gsc_pony",GetLocation(oPC),TRUE); SetLocalObject(oCavallo,"gsc_padrone",oPC); AddHenchman(oPC,oCavallo); return TRUE; } else if(GetAppearanceType(oPC)==nRiga2daCavalloGnomo) { SetCreatureAppearanceType(oPC,2); object oCavallo=CreateObject(OBJECT_TYPE_CREATURE,"gsc_pony",GetLocation(oPC),TRUE); SetLocalObject(oCavallo,"gsc_padrone",oPC); AddHenchman(oPC,oCavallo); return TRUE; } else if(GetAppearanceType(oPC)==nRiga2daCavalloHalfling) { SetCreatureAppearanceType(oPC,3); object oCavallo=CreateObject(OBJECT_TYPE_CREATURE,"gsc_pony",GetLocation(oPC),TRUE); SetLocalObject(oCavallo,"gsc_padrone",oPC); AddHenchman(oPC,oCavallo); return TRUE; } else if(GetAppearanceType(oPC)==nRiga2daCavalloOrco) { SetCreatureAppearanceType(oPC,5); object oCavallo=CreateObject(OBJECT_TYPE_CREATURE,"gsc_cavallo",GetLocation(oPC),TRUE); SetLocalObject(oCavallo,"gsc_padrone",oPC); AddHenchman(oPC,oCavallo); return TRUE; } else { //FloatingTextStringOnCreature("Per montare a cavallo parlaci",oPC,FALSE); return FALSE; } } /////////////////////////////////////////////// void GSC_SellaPG(object oPC,object oCavallo) /////////////////////////////////////////////// { int nRace=GetRacialType(oPC); int NumeroRazza=GSC_AssegnaCavalloARazza(oPC); int Continua=FALSE; //Parte per smontare da cavallo //GSC_SmontaDaCavallo(oPC); //Parte per montare a cavallo if(NumeroRazza!=0 && GetTag(oCavallo)=="gsc_cavallo" || GetTag(oCavallo)=="gsc_pony" && GetStringLowerCase(GetSubRace(oPC))!="minotauro") { if(GetDistanceBetween(oPC,oCavallo)<30.0 && GetHenchman(oPC)==oCavallo) { AssignCommand(oCavallo,SetIsDestroyable(TRUE,FALSE,FALSE)); DestroyObject(oCavallo); SetCreatureAppearanceType(oPC,NumeroRazza); } } else if(GetHenchman(oPC)!=oCavallo) { FloatingTextStringOnCreature("Non puoi cavalcare questo cavallo poiche' non ti appartiene",oPC,FALSE); } else if(GetStringLowerCase(GetSubRace(oPC))=="minotauro") { FloatingTextStringOnCreature("I minotauri non possono cavalcare",oPC,FALSE); } else { FloatingTextStringOnCreature("Devi essere piu' vicino per montare la sella",oPC,FALSE); } } /////////////////////////////////////////////// void GSC_CreaCavallooPonyInStalla(object oPC,string sTagCavallo) /////////////////////////////////////////////// { int nMaxCavalli=GetMaxHenchmen(); int i; for(i==1;i<=nMaxCavalli;i++) { if(GetTag(GetHenchman(oPC,i))==sTagCavallo) { //FloatingTextStringOnCreature("Hai gia' un cavallo",oPC,FALSE); return; } } object oCavallo=CreateObject(OBJECT_TYPE_CREATURE,sTagCavallo,GetLocation(oPC),TRUE); SetLocalObject(oCavallo,"gsc_padrone",oPC); AddHenchman(oPC,oCavallo); } /////////////////////////////////////////////// void GSC_AttivaSella() /////////////////////////////////////////////// { object oSella=GetItemActivated(); if(GetTag(oSella)=="gsc_sella") { object oPC=GetItemActivator(); if(GetLocalInt(GetArea(oPC),"stalla_var")==1) { GSC_SmontaDaCavallo(oPC); object oCavallo=GetItemActivatedTarget(); int nRace=GetRacialType(oPC); switch(nRace) { case(RACIAL_TYPE_HUMAN): GSC_CreaCavallooPonyInStalla(oPC,"gsc_cavallo"); break; case(RACIAL_TYPE_HALFELF): GSC_CreaCavallooPonyInStalla(oPC,"gsc_cavallo"); break; case(RACIAL_TYPE_ELF): GSC_CreaCavallooPonyInStalla(oPC,"gsc_cavallo"); break; case(RACIAL_TYPE_DWARF): GSC_CreaCavallooPonyInStalla(oPC,"gsc_pony"); break; case(RACIAL_TYPE_GNOME): GSC_CreaCavallooPonyInStalla(oPC,"gsc_pony"); break; case(RACIAL_TYPE_HALFLING): GSC_CreaCavallooPonyInStalla(oPC,"gsc_pony"); break; case(RACIAL_TYPE_HALFORC): GSC_CreaCavallooPonyInStalla(oPC,"gsc_cavallo"); break; default: FloatingTextStringOnCreature("La tua razza non e' in grado di cavalcare",oPC,FALSE); } } else GSC_SmontaDaCavallo(oPC); /* if(GSC_SmontaDaCavallo(oPC)==FALSE && GetTag(GetItemActivatedTarget())=="gsc_cavallo" || GetTag(GetItemActivatedTarget())=="gsc_pony") FloatingTextStringOnCreature("Per montare a cavallo parlaci",oPC,FALSE); else FloatingTextStringOnCreature("Puoi evocare il tuo cavallo solo in una stalla",oPC,FALSE); */ }//Fine if(GetTag(oSella)=="gsc_sella") } /////////////////////////////////////////////// void GSC_OnClientEnter(object oPC) /////////////////////////////////////////////// { if(GetAppearanceType(oPC)==nRiga2daCavalloUmano) { SetCreatureAppearanceType(oPC,6); } else if(GetAppearanceType(oPC)==nRiga2daCavalloElfo) { SetCreatureAppearanceType(oPC,1); } else if(GetAppearanceType(oPC)==nRiga2daCavalloNano) { SetCreatureAppearanceType(oPC,0); } else if(GetAppearanceType(oPC)==nRiga2daCavalloGnomo) { SetCreatureAppearanceType(oPC,2); } else if(GetAppearanceType(oPC)==nRiga2daCavalloHalfling) { SetCreatureAppearanceType(oPC,3); } else if(GetAppearanceType(oPC)==nRiga2daCavalloElfo) { SetCreatureAppearanceType(oPC,5); } } int GSC_GetMasterOfHorse(object oPC,object oCavallo) { int nMaxCavalli=GetMaxHenchmen(); int i; for(i==1;i<=nMaxCavalli;i++) { if(GetHenchman(oPC,i)==oCavallo) return TRUE; } return FALSE; } /////////////////////////////////////////////// void GSC_CheckDisarcionare(object oMob) /////////////////////////////////////////////// { object oPC=GetAttackTarget(oMob); if(GetLastDamager(oPC)==oMob) { int PXScorsi=GetLocalInt(oPC,"gsc_px"); int nPXAttualiPC=GetCurrentHitPoints(oPC); //SendMessageToPC(oPC,"Nome delPX attuali pari a "+IntToString(nPXAttualiPC)+" , PX storati="+IntToString(PXScorsi)); if(GSC_IsPGRidingHorse(oPC)) { //Se sbaglia il tiro il pg cade da cavallo if(nPXAttualiPC!=PXScorsi && PXScorsi!=0 && !GetIsSkillSuccessful(oPC,SKILL_CAVALCARE,CD_CAVALCARE)) { SendMessageToPC(oPC,"Tiro su Cavalcare fallito,cadi da cavallo"); GSC_SmontaDaCavallo(oPC); AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_DEAD_FRONT,1.0,5.0)); ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(10),oPC); SetLocalInt(oPC,"gsc_px",nPXAttualiPC); } //Nel caso di primo attacco limitiamoci ad aggiornare la soglia else if(PXScorsi==0) SetLocalInt(oPC,"gsc_px",nPXAttualiPC); //Il pg non e' stato danneggiato quindi non facciamo check //ma aggiorniamo la soglia else SetLocalInt(oPC,"gsc_px",nPXAttualiPC); } } } /////////////////////////////////////////////// void GSC_OnPGDeath(object oPC) /////////////////////////////////////////////// { if(GetAppearanceType(oPC)==nRiga2daCavalloUmano) { SetCreatureAppearanceType(oPC,6); DestroyObject(GetItemPossessedBy(oPC,"gsc_sella")); } else if(GetAppearanceType(oPC)==nRiga2daCavalloElfo) { SetCreatureAppearanceType(oPC,1); DestroyObject(GetItemPossessedBy(oPC,"gsc_sella")); } else if(GetAppearanceType(oPC)==nRiga2daCavalloNano) { SetCreatureAppearanceType(oPC,0); DestroyObject(GetItemPossessedBy(oPC,"gsc_sella")); } else if(GetAppearanceType(oPC)==nRiga2daCavalloGnomo) { SetCreatureAppearanceType(oPC,2); DestroyObject(GetItemPossessedBy(oPC,"gsc_sella")); } else if(GetAppearanceType(oPC)==nRiga2daCavalloHalfling) { SetCreatureAppearanceType(oPC,3); DestroyObject(GetItemPossessedBy(oPC,"gsc_sella")); } else if(GetAppearanceType(oPC)==nRiga2daCavalloElfo) { SetCreatureAppearanceType(oPC,5); DestroyObject(GetItemPossessedBy(oPC,"gsc_sella")); } else return; } /////////////////////////////////////////////// void GSC_OnEquipItem(object oPC,object ItemEquipped) /////////////////////////////////////////////// { if(GSC_IsPGRidingHorse(oPC)) { switch(GetBaseItemType(ItemEquipped)) { case(BASE_ITEM_TOWERSHIELD): DelayCommand(1.0,AssignCommand(oPC,ActionUnequipItem(ItemEquipped))); FloatingTextStringOnCreature("Non puoi equipaggiare questo oggetto quando cavalchi",oPC,FALSE); break; //Continua qua con la lista oggetti non consentita default: return; }//fine switch } } et pour finir le script pour faire disparaitre le cheval lors du dialogue : gsc_disevoca NWScript :
void main() { object oPC=GetPCSpeaker(); object oCavallo=OBJECT_SELF; int nMaxCavalli=GetMaxHenchmen(); int i; RemoveHenchman(oPC,oCavallo); AssignCommand(oCavallo,SetIsDestroyable(TRUE,FALSE,FALSE)); DestroyObject(oCavallo); } J'espere que tu pourras faire qq chose avec ça merci PS pendant que tu y es si j ai un autre hench je ne peux monter à cheval que si le hench n est plus avec moi ou si il est en 2ème position y a t'il moyen de faire qq chose? Et enfin quels sont les 2 autres haks? amicalement _________________ Rien ne vaut la recherche lorsqu'on veut trouver quelque chose. [J. R. R. Tolkien] |
Revenir en haut | |
BenGorre Légende vivante Messages: 301 |
Pour enlever le cheval en fait c'est tout simple on dirait (grace aux simplifications de l'include) il suffit de mettre ceci dans le OnEnter de la zone:
NWScript :
////////////////////////////// ///////////////// // d'un joueur qui entre dans la zone. //a mettre dans le OnEnter de la zone. ////////////////////////////// //////////////// int nRiga2daCavalloUmano=1036; int nRiga2daCavalloElfo=1037; int nRiga2daCavalloNano=1038; int nRiga2daCavalloGnomo=1039; int nRiga2daCavalloHalfling=1032; int nRiga2daCavalloOrco=1033; void main() { object oPC = GetEnteringObject(); object oHench = GetHenchman(oPC); string sTag = GetTag(oHench); if(GetAppearanceType(oPC)==nRiga2daCavalloUmano) { SetCreatureAppearanceType(oPC,6); } else if(GetAppearanceType(oPC)==nRiga2daCavalloElfo) { SetCreatureAppearanceType(oPC,1); } else if(GetAppearanceType(oPC)==nRiga2daCavalloNano) { SetCreatureAppearanceType(oPC,0); } else if(GetAppearanceType(oPC)==nRiga2daCavalloGnomo) { SetCreatureAppearanceType(oPC,2); } else if(GetAppearanceType(oPC)==nRiga2daCavalloHalfling) { SetCreatureAppearanceType(oPC,3); } else if(GetAppearanceType(oPC)==nRiga2daCavalloOrco) { SetCreatureAppearanceType(oPC,5); } else if(sTag=="gsc_cavallo" || sTag=="gsc_pony") { RemoveHenchman(oPC,oHench); AssignCommand(oHench,SetIsDestroyable(TRUE,FALSE,FALSE)); DestroyObject(oHench); } } Voila je pense que ca devrait marcher.(pas tester car je n'utilise pas ce hak) Pour les autres je trouve que le meilleur est celui du NIC mais bon je n'utilise pas de chevaux pour l'instant. pour le probelem avec les henchman il suffit de rajouter la ligne NWScript : avant que le cheval (ou le poney) rentre dans le "groupe" et ensuite remettre la même ligne mais en remplacant le 2 par 1.
SetMaxHenchMen(2); Voila en esperant que tout ca marche. _________________ La mort n'est rien seul le fait de mourir est terrible Henry Fielding 1745 Le serveur Filandre a été stoppé pour le moment, je on travail à la conversion vers NWN2. |
Revenir en haut | |
yellow submarine Grand Chevalier Messages: 143 |
Bonjour
merci ça fonctionne aux poils je vais voir pour mon plème avec les hench _________________ Rien ne vaut la recherche lorsqu'on veut trouver quelque chose. [J. R. R. Tolkien] |
Revenir en haut | |
La Bibliothèque de Neverwinter Nights Index du Forum »
La Bibliothèque Binaire du NWScript - Neverwinter Nights
Page 1 sur 1 ¤
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum