interdire les armes en ville

Répondre
Partager Rechercher
Voila, je sais que ce sujet a deja été traité mais je ne le retrouve pas sur le site (en plus, dans l'option recherche, il me trouve rien)

si quelqu'un pouvait me mettre le lien vers le sujet s'il vous plait. merci
*A la flemme de chercher sur le forum*
Il existe plusieurs variantes de ce système
Ca c'est un des scripts que j'utilise pour mes gardes :
Il en existe surement d'autres.

Code PHP:

//:://////////////////////////////////////////////
//:: Created By: David "The Shadowlord" Corrales
//:: Created On: August 20 2002
//:://////////////////////////////////////////////

#include "NW_I0_GENERIC"

//VARIABLES START - EDIT AT OWN PLEASURE
string WARNING1 "Deposez vos armes, c'est inutile dans la ville";
string WARNING2 "J'ai dis deposez vos armes. Tout de suite";
string WARNING3 "Attention, il n'y aura pas de quatrieme avertissement !";//Move to Player
string ATTACK_MSG "Par les Guildes, je vous bannis. A l'Attaque !";//Attack here
string COMPLY_REPLY "Bien, j'aime mieux ca.";
float  WARN_DISTANCE 20.0;//Distance in which to spot player
float ANGER_DUR 120.0//Length of time (sec) that will remain angry at the pc
//END OF VARIABLES

void main()
{
    
object oPC;
        
object item;

        
oPC GetNearestCreature(CREATURE_TYPE_PLAYER_CHARPLAYER_CHAR_IS_PCOBJECT_SELF);

            if(
oPC != OBJECT_INVALID && (GetDistanceBetween(OBJECT_SELF,oPC) < WARN_DISTANCE) && GetObjectSeen(oPC) && !GetIsEnemy(oPC))
            {

             if((
item GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC))!=OBJECT_INVALID)
             {
                if(
GetLocalObject(OBJECT_SELF,"LastOffender")==oPC)
                {
                    if(
GetLocalInt(OBJECT_SELF,"OffenseCount")==2)
                    {
                         
SpeakString(ATTACK_MSG);
                         
SetIsTemporaryEnemy(oPC,OBJECT_SELF,TRUE,ANGER_DUR);
                         
ActionAttack(oPC);
                    }
                    else if(
GetLocalInt(OBJECT_SELF,"OffenseCount")==1)
                    {
                        
ActionMoveToObject(oPC,TRUE);
                        
SetLocalInt(OBJECT_SELF,"OffenseCount",2);
                        
SpeakString(WARNING3);
                    }
                    else
                    {
                        
SetLocalInt(OBJECT_SELF,"OffenseCount",1);
                        
SpeakString(WARNING2);
                    }
                }
                else
                {
                      
SetLocalInt(OBJECT_SELF,"OffenseCount",0);
                      
SpeakString(WARNING1);
                      
SetLocalObject(OBJECT_SELF,"LastOffender",oPC);
                }
             }
             else
             {
                    if( 
GetLocalObject(OBJECT_SELF,"LastOffender")!= OBJECT_INVALID)
                        
SpeakString(COMPLY_REPLY);

                    
DeleteLocalObject(OBJECT_SELF,"LastOffender");
                    
SetLocalInt(OBJECT_SELF,"OffenseCount",0);
             }
        }

    if(
GetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMY))
    {
        if(
TalentAdvancedBuff(40.0))
        {
            
SetSpawnInCondition(NW_FLAG_FAST_BUFF_ENEMYFALSE);
            return;
        }
    }

    if(
GetSpawnInCondition(NW_FLAG_DAY_NIGHT_POSTING))
    {
        
int nDay FALSE;
        if(
GetIsDay() || GetIsDawn())
        {
            
nDay TRUE;
        }
        if(
GetLocalInt(OBJECT_SELF"NW_GENERIC_DAY_NIGHT") != nDay)
        {
            if(
nDay == TRUE)
            {
                
SetLocalInt(OBJECT_SELF"NW_GENERIC_DAY_NIGHT"TRUE);
            }
            else
            {
                
SetLocalInt(OBJECT_SELF"NW_GENERIC_DAY_NIGHT"FALSE);
            }
            
WalkWayPoints();
        }
    }

    if(!
GetHasEffect(EFFECT_TYPE_SLEEP))
    {
        if(!
GetIsPostOrWalking())
        {
            if(!
GetIsObjectValid(GetAttemptedAttackTarget()) && !GetIsObjectValid(GetAttemptedSpellTarget()))
            {
                if(!
GetIsObjectValid(GetNearestCreature(CREATURE_TYPE_REPUTATIONREPUTATION_TYPE_ENEMYOBJECT_SELF1CREATURE_TYPE_PERCEPTIONPERCEPTION_SEEN)))
                {
                    if(!
GetBehaviorState(NW_FLAG_BEHAVIOR_SPECIAL) && !IsInConversation(OBJECT_SELF))
                    {
                        if(
GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS) || GetSpawnInCondition(NW_FLAG_AMBIENT_ANIMATIONS_AVIAN))
                        {
                            
PlayMobileAmbientAnimations();
                        }
                        else if(
GetIsEncounterCreature() &&
                        !
GetIsObjectValid(GetNearestCreature(CREATURE_TYPE_REPUTATIONREPUTATION_TYPE_ENEMYOBJECT_SELF1CREATURE_TYPE_PERCEPTIONPERCEPTION_SEEN)))
                        {
                            
PlayMobileAmbientAnimations();
                        }
                        else if(
GetSpawnInCondition(NW_FLAG_IMMOBILE_AMBIENT_ANIMATIONS) &&
                           !
GetIsObjectValid(GetNearestCreature(CREATURE_TYPE_REPUTATIONREPUTATION_TYPE_ENEMYOBJECT_SELF1CREATURE_TYPE_PERCEPTIONPERCEPTION_SEEN)))
                        {
                            
PlayImmobileAmbientAnimations();
                        }
                    }
                    else
                    {
                        
DetermineSpecialBehavior();
                    }
                }
                else
                {
                    
//DetermineCombatRound();
                
}
            }
        }
    }
    else
    {
        if(
GetSpawnInCondition(NW_FLAG_SLEEPING_AT_NIGHT))
        {
            
effect eVis EffectVisualEffect(VFX_IMP_SLEEP);
            if(
d10() > 6)
            {
                
ApplyEffectToObject(DURATION_TYPE_INSTANTeVisOBJECT_SELF);
            }
        }
    }

    if(
GetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT))
    {
        
SignalEvent(OBJECT_SELFEventUserDefined(1001));
    }

bah j'ai un peu cherché mais c'est aussi peut-etre le moteur de recherche qui est pas tout a fait au point (sans critiquer car je saurais pas en faire autant)

Merci et juste une petite question, je le mets dans quoi ce script?
Citation :
Merci et juste une petite question, je le mets dans quoi ce script ?
Bah par contre ça se met dans le On Heart Beat de ton garde donc n'en met pas des tonnes dans ton module, si tu veux pas que ça rame trop
voila salut
Salut à tous et merci au posteur pour ce script sympa que je teste actuellement.

Ma question est la suivante : Comment faire en sorte que le PNJ retourne à son poste une fois qu'il a suivi un contrevenant qui a soit rangé son arme, ou non (mort, donc).

Merci d'avance
Je dirais qu'il faut mieux éviter les scripts onheartbeat le plus possible !Voici ce que j'utilise pour mes contrôleurs, à mettre dans le onperception avec vision courte.la première fois le PJ prend une avertissement, la deuxième fois et les fois suivants une amende de 1000 Po quand il s'agit d'une arme, les casques sont seulement enlevé. Et tous ça seulement quand le PJ n'est pas en mode furtif. ah oui et un casque est permis, à la fin du code on vois le Tag de ce capuchon.
Code PHP:

#include "nw_i0_generic"void main(){    if (GetAILevel() == AI_LEVEL_VERY_LOW) return;    object oPA = GetLastPerceived();    int bSA = GetLastPerceptionSeen();    int bStel = GetStealthMode(oPA);    if(GetIsPC(oPA)&&!GetIsDM(oPA)       && bSA)        {if (bStel == STEALTH_MODE_DISABLED)            {            object iArme = GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPA) ;            object iCasque = GetItemInSlot(INVENTORY_SLOT_HEAD,oPA) ;            if(iArme != OBJECT_INVALID && GetLocalInt(oPA,"ARME_EN_MAIN") == 0)                {                AssignCommand (oPA, ClearAllActions(TRUE));                AssignCommand(oPA, ActionUnequipItem (GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPA)));                SpeakString("Rangez votre arme ! Le port d'armes est interdit en ville, merci...");                AssignCommand (oPA, SpeakString("Oui de suite ! Pardon...",TALKVOLUME_TALK));                SetLocalInt(oPA,"ARME_EN_MAIN",1);                return;                }            if(iArme != OBJECT_INVALID && GetLocalInt(oPA,"ARME_EN_MAIN") == 1)                {                AssignCommand (oPA, ClearAllActions(TRUE));                AssignCommand(oPA, ActionUnequipItem (GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPA)));                SpeakString("Encore vous ?! Votre arme ! Cette fois ci vous avez une ammende de 1000 pieces d'or...");                TakeGoldFromCreature (1000,oPA, TRUE);                AssignCommand (oPA, SpeakString("Mes pieces d'or ! *snif*",TALKVOLUME_TALK));                return;                }            else if(iCasque != OBJECT_INVALID)                {                if(GetTag(iCasque)!= "capuchondombr001" && GetTag(iCasque)!= "capuchondombr002")                    {                    SpeakString("Votre casque ! Vous etes en ville, merci...");                    AssignCommand(oPA, ActionUnequipItem (GetItemInSlot(INVENTORY_SLOT_HEAD,oPA)));                    AssignCommand (oPA, ActionSpeakString("Pfff...",TALKVOLUME_TALK));                    }                if (GetTag(iCasque)== "capuchondombr001" && GetTag(iCasque)== "capuchondombr002")                    {                    SpeakString("Hm..., le controleur vous regarde en passant, mais ne vous dit rien...");                    }                }    }}} 

dsl je n'arrive pas a placer le code sans déformation du text
Répondre

Connectés sur ce fil

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