Ir para conteúdo

[Help]Erro 032-Position.lua - Como Proceder?


hique12

Posts Recomendados

Olá meus queridos, estou com o seguinte problema, coloco o server on e belesa, depois de algumas horas aparece esse erro. Alguém poderia me dizer como arrumar, e o que ele é?

[29/01/2012 03:26:05] [Error - CreatureScript Interface]

[29/01/2012 03:26:05] buffer:onLogout

[29/01/2012 03:26:05] Description:

[29/01/2012 03:26:05] (luaGetThingPosition) Thing not found

 

[29/01/2012 03:26:05] [Error - CreatureScript Interface]

[29/01/2012 03:26:05] buffer:onLogout

[29/01/2012 03:26:05] Description:

[29/01/2012 03:26:06] data/lib/032-position.lua:2: attempt to index local 'position' (a boolean value)

[29/01/2012 03:26:06] stack traceback:

[29/01/2012 03:26:06] data/lib/032-position.lua:2: in function <data/lib/032-position.lua:1>

[29/01/2012 03:26:06] (tail call): ?

[29/01/2012 03:26:06] [string "domodlib('teamSetting')..."]:237: in function 'clearTeamEventStorages'

[29/01/2012 03:26:06] [string "loadBuffer"]:4: in function <[string "loadBuffer"]:3>

 

Desde já agradeço.

Editado por hique12
Link para o comentário
Compartilhar em outros sites

Logout.lua não tem tem Login.lua que é essa:

 

local config = {

loginMessage = getConfigValue('loginMessage'),

useFragHandler = getBooleanFromString(getConfigValue('useFragHandler'))

}

 

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, "Idle")

if(config.useFragHandler) then

 

registerCreatureEvent(cid, "Counter")

registerCreatureEvent(cid, "zombieevent")

registerCreatureEvent(cid, "SkullCheck")

registerCreatureEvent(cid, "Reward")

end

 

registerCreatureEvent(cid, "ReportBug")

registerCreatureEvent(cid, "AdvanceSave")

 

registerCreatureEvent(cid, "advance")

 

registerCreatureEvent(cid, "FimVip")

registerCreatureEvent(cid, "VipReceive")

registerCreatureEvent(cid, "SkullCheck")

registerCreatureEvent(cid, "ReportBug")

 

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

Link para o comentário
Compartilhar em outros sites

Acredito que seja um desses dois.

creaturescripts/scripts/zombie event.lua

 

local config = {

playerCount = 2001, -- Global storage for counting the players left/entered in the event

 

goblet = 5805, -- id of the gold goblet you'll get when finishing the event.

rewards = {2195, 2152, 2160}, -- You will get this + a gold goblet with your name on.

-- {moneyId, count, using? 1 for using moneyReward, 0 for not using.}

moneyReward = {2160, 10, 1},

 

-- Should be same as in the globalevent!

-- The zombies will spawn randomly inside this area

fromPosition = {x = 898, y = 946, z = 12}, -- top left cornor of the playground

toPosition = {x = 973, y = 1000, z = 12}, -- bottom right cornor of the playground

}

 

function onStatsChange(cid, attacker, type, combat, value)

if isPlayer(cid) and isMonster(attacker) then

if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then

if getGlobalStorageValue(config.playerCount) >= 2 then

doBroadcastMessage(getPlayerName(cid) .. " have been eated by Zombies!", MESSAGE_STATUS_CONSOLE_RED)

local corpse = doCreateItem(3058, 1, getPlayerPosition(cid))

doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".")

doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)

doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)

doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)

setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)-1)

elseif getGlobalStorageValue(config.playerCount) == 1 then

if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then

doBroadcastMessage(getPlayerName(cid) .. " ganhou o Zombie event! Congratulations!", MESSAGE_STATUS_WARNING)

local goblet = doPlayerAddItem(cid, config.goblet, 1)

doItemSetAttribute(goblet, "description", "ganhou " .. getPlayerName(cid) .. " para ganhar o Zombie Event.")

local corpse = doCreateItem(3058, 1, getPlayerPosition(cid))

doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". Foi morto por "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".")

doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)

doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)

doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)

for _,items in ipairs(config.rewards) do

doPlayerAddItem(cid, items, 1)

end

if config.moneyReward[3] == 1 then

doPlayerAddItem(cid, config.moneyReward[1], config.moneyReward[2])

end

end

 

for x = config.fromPosition.x, config.toPosition.x do

for y = config.fromPosition.y, config.toPosition.y do

for z = config.fromPosition.z, config.toPosition.z do

areapos = {x = x, y = y, z = z, stackpos = 253}

getMonsters = getThingfromPos(areapos)

if isMonster(getMonsters.uid) then

doRemoveCreature(getMonsters.uid)

end

end

end

end

end

return false

end

end

return true

end

 

 

 

ou esse mod TeamBattle.xml

 

<?xml version="1.0" encoding="UTF-8"?>

<mod name="Team Event" version="2.0" author="Damadgerz" contact="support@lualand.net" enabled="yes">

<description>

Full auto Team BattleEvent(v2.0) for 0.3.6PL1 :

 

1- I currently rescripted this event from scratch again.

 

2- This version is much more better than the one before, it is more cleaner, clearer and with more options.

 

3- This version dislike the previous one , was tested on 0.3.6PL1 and works just fine.

 

4- Removed the npc part it is now based on tp creation.

 

5- More silent boradcasting for in event progress and no spam, I hope!

 

6- you now get the options to show event stats on cancel msg area and (to / not to) show left players with names each x interval.

 

8- Team balancer have been added to only balance count in both teams.

 

9- Added a countdown option before fight starts.

 

10- Now starts on a defined time every day

 

</description>

 

<config name="teamSetting"><![CDATA[

--[[Local Config]]--

 

--//storages

 

inBlue = 9900

inRed = 9901

joiner = 9907

 

blueKills = 9902

redKills = 9903

 

eventRecruiting = 9904

eventStarted = 9905

eventTime = 9906

 

itemToGet = 9908

countItemToGet = 9909

 

nextExecute = 9910

 

blueCount = 9911

redCount = 9912

 

--// Positions

 

teleporterPosition = {x = 161, y = 53, z = 6}

 

waitRoomPlace = {x = 1040, y = 449, z = 7}

 

waitRoomDimensions = {

startPos = {x = 1033, y = 443, z = 7},

endPos = {x = 1046, y = 553, z = 7}

}

 

 

eventPlaceDimensions = {

startPos = {x = 1047, y = 438, z = 7},

endPos = {x = 1085, y = 463, z = 7}

}

blueTeamPos = {x = 1048, y = 451, z = 7}

redTeamPos = {x = 1084, y = 451, z = 7}

 

 

--// General settings

 

recruitTime = 1

 

minimumPlayersJoins = 2

 

balanceTeams = true

 

 

removeTeleportOnEventEnd = true

 

eventMaxTime = 10

 

showEventSats = true

 

 

sendLeftPlayers = true

intervalToSendLeftPlayers = 11

 

 

countDownOnStart = true

 

 

countDownFrom = 10

 

minJoinLevel = 50

 

rewards = {

 

[65] = { {2476,1} , {"gold coin",500} },

[25] = { {"golden armor",1} , {2152,90} },

[10] = { {"dragon scale mail",1} , {"crystal coin",10} }

}

]]></config>

<lib name="teamFunctions"><![CDATA[

domodlib('teamSetting')

 

--[[Conditions don't touch]]--

local bmale = createConditionObject(CONDITION_OUTFIT)

setConditionParam(bmale, CONDITION_PARAM_TICKS, -1)

addOutfitCondition(bmale, {lookType = math.random(128,134), lookHead = 88, lookBody = 88, lookLegs = 88, lookFeet = 88, lookTypeEx = 0, lookAddons = 3})

 

local bfemale = createConditionObject(CONDITION_OUTFIT)

setConditionParam(bfemale, CONDITION_PARAM_TICKS, -1)

addOutfitCondition(bfemale, {lookType = math.random(136,142), lookHead = 88, lookBody = 88, lookLegs = 88, lookFeet = 88, lookTypeEx = 0, lookAddons = 3})

 

local rmale = createConditionObject(CONDITION_OUTFIT)

setConditionParam(rmale, CONDITION_PARAM_TICKS, -1)

addOutfitCondition(rmale, {lookType = math.random(128,134), lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94, lookTypeEx = 0, lookAddons = 3})

 

local rfemale = createConditionObject(CONDITION_OUTFIT)

setConditionParam(rfemale, CONDITION_PARAM_TICKS, -1)

addOutfitCondition(rfemale, {lookType = math.random(136,142),lookHead = 94, lookBody = 94, lookLegs = 94, lookFeet = 94, lookTypeEx = 0, lookAddons = 3})

 

local infight = createConditionObject(CONDITION_INFIGHT,-1)

--[[Local Config]]--

 

--[[Functions]]--

 

-- General info

function isFightOn()

return getStorage(eventStarted) > 0

end

function isRecruitOn()

return getStorage(eventRecruiting) > 0

end

function getMinJoinLevel()

return minJoinLevel

end

function getJoiners()

joiners = {}

for _,cid in ipairs(getPlayersOnline()) do

if isJoiner(cid) then

if isInRecruitArea(cid) or isInFightArea(cid) then

table.insert(joiners,cid)

end

end

end

return joiners

end

 

function getLeftMembersNames(team)

str = "Oponents left("..#team..") :"

left = ""

for k,cid in ipairs(team) do left = (left ..""..(k == 1 and "" or ", ")..""..getCreatureName(cid).."["..getPlayerLevel(cid).."]" ) end

str = str .." " .. (left == "" and "none" or left).. "."

return str

end

function disPlayEventStats()

if not showEventSats then return false end

if getStorage(eventTime) - os.time() <= 0 then return false end

 

left = os.date("%M:%S",(getStorage(eventTime) - os.time()))

for _,cid in ipairs(getJoiners()) do

oponentsLeft = isBlue(cid) and #getRedMembers() or #getBlueMembers()

teamMatesLeft = isBlue(cid) and math.max(0,#getBlueMembers()-1) or math.max(0,#getRedMembers()-1)

doPlayerSendCancel(cid,"Time left: ".. left.." || Oponents left: "..oponentsLeft.."/"..oponentCount(cid).." || Team-mates left: "..teamMatesLeft.."/".. math.max(0,matesCount(cid)-1))

end

 

end

 

function doSendLeftPlayers()

if not sendLeftPlayers then return false end

if intervalToSendLeftPlayers <= 10 then return false end

for _,cid in ipairs(getJoiners()) do

doPlayerSendTextMessage(cid,MESSAGE_TYPES["orange"],getLeftMembersNames(isRed(cid) and getBlueMembers() or getRedMembers()))

end

end

 

function getBlueMembers()

members = {}

for _,cid in ipairs(getPlayersOnline()) do

if isBlue(cid) then

table.insert(members,cid)

end

end

return members

end

function getRedMembers()

members = {}

for _,cid in ipairs(getPlayersOnline()) do

if isRed(cid) then

table.insert(members,cid)

end

end

return members

end

 

 

-- starting fight

 

function startRecruiting()

doSetStorage(eventRecruiting,1)

end

function startTeam()

doSetStorage(eventRecruiting,-1)

 

if removeTeleportOnEventEnd then

tp = getTileItemById(teleporterPosition,1387).uid

if tp > 0 then doRemoveItem(tp) end

end

 

if not balanceTeams() then

resetEvent()

return false

end

for _,cid in ipairs(getBlueMembers()) do

doTeleportThing(cid,blueTeamPos,false)

doSendMagicEffect(getThingPos(cid),10)

end

setBlueCount(#getBlueMembers())

for _,cid in ipairs(getRedMembers()) do

doTeleportThing(cid,redTeamPos,false)

doSendMagicEffect(getThingPos(cid),10)

end

setRedCount(#getRedMembers())

startCountDown()

return true

end

 

function setBlueCount(count)

doSetStorage(blueCount,-1)

doSetStorage(blueCount,count)

end

function oponentCount(cid)

return isBlue(cid) and getStorage(redCount) or getStorage(blueCount)

end

function matesCount(cid)

return isBlue(cid) and getStorage(blueCount) or getStorage(redCount)

end

 

function setRedCount(count)

doSetStorage(redCount,-1)

doSetStorage(redCount,count)

end

function balanceTeams()

members = getJoiners()

if #members < minimumPlayersJoins then

doBroadcastMessage("Team-Battle event was cancelled as only ".. #members .. " players joined.")

return false

end

if (math.mod(#members,2) ~= 0) then

kicked = members[#members]

clearTeamEventStorages(kicked)

doPlayerSendTextMessage(kicked,MESSAGE_TYPES["info"],"Sorry, you have been kicked out of event for balancing both teams.")

end

count = 1

for _,cid in ipairs(getJoiners()) do

if (math.mod(count,2) ~= 0) then

addToBlue(cid)

else

addToRed(cid)

end

count = count + 1

end

return true

end

function startCountDown()

if(countDownOnStart) then

for _,cid in ipairs(getJoiners()) do

doCreatureSetNoMove(cid,true)

for i = 0,countDownFrom do

addEvent(doPlayerSendTextMessage,i*1000, cid, MESSAGE_TYPES["info"], (i == 0 and countDownFrom or countDownFrom-i) )

end

end

addEvent(startFight,(countDownFrom+1)*1000)

else

startFight()

end

end

function startFight()

doSetStorage(eventStarted,1)

for _,cid in ipairs(getJoiners()) do

doCreatureSetNoMove(cid,false)

doPlayerSendTextMessage(cid,MESSAGE_TYPES["warning"],"Fight Starts!")

end

addEvent(endTeamEvent,eventMaxTime*60*1000,"maxTime")

doSetStorage(eventTime,os.time()+eventMaxTime*60)

end

 

function teleportToWaitRoom(cid)

doTeleportThing(cid,waitRoomPlace)

doSendMagicEffect(waitRoomPlace,10)

if getPlayerGroupId(cid) < 4 then

addToJoiners(cid)

end

doPlayerSendTextMessage(cid,MESSAGE_TYPES["blue"],"Please be patient till the event starts and don't logout.")

return true

end

 

 

 

-- Modifing teams & checking member states

function isBlue(cid)

return (getPlayerStorageValue(cid,inBlue) > 0)

end

function isRed(cid)

return (getPlayerStorageValue(cid,inRed) > 0)

end

function isJoiner(cid)

return (getPlayerStorageValue(cid,joiner) > 0)

end

function addToBlue(cid)

setPlayerStorageValue(cid,inBlue,1)

doAddCondition(cid, (getPlayerSex(cid) == 1) and bmale or bfemale)

doAddCondition(cid,infight)

end

function addToRed(cid)

setPlayerStorageValue(cid,inRed,1)

doAddCondition(cid, (getPlayerSex(cid) == 1) and rmale or rfemale)

doAddCondition(cid,infight)

end

function addToJoiners(cid)

setPlayerStorageValue(cid,joiner,1)

end

function removeFromBlue(cid)

setPlayerStorageValue(cid,inBlue,-1)

end

function removeFromRed(cid)

setPlayerStorageValue(cid,inRed,-1)

end

function removeFromjoiners(cid)

setPlayerStorageValue(cid,joiner,-1)

end

function isInRecruitArea(cid)

return isInRange(getThingPos(cid),waitRoomDimensions.startPos,waitRoomDimensions.endPos)

end

function isInFightArea(cid)

return isInRange(getThingPos(cid),eventPlaceDimensions.startPos,eventPlaceDimensions.endPos)

end

function clearTeamEventStorages(cid)

if isInRecruitArea(cid) or isInFightArea(cid) then

doTeleportThing(cid,getTownTemplePosition(getPlayerTown(cid)))

doSendMagicEffect(getThingPos(cid),10)

end

 

if isFightOn() then

if isJoiner(cid) then

if isBlue(cid) then

addRedKills()

elseif isRed(cid) then

addBlueKills()

end

doPlayerSendTextMessage(cid,MESSAGE_TYPES["orange"],"You have died in Team-Battle Event.")

end

end

 

removeFromjoiners(cid)

removeFromBlue(cid)

removeFromRed(cid)

doRemoveConditions(cid, false)

 

end

function haveUnrecivedReward(cid)

return getPlayerStorageValue(cid,itemToGet) > 0 and getPlayerStorageValue(cid,countItemToGet) > 0

end

function recieveLateReward(cid)

if haveUnrecivedReward(cid) then

if not doPlayerAddItem(cid,getPlayerStorageValue(cid,itemToGet),getPlayerStorageValue(cid,countItemToGet),false) then

msg = "You need to free some space then relog to take your reward."

doPlayerSendTextMessage(cid,MESSAGE_TYPES["warning"],msg)

else

setPlayerStorageValue(cid,itemToGet,-1)

setPlayerStorageValue(cid,countItemToGet,-1)

doPlayerSendTextMessage(cid,MESSAGE_TYPES["info"],"You have recieved your reward.")

end

end

end

 

-- Win or lose

function thereIsAWinner()

if redWon() or blueWon() then

return true

end

return false

end

function blueWon()

return( (#getBlueMembers() > 0 ) and ( #getRedMembers() == 0) )

end

function redWon()

return( (#getRedMembers() > 0) and (#getBlueMembers() == 0) )

end

function isDraw()

return #getBlueMembers() == #getRedMembers()

end

function getWinner()

if #getBlueMembers() > #getRedMembers() then

return {getBlueMembers(),getRedMembers(),"Blue team won."}

elseif #getRedMembers() > #getBlueMembers() then

return {getRedMembers(),getBlueMembers(),"Red team won."}

else

return { {},{},"it was a draw."}

end

end

 

 

-- Adding kills

function addBlueKills()

doSetStorage(blueKills, math.max(1,getStorage(blueKills)+1))

end

function addRedKills()

doSetStorage(redKills, math.max(1,getStorage(redKills)+1))

end

 

-- Ending event

 

function endTeamEvent(type)

if isFightOn() then

doSetStorage(eventStarted,-1)

doBroadcastMessage("Team-Battle event ended and "..getWinner()[3])

if not isDraw() then

win(getWinner()[1],type)

lose(getWinner()[2],type)

else

draw()

end

end

addEvent(resetEvent,2 * 1000) --- tp player to home remove all storages and reset event global storages

end

 

function getPercent()

rand= math.random(1,100)

prev = 0

chosenItem = 0

for k, v in pairs(rewards) do

if rand > prev and rand <= k+prev then

chosenItem = k

break

else

prev = k+prev

end

end

return chosenItem

end

 

function generateReward(cid)

percent = getPercent()

if percent == 0 then

print("Error in the reward item. Please inform Doggynub.")

return true

end

 

randomizer = rewards[percent][math.random(1,#rewards[percent])]

item = not tonumber(randomizer[1]) and getItemIdByName(randomizer[1]) or randomizer[1]

count = isItemStackable(item) and math.min(randomizer[2],100) or 1

if item == nil or item == 0 then

print("Error in the item format. Please inform Doggynub.")

return true

end

 

msg = "You have won ".. (count == 1 and "a" or count) .." " .. getItemNameById(item) .. "" .. (count == 1 and "" or "s").."."

 

if not doPlayerAddItem(cid,item,count,false) then

msg = msg.. "You need to free some space then relog to take your reward."

setPlayerStorageValue(cid,itemToGet,item)

setPlayerStorageValue(cid,countItemToGet,count)

end

 

doPlayerSendTextMessage(cid,MESSAGE_TYPES["white"],msg)

 

end

 

 

 

function generateStatsMessage(cid, type, stats)

msg = {

["KO"] = { ["win"] = "Event ended. Your team have won by killing all oponent's team members. You will recieve your reward shortly, check incoming messages.",

["lose"] = "Event ended. Your team have lost as the Oponent team killed all your team's members."

},

["maxTime"] = {

["win"] = "Event max-time finished and your team have won. You will recieve your reward shortly, check incoming messages.",

["lose"] = "Event max-time finished and your team have lost.",

["draw"] = "Event max-time finished and it is a draw.(no team won)"

}

}

doPlayerSendTextMessage(cid,MESSAGE_TYPES["info"],msg[type][stats])

 

end

function win(winners,type)

for _,cid in ipairs(winners) do

generateStatsMessage(cid, type, "win")

generateReward(cid)

end

end

function lose(losers,type)

for _,cid in ipairs(losers) do

generateStatsMessage(cid, type, "lose")

end

end

function draw()

for _,cid in ipairs(getJoiners()) do

generateStatsMessage(cid, "maxTime", "draw")

end

end

 

function resetEvent()

doSetStorage(eventRecruiting,-1)

doSetStorage(nextExecute,-1)

doSetStorage(eventStarted,-1)

doSetStorage(eventTime,-1)

doSetStorage(blueKills,-1)

doSetStorage(redKills,-1)

for _,cid in ipairs(getPlayersOnline()) do

if isBlue(cid) or isRed(cid) or isJoiner(cid) then

clearTeamEventStorages(cid)

end

end

end

 

 

]]></lib>

<event type="login" name="teambattleLogin" event="script"><![CDATA[

domodlib('teamFunctions')

 

function onLogin(cid)

clearTeamEventStorages(cid)

recieveLateReward(cid)

 

registerCreatureEvent(cid, "teamEventStats")

registerCreatureEvent(cid, "teambattleLogout")

registerCreatureEvent(cid, "teambattleCombat")

return true

end

]]></event>

<event type="combat" name="teambattleCombat" event="script"><![CDATA[

domodlib('teamFunctions')

 

function onCombat(cid, target)

if isFightOn() then

if isBlue(cid) and isBlue(target) then

return false

end

if isRed(cid) and isRed(target) then

return false

end

end

return true

end

 

]]></event>

<event type="logout" name="teambattleLogout" event="script"><![CDATA[

domodlib('teamFunctions')

 

function onLogout(cid)

clearTeamEventStorages(cid)

if thereIsAWinner() then

endTeamEvent("KO")

end

return true

end

 

]]></event>

<event type="statschange" name="teamEventStats" event="script"><![CDATA[

domodlib('teamFunctions')

 

corpse_ids = {

[0] = 3065, -- female

[1] = 3058 -- male

}

function onStatsChange(cid, attacker, type, combat, value)

if combat == COMBAT_HEALING then

return true

end

if getCreatureHealth(cid) > value then

return true

end

 

if isInFightArea(cid) and isFightOn() then

if isBlue(cid) or isRed(cid) then

corpse = doCreateItem(corpse_ids[getPlayerSex(cid)], 1, getThingPos(cid))

doCreateItem(2016, 2, getThingPos(cid))

clearTeamEventStorages(cid)

doItemSetAttribute(corpse, "description", "You recognize "..getCreatureName(cid)..". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".n[Team-Event kill]")

doCreatureAddHealth(cid,getCreatureMaxHealth(cid))

if thereIsAWinner() then

endTeamEvent("KO")

end

 

return false

 

end

 

end

 

return true

end

]]></event>

 

<globalevent name = "teamBattleStart" time="15:00" event="script"><![CDATA[

domodlib('teamFunctions')

 

function onTimer()

resetEvent()

if getTileItemById(teleporterPosition,1387).uid < 1 then

tp = doCreateItem(1387,1,teleporterPosition)

doItemSetAttribute(tp, "aid", 9990)

end

 

startRecruiting()

for i = 0, recruitTime-1 do

addEvent(doBroadcastMessage, i * 60* 1000,"Team-Battle event is recruting players by entering event tp. Fight begins in "..(i == 0 and recruitTime or recruitTime-i).." minutes.",MESSAGE_TYPES["warning"])

end

 

addEvent(startTeam, recruitTime * 60 * 1000)

 

return true

end

 

 

]]></globalevent>

 

<globalevent name = "teamBattletime" interval="1" event="script"><![CDATA[

domodlib('teamFunctions')

 

function onThink()

if isFightOn() then

disPlayEventStats()

 

if getStorage(nextExecute) == -1 or getStorage(nextExecute) <= os.time() then

doSendLeftPlayers()

doSetStorage(nextExecute,os.time()+intervalToSendLeftPlayers)

end

end

return true

end

 

]]></globalevent>

<movevent type="StepIn" actionid="9990" event="script"><![CDATA[

domodlib('teamFunctions')

 

function onStepIn(cid, item, position, fromPosition)

if not isRecruitOn() then

doPlayerSendTextMessage(cid,MESSAGE_TYPES["orange"],"Event isn't currently opened.")

doTeleportThing(cid,fromPosition)

doSendMagicEffect(fromPosition,2)

return true

end

if getPlayerLevel(cid) < getMinJoinLevel() then

doPlayerSendTextMessage(cid,MESSAGE_TYPES["orange"],"Only players of level ".. getMinJoinLevel().. "+ can join this event.")

doTeleportThing(cid,fromPosition)

return true

end

teleportToWaitRoom(cid)

return true

end

 

 

]]> </movevent>

</mod>

 

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...