I got inspired after Lionheart got frozen in the BP, and came up with these 3 scripts (attached to an object), which *should* prevent such occurences. All you need to do is to constantly type in *something* within a period of time (which you can choose), and you'll be safe. Fail to type it (which means that you're probably frozen), and you'll be killed, letting you start over again.
Here are the scripts.
First one, to let you define what time you want to give yourself.
Name: 'Slayme time trigger', VNum: [46097], RNum: [ 1912]
Trigger Intended Assignment: Objects
Trigger Type: Command, Numeric Arg: 3, Arg list: slayme
Commands:
* Thought of by Erwin, inspiration given by Lionheart freezing in BP
* This script lets you choose from a default time, or a time which you want before you are killed
set time %arg%
eval check (%time% * (-1))
* I realized that if say, I typed slayme abcde, it would still count as > 0, since there is something
* in the argument.
* Wasn't sure if there is a simple way of finding whether the arguments you typed in are digits,
* or words, so...
* So, I figured, if it was multiplied by -1, only an argument comprised of digits will give a
* negative value.
if %arg% == default
set time 9
%echo% Default time set, you will be killed if you do not respond within the period of 130 seconds.
global time
unset num
elseif %arg% > 0 && %check% < 0
* Hence here the check
set time %arg%
global time
eval realtime (13 * (%arg% + 1) )
%echo% Time set. You will be killed if you do not respond within the period of %realtime% seconds.
unset num
else
%echo% Invalid time, please select either default or a positive number of at least 1.
endif
Second one, a random trigger, which counts down
Name: 'random slay trigger', VNum: [46098], RNum: [ 1913]
Trigger Intended Assignment: Objects
Trigger Type: Random, Numeric Arg: 100, Arg list: None
Commands:
* Thought of by Erwin, inspiration given by Lionheart freezing in BP
* This script is the countdown process, giving 01 x warning before slay.
if %time% < 1
set time 10
endif
if %num% < %time%
eval num %num% + 1
global num
elseif %num% == %time%
eval num %num% + 1
global num
if %self.carried_by%
eval actor %self.carried_by%
if %actor.level% > 1 && %actor.level% <= 50
%echo% You might want to key in your code word now, or you will die in the next 13 seconds.
%echo% You fade from sight as you blend with your surroundings.
* This is the trigger phrase / word. I chose this because it is well..common, and used
* almost by everyone who doesn't want to log out when AFK.
endif
endif
else
unset num
if %self.carried_by%
eval actor %self.carried_by%
if %actor.level% > 1 && %actor.level% <= 50
%damage% %actor% 10000
endif
endif
endif
And lastly...
Name: 'the anti-slayme command', VNum: [46096], RNum: [ 1911]
Trigger Intended Assignment: Objects
Trigger Type: Command, Numeric Arg: 3, Arg list: who
Commands:
unset num
return 0
As you can see, I set my client to type 'who' to prevent me from getting kicked out.
Would appreciate any comments to help tidy / improve these scripts further
