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 19:36:45


  Page 1 sur 1 ¤

Voir le sujet précédent ¤ Voir le sujet suivant 
Auteur Message
darkheaven
Acolyte
Inscrit le: 21 Aoû 2004
Messages: 35
Localisation: nevers
Répondre en citant
Posté le : 21/02/2006 11:48:47 Sujet du message : Le vol en clair dans les logs

Bonjour a tous qui liront ce sujet,

Apres quelques recherche sur le forum je me suis dit que j'allais poster pour ne pas upper un sujet trop vieu.
Je suis a la recherche d'un script qui a pour effet de mettre en evidence dans les logs l'action de voler.
Travaillant sur un serveur ou le vol est tres peu tolerer, cela pourrait etre pratique pour decouvrir les coupables.
J'ai trouver ceci :
NWScript :
void main()
{
  object oVole = GetModuleItemAcquiredFrom();
  object oVoleur = GetModuleItemAcquiredBy();
  object oItem = GetModuleItemAcquired();
  if ( GetModuleItemAcquiredFrom() != OBJECT_INVALID )
    {
      PrintString( GetName( oItem ) + "" + ( GetName( oVole ) ) + "" + ( GetName( oVoleur ) ));
    }
}
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 probleme avec ce script c'est qu'il marque dans les log TOUTES les actions de transfert d'item pnj/pj pj/pj contenant/pj mais PAS les vols Confused alors que c'etait a la base son role premier. Il me semble qu'il existe deja un script qui a cette fonction d'ou ma question, si quelqu'un l'avait quelques part pourrait il me le donner? ou dans le cas contraire aider a la modification de celui ci pour que le probleme soit regler?
merci d'avance
_________________
La vie n'est qu'une plume que le destin balade au grés du vent...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
AZAZEL11
Seigneur
Inscrit le: 08 Fév 2006
Messages: 156
Répondre en citant
Posté le : 21/02/2006 12:09:13 Sujet du message :

tiens, je crois qu'en regardant ce script ca va t'aider:





NWScript :
void main()
{
object oItemAcquired = GetModuleItemAcquired();
string sItemName = GetName(oItemAcquired);
string sNumStackedItems = IntToString(GetNumStackedItems(oItemAcquired));

object oItemPossessor = GetItemPossessor(oItemAcquired);
string sPossessorName = GetName(oItemPossessor);
string sPossessorLvl = IntToString(GetHitDice(oItemPossessor));

object oItemOldPossessor = GetModuleItemAcquiredFrom();
string sOldPossessorName = GetName(oItemOldPossessor);
string sOldPossessorLvl = IntToString(GetHitDice(oItemOldPossessor));

string sSaid = sItemName + " (" + sNumStackedItems + "" + sOldPossessorName + " (Niveau : " + sOldPossessorLvl + "" + sPossessorName + " (Niveau : " + sPossessorLvl + ").";


if(GetIsObjectValid(oItemOldPossessor) && GetIsPC(oItemOldPossessor) && GetIsPC(oItemPossessor) && GetStolenFlag(oItemAcquired)==TRUE)
  {
  SendMessageToAllDMs("[VOL] " + sSaid);
  }
}
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.







Une idée comme ca, tu pourrais essayer d'utiliser cette commande


GetIsSkillSuccessful(ACTION_PICKPOCKET);
_________________
L'imagination est plus importante que le savoir. (Albert Einstein)
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
lylver
Héros
Inscrit le: 08 Avr 2005
Messages: 274
Répondre en citant
Posté le : 21/02/2006 13:04:20 Sujet du message : régulation du vol

J'ai fait ca pour un projet NWN-CFR mais nous avons peu l'occasion de tester en fait : je suis demandeur de retour de test pour savoir si cela marche bien (bah vi nos joueurs sont paisibles...)

NWScript :

//:: ////
//:: Updated Lylver 2005-09-16
//:: pour le TN Bouchon 2
//:: tn_mod_def_unaq
//:: conservation/adaptation code ATS
//:: Put into: OnItemUnAcquire Event

void main()
{
// Use this in an OnItemLost script to get the item that was lost/dropped.
// * Returns OBJECT_INVALID if the module is not valid.
  object oItem = GetModuleItemLost();
  string sItemTag = GetTag(oItem);
  object oItemLost = GetModuleItemLost() ;
  if( GetStolenFlag(oItemLost) ){
      object oVictim = GetModuleItemLostBy() ; // ou GetModuleItemAcquiredFrom()
      object oThief = GetItemPossessor(oItemLost) ;
// GetModuleItemAcquiredBy() n'est pas recalcule sur le OnItemUnAcquire, il reste a son
// ancienne valeur !
// merci au createur du script du tonneau alchimique (x2_it_pkeg) pour l'indication
// "Check to see if the current item possessor is valid                    "
// "- if so - assume it was given to a henchman so don't make the placeable "
// "if (GetIsObjectValid(GetItemPosse ssor(oItem)) == FALSE)                "
      SetLocalObject(oVictim,"THIEF",oThief);
      SetLocalObject(oVictim,"ITEM",oItemLost);
      SetLocalInt(oVictim,"ITSTACKSIZE",GetModuleItemAcquiredStackSize());
      if( GetIsPC(oVictim) || GetIsPC(oThief) ) ExecuteScript("ly_theft",oVictim) ;
  }
}
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.


NWScript :

//:: ////
//:: ly_theft.nss
//:: Created Lylver 2005-01-08
//:: ////

// Return Item inventory width
// Uses Get2DAString

int GetInvSlotWidth(object oItem)
{
    int nBaseType = GetBaseItemType(oItem);
    return StringToInt(Get2DAString("baseitems","InvSlotWidth",nBaseType)) ;
}

int GetInvSlotHeigth(object oItem)
{
    int nBaseType = GetBaseItemType(oItem);
    return StringToInt(Get2DAString("baseitems","InvSlotHeight",nBaseType)) ;
}

int GetWeaponSize(object oItem)
{
    int nBaseType = GetBaseItemType(oItem);
    return StringToInt(Get2DAString("baseitems","WeaponSize",nBaseType)) ;
}

int GetItemWeight(object oItem)
{
    int nBaseType = GetBaseItemType(oItem);
    return StringToInt(Get2DAString("baseitems","TenthLBS",nBaseType)) ;
}

void main(){
  object oVictim = OBJECT_SELF ;
  object oThief = GetLocalObject(oVictim,"THIEF") ;
  DeleteLocalObject(oVictim,"THIEF");
  object oItem = GetLocalObject(oVictim,"ITEM") ;
  DeleteLocalObject(oVictim,"ITEM");
  int nItStackSize = GetLocalInt(oVictim,"ITSTACKSIZE") ;
  DeleteLocalInt(oVictim,"ITSTACKSIZE");
  int nHeight = GetInvSlotHeigth(oItem) ;
  int nWidth = GetInvSlotWidth(oItem) ;
  int nWeight = GetItemWeight(oItem) ;
  int nSize = GetWeaponSize(oItem) ;
  SendMessageToPC(oThief,"Entree dans ly_theft.nss");
  string sInfo = " Debug :\n"+"Largeur de l'objet : "+IntToString(nWidth)+
  " Hauteur de l'objet : "+IntToString(nHeight)+
  " Taille de l'objet : "+IntToString(nSize)+
  " Poids de l'objet (TenLBS): "+IntToString(nWeight)+
  " Victime : "+GetName(oVictim)+
  " Voleur : "+GetName(oThief)+
  " Objet : "+GetName(oItem) ;
      // vol ?
  if( GetLastDisturbed() == oThief ){
      // bah oui...
      SendMessageToPC(oThief,"Reconnu comme ayant modifie l'inventaire de "+GetName(oVictim));
  }
      if( GetInventoryDisturbItem() == oItem ){
        SendMessageToPC(oThief,"Objet modifie reconnu");
        // meme item
      }
        if( GetInventoryDisturbType() == INVENTORY_DISTURB_TYPE_STOLEN ){
            SendMessageToPC(oThief,"Dernier evenement inventaire vol reconnu");
           
            }
            if( GetIsPC(oVictim) ){
              SendMessageToPC(oVictim,
              "Vol de "+GetName(oItem)+" par "+GetName(oThief)+sInfo );
            }
            if( GetIsPC(oThief) ){
              SendMessageToPC(oThief,
              "Vol de "+GetName(oItem)+" sur "+GetName(oVictim)+sInfo );
            }
            if( (nHeight * nWidth > 2) && ( nWeight > 30 ) ){
              SendMessageToPC(oThief,"Objet hors norme, restitution");
              SendMessageToPC(oVictim,"Objet hors norme, restitution");
              object oItemRetour = CopyItem(oItem, oVictim, TRUE) ;
              SetPlotFlag(oItemRetour, GetPlotFlag(oItem));
              SetStolenFlag(oItemRetour, FALSE);
              SetIdentified(oItemRetour, GetIdentified(oItem)) ;
              int nValue = GetGoldPieceValue(oItem)/5 ;
              // pour correspondre au prix de vente des objets voles sur le Bouchon
              DestroyObject(oItem) ;
             
              int nPick = GetSkillRank(SKILL_PICK_POCKET,oThief) + d20() ;
              int nDetect = GetSkillRank(SKILL_SPOT,oVictim) + d20() ;
              if( nPick > nDetect ){
             
              float fMarge = pow(10.0, IntToFloat((7 + nPick - nDetect)/10) ) ;
              if( FloatToInt(fMarge) < nValue ) nValue = FloatToInt(fMarge) ;
              SendMessageToPC(oThief,"compensation pour talent PickPocket : "+IntToString(nValue)+"");
              SendMessageToAllDMs("compensation pour talent PickPocket : "+IntToString(nValue)+"");
              GiveGoldToCreature(oThief,nValue) ;
              SendMessageToPC(oVictim,"compensation pour talent PickPocket : "+IntToString(nValue)+"");
              AssignCommand(oVictim,TakeGoldFromCreature(nValue,oVictim,TRUE));
              // 3 de marge = 10 po, 6 =&gt; 20 po, 10 =&gt; 50po, 13 etc
            }
            }
//        }
//      }
//  }
}
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.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
darkheaven
Acolyte
Inscrit le: 21 Aoû 2004
Messages: 35
Localisation: nevers
Répondre en citant
Posté le : 21/02/2006 13:30:19 Sujet du message :

lylver : apres test de ton script, le voleur a un detail precis de ce quil vol dans la case adjointe a ceuue du dialogue, mais rien de marquer dans les logs
azazel : ca ne fais rien, normal?

Edit : Apres relecture je crois que j'ai mal cromprit ton script, di moi si c'est ca :
le voleur vole (oui oui je sais) , la victime recoit un message comme quoi elle a etait voler ainsi que le nom de l'item c'est ca?

_________________
La vie n'est qu'une plume que le destin balade au grés du vent...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Argyl
Grand Sage du Conseil
Inscrit le: 09 Fév 2005
Messages: 704
Répondre en citant
Posté le : 21/02/2006 13:45:29 Sujet du message :

Le but étant d'empécher le vol, si j'ai bien compris, il suffit d'interdir la compétence à toutes les classes.

Dans le skills.2da
Modification du allclasscanuse 0 au lieu de 1 (si nécessaire, je ne sais plus si ce n'est pas déjà sur 0)
Mettre la nécessité d'apprentissage sur 1

Retirer la compétence de tous les cls_skill_XXXXX.2da
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
lylver
Héros
Inscrit le: 08 Avr 2005
Messages: 274
Répondre en citant
Posté le : 21/02/2006 15:10:26 Sujet du message :


darkheaven a écrit :
lylver : apres test de ton script, le voleur a un detail precis de ce quil vol dans la case adjointe a ceuue du dialogue, mais rien de marquer dans les logs
azazel : ca ne fais rien, normal?

Edit : Apres relecture je crois que j'ai mal cromprit ton script, di moi si c'est ca :
le voleur vole (oui oui je sais) , la victime recoit un message comme quoi elle a etait voler ainsi que le nom de l'item c'est ca?
suffit de mettre des WriteTimeStampedLogEntry(string sMesg) en sus des messages envoyés, c'est à la portée de tlm.

Le but de la chose était de limiter de façon générique les items volables sur un critère de poids et de dimension.
Mais aussi de récompenser / compenser l'utilisation du talent pickpocket.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
darkheaven
Acolyte
Inscrit le: 21 Aoû 2004
Messages: 35
Localisation: nevers
Répondre en citant
Posté le : 21/02/2006 19:50:36 Sujet du message :

Le but du script que je recherche est juste que lorsqu'un voleur vole, son nom de compte soit marquer dans les logs avec celui de la personne qu'il a voler.
Rien de plus.
_________________
La vie n'est qu'une plume que le destin balade au grés du vent...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Semcatala
Grand Sage du Conseil
Inscrit le: 20 Jan 2004
Messages: 951
Répondre en citant
Posté le : 21/02/2006 20:30:05 Sujet du message :

Je crois qu'il n'existe pas de commande pour savoir qui à été volé et qui à volé.

Mais il y a je crois un autre moyen !!!

D'abord , crée un petit script qui met en mémoire sur le mod pendant un court temps le tag de l'objet "perdu" par un joueur ainsi que le nom de celui qui à perdu un objet.

Ensuite , met en mémoire le tag de l'objet " gagné " par un joueur , ainsi que le nom de celui qui l'a gagné.

Ensuite , c'est simple , met une minuterie pour que soit effacée rapidement le tag de l'objet perdu , mais une minuterie pour quoi faire me demandera tu ?

Et bien voilà l'idée , ça consisterais a comparer dans un court intervale de temps l'objet "perdu" par un joueur , et l'objet " gagné " par un autre joueur.

Le raisonement consiste a dire que si à t = 0 secondes le joueur " Lucky luke " a perdu son cheval qui à pour tag " jolly_jumper " , alors si jamais à t =0,0001 secondes ( un temps trés proche on va dire !! ) un autre joueur gagne un cheval de tag " jolly_jumper " alors il y a eu vol du second joueur sur le premier !

En plus de la condition de temps pour garantir la bonne detection du voleur , tu peux aussi mettre une condition de nom de zone pour vérifier que les 2 joueurs étaient dans la même zone lors du vol !

Tu peux même pousser le vice jusqu'a détecter la distance en métres entre les 2 personnes pour donner au MD de solides arguments pour définir si il y a eu ou pas un vol !

Si les 2 joueurs étaient dans la même zone , à 10cm l'un de l'autre lors de l'incident , et que le script te dit qu'il y a eu vol , alors il n'y a aucun doute !

Car la probabilité qu'un joueur perde un objet de tag X et qu'un autre joueur gagne un objet de tag X à 1 seconde prés est quasi nulle !

EDIT: Aprés y avoir réfléchi , je pense qu'il sera impossible avec nwn de faire la différence entre un joueur qui " donne " , ou fait " commerce " d'un objet a un autre joueur , et un vol !

Dans les 2 cas il y a transfert d'objet d'un inventaire a l'autre , mais sans commande de script qui permette de savoir si il y a eu vol ou pas , il nous est il me semble impossible de faire la différence entre un transfert d'objet voulu , ou alors subit !
_________________
" La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG
" La véritable école du Commandement est la culture générale. " CdG
" Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F
" La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG
" La fin de l'espoir est le commencement de la mort. " CdG
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Argyl
Grand Sage du Conseil
Inscrit le: 09 Fév 2005
Messages: 704
Répondre en citant
Posté le : 22/02/2006 00:26:02 Sujet du message :

Et si en plus, il garde en mémoire l'utilisation de la compétence pickpocket ?

Je dis ça, autant je n'y connais rien...
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Semcatala
Grand Sage du Conseil
Inscrit le: 20 Jan 2004
Messages: 951
Répondre en citant
Posté le : 22/02/2006 01:18:22 Sujet du message :

Bon , ça m'apprendra a la fermer et a rechercher une solution avant de dire n'importe quoi !

La solution est la fonction GetStolenFlag() ( que j'ai découvert aujourd'hui ....... ! ) , qui récupére une balise mise a TRUE sur l'objet lorsqu'il est gagné par vol , et on récupére la valeur de cette balise avec cette fonction.

Voici le script a mettre dans le "onacquieritem" du mod :

NWScript :

void main()
{
object oPC = GetModuleItemAcquiredBy();
object objet = GetModuleItemAcquired();
object victime = GetModuleItemAcquiredFrom();
string nom_voleur = GetName(oPC);
string nom_victime = GetName(victime);

int balise_vol = GetStolenFlag(objet);

    if ( balise_vol == TRUE )
    {
    SendMessageToPC(oPC,nom_voleur+ " a chourave quelque chose !");
    SendMessageToPC(oPC,nom_victime+ " s'est fait chouraver quelque chose !");
    WriteTimestampedLogEntry(nom_voleur + " XXXXXXXXXXXXXXXXXX VOL VOL VOL VOL XXXXXXXXXXXXXX");
    WriteTimestampedLogEntry(nom_voleur + " a commis un larcin sur " + nom_victime);
    WriteTimestampedLogEntry(nom_voleur + " XXXXXXXXXXXXXXXXXX VOL VOL VOL VOL XXXXXXXXXXXXXX");
    SetStolenFlag(objet,FALSE);
    }
    else
    {
    SendMessageToPC(oPC,nom_voleur+ " a ramasse quelque chose !");
    }
}
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.


l'inconvénient dans la detection de vol , c'est qu'on est obligé de remettre la balise a false aprés le gain de l'objet , sinon , si on pose l'objet au sol et qu'on le ramasse , le vol est a nouveau déclaré dans le fichier log alors qu'on l'a ramassé par terre !
_________________
" La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG
" La véritable école du Commandement est la culture générale. " CdG
" Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F
" La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG
" La fin de l'espoir est le commencement de la mort. " CdG
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
AZAZEL11
Seigneur
Inscrit le: 08 Fév 2006
Messages: 156
Répondre en citant
Posté le : 22/02/2006 02:29:28 Sujet du message :


Citation :

l'inconvénient dans la detection de vol , c'est qu'on est obligé de remettre la balise a false aprés le gain de l'objet , sinon , si on pose l'objet au sol et qu'on le ramasse , le vol est a nouveau déclaré dans le fichier log alors qu'on l'a ramassé par terre !
Et avec ceci :

GetIsSkillSuccessful(ACTION_PICKPOCKET); en mettant ca en condition, ca filtrerait amplement tous les unaquireditem ....mais je suis pas assez callé en script pour tester....c'est juste une idée comme ca pour vous^^.
_________________
L'imagination est plus importante que le savoir. (Albert Einstein)
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Semcatala
Grand Sage du Conseil
Inscrit le: 20 Jan 2004
Messages: 951
Répondre en citant
Posté le : 22/02/2006 13:08:36 Sujet du message :

AZAZEL11>


Citation :
// Returns true if 1d20 roll + skill rank is greater than or equal to difficulty
// - oTarget: the creature using the skill
// - nSkill: the skill being used
// - nDifficulty: Difficulty class of skill
int GetIsSkillSuccessful(object oTarget, int nSkill, int nDifficulty)
je ne pense pas que ça puisse nous aider ! Wink
_________________
" La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG
" La véritable école du Commandement est la culture générale. " CdG
" Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F
" La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG
" La fin de l'espoir est le commencement de la mort. " CdG
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
lylver
Héros
Inscrit le: 08 Avr 2005
Messages: 274
Répondre en citant
Posté le : 27/02/2006 13:16:20 Sujet du message :


darkheaven a écrit :
Le but du script que je recherche est juste que lorsqu'un voleur vole, son nom de compte soit marquer dans les logs avec celui de la personne qu'il a voler.
Rien de plus.
O o ... c'est dans le script : tu éludes la partie qui ne te sert pas


Semcatala a écrit :
Je crois qu'il n'existe pas de commande pour savoir qui à été volé et qui à volé.
Teste mon script juste au dessus.

Je suis en train de parfaire le script, par exemple pour ne pas tenir compte lorsque tu récupères un objet volé dans un plaçable, ni pour enlever à tort un marqueur volé.
Ca m'as l'air plus difficile ca, vu que je mets parfois des marqueurs volés pour baisser le prix des items à la revente (apparement c'est pas une bonne méthode).


AZAZEL1 a écrit :
GetIsSkillSuccessful(ACTION_PICKPOCKET); en mettant ca en condition, ca filtrerait amplement tous les unaquireditem ....mais je suis pas assez callé en script pour tester....c'est juste une idée comme ca pour vous^^.
Merci pour l'idée, ... vais voir comment exploiter ça
_________________
TSLODOSS
TN Bouchon 2
NWN-FF
The DMFI
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Semcatala
Grand Sage du Conseil
Inscrit le: 20 Jan 2004
Messages: 951
Répondre en citant
Posté le : 27/02/2006 21:32:47 Sujet du message :

lylver> Une question , est ce que ton script fait la différence entre un " vol " et un " don " d'ojet d'un perso a un autre ?

Par exemple , je vais voler une dague sur un pnj , ensuite je donne cette dague a un autre joueur via le mode " commerce " avec les inventaires ouverts.

A ce moment là , est ce que le joueur qui reçoit la dague est considéré comme étant un voleur ?
_________________
" La ruse doit être employée pour faire croire que l'on est où l'on est pas, que l'on veut ce qu'on ne veut pas. " CdG
" La véritable école du Commandement est la culture générale. " CdG
" Une société prête à sacrifier un peu de liberté contre un peu de sécurité ne mérite ni l'une ni l'autre et finit par perdre les deux. " B.F
" La gloire se donne seulement à ceux qui l'ont toujours rêvée. " CdG
" La fin de l'espoir est le commencement de la mort. " CdG
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
lylver
Héros
Inscrit le: 08 Avr 2005
Messages: 274
Répondre en citant
Posté le : 01/03/2006 15:07:28 Sujet du message :

NWScript :
if( GetInventoryDisturbType() == INVENTORY_DISTURB_TYPE_STOLEN ){
            SendMessageToPC(oThief,"Dernier evenement inventaire vol reconnu");}
           
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.


c'est pas parfait, c'est sur, j'ai eu des messages en posant des objets volés au sol. Donc je me demande dans quelles conditions l'évênement INVENTORY_DISTURB_TYPE_STOLEN est positionné.
Jusqu'à présent par contre, pas de soucis lorsque l'on s'échange des objets.
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
Harmelyo
Chevalier
Inscrit le: 06 Oct 2005
Messages: 84
Répondre en citant
Posté le : 01/03/2006 15:43:21 Sujet du message :

En regardant le nom de l'évènement, c'est lorsqu'un objet avec le flag "stolen" est déplacé depuis un inventaire. En clair dès que l'on joue avec un objet volé tu va lancé l'évènement Smile
 
Revenir en haut Voir le profil de l'utilisateur Envoyer un message privé Ignorer l'utilisateur
 
lylver
Héros
Inscrit le: 08 Avr 2005
Messages: 274
Répondre en citant
Posté le : 01/03/2006 18:54:07 Sujet du message :

Ben j'étais pas sur de savoir "quand" le flag "Stolen" est positionné, apparement c'est avant le déclenchement de l'évênement "modification de l'inventaire". Subtilité du moteur de jeu certes mais ca se comprend si ils ont fait cela modulaire.

Razz en gros : l'objet est considéré volé alors que le voleur est encore en train de triturer dans la poche de la victime.
 
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 90.716ms