Interdit le marchandage

Répondre
Partager Rechercher
Salut à tous,

Je voudrez savoir si il existe une possibilité d'interdire le marchandage directe entre joueur sur une seule zone.
Ils seraient obligés de déposer les objets à terre, et c'est le but.

Ou alors de restreindre le type d'objets remit en marchandage, mais là j'imagine que ça doit être beaucoup plus complexe.

Merci
La seule façon à ma connaissance de différencier un marchandage d'un drop c'est dans le onUnaquireItem, tu regardes
- la zone : c'est à prendre en compte uniquement dans la zone voulue
- le propriétaire de l'item (GetItemPossessor) : si c'est une créature alors c'est un vol, si c'est un magasin alors c'est une transaction, si c'est un placeable alors c'est un drop dans un coffre, sinon il est invalide et c'est un marchandage ou un drop par terre
- la location : si elle est valide alors l'item est par terre, sinon l'item est "quelque part" dans une fenêtre de marchandage, auquel cas tu le renvoies à son ancien propriétaire (GetModuleItemLostBy)

Ils pourront toujours s'échanger des pièces d'or, par contre dès qu'ils mettront un item dans la fenêtre de marchandage il reviendra dans leur inventaire.
humm je ne suis pas assez expert pour pouvoir faire quelque chose à partir de ça
merci quand meme

... peut être sur le onenter, et limiter l'accès à ma zone à un seul joueur .... y à tjs 33 possibilités d'arriver à un but
La même chose en code ça donne, dans le onUnaquireItem :
Code PHP:

void main()
{
    
object oPC GetModuleItemLostBy();
    
object oItem GetModuleItemLost();
    
object oPossess GetItemPossessor(oItem);
    
string sArea GetTag(GetArea(oPC));
    
int bDrop;

    if(
sArea == "tag_de_la_zone")
        {   
// zone a marchandage interdit
        
if(GetIsObjectValid(oPossess))
            {   
// l'item est dans un inventaire
            
if(GetObjectType(oPossess) == OBJECT_TYPE_STORE)            // vendu a un magasin
                
bDrop TRUE;
            else if(
GetObjectType(oPossess) == OBJECT_TYPE_CREATURE)    // vol a la tire
                
bDrop FALSE;
            else if(
GetObjectType(oPossess) == OBJECT_TYPE_PLACEABLE)   // pose dans un coffre
                
bDrop TRUE;
            }
        else
            {   
// pas dans un inventaire
            
if(GetPosition(oItem) == Vector())
                
bDrop FALSE;    // fenetre de marchandage
            
else
                
bDrop TRUE;     // pose par terre
            
}
        if(!
bDrop)  // pas le droit de dropper l'item = retour a l'envoyeur
            
{
            
CopyItem(oItemoPCTRUE);
            
DestroyObject(oItem);
            
SendMessageToPC(oPC"un petit message qui va bien");
            }
        }

libre a toi de changer les TRUE/FALSE en fonction de ce que tu veux pour la zone
Répondre

Connectés sur ce fil

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