La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 01/11/2024 04:36:33


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Attention ! Vous êtes en train de lire un message hors de son contexte. Veuillez lire le sujet Aux utilisateurs du hak Rideable Horses en entier avant de répondre à ce message.
yellow submarine
Grand Chevalier
Inscrit le: 24 Oct 2003
Messages: 143
Répondre en citant
Posté le : 05/10/2005 08:37:33 Sujet du message :

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 Very Happy)
le cheval se positionne à côté
dans evenements module : OnActivateItem j'ai mis

NWScript :

#include "gsc_include"
GSC_AttivaSella();
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 :


//:Confused//////////////////////////////////////////////
//:: Name Gilean Sistema Cavalli
//:: FileName  gsc_include
//:: Copyright (c) 2001 Bioware Corp.
//:Confused/////////////////////////////////////////////
/*    Rideable Horse system made from
      Ardemor Persistent World on [http]
*/
//:Confused/////////////////////////////////////////////
//:: Created By:  Gilean
//:: Created On:  04.03.05
//:Confused/////////////////////////////////////////////


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
}

}
Le code a colorer syntaxiquement est trop long (plus de 10240 caractères) et risque de ne pas s'afficher du tout. Vous pouvez le voir en version colorée ici.


et pour finir le script pour faire disparaitre le cheval lors du dialogue : gsc_disevoca

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.



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 Sad y a t'il moyen de faire qq chose? Confused

Et enfin quels sont les 2 autres haks? Very Happy

amicalement
_________________
Rien ne vaut la recherche lorsqu'on veut trouver quelque chose.

[J. R. R. Tolkien]
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé
 
Montrer les messages depuis :
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


Sauter vers:
FAQ | Rechercher | Liste des Membres | Groupes d'utilisateurs | S'enregistrer | Profil | Se connecter pour vérifier ses messages privés | Connexion
Powered by phpBB 2.* [m] © 2001, 2002 phpBB Group
Theme rewritten in beautiful XHTML code by Baldurien.
Thème "La Bibliothèque de Neverwinter" crée par Kruger
Traduction par : phpBB-fr.com
Page generated in 27.187ms