• 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!

Windows Anti Magebomb

Kaorus

Unleash Dreams Staff
Joined
May 18, 2008
Messages
1,111
Reaction score
41
Someone can post a guide of Anti Magebomb in TFS's config.lua?
Or a Lua Script Antimage bomb, for block Asta magebomb
 
I personally use regular config.lua delay for login, and I don't let many account managers log at the same time, i use this script:

Lua:
   accountManager = "Account Manager"                       
   managerCounter = 0
 
   for i, player in ipairs(getOnlinePlayers()) do
      if accountManager:lower() == player:lower() then             
      managerCounter = managerCounter + 1
      end 
   end
 
   if managerCounter >= 3 then
      return false
   end

onLogin of course, and actually i didn't have any crash or mage bomb trouble so i guess thats enough.
 
I personally use regular config.lua delay for login, and I don't let many account managers log at the same time, i use this script:


Lua Code:
</p>
<p> accountManager = "Account Manager" </p>
<p> managerCounter = 0</p>
<p>&nbsp;</p>
<p> for i, player in ipairs(getOnlinePlayers()) do</p>
<p> if accountManager:lower() == player:lower() then </p>
<p> managerCounter = managerCounter + 1</p>
<p> end </p>
<p> end</p>
<p>&nbsp;</p>
<p> if managerCounter >= 3 then</p>
<p> return false</p>
<p> end</p>
<p>&nbsp;</p>
<p>



onLogin of course, and actually i didn't have any crash or mage bomb trouble so i guess thats enough.

Could you put all your configuration file?

It is for you to see some friends, it avoids the problem of disconnection of servers.

Thanks :thumbup:
 
Open yours login.lua and find:
Code:
function onLogin(cid)
after that paste:
Code:
accountManager = "Account Manager"                       
   managerCounter = 0
 
   for i, player in ipairs(getOnlinePlayers()) do
      if accountManager:lower() == player:lower() then             
      managerCounter = managerCounter + 1
      end 
   end
 
   if managerCounter >= 3 then
      return false
   end
Is it difficult? I don't think so...
 
Last edited:
already a login.lua on my server and is thus:

local config = {
loginMessage = getConfigValue('loginMessage')
}

function onLogin(cid)
local loss = getConfigValue('deathLostPercent')
if(loss ~= nil) then
doPlayerSetLossPercent(cid, PLAYERLOSS_EXPERIENCE, loss * 10)
end

local accountManager = getPlayerAccountManager(cid)
if(accountManager == MANAGER_NONE) then
local lastLogin, str = getPlayerLastLoginSaved(cid), config.loginMessage
if(lastLogin > 0) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
str = "Your last visit was on " .. os.date("%a %b %d %X %Y", lastLogin) .. "."
else
str = str .. " Please choose your outfit."
doPlayerSendOutfitWindow(cid)
end

doPlayerSendTextMessage(cid, MESSAGE_STATUS_DEFAULT, str)
elseif(accountManager == MANAGER_NAMELOCK) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, it appears that your character has been namelocked, what would you like as your new name?")
elseif(accountManager == MANAGER_ACCOUNT) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to manage your account and if you want to start over then type 'cancel'.")
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Hello, type 'account' to create an account or type 'recover' to recover an account.")
end

if(not isPlayerGhost(cid)) then
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_TELEPORT)
end

registerCreatureEvent(cid, "Mail")
registerCreatureEvent(cid, "GuildMotd")

registerCreatureEvent(cid, "killer")
registerCreatureEvent(cid, "Idle")

registerCreatureEvent(cid, "attackguild")
registerCreatureEvent(cid, "advance")
registerCreatureEvent(cid, "FimVip")
registerCreatureEvent(cid, "SkullCheck")
registerCreatureEvent(cid, "ReportBug")

registerCreatureEvent(cid, VipReceive)
registerCreatureEvent(cid, "PlayerKill")
if (InitArenaScript ~= 0) then
InitArenaScript = 1
-- make arena rooms free
for i = 42300, 42309 do
setGlobalStorageValue(i, 0)
setGlobalStorageValue(i+100, 0)
end
end
-- if he did not make full arena 1 he must start from zero
if getPlayerStorageValue(cid, 42309) < 1 then
for i = 42300, 42309 do
setPlayerStorageValue(cid, i, 0)
end
end
-- if he did not make full arena 2 he must start from zero
if getPlayerStorageValue(cid, 42319) < 1 then
for i = 42310, 42319 do
setPlayerStorageValue(cid, i, 0)
end
end
-- if he did not make full arena 3 he must start from zero
if getPlayerStorageValue(cid, 42329) < 1 then
for i = 42320, 42329 do
setPlayerStorageValue(cid, i, 0)
end
end
if getPlayerStorageValue(cid, 42355) == -1 then
setPlayerStorageValue(cid, 42355, 0) -- did not arena level
end
setPlayerStorageValue(cid, 42350, 0) -- time to kick 0
setPlayerStorageValue(cid, 42352, 0) -- is not in arena
return true
end

Where do I put this code????
 
If you want to make it on sources, Directly from 0.3:


On combat.cpp

Function = ReturnValue Combat::canDoCombat


Under:

Code:
                if(const Player* player = caster->getPlayer())
                {



Add:

Code:
if(isAggressive && time(NULL) < (player->getLastLoginSaved() + TIME_IN_SECONDS) && !player->hasCondition(CONDITION_INFIGHT))
                                return RET_NOTPOSSIBLE;

I'm not sure if this works on 0.2, i just compiled it

Btw:
You need to change 'TIME_IN_SECONDS'
 
Back
Top