SphereCommunity
Punish + Account Notes jail script - Printable Version

+- SphereCommunity (https://forum.spherecommunity.net)
+-- Forum: Sphere 0.56d (/Forum-Sphere-0-56d)
+--- Forum: Script Submissions (/Forum-Script-Submissions)
+--- Thread: Punish + Account Notes jail script (/Thread-Punish-Account-Notes-jail-script)



Punish + Account Notes jail script - Ultima One - 05-16-2013 01:08 AM

Time to share some scripts we use frequently on TUP. Some may be in need of updating.

This is a 'jail' script that will send a player to jail for the specified time. Upon punishing a player, you may add a note to their account, so that all accounts have their punishments recorded and what they are for. Adapt for your own 'jail' or punishments, but general flow should be the same.

Players can also use .jailtime to see how long they have left in jail.

Use: .punish 24 (for 24 hours in jail)
Use: .jailtime

Code:
[Plevel 1]
jailtime

[Plevel 2]
punish
unpunish
jailtimex
accountnotes


[Function jailtime]
   if (<src.findid(i_punished_timer).uid>)
      LOCAL.HOURS = <eval (<src.findid(i_punished_timer).timer> / 3600)>
      LOCAL.HOURS = <LOCAL.HOURS> * 60 * 60
      SRC.SYSMESSAGE @55 You have <eval (<src.findid(i_punished_timer).timer> / 3600)> hours and <eval ((<src.findid(i_punished_timer).timer> - <LOCAL.HOURS>) / 60)> minutes left in jail.
   endif


[Function jailtimex]
   SRC.NEWITEM i_jailtime
   SRC.ACT.TARGET Who do you wish to check the jail time on?
   RETURN 1


[ITEMDEF i_jailtime]
NAME=Jailtime Targetter
ID=i_memory
TYPE=T_EQ_SCRIPT
LAYER=30

ON=@CREATE
   ATTR=attr_decay
   TIMER=10

On=@TARGON_Char
   if (<src.targ.findid(i_punished_timer).uid>)
      LOCAL.HOURS = <eval (<src.targ.findid(i_punished_timer).timer> / 3600)>
      LOCAL.HOURS = <LOCAL.HOURS> * 60 * 60
      SRC.SYSMESSAGE @55 They have <eval (<src.targ.findid(i_punished_timer).timer> / 3600)> hours and <eval ((<src.targ.findid(i_punished_timer).timer> - <LOCAL.HOURS>) / 60)> minutes left in jail.
   endif
   REMOVE

On=@Timer
   Remove


[FUNCTION punish]
  if ( <ARGS> < 0 )
     SRC.SYSMESSAGE You can't punish someone for negative time!
     return 1
  endif

  SRC.NEWITEM i_punish
  SRC.ACT.MORE1 = <args>
  SRC.ACT.TARGET Who do you wish to punish for <eval <SRC.ACT.MORE1>> hours?
  RETURN 1


[Function unpunish]
  SRC.NEWITEM i_unpunish
  SRC.ACT.TARGET Who do you wish to let go/forgive?
  RETURN 1


[Itemdef i_unpunish]
NAME=Punish Targetter
ID=i_memory
TYPE=T_EQ_SCRIPT
LAYER=30

ON=@CREATE
   ATTR=attr_decay

ON=@TARGON_CHAR
   if (<src.targ.findid(i_punished_timer).uid>)
      src.targ.findid(i_punished_timer).timer = 1 // set timer to 1 (removes post on jail board too!)
      src.sysmessage @55 You have released <src.targ.name>
      remove  
   else
      src.sysmessage @55 You cannot unpunish that character as it was not punished in the first place!
   endif
   return 1
  
ON=@TARGON_ITEM
  SRC.SYSMESSAGE You can't unpunish an item!
  TIMER=1
  REMOVE
  RETURN 1

ON=@TARGON_GROUND
  SRC.SYSMESSAGE You can't unpunish the ground!
  TIMER=1
  REMOVE
  RETURN 1


[ITEMDEF i_punish]
NAME=Punish Targetter
ID=i_memory
TYPE=T_EQ_SCRIPT
LAYER=30

ON=@CREATE
   ATTR=attr_decay

ON=@TARGON_CHAR
   if (<src.targ.findid(i_punished_timer).uid>)
      src.message They have already been punished!
      Return 1
   endif
      SRC.TARG.STONE
      SRC.TAG.jchar=<SRC.TARG.NAME>
      SRC.TAG.jaccount=<SRC.TARG.ACCOUNT>
      SRC.TAG.jtime=<eval <more1>> hours.
      SRC.TAG.juid=<SRC.TARG.UID>
      SRC.TAG.jip=<SRC.TARG.ACCOUNT.LASTIP>
      SRC.TAG.jdate=<SERV.RTIME> by <SRC.NAME>
      SRC.TAG.jwho=Jailed by <SRC.ACCOUNT>
      src.ctag.juid=<SRC.TARG.UID>
      src.targ.act.update
   DIALOG jailcomment
   //REMOVE
   RETURN 1

ON=@TARGON_ITEM
  SRC.SYSMESSAGE You can't punish an item!
  TIMER=1
  REMOVE
  RETURN 1

ON=@TARGON_GROUND
  SRC.SYSMESSAGE You can't punish the ground!
  TIMER=1
  REMOVE
  RETURN 1


[DIALOG jailcomment]
200,200
resizepic 0 0 3600 330 300
page 0
dtext 20 20 1152 Enter your comment for <src.tag.jchar>
gumppictiled 40 52 250 180 3004
dtextentry  40 52 250 180 0 0
button 120 260 249 248 1 0 5 //okay
button 210 260 243 241 1 0 6 //cancel

[DIALOG jailcomment button]

ON=0
SRC.TARG.STONE
SRC.SYSMESSAGE @0799 Jailing Cancelled.
RETURN 1

ON=5
//local.oldobj=<obj>
obj=<src.ctag.juid>
TRYSRV obj.account.tag.numnotes=<eval <obj.account.tag0.numnotes> + 1>
TRYSRV obj.account.tag.note_<eval <obj.account.tag0.numnotes>>=<argtxt[0]>
TRYSRV obj.account.tag.note_<eval <obj.account.tag0.numnotes>>_by=<src.name>
TRYSRV obj.account.tag.note_<eval <obj.account.tag0.numnotes>>_time=<serv.rtime>
src.sysmessage Note added to account <obj.account.name>!
serv.log <src.name> <src.account> added note to account <obj.account.name> [<argtxt[0]>]
obj=
SRC.SMOKINGBOOTS

   src.targ.newitem i_punished_timer
   src.targ.act.cont = <src.targ.uid>
   src.targ.tag.prepunishpos = <src.targ.p>
   src.sysmessage @55 You have punished <src.targ.name> for <eval <more1>> hours.
   src.targ.sysmessage @55 You have been punished for <eval <more1>> hours.
   src.targ.sysmessage @55 Reason: <argtxt[0]>
   src.targ.stone
   SERV.LOG <src.account> has punished <src.targ.name> of <src.targ.account> for <eval <more1>> hours.
   src.targ.act.timer = <more1> * 60 * 60
   //f_post_jailmessage
   UID.<SRC.TAG.juid>.jail
        SRC.TAG.jchar=
         SRC.TAG.jaccount=
         SRC.TAG.jtime=
         SRC.TAG.juid=
         SRC.TAG.jip=
         SRC.TAG.jdate=
         SRC.TAG.jwho=
         src.ctag.juid=
      
RETURN 1

ON=6
SRC.SYSMESSAGE @0799 Jailing Cancelled.
RETURN 1


[Itemdef i_punished_timer]
Name=Punished Timer
id=i_memory
layer= 30
TYPE=t_eq_script

On=@timer
   cont.forgive
   cont.go <cont.tag.prepunishpos>
   cont.tag.prepunishpos=
   cont.sysmessage @55 You have been forgiven.
   remove
   return 0


[FUNCTION SMOKINGBOOTS]
   SRC.SOUND snd_spell_lightning
   SRC.TARG.EFFECT 1,1
   SRC.NEWITEM i_boots_calf
   SRC.ACT.ATTR attr_static|attr_decay
   SRC.ACT.TIMER 10
   SRC.ACT.P <SRC.TARG.P>
   SRC.ACT.SAY *sizzle*
   SRC.NEWITEM i_fx_smoke_small
   SRC.ACT.ATTR attr_static|attr_decay
   SRC.ACT.TIMER 10
   SRC.ACT.P <SRC.TARG.P>
   SRC.ACT.MOVE 0 0 1

  
[FUNCTION accountnotes]
src.sysmessage Total Notes: <eval <account.tag0.numnotes>>

FOR <eval <account.tag0.numnotes>>
src.sysmessage <dLOCAL._FOR>) <account.tag.note_<dLOCAL._FOR>>,  added by <account.tag.note_<dLOCAL._FOR>_by>
ENDFOR

[eof]