• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • New resources must be posted under Resources tab. A discussion thread will be created automatically, you can't open threads manually anymore.

Advanced Anti Bot System

Hi i added this to my server and soon as i log in it say:

1:27 Yunie Anti Bot System: Hello, Blizzardstorm! You have 2 minute(s) to answer how much is 1 + 7.To answer say: !antibot "number.
11:27 Yunie Anti Bot System: Example: 20+20 = 40, then you would say !antibot "40.

so i did that:
11:27 Yunie Anti Bot System: You had already got 1 wrong answers! The limit is 3.
11:27 Blizzardstorm [32]: !antibot "8
11:28 Yunie Anti Bot System: Wrong answer!
11:28 Yunie Anti Bot System: You had already got 2 wrong answers! The limit is 3.
11:28 Blizzardstorm [32]: !antibot "8.
11:28 Yunie Anti Bot System: Wrong answer!
11:28 Yunie Anti Bot System: You had already got 3 wrong answers! The limit is 3.
11:28 Blizzardstorm [32]: !antibot 8
11:29 Time limit! You had been prisioned for 10 minute(s).

What did i do wrong and how can i change it where it don't ask the question soon as you log in the game. I have no errors in the server window

Thanks,Rich
 
Last edited:
tested it, and pening, their problem is true, the bot script is wrong...

first of all is !antibot "number, with ", if u write !antibot number, wont work, at least doesnt work for me... and, the script gets the second number, no the result, yes i know result = first_num+second_num but anyway, i didnt check it because i really have no time but it gets the second num, u can test it urself, when ask 2+5, answer !antibot "5, and is "right answer"
 
Hey friend, when i'm say !antibot "5 appear a msg Error, and on console apear this....

Lua Script Error: [CreatureScript Interface]
in a timer event called from:
data/creaturescripts/scripts/anti-bot.lua:eek:nLogin

luaGetCreaturePosition(). Creature not found

Lua Script Error: [CreatureScript Interface]
in a timer event called from:
data/creaturescripts/scripts/anti-bot.lua:eek:nLogin

attempt to index a number value
stack traceback:
[C]: in function 'getTilePzInfo'
data/creaturescripts/scripts/anti-bot.lua:61: in function <data/creature
scripts/scripts/anti-bot.lua:57>

Lua Script Error: [CreatureScript Interface]
in a timer event called from:
data/creaturescripts/scripts/anti-bot.lua:eek:nLogin

luaGetCreaturePosition(). Creature not found

Lua Script Error: [CreatureScript Interface]
in a timer event called from:
data/creaturescripts/scripts/anti-bot.lua:eek:nLogin

attempt to index a number value
stack traceback:
[C]: in function 'getTilePzInfo'
data/creaturescripts/scripts/anti-bot.lua:61: in function <data/creature
scripts/scripts/anti-bot.lua:57>

-- Plx help me to solve....

Obs.. i'm using the forgottem server mistic spirit 0.2 - patch 23
 
lol not work in new tfs, (crying....)

i say correct answer and script say its wrong, i say correct answer again and script say wrong, my time limit and i go teleported for prision.
 
Hello ;P I have only this problem:
[C]: in function 'getTilePzInfo'
[27/02/2009 21:12:45] data/creaturescripts/scripts/antibot.lua:61: in function <data/creaturescripts/scripts/antibot.lua:57>

Can u help me?
 
Im trying it with new tfs and i got this error in console:

Lua Script Error: [CreatureScript Interface]
data/creaturescripts/scripts/antibot.lua

luaGetTownTemplePosition<>. town not found.

how to fix it?
 
Dude have how the script works only when the player is on X floor? Cuz for example it will be good for who is only training know?
Regards.
 
this script dont work correctly when it jail u after certain time it wont tp u back to temple, and it always gives wrong awnser with tfs 0.3~ its !antibot 40 and on tfs 0.2~ its !antibot "40.
But it still dont work.
Code:
10:08 Anti Bot System: Hello, Belthazoro! You have 1 minute(s) to answer how much is 4 + 3. To answer say: !antibot "number.
10:08 Anti Bot System: Example: 20+20 = 40, then you would say !antibot "40.
10:09 Anti Bot System: Wrong answer!
10:09 Anti Bot System: You had already got 1 wrong answers! The limit is 3.
10:09 Anti Bot System: Right answer, thank you for answering.

If u see this he asked me how much is 4+3
i awnserd !antibot "7 caus i use 0.2
and it said wrong so i awnserd
!antibot "3 and it said good awnser so the best would be to change the question to like what nummber is this? then u can awnser with !antibot "nummber example.

i edited the script and it works perfect now only make ur jail pz and dont make it nologoutzone caus it dont auto tp so when his time is up he can relog and he will auto get tp in temple. the nummer he will get is from 1 till 999.
On TFS 0.3 say !antibot 20 and on TFS 0.2 say !antibot "20
and it schuld work perfect.

Code:
-- configs
local mintoanswer = 1 -- minutes to answer anti bot system
local delayAntiBot = 30 -- minutes of delay of delayAntiBot
local maxgroupid = 3 -- groupid higher than this don't have antiBotSystem Activated
local prisionpos = {x=32196,y=32260,z=7} -- if don't answer, go to this pos
local prisionminutes = 30 -- time inside the prision
local templepos = {x=32369, y=32241, z=7} -- after the prisionminutes, back to this position (temple is recommended)
-- end configs

-- local variables
local storages = {first_num = 20123, second_num = 20124, result = 20125, answer = 20126, prisioned = 20127, prisiontime = 20128, wrong_answers = 20129}
-- end local variables


function onLogin(cid)
local prisioned = getPlayerStorageValue(cid,storages.prisioned)
if (prisioned == 1) then
local prisiontime = getPlayerStorageValue(cid,storages.prisiontime)
local timenow = os.time()
if (timenow >= prisiontime) then
setPlayerStorageValue(cid,storages.prisiontime,0)
setPlayerStorageValue(cid,storages.prisioned,0)
doTeleportThing(cid, templepos)
else
prisionEvent = addEvent(checkprisioned,1000,{cid=cid})
doTeleportThing(cid, prisionpos)
end
end


if (delayAntiBot <= mintoanswer) then
debugPrint("Error! Anti Bot System debugs: variable delayAntiBot need to be higher than mintoanswer.")
else
if (getPlayerGroupId(cid) <= maxgroupid) then
antiBotEvent = addEvent(antiBot,1000,{cid=cid})
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "People with group ID higher than ".. maxgroupid .." don't have this system.")
end
end
return TRUE
end

function onLogout(cid)
stopEvent(prisionEvent)
stopEvent(antiBotEvent)
stopEvent(checkAnswerEvent)


setPlayerStorageValue(cid,storages.first_num,0)
setPlayerStorageValue(cid,storages.second_num,0)
setPlayerStorageValue(cid,storages.result,0)
setPlayerStorageValue(cid,storages.answer,0)
setPlayerStorageValue(cid,storages.wrong_answers,0)
return TRUE
end

function antiBot(parameters)
local cid = parameters.cid

local playerpos = getCreaturePosition(cid)
local playername = getPlayerName(cid)
local prisioned = getPlayerStorageValue(cid,storages.prisioned)
if (prisioned ~= 1) then
local first_num = math.random(1,9)
local second_num = math.random(1,999)
local result = first_num+second_num

setPlayerStorageValue(cid,storages.first_num,first_num)
setPlayerStorageValue(cid,storages.second_num,second_num)
setPlayerStorageValue(cid,storages.result,result)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Anti Bot System: Hello, "..playername.."! You have ".. mintoanswer .." minute(s) to answer what nummber this is >>> (".. second_num .."). To answer say: !antibot \"number.")
doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Anti Bot System: Example: 20, Anti Bot System: Hello, Belthazor! You have 1 minute(s) to answer what nummber this is >>> (130). To answer say: !antibot \"130..")
checkAnswerEvent = addEvent(checkAnswer,mintoanswer*60*1000,{cid=cid})
end
antiBotEvent = addEvent(antiBot,delayAntiBot*60*1000,{cid=cid})
end

function checkAnswer(parameters)
local cid = parameters.cid
local first_num, second_num, result, answer, prisioned = getPlayerStorageValue(cid,storages.first_num), getPlayerStorageValue(cid,storages.second_num), getPlayerStorageValue(cid,storages.second_num), getPlayerStorageValue(cid,storages.result), getPlayerStorageValue(cid,storages.answer), getPlayerStorageValue(cid,storages.prisioned)
local wrong_answers = getPlayerStorageValue(cid,storages.wrong_answers)
if (wrong_answers > 3) then
doTeleportThing(cid, prisionpos)
setPlayerStorageValue(cid,storages.wrong_answers,0)
setPlayerStorageValue(cid,storages.first_num,0)
setPlayerStorageValue(cid,storages.second_num,0)
setPlayerStorageValue(cid,storages.result,0)
setPlayerStorageValue(cid,storages.answer,0)
setPlayerStorageValue(cid,storages.prisioned,1)
setPlayerStorageValue(cid,storages.prisiontime,os.time()+(prisionminutes*60))
doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Time limit! You had been prisioned for ".. prisionminutes .." minute(s) because answered many wrong times.")
prisionEvent = addEvent(checkprisioned,1000,{cid=cid})
else
if (answer ~= 1 and prisioned ~= 1 and result > 0) then
doTeleportThing(cid, prisionpos)
setPlayerStorageValue(cid,storages.first_num,0)
setPlayerStorageValue(cid,storages.second_num,0)
setPlayerStorageValue(cid,storages.result,0)
setPlayerStorageValue(cid,storages.answer,0)
setPlayerStorageValue(cid,storages.prisioned,1)
setPlayerStorageValue(cid,storages.wrong_answers,0)
setPlayerStorageValue(cid,storages.prisiontime,os.time()+(prisionminutes*60))
doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Time limit! You had been prisioned for ".. prisionminutes .." minute(s).")
prisionEvent = addEvent(checkprisioned,1000,{cid=cid})
else
setPlayerStorageValue(cid,storages.first_num,0)
setPlayerStorageValue(cid,storages.second_num,0)
setPlayerStorageValue(cid,storages.result,0)
setPlayerStorageValue(cid,storages.answer,0)
setPlayerStorageValue(cid,storages.prisioned,0)
setPlayerStorageValue(cid,storages.wrong_answers,0)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Anti Bot System: You are ok, but in some minutes you are going to be asked again.")
end
end
end

function checkprisioned(parameters)
local cid = parameters.cid
local prisioned = getPlayerStorageValue(cid,storages.prisioned)
local prisiontime = getPlayerStorageValue(cid,storages.prisiontime)
local timenow = os.time()
if (prisioned == 1) then
if (timenow >= prisiontime) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "You had completed your time here in the prision! You may now relog to go to the city.")
else
prisionEvent = addEvent(checkprisioned,1000,{cid=cid})
end
end
end

Scren Shot
picj.jpg

Hope this helps u
 
Last edited:
Dude have how the script works only when the player is on X floor? Cuz for example it will be good for who is only training know?
Regards.

Now I don't have time to edit this script. WHen I've finish doing my ots that I'll make more perfect script ;)
 
i already made it work so ppl can copy that one.
and i know u did't made the script so u cant fix it.
 
@ Belthazor

Im using your script and im getting this error
Code:
Lua script Error: [creatureScript Interface]
in a timer event called from:
data/creaturescripts/scripts/antibot.lua:onLogin

attempt to index a nill value
stack traceback:
	[C]: in function 'getTileInfo'
	data/lib/function.lua:337: in function 'getTilePzInfo'
	data/creaturescripts/scripts/antibot.lua:61: in function <data/creaturescripts/scripts/antibot.lua:57>]

Halp plx! :eek:
 
Belthazor thank you very much for the update from version 0.2 to 0.3 ;]

all worksfine ;d
 
@ Belthazor

Im using your script and im getting this error
Code:
Lua script Error: [creatureScript Interface]
in a timer event called from:
data/creaturescripts/scripts/antibot.lua:onLogin

attempt to index a nill value
stack traceback:
	[C]: in function 'getTileInfo'
	data/lib/function.lua:337: in function 'getTilePzInfo'
	data/creaturescripts/scripts/antibot.lua:61: in function <data/creaturescripts/scripts/antibot.lua:57>]

Halp plx! :eek:


Hey,

Try this you wont get that bug any more
Code:
-- configs
local mintoanswer = 1 -- minutes to answer anti bot system
local delayAntiBot = 30 -- minutes of delay of delayAntiBot
local maxgroupid = 3 -- groupid higher than this don't have antiBotSystem Activated
local prisionpos = {x=32196,y=32260,z=7} -- if don't answer, go to this pos
local prisionminutes = 30 -- time inside the prision
local templepos = {x=32369, y=32241, z=7} -- after the prisionminutes, back to this position (temple is recommended)
-- end configs

-- local variables
local storages = {first_num = 20123, second_num = 20124, result = 20125, answer = 20126, prisioned = 20127, prisiontime = 20128, wrong_answers = 20129}
-- end local variables


function onLogin(cid)
local prisioned = getPlayerStorageValue(cid,storages.prisioned)
if (prisioned == 1) then
local prisiontime = getPlayerStorageValue(cid,storages.prisiontime)
local timenow = os.time()
if (timenow >= prisiontime) then
setPlayerStorageValue(cid,storages.prisiontime,0)
setPlayerStorageValue(cid,storages.prisioned,0)
doTeleportThing(cid, templepos)
else
prisionEvent = addEvent(checkprisioned,1000,{cid=cid})
doTeleportThing(cid, prisionpos)
end
end


if (delayAntiBot <= mintoanswer) then
debugPrint("Error! Anti Bot System debugs: variable delayAntiBot need to be higher than mintoanswer.")
else
if (getPlayerGroupId(cid) <= maxgroupid) then
antiBotEvent = addEvent(antiBot,1000,{cid=cid})
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "People with group ID higher than ".. maxgroupid .." don't have this system.")
end
end
return TRUE
end

function onLogout(cid)
stopEvent(prisionEvent)
stopEvent(antiBotEvent)
stopEvent(checkAnswerEvent)


setPlayerStorageValue(cid,storages.first_num,0)
setPlayerStorageValue(cid,storages.second_num,0)
setPlayerStorageValue(cid,storages.result,0)
setPlayerStorageValue(cid,storages.answer,0)
setPlayerStorageValue(cid,storages.wrong_answers,0)
return TRUE
end

function antiBot(parameters)
local cid = parameters.cid

local playerpos = getCreaturePosition(cid)
local playername = getPlayerName(cid)
local prisioned = getPlayerStorageValue(cid,storages.prisioned)
if (prisioned ~= 1) then
local first_num = math.random(1,9)
local second_num = math.random(1,999)
local result = first_num+second_num

setPlayerStorageValue(cid,storages.first_num,first_num)
setPlayerStorageValue(cid,storages.second_num,second_num)
setPlayerStorageValue(cid,storages.result,result)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Anti Bot System: Hello, "..playername.."! You have ".. mintoanswer .." minute(s) to answer what nummber this is >>> (".. second_num .."). To answer say: !antibot \"number.")
doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Anti Bot System: Example: 20, Anti Bot System: Hello, Belthazor! You have 1 minute(s) to answer what nummber this is >>> (130). To answer say: !antibot \"130..")
checkAnswerEvent = addEvent(checkAnswer,mintoanswer*60*1000,{cid=cid})
end
antiBotEvent = addEvent(antiBot,delayAntiBot*60*1000,{cid=cid})
end

function checkAnswer(parameters)
local cid = parameters.cid
local first_num, second_num, result, answer, prisioned = getPlayerStorageValue(cid,storages.first_num), getPlayerStorageValue(cid,storages.second_num), getPlayerStorageValue(cid,storages.second_num), getPlayerStorageValue(cid,storages.result), getPlayerStorageValue(cid,storages.answer), getPlayerStorageValue(cid,storages.prisioned)
local wrong_answers = getPlayerStorageValue(cid,storages.wrong_answers)
if (wrong_answers > 3) then
doTeleportThing(cid, prisionpos)
setPlayerStorageValue(cid,storages.wrong_answers,0)
setPlayerStorageValue(cid,storages.first_num,0)
setPlayerStorageValue(cid,storages.second_num,0)
setPlayerStorageValue(cid,storages.result,0)
setPlayerStorageValue(cid,storages.answer,0)
setPlayerStorageValue(cid,storages.prisioned,1)
setPlayerStorageValue(cid,storages.prisiontime,os.time()+(prisionminutes*60))
doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Time limit! You had been prisioned for ".. prisionminutes .." minute(s) because answered many wrong times.")
prisionEvent = addEvent(checkprisioned,1000,{cid=cid})
else
if (answer ~= 1 and prisioned ~= 1 and result > 0) then
doTeleportThing(cid, prisionpos)
setPlayerStorageValue(cid,storages.first_num,0)
setPlayerStorageValue(cid,storages.second_num,0)
setPlayerStorageValue(cid,storages.result,0)
setPlayerStorageValue(cid,storages.answer,0)
setPlayerStorageValue(cid,storages.prisioned,1)
setPlayerStorageValue(cid,storages.wrong_answers,0)
setPlayerStorageValue(cid,storages.prisiontime,os.time()+(prisionminutes*60))
doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Time limit! You had been prisioned for ".. prisionminutes .." minute(s).")
prisionEvent = addEvent(checkprisioned,1000,{cid=cid})
else
setPlayerStorageValue(cid,storages.first_num,0)
setPlayerStorageValue(cid,storages.second_num,0)
setPlayerStorageValue(cid,storages.result,0)
setPlayerStorageValue(cid,storages.answer,0)
setPlayerStorageValue(cid,storages.prisioned,0)
setPlayerStorageValue(cid,storages.wrong_answers,0)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "Anti Bot System: You are ok, but in some minutes you are going to be asked again.")
end
end
end

function checkprisioned(parameters)
local cid = parameters.cid
local prisioned = getPlayerStorageValue(cid,storages.prisioned)
local prisiontime = getPlayerStorageValue(cid,storages.prisiontime)
local timenow = os.time()
if (prisioned == 1) then
if (timenow >= prisiontime) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_WARNING, "You had completed your time here in the prision! You may now relog to go to the city.")
else
prisionEvent = addEvent(checkprisioned,1000,{cid=cid})
end
end
end
 
Back
Top