SphereCommunity
P{reventing young players looting corpses - Printable Version

+- SphereCommunity (https://forum.spherecommunity.net)
+-- Forum: Sphere 0.56d (/Forum-Sphere-0-56d)
+--- Forum: General Help (/Forum-General-Help)
+--- Thread: P{reventing young players looting corpses (/Thread-P-reventing-young-players-looting-corpses)



P{reventing young players looting corpses - dabritmusic - 11-20-2016 12:19 PM

I have a young system that is on a timer, it prevents harm done to the new player and new players harming other, melee, spellcast etc... I couldn't figure out how to stop young players looting other players corpses. if anyone could help it would be appreciated. iv been reading but can figure it out... thanks

ON=@DCLICK
IF (<ACT.TYPE>==t_corpse)
SRC.MESSAGE @54 You cannot loot another player as a young Player!
RETURN 1
ENDIF


RE: P{reventing young players looting corpses - Coruja - 11-20-2016 01:18 PM

the core of your code is working fine, because ACT is the item being dclicked and SRC is the player dclicking

but you're using the wrong trigger, because @DClick is fired on the object being dclicked, so @DClick is being fired only when someone dclick on this player. To make the trigger fire when the player dclick on items you must use @ItemDClick instead @DClick


RE: P{reventing young players looting corpses - pointhz - 11-20-2016 11:53 PM

Or you can write it under the [typedef t_corpse]

[TYPEDEF t_corpse]
IF (<SRC.ISNEWBIE>) // Change the ISNEWBIE to whatever you identify your young status with
IF (<TYPE>==t_corpse)
SRC.MESSAGE @54 You cannot loot another player as a young Player!
RETURN 1
ENDIF
ENDIF


RE: P{reventing young players looting corpses - dabritmusic - 11-21-2016 03:18 AM

Thanks, it didn't cross my mind that t_corpse refers to all corpses, npc and player! I tried checking to human corpse, but can still open the backpack from a corpse!

ON=@ItemDClick
IF ((<SRC.BODY>==c_ghost_man) || (<SRC.BODY>==c_ghost_woman))
SRC.MESSAGE @54 You cannot loot another player as a young Player!
RETURN 1
ENDIF


RE: P{reventing young players looting corpses - Coruja - 11-21-2016 04:57 AM

it makes more sense check the corpse LINK instead SRC

Code:
[EVENTS e_player_young]
ON=@ItemDClick
IF (<ACT.LINK>) && (<EVENTS.e_young>)
  IF (<ACT.LINK.ISPLAYER>)
    MESSAGE @54 You cannot loot another player as a young Player!
    RETURN 1
  ENDIF
ENDIF

you can also override @DClick directly on t_corpse. I prefer this method because it's more lightweight (the trigger is fired only when players dclick on corpses instead fire when dclick on any item)
Code:
[TYPEDEF t_corpse]
ON=@DClick
IF (<LINK>) && (<SRC.EVENTS.e_young>)
  IF (<LINK.ISPLAYER>)
    SRC.MESSAGE @54 You cannot loot another player as a young Player!
    RETURN 1
  ENDIF
ENDIF



RE: P{reventing young players looting corpses - dabritmusic - 11-21-2016 07:05 AM

thank you both


RE: P{reventing young players looting corpses - pointhz - 11-21-2016 08:58 AM

(11-21-2016 04:57 AM)Coruja Wrote:  it makes more sense check the corpse LINK instead SRC

Code:
[EVENTS e_player_young]
ON=@ItemDClick
IF (<ACT.LINK>) && (<EVENTS.e_young>)
  IF (<ACT.LINK.ISPLAYER>)
    MESSAGE @54 You cannot loot another player as a young Player!
    RETURN 1
  ENDIF
ENDIF

you can also override @DClick directly on t_corpse. I prefer this method because it's more lightweight (the trigger is fired only when players dclick on corpses instead fire when dclick on any item)
Code:
[TYPEDEF t_corpse]
ON=@DClick
IF (<LINK>) && (<SRC.EVENTS.e_young>)
  IF (<LINK.ISPLAYER>)
    SRC.MESSAGE @54 You cannot loot another player as a young Player!
    RETURN 1
  ENDIF
ENDIF

Ye that's what i was meant to code, but for some reason I double-checked for type=t_corpse inside the t_coprse typedef lol. Was meant to check if the player corpse was from a player or npc xD