La Bibliothèque de Neverwinter Nights
Aide et informations diverses sur Neverwinter Nights ainsi que D&D3.
La date/heure actuelle est 02/06/2024 08:56:13


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
Harès
Novice
Inscrit le: 11 Oct 2005
Messages: 6
Répondre en citant
Posté le : 11/10/2005 17:57:56 Sujet du message : Additionner 2 scripts ... ?

Salut a vous voila je sui pas le premier a vous le dire : Je suis une quiche en Script...
Mais bon voila comme je passe des heures devant les pages de ce forum pour trouver des scripts qui m'interessent, je me suis dit : " Pourquoi je vais pas poster un message..?"
Donc voila en faite j'aurais besoin de vous pour mettre 2 scripts ensemble...j'ai vus quelque sujets deja la-dessus mais je pense qu'il faut a chaque fois un solution pour chaque script :
Voila j'ai placé ce script ANTI-DUPLIK qui fonctionne a merveille dans le OnClientEnter de mon module

Code :
#include "nw_i0_plot"

void DestroyItems(object oPC, string sItem)
{
if(HasItem(oPC, sItem) == TRUE)
{
DestroyObject(GetItemPossessedBy(oPC, sItem));
SendMessageToPC(oPC, "Um dos seus itens foi destruido pois era fruto de trapaca");
}

}

void main()
{
object oPC = GetEnteringObject();

if (GetCampaignInt("Hermes", "WAS_CRAFTING", oPC) == TRUE)
{
string sCraftedItem = GetCampaignString("Hermes", "CRAFT_OBJECT", oPC);
DestroyItems(oPC, sCraftedItem);
string sName = GetName(oPC);
string sCDKEY = GetPCPublicCDKey(oPC);
SendMessageToAllDMs("ATENCAO!!! O jogador "+sName+" CDKEY "+sCDKEY+" esta tentando duplicar um item!!");
WriteTimestampedLogEntry("ATENCAO!!! O jogador "+sName+" CDKEY "+sCDKEY+" esta tentando duplicar um item!!");
DeleteCampaignVariable("Hermes", "WAS_CRAFTING", oPC);
DeleteCampaignVariable("Hermes", "CRAFT_OBJECT", oPC);
}
}


Mais voila le script qui etait avant ne fonctionne plus (normal je l'ai remplacé).

Code :
//le paillasson du bouchon

object oPC = GetEnteringObject();

void main()
{
ExecuteScript("ats_client_enter", GetModule());

if (!GetIsDM (oPC))
{

if(GetItemPossessedBy(oPC,"mort")!=OBJECT_INVALID)
{
effect eDeath = EffectDeath(FALSE, FALSE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oPC);
DestroyObject( GetItemPossessedBy(oPC,"mort"));
return;
}
else
{
string PCName = GetName(oPC);
// if (GetArea(oPC)!=GetAreaFromLocation(GetStartingLocation()))
// {
int MaxHP = GetMaxHitPoints(oPC);
int Damage = GetLocalInt(GetModule(),GetName(oPC)+GetPCPublicCDKey(oPC)+"Damages");
if (MaxHP<Damage) // Normalement, aurait du arriver avec carte de mort: probablement un tricheur => punition exemplaire !
{
int nXP = GetXP(oPC);
int nPenalty = 100 * GetHitDice(oPC);
int nHD = GetHitDice(oPC);
// * You can not lose a level with this respawning
int nMin = ((nHD * (nHD - 1)) / 2) * 1000;

int nNewXP = nXP - nPenalty;
if (nNewXP < nMin)
nNewXP = nMin;
SetXP(oPC, nNewXP);
int nGoldToTake = FloatToInt(0.20 * GetGold(oPC));
AssignCommand(oPC, TakeGoldFromCreature(nGoldToTake, oPC, TRUE));
SendMessageToAllDMs(GetName(oPC)+" a ete puni pour avoir essaye de tricher avec la mort !");
WriteTimestampedLogEntry(GetName(oPC)+"(CDkey:"+GetPCPublicCDKey(oPC)+") a ete puni pour avoir essaye de tricher avec la mort !");
DelayCommand(4.0, FloatingTextStringOnCreature(GetName(oPC)+" regrette amerement d'avoir essaye de tricher avec la mort !", oPC, TRUE));
}
effect eDamage = EffectDamage(Damage, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_PLUS_FIVE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC);
SetLocalInt(GetModule(),GetName(oPC)+GetPCPublicCDKey(oPC)+"Damages",0);
WriteTimestampedLogEntry(GetName(oPC) + " doit subire " + IntToString(Damage) + " / " + IntToString(GetMaxHitPoints(oPC)) + " =>> Sante=" + IntToString(GetCurrentHitPoints(oPC)));
return;
// }
}
}
}



Donc si vous pouvez me donner le resuslat de ces 2 scripts ensemble sa serait trop simpa....
Merci a vous
Dernière édition par Harès le 12/10/2005 12:32:45; édité 3 fois
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Djezebel
Héros
Inscrit le: 29 Sep 2005
Messages: 252
Répondre en citant
Posté le : 11/10/2005 18:58:44 Sujet du message :

Heuuu ce sont les deux mêmes scripts... Smile
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Harès
Novice
Inscrit le: 11 Oct 2005
Messages: 6
Répondre en citant
Posté le : 11/10/2005 19:01:29 Sujet du message :

Mdrrr mais comme je sui bidon...
Voila c'est rectifier.
Merci de me l'avoir dit ^^
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Djezebel
Héros
Inscrit le: 29 Sep 2005
Messages: 252
Répondre en citant
Posté le : 12/10/2005 07:01:03 Sujet du message :

C'est étrange, rien que pour le premier script, je n'arrive pas à le compiler.

Ca me met à la première ligne (au ##include "nw_i0_plot" ) :


Citation :
teste1.nss(1): ERREUR : ELLIPSIS IN IDENTIFIER
Donc... est-ce que ça viendrait de là ?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Harès
Novice
Inscrit le: 11 Oct 2005
Messages: 6
Répondre en citant
Posté le : 12/10/2005 12:34:20 Sujet du message :

J'ai relus et il y a une erreur evidament : il n'y a que un seul # voila petite erreur de copier/coler....tu peux ressayer maintenant ?
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Djezebel
Héros
Inscrit le: 29 Sep 2005
Messages: 252
Répondre en citant
Posté le : 12/10/2005 14:49:40 Sujet du message :

Je ne sais pas si ça va marcher comme tu veux, mais au moins chez moi ça compile Razz


NWScript :
#include "nw_i0_plot"

void DestroyItems(object oPC, string sItem)
{
if(HasItem(oPC, sItem) == TRUE)
{
DestroyObject(GetItemPossessedBy(oPC, sItem));
SendMessageToPC(oPC, "Um dos seus itens foi destruido pois era fruto de trapaca");
}

}


object oPC = GetEnteringObject();

void main()
{

object oPC = GetEnteringObject();

if (GetCampaignInt("Hermes", "WAS_CRAFTING", oPC) == TRUE)
{
string sCraftedItem = GetCampaignString("Hermes", "CRAFT_OBJECT", oPC);
DestroyItems(oPC, sCraftedItem);
string sName = GetName(oPC);
string sCDKEY = GetPCPublicCDKey(oPC);
SendMessageToAllDMs("ATENCAO!!! O jogador "+sName+" CDKEY "+sCDKEY+" esta tentando duplicar um item!!");
WriteTimestampedLogEntry("ATENCAO!!! O jogador "+sName+" CDKEY "+sCDKEY+" esta tentando duplicar um item!!");
DeleteCampaignVariable("Hermes", "WAS_CRAFTING", oPC);
DeleteCampaignVariable("Hermes", "CRAFT_OBJECT", oPC);
}

ExecuteScript("ats_client_enter", GetModule());

if (!GetIsDM (oPC))
{

if(GetItemPossessedBy(oPC,"mort")!=OBJECT_INVALID)
{
effect eDeath = EffectDeath(FALSE, FALSE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oPC);
DestroyObject( GetItemPossessedBy(oPC,"mort"));
return;
}
else
{
string PCName = GetName(oPC);
// if (GetArea(oPC)!=GetAreaFromLoca tion(GetStartingLocation()))
// {
int MaxHP = GetMaxHitPoints(oPC);
int Damage = GetLocalInt(GetModule(),GetName(oPC)+GetPCPublicCDKey(oPC)+"Damages");
if (MaxHP<Damage) // Normalement, aurait du arriver avec carte de mort: probablement un tricheur =&gt; punition exemplaire !
{
int nXP = GetXP(oPC);
int nPenalty = 100 * GetHitDice(oPC);
int nHD = GetHitDice(oPC);
// * You can not lose a level with this respawning
int nMin = ((nHD * (nHD - 1)) / 2) * 1000;

int nNewXP = nXP - nPenalty;
if (nNewXP < nMin)
nNewXP = nMin;
SetXP(oPC, nNewXP);
int nGoldToTake = FloatToInt(0.20 * GetGold(oPC));
AssignCommand(oPC, TakeGoldFromCreature(nGoldToTake, oPC, TRUE));
SendMessageToAllDMs(GetName(oPC)+" a ete puni pour avoir essaye de tricher avec la mort !");
WriteTimestampedLogEntry(GetName(oPC)+"(CDkey:"+GetPCPublicCDKey(oPC)+") a ete puni pour avoir essaye de tricher avec la mort !");
DelayCommand(4.0, FloatingTextStringOnCreature(GetName(oPC)+" regrette amerement d'avoir essaye de tricher avec la mort !", oPC, TRUE));
}
effect eDamage = EffectDamage(Damage, DAMAGE_TYPE_MAGICAL, DAMAGE_POWER_PLUS_FIVE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC);
SetLocalInt(GetModule(),GetName(oPC)+GetPCPublicCDKey(oPC)+"Damages",0);
WriteTimestampedLogEntry(GetName(oPC) + " doit subire " + IntToString(Damage) + " / " + IntToString(GetMaxHitPoints(oPC)) + " =&gt;&gt; Sante=" + IntToString(GetCurrentHitPoints(oPC)));
return;
// }
}
}
}
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.



Le problème venait que tu avais dans les deux scripts :

void main()
{
Action 1
}

void main()
{
Action 2
}

Donc ton script ne savait pas lequel prendre.
(C'est comme si on te dit : "Bon, si je dis "main" tu te gratte le nez et si je dis "main", tu lèves la jambe. Tu ne sais pas trop quoi faire Razz (bon, ok tu es plus intelligent qu'un ordi mais bon Razz"))

Donc en fait, il suffit de faire :

void main()
{
Action 1
Action 2
}

Voilà pour l'explication, je ne sais pas si ça va marcher cette fois mais bon, apparement pas d'erreur.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Harès
Novice
Inscrit le: 11 Oct 2005
Messages: 6
Répondre en citant
Posté le : 12/10/2005 20:47:52 Sujet du message :

Okay trop simpa Merci...je vais tester.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Dorian
Novice
Inscrit le: 16 Juin 2005
Messages: 19
Répondre en citant
Posté le : 13/10/2005 15:54:39 Sujet du message :


Djezebel a écrit :
Je ne sais pas si ça va marcher comme tu veux, mais au moins chez moi ça compile Razz
Ouais je t'ai battu mdr avec 2h d'avance ^^.

Bon on est arrivé à la même chose et à priori sa doit marcher impec même si je n'ai pas fait les tests ^^. Moi au moins j'ai traduit les truc en espagnol et "éclairci" le code ^^.

PS : ne pas prendre mon message sérieusement même si c'est vrai Razz ^^
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
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 46.173ms