Thats right! Take me up on the challenge!
We even have an AFK Training friendly script! (Optional)
How it works:
Like many other anti-bot system, its based off of a code that is randomly generated. Where mine differs though, is rather in the chat log, the code appears in a pop up window. Thus requiring players to either remember, or write down in notepad briefly. It could easily be altered to NOT show the symbols as well.
BASED OFF SCRIPTS BY! :http://otland.net/f81/talkaction-creatureevent-antibot-system-126461/
Add this to Creaturescripts->scripts->login
in CreatureScripts->Creaturescripts
add :
in CreatueEvent->Scripts->Antibot
**Set the coords a tile in your trainers area, or temple. Behind a door, or teleporter is recommended.
Now in talkactions->scripts->antibot
**REMEMBER TO CHANGE THE COORDS AGAIN!
In talkactions->talkactions
/botcheck player_name
used to instantly require a player to enter a code.
In talk actions->scripts->botcheck
OPTIONAL!:::
Want your server to allow AFK training?
in Movements->Movements.xml
Next -> Movements->Scripts->Training Tiles.lua
So you would set your tile in the trainers as action id 8410, and your exit tile out of trainers as action id 8411. (on your map editor ofcourse!)
As explained here:
and here:
Like this? Help me out!
<3
https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MQPE2W49WRN5E
We even have an AFK Training friendly script! (Optional)
How it works:
Like many other anti-bot system, its based off of a code that is randomly generated. Where mine differs though, is rather in the chat log, the code appears in a pop up window. Thus requiring players to either remember, or write down in notepad briefly. It could easily be altered to NOT show the symbols as well.
BASED OFF SCRIPTS BY! :http://otland.net/f81/talkaction-creatureevent-antibot-system-126461/
Add this to Creaturescripts->scripts->login
Code:
local timeStorage = 65117
local codeStorage = 65118
local kickStorage = 65119
local timesStorage = 65121
registerCreatureEvent(cid, "Antibot")
doCreatureSetStorage(cid, codeStorage, 0)
doCreatureSetStorage(cid, kickStorage, 0)
doCreatureSetStorage(cid, timesStorage, 0)
doCreatureSetStorage(cid, timeStorage, 0)
add :
Code:
<event type="think" name="Antibot" event="script" value="antibot.lua"/>
**Set the coords a tile in your trainers area, or temple. Behind a door, or teleporter is recommended.
Code:
local symbols = {"*", "^", "¿", "%", "&", "$"}
local timeBetweenQuestion = 35 * 60 --35 minutes
local timeToKick = 2 * 45 --1.5 minutes
local timeStorage = 65117
local codeStorage = 65118
local kickStorage = 65119
local timesStorage = 65121
function onThink(cid, interval)
if not isPlayer(cid) or getPlayerGroupId(cid) >= 3 then
return
end
if getCreatureStorage(cid, timeStorage) < 1 then doCreatureSetStorage(cid, timeStorage, os.time() + timeBetweenQuestion) end
if getCreatureStorage(cid, kickStorage) > 0 and os.time() >= getCreatureStorage(cid, kickStorage) then
local tmp = {timeStorage, kickStorage, timesStorage, codeStorage}
for i = 1, #tmp do
doCreatureSetStorage(cid, tmp[i], 0)
end
return doTeleportThing(cid, {x = 26026, y = 26036, z = 5})
end
if os.time() >= getCreatureStorage(cid, timeStorage) then
local code, set = "", 0
set = math.random(1, 100000)
local s, e = 1, 1
for i = 1, string.len(set) do
code = (code == "" and string.sub(set, s, e) or code .. symbols[math.random(#symbols)] .. string.sub(set, s, e))
s, e = s + 1, e + 1
end
doCreatureSetStorage(cid, codeStorage, set)
doCreatureSetStorage(cid, kickStorage, os.time() + timeToKick)
doCreatureSetStorage(cid, timeStorage, os.time() + timeBetweenQuestion)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "[Anti-Bot]: Please say !antibot followed by your code without symbols.")
doPlayerPopupFYI (cid, "Here is your code! !antibot"..code.." Type in the numbers without symbols.")
end
return
end
Now in talkactions->scripts->antibot
**REMEMBER TO CHANGE THE COORDS AGAIN!
Code:
local codeStorage = 65118
local kickStorage = 65119
local timesStorage = 65121
local times = 3
function onSay(cid, words, param, channel)
if getCreatureStorage(cid, codeStorage) == 0 then
return doPlayerSendCancel(cid, "Not yet.")
elseif tonumber(param) == tonumber(getCreatureStorage(cid, codeStorage)) then
doCreatureSetStorage(cid, codeStorage, 0)
doCreatureSetStorage(cid, kickStorage, 0)
doCreatureSetStorage(cid, timesStorage, 0)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "[Antibot]: Enjoy your time!")
return true
else
if getCreatureStorage(cid, timesStorage) < 0 then doCreatureSetStorage(cid, timesStorage, 0) end
doCreatureSetStorage(cid, timesStorage, getCreatureStorage(cid, timesStorage) + 1)
if getCreatureStorage(cid, timesStorage) == times then
doCreatureSetStorage(cid, codeStorage, 0)
doCreatureSetStorage(cid, kickStorage, 0)
doCreatureSetStorage(cid, timesStorage, 0)
doTeleportThing(cid, {x = 26026, y = 26036, z = 5})
return true
else
return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "[Antibot]: You have 3 total opportunities to try to get the correct answer.")
end
end
return true
end
In talkactions->talkactions
Code:
<talkaction log="yes" access="4" words="/botcheck;!botcheck" event="script" value="botcheck.lua"/>
<talkaction words="!antibot" event="script" value="antibot.lua"/>
used to instantly require a player to enter a code.
In talk actions->scripts->botcheck
Code:
-- BY SUPOMGLOL
local timeStorage = 65117
local codeStorage = 65118
local kickStorage = 65119
local timesStorage = 65121
local timeBetweenQuestion = 9999 * 60 --training time
local timeToKick = 2 * 45 --1.5 minutes
function onSay(cid, words, param, channel)
local pid = 0
if(param == '') then
pid = getCreatureTarget(cid)
if(pid == 0) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.")
return true
end
else
pid = getPlayerByNameWildcard(param)
end
if(not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. param .. " is not currently online.")
return true
end
if(isPlayer(pid) and getPlayerAccess(pid) >= getPlayerAccess(cid)) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You cannot botcheck this player.")
return true
end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getCreatureName(pid) .. " has been botchecked.")
doCreatureSetStorage(pid, codeStorage, set)
doCreatureSetStorage(pid, kickStorage, os.time() + timeToKick)
doCreatureSetStorage(pid, timeStorage, os.time()- timeBetweenQuestion)
doPlayerPopupFYI(pid, "You are under GM watch. Respond now.")
return true
end
Want your server to allow AFK training?
in Movements->Movements.xml
Code:
<movement type="StepIn" actionid="8410" event="script" value="training tiles.lua"/>
<movement type="StepIn" actionid="8411" event="script" value="training tiles.lua"/>
Next -> Movements->Scripts->Training Tiles.lua
Code:
-- BY SUPOMGLOL
local timeStorage = 65117
local codeStorage = 65118
local kickStorage = 65119
local timesStorage = 65121
local timeBetweenQuestion = 9999 * 60 --training time
local timeToKick = 2 * 45 --1.5 minutes
function onStepIn(cid, item, position, fromPosition)
if item.actionid == 8410 then
doCreatureSetStorage(cid, codeStorage, set)
doCreatureSetStorage(cid, kickStorage, 0)
doCreatureSetStorage(cid, timeStorage, os.time() + timeBetweenQuestion)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "[Anti-Bot]: You're welcome to use a bot to train. You have 9999 minutes of training left!")
doPlayerPopupFYI (cid, "You will no longer recieve ANTI-BOT checks!")
elseif item.actionid == 8411 then
doCreatureSetStorage(cid, codeStorage, set)
doCreatureSetStorage(cid, kickStorage, os.time() + timeToKick)
doCreatureSetStorage(cid, timeStorage, os.time()- timeBetweenQuestion)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You will now recieve random ANTI-BOT checks!")
return end
end
So you would set your tile in the trainers as action id 8410, and your exit tile out of trainers as action id 8411. (on your map editor ofcourse!)
As explained here:
and here:
Like this? Help me out!
<3
https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MQPE2W49WRN5E
Last edited: