Thread Rating:
		
			
				- 0 Votes - 0 Average
 
				- 1
 
				- 2
 
				- 3
 
				- 4
 
				- 5
 
			
		 
 
	
		
			| 
				
				 
					Punish + Account Notes jail script
				 
			 | 
		
		
			| Author | 
			Message | 
		
		
	
	
		
	
		
		Ultima One   
		
			Journeyman 
			  
			
			
 
 
			
	Posts: 238 
	Likes Given: 7
 
Likes Received: 10 in 6 posts 
	Joined: Jan 2013
	
 Reputation: 6
  
			Ultima One
   
		
	 | 
	
		
			
Punish + Account Notes jail script 
			 
			
				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]
  
			 
			
			
 
ULTIMA ONE 
The modern, sphere powered Ultima Online server
			
		 |  
	 
 | 
	| 05-16-2013 01:08 AM | 
	
		
	 | 
	
	
		   
		 
		
	 | 
	 
	
	
		
	
	
		
 
	 
	
	
	
	
	
	
	
		
		
	
	
	
User(s) browsing this thread: 1 Guest(s)