SphereCommunity
Loot Delay - Printable Version

+- SphereCommunity (https://forum.spherecommunity.net)
+-- Forum: Sphere 0.56d (/Forum-Sphere-0-56d)
+--- Forum: Script Help (/Forum-Script-Help)
+--- Thread: Loot Delay (/Thread-Loot-Delay)



Loot Delay - hctez - 08-11-2015 03:01 PM

Hello.

There are a lot of programs that let you make a macro to loot items from corpses really fast, i'm trying to add a delay to this.
Basically i want to be able to detect when someone is looting too fast (for a human) and put a delay there, without affecting normal players looting.

My idea was to create a tag when a player starts looting, adding +1 each time he picks an item, but also having a timer, that removes -1 (from the tag) each second.
And if the tag reaches a certain number, then the player can't loot for X seconds.

I was wondering if maybe someone already did something like this or has some tips.

Thanks


RE: Loot Delay - XuN - 08-11-2015 06:08 PM

Code:
[TYPEDEF t_corpse]//Overriding default corpse

ON=@PICKUP_SELF
IF ((<SRC.ISGM>) || (<SRC.Brain>))
    return 0
endif
IF (<SERV.Time>>=<SRC.CTAG0.Loot>)    // Anti Fast Loot.
    SRC.CTAG.Loot=<Eval <SERV.Time>+2>//Creating a 0.2s delay between looted items
ELSE //If player picks up another item before these 0.2s he receives a penalty of another +0.2s
    SRC.CTAG.Loot +=2
    //SRC.sysmessage=You are looting so fast, you can only loot one item each 0.2s, you have a penalty of +0.2s.
    Return 1
ENDIF

Additionally, if you don't like Corpse's AutoOpen you can add a tag on the corpse when the character dies like
Code:
//character trigger
ON=@Death
TAG.DeathTime=<SERV.Time>+2

//t_corpse trigger
ON=@DClick
if (<TAG0.DeathTime> > <SERV.TIME>)
return 1
endif