(PB) Vol à la Tire Réglementé

Répondre
Partager Rechercher
salut tout le monde !

Voila, on est une petite équipe pour un monde persistant, mais il nous manque un truc essentiel, car on voudrait faire des scripts un peu spéciaux et compliqué. Si un scripteur confirmé peut nous aider a la création d'un monde persistant qu il contacte pas mail Tau666@msn.com) -> Pour info c'est pas moi^^

Voila le genre de script que l'on voudrait en toute priorité (et sans doute le plus compliqué à réaliser) :

Que les voleurs puisse voler mais qu' avec une autorisation qui disparait après chaque vol car si ils n' ont pas d' autorisation il sont mit en prison pour pas mal de temps. lol

On a jamais réussi à trouver quelqu'un qui puisse nous aider hélas dans ce script, ou bien même nous mettre juste sur une piste.

C'est pourtant un script essentiel pour notre module, car nous ne voulons pas que le vol à la tire devienne un sport national, mais on ne veux pas exclure les roublards pour autant.

Voila, en vous remerciant d'avance de vous être penché sur notre problème. (ou au moins d'avoir lut ce post jusqu'au bout)
tiens, c'est marrant, ca fais un an que j'attendais (redoutais) cette question, sans la voir venir... ^^;


En fait, la solution la plus simple, a mon gout, serait de faire un evenement sur le OnUnaquired qui recupere l'objet unaquis, la personne qui possede mainetant cet objet, et la derniere action de cette personne. Cela devrait pouvoir foncionner.

La ou ca devient tordu, c'est la gestion de l'objet : je le laisse, ou je le detroy dans l'inventaire du voleur pour le recreer sur le volé , ou bien encore j'assigne la commande au voleur de rendre l'objet.

Mais ca devrait, en theorie, fonctionner.

Je me demande si en modifiant le feat.2da, y'aura pas moyen de declencher un script specifique lors de l'execution du feat Pickpocket.
Ce que font la plupart des gens, c'est rajouter dans OnAquireItem, un script qui verifie si l'objet est un objet volé. Si oui, on envoie le possesseur de l'objet en prison. Toi apparement tu devrais d'abord tester avant si le voleur à un permis dans son inventaire avant de l'envoyer en prison.

Ca n'est pas si compliqué que ca. Le seul truc c'est que je ne sais plus s'il y a une fonction permettant de savoir si un objet est volé.

Toujours est il que pas mal de gens veulent a tout prix limiter les vols dans leur module et moi, en tant que roublarde, je trouve ca vraiment pas cool. Augmentez plutot de modificateur de detection dans les proprietes des zones de votre module ca laissera au moins une marche de manoeuvre pour les roublards.
__________________
..::Heavenlynet le net paradisiaque ::..
http://gw.heaven-ly.net/images/stories/divers/sigfg042.gif
Mmm ,le truc c'est que la on parle d'un module discworld
et dans Ankh Morpork
le vol est légal.. du moins il est regit par quotas..


Donc un voleur pour voler doit avoir une autorisation , sinon ca veut dire qu'il n'est pas affilié à la guilde des voleurs...
Donc c'est pas les autorités généralement qui se chargent des voleurs illégaux.. mais plutot la guilde des voleurs qui fait la police ( c'est dans le contrat)
de plus les malheureuses victimes recoivent un recu de ce qu'elles se sont fait volées. et bien sur il y a un quota de vol pour un voleur , et un quota de vol pour la victime..
autrement dit , le voleur ne peux pas voler une victime qui a deja atteint son quota...

voila donc pq , je pensais a juste faire le truc entre joueurs...
j'avoue que pour ma part , faisant aussi un module discworld tout ceci me laisse perplexe..
surtout la gestion des quotas des deux cotés...


voilou c'etais pour mieux expliquer les motivations de tous ceci aux futurs participants du fil..
pour ma part , je vais me remettre à étudier ca
Merci pour ces débuts de réponses. Le but n'est pas d'interdire le vol au voleurs, mais bien de leur permettre de le faire, justement, car nous ne voulons pas faire comme la plupart des modules, qui l'interdisent tout bonnement. Mais entre nous, le roublard possède d'autres competences que le vol, et qui sont bien pratique (mais c'est un débat où je ne veux pas rentrer)

Donc si j'ai bien compris, sur l'objet qui permet le vole à la tire, je met pouvoir unique, utilisation sur soi. Ce qui permet au roublard de voler une unique fois.
Dans l'evenement On UnAcquireItem du Module, mettre un script qui vérifie si le PJ possède cet objet lorsqu'il vole, sinon le remettre dans l'inventaire de la personne volé.
Dans l'evenement On AcquireItem du Module, mettre un script, pour savoir si l'objet récupéré est un objet volé.
Enfin sur les gardes je suppose, un script qui met en prison les Pj pris en train de voler sans l'objet.

j'ai l'impression que je m'embrouille là

Edit : pour le post qui viens de se mettre, euh désolé, mais j'ai pas tout compris. On se connait ? En tout cas c'est pas vraiment ça que je demande .
Citation :
Ce que font la plupart des gens, c'est rajouter dans OnAquireItem, un script qui verifie si l'objet est un objet volé. Si oui,


euh...


GetWasStolen() ??
GetIsNotYours() ??

(blague a part... comment ?)
ben en recupérant l'objet acquis , tu mattes si la propriété "Volé" est à vrai..

j'ai pas mon editeur sous la main car je suis au boulot , donc je peux pas vous sortir les noms des fonctions et tout

bien sur apres pour le fait qu'il se fasse emmener en prison.. ( bien qu'on soit pas d'accord sur cet élément de bg) et bien il lui faut permettre de s'echapper..
avec des jets sur ces compétences de Move Silently , Hide , bref ca discretion.
comparé à une DD qui doit etre composé du nb de gardes dans la zone..

, vi dans les ombres , y'a moins de chance de se faire prendre..

Ensuite il faut bien sur que ca soit en fct de la zone.. il est evident que le vol à Lancre est pas legiféré de la meme facon qu'a Ankh...
( mais y'a rien à voler à Lancre de toutes facons )

enfin vala.. fo vraiment ke je me repenche sur tout ca
La proprieté volée fonctionne apres un vol ??


(je sais, ca a l'air debile, comme question, mais je suis serieux : je croyais que cela ne pouvais servir qu'a empecher la revente d'objet sans les mettre "plot")


PS :

La fonction, c'est "GetStolenFlag(object)"

Question : quand ce flag s'en v'a t'il, alors ? Un objet flaggué Stolen rendu a son proprietaire est il deflaggué ?

Je croyais que le flag stolen ne servait que dans l'histoire, personnellement : preparer un item comme vole, car l'objet appartient a une faction qui tient a cet item, et qui possede une importance scenaristique certaine, et que les Pj sont obligé, scenaristiquement, de le voler. Donc, l'objet est "Volé" pour permettre de gerer les factions.

Es tu sur de ce que tu avance ? J'ai réellement un doute quand a son utilisation entre joueurs...
Bah pour le garde qui pend la main dans le sac, je verrais plus tard, j'ai déjà quelques scripts pour ça. Pour l'instant je veux m'occuper de ce systeme de vol.
A propos c'est pas : GetStolenFlag.
Je sais pas, j'ai pas tout regardé.

MOI ce que je veux, en tout cas, c'est qu'il soit impossible de voler sans le fameux papier. Que ce soit à Ankh-Morpoc ou ailleurs. Je crois que ce la serait plus simple en fait à faire.

Désolé Drak Valer, mais je crois que nous ne demandons pas exactement la même chose (bien que cela soit proche)

Edit : j'ai l'impression que vous taper plus vite que moi, à chaque fois un nouveau post s'ajoute quand j'ecris, ce qui donne l'impression que je suis en retard dans les discussions:baille:
bon alors voila ce que ca donne (j'ai pas testé mais ca a le merite de compiler)

Code PHP:


void main
()
{
object oItem GetModuleItemAcquired();
object oCreature GetModuleItemAcquiredFrom();
object oPossessor GetItemPossessor(oItem);
string sTag GetTag(oItem);

if(
GetStolenFlag(oItem))
{
    
object oPermis GetItemPossessedBy(oPossessor"permis");

    if( 
oPermis != OBJECT_INVALID)
    {
        
DestroyObject(oPermis);
        
CreateItemOnObject("recu"oCreature);
    }else{
        
// on rend une copie de l'item vol au proprietaire et on detruit l'objet vole
        
CopyObject(oItemGetLocation(oCreature), oCreature);
        
DestroyObject(oItem);
        
// go jail
        
AssignCommand(oPossessorActionJumpToObject(GetObjectByTag("WP_Prison")));
    }
}


Il faudra donc creer dans ton module, un objet ayant le BLUEPRINT "recu" et un autre objet ayant comme TAG "Permis". Correspondant respectivement au recu et au permis de voler.

Pour le nombre d'objet volé (les quotas) ca doit pouvoir se faire en rajoutant des LocalInt dans la procedure de test....

Ah oui ! créer aussi un waypoint ayant comme tag "WP_Prison", c'est là ou le joueur devra arriver s'il n'avait pas le droit de voler.
Citation :
Question : quand ce flag s'en v'a t'il, alors ? Un objet flaggué Stolen rendu a son proprietaire est il deflaggué ?
Bonne question, il se pourrait bien que rendre l'objet au propriétaire envoie ce dernier aussi en prison.
__________________
..::Heavenlynet le net paradisiaque ::..
http://gw.heaven-ly.net/images/stories/divers/sigfg042.gif
Pour résoudre ce probleme de garde, on peut s'en passer si ça rend la chose plus compliqué. Comme je les dis, on pourrait désactiver au joueur la fonction vol si il ne possede pas le papier. si c'est possible à faire bien sûr. Sinon pour le garde je compte utiliser un autre systeme de script directement sur le garde (pas encore fait)

merci pour le script en tout cas, qui donne un début de reponse bien avancé sur le probleme.
@eM
Citation :
La proprieté volée fonctionne apres un vol ??
ben .. OUI
la preuve qd je joue mon petit voleur et que je chourre des trucs , il me faut aller dans un magasin special pour refourgué mon larcin...

@Damonya

bah vi .. y'a certain point du bg que j'essaye de reproduire le plus fidelement possible.. d'autres non..
Mais le vol légal.. c'est un truc important dans le bg de ankh
je reste dubitatif, et convaincu que GetStolenFlag ne fonctionne pas comme ca.

Pour repondre a ceci :
Citation :
Toujours est il que pas mal de gens veulent a tout prix limiter les vols dans leur module et moi, en tant que roublarde, je trouve ca vraiment pas cool. Augmentez plutot de modificateur de detection dans les proprietes des zones de votre module ca laissera au moins une marche de manoeuvre pour les roublards.
Mon interet ici n'est pas de limiter, mais d'avoir un evenement ou tester qu'une personne vole, afin de compter le nombre d'objets volés : en effet, sans verification, le bon voleur qui rend une armure de plaque parce qu'il est inconcevable de voler une armure de facon RP n'est pas le responsable. Le responsable de ce besoin, c'est les roublard lvl20 qui vident 80kg d'inventaire grace a leur score de vol tres haut, ce qui demeure irréaliste.


Personnelement, je pense tester la modif de feat.2da, en y rajoutant un SPELLID, puis en creant un script lancé par le spell.2da qui permettrait de maitriser un pseudo-evenement OnThief ^^
Citation :
Personnelement, je pense tester la modif de feat.2da, en y rajoutant un SPELLID, puis en creant un script lancé par le spell.2da qui permettrait de maitriser un pseudo-evenement OnThief ^^ [/i]
Mince j'croyais m'y connaitre un peut en script maintenant, mais alors ça, ca reste du chinois pour moi (et encore c'est mêchant pour le chinois)
Bon je viens de tester le script (sans le permis, pour me faire teleporter en prison).

tout marche bien SAUF QUE la popriété Stolen reste sur l'objet que l'on rend au propriétaire ce qui fait lancer le script pour lui aussi et le fait rentrer dans une boucle infinie. Il faut donc virer la ligne:

CopyObject(oItem, GetLocation(oCreature), oCreature);

on ne rendra donc pas l'objet au propriétaire. Une solution si le serveur est en servervault, est de recuperer le resref de l'objet et d'en recreer un nouveau a partir de la palette. En remplacant la ligne supprimée par ca:

CreateItemOnObject(GetResRef(oItem), oCreature);

Citation :
Le responsable de ce besoin, c'est les roublard lvl20 qui vident 80kg d'inventaire grace a leur score de vol tres haut, ce qui demeure irréaliste.
C'est sur ce point qu'on est pas d'accord. Une roublarde niv20 est une tres bonne roublarde qui peut voler pas mal d'objets a quelqu'un (ok peut etre pas en 10 minutes mais en supposant qu'elle prenne son temps, moi ca me semble correct). Maintenant, s'il y en a qui abusent, autant faire comme pour les PK et les bannir, mais ne penalisez pas toute une classe pour cela (et puis vous n'avez qu'a mettre des points en detection, personne ne me vole moi).
Bon pour faire un bilan de ton superbe script , et pour savoir si j'ai bien compris je récapitule :


on le met dans le On UnAcquireItem du Module

Si le joueur vole et qu'il a le permis, cela détruis le permis, et créer un recu,
sinon si le joueur n'a pas le permis cela détruit l'objet volé, recréer l'objet volé à la personne qui a été volé, et met en prison le voleur.
Ca me parait vraiment pas mal du tout ^^

Bon moi ce que je veux pour la dernière ligne, c'est que le garde dans son On perception, par exemple ne mette le voleur en prison que si il à été pris la main dans le sac sans avoir le permis. Que ca ne soit pas systematique, mais c'est une autre question, que je pense pouvoir résoudre.

En tout cas Merci bien. je peux pas le tester sur le moment, mais tout me parait correct.

J'pensais vraiment pas que cela serait résolu si vite
et allez un pt'it troisième, car vous le meritez tous
oui c'est bien ca sauf que ca se met dans OnAcquire (et pas UNacquire).

Pour les gardes, je vois bien un flag (lire "localint") qui cs'active quand on vole le type. Les gardes, a chaque fois qu'il veront un type, regarderont ce flag pour voir si la personne est recherchée (reste a savoir ce que tu veux faire ensuite (taper sur le type, ou l'immobiliser et l'envoyer en prison...) ).
Citation :
Pour les gardes, je vois bien un flag (lire "localint") qui cs'active quand on vole le type. Les gardes, a chaque fois qu'il veront un type, regarderont ce flag pour voir si la personne est recherchée
C'est exactement ce que je voulais faire (mais j'veux d'abord un peu chercher par moi-même, avant d'appeler au secours)
Ensuite le garde accompagne (et ne lâche pas le joueur) jusqu'à la prison (j'ai déjà vu ce script de Saigneur Zed sur un autre forum concurrent)
1er Point :
pour faire suivre le PJ , il faut deja empecher le joueur de commander son perso , donc un tit SetCommandable à false
je suis plus sur du nom de la fonction , vu k'il faut ke je reinstalle nwn , apres crash de pc.. j'ai failli perdre mon zoulie module :'(
ensuite y'a une action pour faire follow d'un objet..
mais m'en souviens plus de tete

2eme Point :
Farouche defenseur des voleurs , je propose que la garde n'alpague pas un voleur automatiquement..
mais qu'un jet sur la discretion du voleur soit faites..
un voleur habile aura tot fait de semer la garde.

3eme Point :
C'est un point de BG , vu qu'on bosse sur le meme univers Damonya , je voudrais savoir comment du va fourguer les recus , au pj voleur...
parce ke s'il en a de facon illimité , ben ca craint..
Comptes-tu les vendre dans la guilde des voleurs , avec un prix d'achat variant de 50 à 100 piastres ?

4eme point : On dit pas la garde , mais agent du guet municipal
pour la guarde, je conseille aussi un jet d'intelligence pour verifier s'il reconnaissent le Pj, en plus du jet de discretion. Je vois pas pourquoi un garde repererait systematiquement les nouvelles tetes...


@Rhyghar : tu me certifie donc que l'objet, avant le vol, n'as pas le flag "Vole", et que le fait de le pickpocketer lui attribue ce flag automatiquement ?

Je ne te cache pas ma surprise, mais aussi mon contentement. (comme quoi, c bien maskado : j'apprends every day ^^)
Citation :
Provient du message de eMRaistlin
tu me certifie donc que l'objet, avant le vol, n'as pas le flag "Vole", et que le fait de le pickpocketer lui attribue ce flag automatiquement ?
Oui oui, ca l'attribue bien.
Le probleme dans le script plus haut, c'est qu'il n'y a apparement aucun moyen de l'enlever...
__________________
..::Heavenlynet le net paradisiaque ::..
http://gw.heaven-ly.net/images/stories/divers/sigfg042.gif
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés