matheusalvez 38 Postado Outubro 19, 2011 Share Postado Outubro 19, 2011 (editado) pessoal achei esse script em outro forum e trouce pra vcs o evento funciona assim: A cada dia a X horas um teleport aparece em uma área e manda broadcastle para todos os players online Assim que o player entrar no teleport ele ira pra uma sala de espera e esperara 5 minutos (isso é configurável) la ate que o evento seja fechado Todos que estavam na sala de espera serão levados para uma arena Serão formado dois times 1 vermelho e outro azul O team que ganhar ganha um premio Bom agora que ja sabemos como funciona vamos ao script: Versao tfs 0.3.6 para instalar esse evento no seu ot abra a pasta MOD copie e cole um arquivo que esteja la e nomeie ele para qualquer nome e cole o seguinte script dentro dele <?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 = 96, y = 117, z = 7} waitRoomPlace = {x = 144, y = 41, z = 7} waitRoomDimensions = { startPos = {x = 134, y = 31, z = 7}, endPos = {x = 156, y = 53, z = 7} } eventPlaceDimensions = { startPos = {x = 176, y = 53, z = 7}, endPos = {x = 209, y = 74, z = 7} } blueTeamPos = {x = 180, y = 56, z = 7} redTeamPos = {x = 204, y = 72, z = 7} --// General settings recruitTime = 1 minimumPlayersJoins = 2 balanceTeams = true removeTeleportOnEventEnd = false eventMaxTime = 5 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 startEvent() 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="00:58" 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(startEvent, 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> Configurando: linha 52; teleporterPosition = {x = 96, y = 117, z = 7} -- posição aonde o teleport vai ser criado. linha 54; waitRoomPlace = {x = 144, y = 41, z = 7} -- posição aonde o teleport ira levar os players na sala de espera linha 56; startPos = {x = 134, y = 31, z = 7}, -- posição superior esquerda da sala de espera endPos = {x = 156, y = 53, z = 7} -- posição inferior direita da sala de espera linha 62; startPos = {x = 176, y = 53, z = 7}, -- posição superior esquerda da arena aonde ocorrera o evento endPos = {x = 209, y = 74, z = 7} -- posição inferior direita da arena aonde ocorrera o evento linha 66; blueTeamPos = {x = 180, y = 56, z = 7} --posição aonde os players do time azul serão levado (na arena) linha 67; redTeamPos = {x = 204, y = 72, z = 7} --posição aonde os players do time red serão levado (na arena) linha 72 a 93; recruitTime = 1 -- tempo que os players ficarão esperando na sala de espera minimumPlayersJoins = 2 --numeros de players mínimos na arena caso aja menos o evento sera terminado balanceTeams = true -- caso esteja true se tiver algum jogador a mais na sala de espera e o evento começa o jogador sera kikado para equilibrar as equipes removeTeleportOnEventEnd = false -- se o teleport do evento sera deletado quando começa caso ele fique la sera bloqueado a entrada eventMaxTime = 5 -- tempo máximo do evento caso acabe e tenha players na arena ainda o team que tiver mais players ganhara showEventSats = true -- aconselho nao deixar false isso mostrar informações do evento para todos os players participantes tais como tempo restante, oponentes na arena e lvl e nome dos oponentes aparecendo na tela sendLeftPlayers = true -- isso mandara mensagens para os players com informaçoes dos oponentes intervalToSendLeftPlayers = 11 -- intervalo em segundos countDownOnStart = true -- essa parte se estiver true fara uma contagem regressiva e os players não poderiam se mover ate acabar a contagem regresiva countDownFrom = 10 -- tempo da contagem regressiva em segundos minJoinLevel = 50 -- lvl minimo para entrar no evento linha 95 a 100; rewards = { --Example [%] = { {itemid/name, count} ,..........} count isnt more than 100 [65] = { {2476,1} , {"gold coin",500} }, [25] = { {"golden armor",1} , {2152,90} }, [10] = { {"dragon scale mail",1} , {"crystal coin",10} } } --itens reward 65,25,10 sao as chances de 0 a 100 lenbrando que voce pode colocar o nome ou o id do item como preferir linha 601; <globalevent name = "teamBattleStart" time="00:58" event="script"><![CDATA[ -- em time se coloca o tempo do evento exemplo time="19:00" se alquem não intendeu alguma parte comente no tópico Vesao tfs 0.4 para instalar esse evento no seu ot abra a pasta MOD copie e cole um arquivo que esteja la e nomeie ele para qualquer nome e cole o seguinte script dentro dele <?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.4 : 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 was tested on 0.4 latest one 4626, should work on lower rev too. 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 = 96, y = 117, z = 7} waitRoomPlace = {x = 144, y = 41, z = 7} waitRoomDimensions = { startPos = {x = 134, y = 31, z = 7}, endPos = {x = 156, y = 53, z = 7} } eventPlaceDimensions = { startPos = {x = 176, y = 53, z = 7}, endPos = {x = 209, y = 74, z = 7} } blueTeamPos = {x = 180, y = 56, z = 7} redTeamPos = {x = 204, y = 72, z = 7} --// General settings recruitTime = 1 minimumPlayersJoins = 2 balanceTeams = true removeTeleportOnEventEnd = false eventMaxTime = 5 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 startEvent() 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="01:23:00" event="script"><![CDATA[ domodlib('teamFunctions') function onTime() 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(startEvent, 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> Configurando: linha 53; teleporterPosition = {x = 96, y = 117, z = 7} -- posição aonde o teleport vai ser criado. linha 55; waitRoomPlace = {x = 144, y = 41, z = 7} -- posição aonde o teleport ira levar os players na sala de espera linha 57; startPos = {x = 134, y = 31, z = 7}, -- posição superior esquerda da sala de espera endPos = {x = 156, y = 53, z = 7} -- posição inferior direita da sala de espera linha 63; startPos = {x = 176, y = 53, z = 7}, -- posição superior esquerda da arena aonde ocorrera o evento endPos = {x = 209, y = 74, z = 7} -- posição inferior direita da arena aonde ocorrera o evento linha 67; blueTeamPos = {x = 180, y = 56, z = 7} --posição aonde os players do time azul serão levado (na arena) linha 68; redTeamPos = {x = 204, y = 72, z = 7} --posição aonde os players do time red serão levado (na arena) linha 73 a 94; recruitTime = 1 -- tempo que os players ficarão esperando na sala de espera minimumPlayersJoins = 2 --numeros de players mínimos na arena caso aja menos o evento sera terminado balanceTeams = true -- caso esteja true se tiver algum jogador a mais na sala de espera e o evento começa o jogador sera kikado para equilibrar as equipes removeTeleportOnEventEnd = false -- se o teleport do evento sera deletado quando começa caso ele fique la sera bloqueado a entrada eventMaxTime = 5 -- tempo máximo do evento caso acabe e tenha players na arena ainda o team que tiver mais players ganhara showEventSats = true -- aconselho nao deixar false isso mostrar informações do evento para todos os players participantes tais como tempo restante, oponentes na arena e lvl e nome dos oponentes aparecendo na tela sendLeftPlayers = true -- isso mandara mensagens para os players com informaçoes dos oponentes intervalToSendLeftPlayers = 11 -- intervalo em segundos countDownOnStart = true -- essa parte se estiver true fara uma contagem regressiva e os players não poderiam se mover ate acabar a contagem regresiva countDownFrom = 10 -- tempo da contagem regressiva em segundos minJoinLevel = 50 -- lvl minimo para entrar no evento linha 96 a 101; rewards = { --Example [%] = { {itemid/name, count} ,..........} count isnt more than 100 [65] = { {2476,1} , {"gold coin",500} }, [25] = { {"golden armor",1} , {2152,90} }, [10] = { {"dragon scale mail",1} , {"crystal coin",10} } } --itens reward 65,25,10 sao as chances de 0 a 100 lenbrando que voce pode colocar o nome ou o id do item como preferir linha 597; <globalevent name = "teamBattleStart" time="01:23:00" event="script"><![CDATA[ -- em time se coloca o tempo do evento exemplo time="19:00:00" obs: hora:minuto:segundo Creditos eu doggynub Editado Outubro 20, 2011 por Matheusalvez Link para o comentário https://xtibia.com/forum/topic/170316-mod-evento-team-battle/ Compartilhar em outros sites More sharing options...
Lolksky 17 Postado Outubro 19, 2011 Share Postado Outubro 19, 2011 Você disse que formam 2 times, um azul e um vermelho... mas isso é o script que forma, ou os players entre si farão isso? Link para o comentário https://xtibia.com/forum/topic/170316-mod-evento-team-battle/#findComment-1119447 Compartilhar em outros sites More sharing options...
matheusalvez 38 Postado Outubro 19, 2011 Autor Share Postado Outubro 19, 2011 Você disse que formam 2 times, um azul e um vermelho... mas isso é o script que forma, ou os players entre si farão isso? sao 2 times aleatorios que o script forma Link para o comentário https://xtibia.com/forum/topic/170316-mod-evento-team-battle/#findComment-1119458 Compartilhar em outros sites More sharing options...
Lolksky 17 Postado Outubro 19, 2011 Share Postado Outubro 19, 2011 Você disse que formam 2 times, um azul e um vermelho... mas isso é o script que forma, ou os players entre si farão isso? sao 2 times aleatorios que o script forma E se entrar um numero impar de players, ex: 15 players, umtime vai ter + membros que o outro ? '-' Você disse que formam 2 times, um azul e um vermelho... mas isso é o script que forma, ou os players entre si farão isso? sao 2 times aleatorios que o script forma EDIT, esquece esquece iahsuiasa ja vi na configuração que tem o balance xD Link para o comentário https://xtibia.com/forum/topic/170316-mod-evento-team-battle/#findComment-1119459 Compartilhar em outros sites More sharing options...
matheusalvez 38 Postado Outubro 19, 2011 Autor Share Postado Outubro 19, 2011 Você disse que formam 2 times, um azul e um vermelho... mas isso é o script que forma, ou os players entre si farão isso? sao 2 times aleatorios que o script forma E se entrar um numero impar de players, ex: 15 players, umtime vai ter + membros que o outro ? '-' Você disse que formam 2 times, um azul e um vermelho... mas isso é o script que forma, ou os players entre si farão isso? sao 2 times aleatorios que o script forma EDIT, esquece esquece iahsuiasa ja vi na configuração que tem o balance xD xD Link para o comentário https://xtibia.com/forum/topic/170316-mod-evento-team-battle/#findComment-1119482 Compartilhar em outros sites More sharing options...
Carnavotu 18 Postado Outubro 23, 2011 Share Postado Outubro 23, 2011 Da esse erro aqui no styller [23/10/2011 17:32:21] [Error - CreatureScript Interface] [23/10/2011 17:32:21] buffer:onLogout [23/10/2011 17:32:21] Description: [23/10/2011 17:32:21] data/lib/032-position.lua:2: attempt to index global 'position' (a nil value) [23/10/2011 17:32:21] stack traceback: [23/10/2011 17:32:21] data/lib/032-position.lua:2: in function <data/lib/032-position.lua:1> [23/10/2011 17:32:21] (tail call): ? [23/10/2011 17:32:21] [string "domodlib('teamSetting')..."]:237: in function 'clearTeamEventStorages' [23/10/2011 17:32:21] [string "loadBuffer"]:4: in function <[string "loadBuffer"]:3> Link para o comentário https://xtibia.com/forum/topic/170316-mod-evento-team-battle/#findComment-1121600 Compartilhar em outros sites More sharing options...
matheusalvez 38 Postado Outubro 24, 2011 Autor Share Postado Outubro 24, 2011 Da esse erro aqui no styller [23/10/2011 17:32:21] [Error - CreatureScript Interface] [23/10/2011 17:32:21] buffer:onLogout [23/10/2011 17:32:21] Description: [23/10/2011 17:32:21] data/lib/032-position.lua:2: attempt to index global 'position' (a nil value) [23/10/2011 17:32:21] stack traceback: [23/10/2011 17:32:21] data/lib/032-position.lua:2: in function <data/lib/032-position.lua:1> [23/10/2011 17:32:21] (tail call): ? [23/10/2011 17:32:21] [string "domodlib('teamSetting')..."]:237: in function 'clearTeamEventStorages' [23/10/2011 17:32:21] [string "loadBuffer"]:4: in function <[string "loadBuffer"]:3> tenta subistitui sua lib por essa function isInRange(position, fromPosition, toPosition) return (position.x >= fromPosition.x and position.y >= fromPosition.y and position.z >= fromPosition.z and position.x <= toPosition.x and position.y <= toPosition.y and position.z <= toPosition.z) end function getDistanceBetween(fromPosition, toPosition) local x, y = math.abs(fromPosition.x - toPosition.x), math.abs(fromPosition.y - toPosition.y) local diff = math.max(x, y) if(fromPosition.z ~= toPosition.z) then diff = diff + 9 + 6 end return diff end function getDirectionTo(pos1, pos2) local dir = NORTH if(pos1.x > pos2.x) then dir = WEST if(pos1.y > pos2.y) then dir = NORTHWEST elseif(pos1.y < pos2.y) then dir = SOUTHWEST end elseif(pos1.x < pos2.x) then dir = EAST if(pos1.y > pos2.y) then dir = NORTHEAST elseif(pos1.y < pos2.y) then dir = SOUTHEAST end else if(pos1.y > pos2.y) then dir = NORTH elseif(pos1.y < pos2.y) then dir = SOUTH end end return dir end function getCreatureLookPosition(cid) return getPosByDir(getThingPos(cid), getCreatureLookDirection(cid)) end function getPositionByDirection(position, direction, size) local n = size or 1 if(direction == NORTH) then position.y = position.y - n elseif(direction == SOUTH) then position.y = position.y + n elseif(direction == WEST) then position.x = position.x - n elseif(direction == EAST) then position.x = position.x + n elseif(direction == NORTHWEST) then position.y = position.y - n position.x = position.x - n elseif(direction == NORTHEAST) then position.y = position.y - n position.x = position.x + n elseif(direction == SOUTHWEST) then position.y = position.y + n position.x = position.x - n elseif(direction == SOUTHEAST) then position.y = position.y + n position.x = position.x + n end return position end function doComparePositions(position, positionEx) return position.x == positionEx.x and position.y == positionEx.y and position.z == positionEx.z end function getArea(position, x, y) local t = {} for i = (position.x - x), (position.x + x) do for j = (position.y - y), (position.y + y) do table.insert(t, {x = i, y = j, z = position.z}) end end return t end Link para o comentário https://xtibia.com/forum/topic/170316-mod-evento-team-battle/#findComment-1121990 Compartilhar em outros sites More sharing options...
Denuvo 71 Postado Outubro 27, 2011 Share Postado Outubro 27, 2011 Matheus esse mod serve para pokemon tbm .. ? aah e teria como vs identificar no script onde configurao tempo de espera, onde o teleport vai aparecer e se tem como aparecer em multiplas aréas por exemplo em cada city do mappa e configurar a coordenada qe os players seram movidos para a arena?aa uma dica tbm qe naum sei se serve... mais num seria melhor trocar o teleport por um NPC naum? aa e vlw por compartilhar esse mod cm nóos! REP+ Link para o comentário https://xtibia.com/forum/topic/170316-mod-evento-team-battle/#findComment-1123485 Compartilhar em outros sites More sharing options...
angeldoido 37 Postado Outubro 27, 2011 Share Postado Outubro 27, 2011 Na boa Creditos seu ? <?xml version="1.0" encoding="UTF-8"?> <mod name="Team Event" version="2.0" author="Damadgerz" contact="support@lualand.net" enabled="yes"> <description> Sem comentario.... ' Link para o comentário https://xtibia.com/forum/topic/170316-mod-evento-team-battle/#findComment-1123717 Compartilhar em outros sites More sharing options...
RHCP 24 Postado Outubro 29, 2011 Share Postado Outubro 29, 2011 Eu queria saber a separaçao, há alguma forma que eu identifique quem é quem? (tipo, o time azul esta todo de azul e o vermelho de vermelho) Link para o comentário https://xtibia.com/forum/topic/170316-mod-evento-team-battle/#findComment-1124391 Compartilhar em outros sites More sharing options...
Rafaellm 1 Postado Outubro 31, 2011 Share Postado Outubro 31, 2011 Eu faco tudo certo. Quando todos entra no TP escreve isso : 18:45 Team-Battle event was cancelled as only 0 players joined. E nao forma os times. Link para o comentário https://xtibia.com/forum/topic/170316-mod-evento-team-battle/#findComment-1125660 Compartilhar em outros sites More sharing options...
jamersonandres 14 Postado Novembro 3, 2011 Share Postado Novembro 3, 2011 snok c pego ele de jeito agora kkk :button_cancel: CARAMBA PEGA OS SCRIPT DOS OUTROS E MANDA AKI Q FEIO VIU! :orangeperson: Link para o comentário https://xtibia.com/forum/topic/170316-mod-evento-team-battle/#findComment-1127216 Compartilhar em outros sites More sharing options...
Administrador Administrador 1437 Postado Novembro 4, 2011 Administrador Share Postado Novembro 4, 2011 Muito legal, vou testar em breve e se tiver alguma correção posto aqui para você editar. PS: Sempre fique ligado nos créditos ... Link para o comentário https://xtibia.com/forum/topic/170316-mod-evento-team-battle/#findComment-1127581 Compartilhar em outros sites More sharing options...
lpdknss 0 Postado Novembro 4, 2011 Share Postado Novembro 4, 2011 (editado) Notei que após a 2 morte, os jogadores passam a morrer, como se o evento tivesse parado de funcionar. Editado Novembro 4, 2011 por lpdknss Link para o comentário https://xtibia.com/forum/topic/170316-mod-evento-team-battle/#findComment-1127615 Compartilhar em outros sites More sharing options...
olimpiamarkin 16 Postado Novembro 4, 2011 Share Postado Novembro 4, 2011 Notei que após a 2 morte, os jogadores passam a morrer, como se o evento tivesse parado de funcionar. Se tiver mesmo este bug seria bom arrumar, mais mesmo assim exelente MOD, rep+ Link para o comentário https://xtibia.com/forum/topic/170316-mod-evento-team-battle/#findComment-1127618 Compartilhar em outros sites More sharing options...
Posts Recomendados