Hudsin 48 Postado Janeiro 20, 2011 Share Postado Janeiro 20, 2011 (editado) Fonte: Otland - Doggynub Modificações e tradução de algumas falas do npc e do MOD: Hudsin Testado em tfs 0.4 O que faz o script: Sistema de guerra entre 2 times(vermelho e azul),para que a war se inicie é necessário 2 times de 20 players(pode ser mudado no script) além de todos que forem participar precisar falar com o npc Eventer. Atualizações: 1- GM pode resetar o evento. 2- Players nao pode mudar a cor do outfit durante o evento. 3- Cada 40 segundos é enviado a mensagem avisando quantos players estão participando. Crie um novo npc em npc/Eventer.xml: <?xml version="1.0" encoding="UTF-8"?> <npc name="Eventer" script="event.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="129" head="79" body="113" legs="105" feet="86" addons="0"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|. Para entrar na batalha diga {Battle} e para sair diga leave."/> <parameter key="message_farewell" value="Good bye."/> <parameter key="message_walkaway" value="Farewell then.." /> </parameters> </npc> Agora em npc/script crie Event.lua e cole: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end --[[start edit]]-- local mingroup = 4 --(updated) minimum group to reset the event local joined = 10000 ---must be like the storage in mod local maxPlayerEachTeam = 20 ---must be like max number in mod local team1Name = "Blue" ---must be like team number i mod local team2Name = "Red" local minlevel = 130 --(added) min lvl for a player to join. --[[storage like in the mod file]]-- local running1 = 12000 --just add a non ussed storage local running2 = 12001 --just add a non ussed storage local sto = 12223 --just add a non ussed storage --[[storage end]]-- --[[End of edit]]-- local function getBlue() return getGlobalStorageValue(9888) end local function removeBlue() return setGlobalStorageValue(9888, getGlobalStorageValue(9888) - 1) end local function addBlue() return setGlobalStorageValue(9888, getGlobalStorageValue(9888) + 1) end local function resetBlue() return setGlobalStorageValue(9888,0) end local function getRed() return getGlobalStorageValue(9887) end local function removeRed() return setGlobalStorageValue(9887, getGlobalStorageValue(9887) - 1) end local function addRed() return setGlobalStorageValue(9887, getGlobalStorageValue(9887) + 1) end local function resetRed() return setGlobalStorageValue(9887,0) end --[[script start]]-- function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if getPlayerGroupId(cid) >= mingroup then npcHandler:say("Oh! Hail, sire. Do you want to reset my event?", cid) talkState[talkUser] = 1 if msgcontains(msg, 'yes') and talkState[talkUser] == 1 then resetBlue() resetRed() setGlobalStorageValue(running1,-1) setGlobalStorageValue(running2,-1) setGlobalStorageValue(sto,-1) npcHandler:say("Event was reseted, sire.", cid) doBroadcastMessage("Eventer: Meu evento foi resetado por ordens do "..getCreatureName(cid)..". Para participar fale comigo outra vez,estou na arena pvp.") for _,cid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(cid, joined) > 0 then setPlayerStorageValue(cid, joined,-1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) end end elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then npcHandler:say("As You wish, sire.", cid) talkState[talkUser] = 0 end else if msgcontains(msg, 'battle') then if getGlobalStorageValue(running2) == 1 then npcHandler:say("Ja tem batalha em andamento,tente mais tarde.", cid) elseif getPlayerLevel(cid) < minlevel then npcHandler:say("Apenas level 130+ pode participar.",cid) else npcHandler:say("Voce esta preparado para a abatalha? Por enquanto temos " .. getBlue() .. "/" .. maxPlayerEachTeam .. " players no {" .. team1Name .. "} team e " .. getRed() .. "/" .. maxPlayerEachTeam .. " players no {" .. team2Name .. "} team,vc quer escolher algum?", cid) talkState[talkUser] = 1 end elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then if getPlayerStorageValue(cid, joined) ~= 1 and getPlayerStorageValue(cid, joined) ~= 2 then npcHandler:say("Vc quer ser do {" .. team1Name .. "} team ou {" .. team2Name .. "} team?", cid) talkState[talkUser] = 2 else npcHandler:say("Vc esta cadastrado!", cid) talkState[talkUser] = 0 end elseif msgcontains(msg, 'no') and talkState[talkUser] == 1 then npcHandler:say("Okay then.", cid) talkState[talkUser] = 0 elseif msgcontains(msg, team1Name) and talkState[talkUser] == 2 then if getBlue() ~= maxPlayerEachTeam then --fixed setPlayerStorageValue(cid, joined, 1) addBlue() npcHandler:say("Vc entrou no " .. team1Name .. " team! Quando ambas equipes tiverem " .. maxPlayerEachTeam .. " os players serao teleportados para arena de batalha.", cid) talkState[talkUser] = 0 else npcHandler:say("{" .. team1Name .. "} team esta cheio, entre no {" .. team2Name .. "} team ou espere alguem sair do {" .. team1Name .. "} team.", cid) --fixed talkState[talkUser] = 1 end elseif msgcontains(msg, team2Name) and talkState[talkUser] == 2 then if getRed() ~= maxPlayerEachTeam then --fixed setPlayerStorageValue(cid, joined, 2) --fixed addRed() npcHandler:say("Vc esta no " .. team2Name .. " team! Quando ambas equipes tiverem " .. maxPlayerEachTeam .. " os players serao teleportados para arena de batalha.", cid) talkState[talkUser] = 0 else npcHandler:say("{" .. team2Name .. "} team esta cheio, entre no {" .. team1Name .. "} team ou espere alguem sair do {" .. team2Name .. "} team.", cid) talkState[talkUser] = 1 end elseif msgcontains(msg, 'leave') then npcHandler:say("Vc quer sair da lista de espera para batalha?", cid) talkState[talkUser] = 3 elseif msgcontains(msg, 'yes') and talkState[talkUser] == 3 then if getPlayerStorageValue(cid,joined) == 1 then setPlayerStorageValue(cid, joined, -1) -- fixed removeBlue() npcHandler:say("Vc saiu da batalha.", cid) doBroadcastMessage("Event: " .. getPlayerName(cid) .. " saiu da batalha " .. team1Name .. " e " .. team2Name .. "!") elseif getPlayerStorageValue(cid,joined) == 2 then --fixed setPlayerStorageValue(cid,joined,-1) removeRed() npcHandler:say("Vc saiu da batalha.", cid) doBroadcastMessage("Event: " .. getPlayerName(cid) .. " saiu da batalha " .. team1Name .. " e " .. team2Name .. "!") else npcHandler:say("Vc nao esta cadastrado!", cid) end talkState[talkUser] = 0 -- moved end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Agora para instalar o MOD crie um novo arquivo Event.xml na pasta mods de seu ot e coloque o seguinte codigo: <?xml version="1.0" encoding="UTF-8"?> <mod name="Team Event" version="1.0" author="Damadgerz" contact="support@lualand.net" enabled="yes"> <description> This is a full auto Team BattleEvent(missing part for site) : 1- Player will get the ability to talk to the npc event starter to start the event every x times(time between each event) 2- players will go to npc and say battle and then join their desired team(you adjust team names) , they also have ability to leave team 3- You have ability to set max players per each team, npc will not tp the players to arena except when both teams are full 4- Script automatically set the place of event to a pvp arena (players no lose items,levels,geet msg who killed them).Place cant be a non-pvp area. 5- if player logged out they will automatically be lifted out from event. 6- players in same team cant attack each others even with spells 7- each team will have a uniform 8-you choose where the first team be tped and where the second team be tped 9-when event start, you set a max time for event.So if ppl couldnt kill each other( if players in first team = players in second team when event times finish) They will automatically be sent to temple and no one will take reward and broadcast 10 -during event if max time didnt finish and player of team 1 killed all of those of team2 then players of team1 will be tped to temple broadcasting they won by killing all other members and will recieve a random reward taht you set 11 -Then the event will be on hold untill time between each event pass(you set that) , and when it pass a auto broadcast is made every minute to tell player that event is open. </description> <config name="tutorial_m"><![CDATA[ running1 = 12000 --just add a non ussed storage running2 = 12001 --just add a non ussed storage joined = 10000 --just add a non ussed storage sto = 12223 --just add a non ussed storage check = 5454 -- empty storage redpotision = {x=19068, y=18978, z=7} --place where the red team player be teleported to blueposition = {x=19060, y=19052, z=7} --place where the blue team player be teleported to stoptime = 2 --in minutes team1name = "Blue" --just put the name without <team> team2name = "Red" timebetween = 5 -- time between each event arena = { frompos = {x=19068,y=18978,z=7}, topos = {x=19060,y=19052,z=7} } ----Put you event area here conf = { rewards_id = {2472}, -- Rewards ID maxplayers = 20 ---maxplayers per team } ]]></config> <lib name="football-lib"><![CDATA[ function getBlue() return getGlobalStorageValue(9888) end function removeBlue() return setGlobalStorageValue(9888, getGlobalStorageValue(9888) - 1) end function addBlue() return setGlobalStorageValue(9888, getGlobalStorageValue(9888) + 1) end function resetBlue() return setGlobalStorageValue(9888,0) end function getRed() return getGlobalStorageValue(9887) end function removeRed() return setGlobalStorageValue(9887, getGlobalStorageValue(9887) - 1) end function addRed() return setGlobalStorageValue(9887, getGlobalStorageValue(9887) + 1) end function resetRed() return setGlobalStorageValue(9887,0) end function onStop() if getGlobalStorageValue(running1) == 1 then setGlobalStorageValue(running1, -1) setGlobalStorageValue(sto,1) end return true end function onStopp() if getGlobalStorageValue(running2) > 0 then setGlobalStorageValue(running2,-1) doBroadcastMessage("Event : event is started again , go talk to the Evnet's Npc.") end end ]]></lib> <event type="login" name="Tutorial Login" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') function onLogin(cid) if getPlayerStorageValue(cid,check) > 0 then if isInRange(getCreaturePosition(cid), arena.frompos, arena.topos) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) setPlayerStorageValue(cid,check,-1) else setPlayerStorageValue(cid,check,-1) end end registerCreatureEvent(cid, "Log") registerCreatureEvent(cid, "Arena") registerCreatureEvent(cid, "Attk") return true end ]]></event> <event type="combat" name="Attk" event="script"><![CDATA[ domodlib('tutorial_m') domodlib('football-lib') function onCombat(cid, target) if getPlayerStorageValue(cid, joined) == 1 and getPlayerStorageValue(target, joined) == 1 then return false end if getPlayerStorageValue(cid, joined) == 2 and getPlayerStorageValue(target, joined) == 2 then return false end return true end ]]></event> <event type="logout" name="Log" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') function onLogout(cid) if getPlayerStorageValue(cid,joined) == 1 then doBroadcastMessage(""..getPlayerName(cid).." have left the War-Event") setPlayerStorageValue(cid,joined,-1) setPlayerStorageValue(cid,check,1) removeBlue() return true end if getPlayerStorageValue(cid,joined) == 2 then doBroadcastMessage(""..getPlayerName(cid).." have left the War-Event") setPlayerStorageValue(cid,check,1) removeRed() return true end return true end ]]></event> <event type="statschange" name="Arena" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') local 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 isInRange(getCreaturePosition(cid), arena.frompos, arena.topos) then doItemSetAttribute(doCreateItem(corpse_ids[getPlayerSex(cid)], 1, getThingPos(cid)), "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[War-Event kill]") doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doRemoveConditions(cid, FALSE) doCreatureAddHealth(cid, getCreatureMaxHealth(cid) - getCreatureHealth(cid)) doCreatureAddMana(cid, getCreatureMaxMana(cid) - getCreatureMana(cid)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You got killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item").." in the war event.") if isPlayer(attacker) then doPlayerSendTextMessage(attacker, MESSAGE_STATUS_CONSOLE_BLUE, "You killed "..getCreatureName(cid).." in the war event.") end if getPlayerStorageValue(cid,joined) == 1 then removeBlue() setPlayerStorageValue(cid,10000,-1) elseif getPlayerStorageValue(cid,joined) == 2 then removeRed() setPlayerStorageValue(cid,10000,-1) end end return true end ]]></event> <globalevent name="reset" type="start" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') function onStartup() resetBlue() resetRed() setGlobalStorageValue(running1,-1) setGlobalStorageValue(running2,-1) setGlobalStorageValue(sto,-1) return true end ]]></globalevent> <globalevent name="TeamBattle" interval="7" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') 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}) function onThink(interval, lastExecution) local random_item = conf.rewards_id[math.random(1, #conf.rewards_id)] if (getBlue() == conf.maxplayers and getRed() == conf.maxplayers) then if (getGlobalStorageValue(running1) == -1 and getGlobalStorageValue(sto) == -1) then setGlobalStorageValue(running1,1) doBroadcastMessage("The Team Battle Event have started.And will end in "..stoptime.." minutes, unless one of the teams has killed all the oponents") addEvent(onStop, stoptime * 60 * 1000) for _, cid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(cid, joined) == 1 then if getPlayerSex(cid) == 1 then doAddCondition(cid, bmale) elseif getPlayerSex(cid) ~= 1 then doAddCondition(cid, bfemale) end doTeleportThing(cid, blueposition, FALSE) doSendMagicEffect(blueposition, 10) elseif getPlayerStorageValue(cid, joined) == 2 then if getPlayerSex(cid) == 1 then doAddCondition(cid, rmale) elseif getPlayerSex(cid) ~= 1 then doAddCondition(cid, rfemale) end doTeleportThing(cid, redpotision, FALSE) doSendMagicEffect(redpotision, 10) end end end end if getGlobalStorageValue(running1) == 1 then setGlobalStorageValue(running2,1) if (getBlue() >= 1 and getRed() < 1) then addEvent(onStopp, timebetween * 60 * 1000) doBroadcastMessage("The War-Event has finished as the " ..team1name.. " team has killed all players in oponnent team ,they will recieve their rewards.Event will be reopened in ".. timebetween .." minutes") elseif (getBlue() < 1 and getRed() >= 1) then doBroadcastMessage("The War-Event has finished as the " ..team2name.. " team has killed all players in oponnent team,they will recieve their rewards.Event will be reopened in ".. timebetween .." minutes") addEvent(onStopp, timebetween * 60 * 1000) end for _, cid in ipairs(getPlayersOnline()) do if (getBlue() >= 1 and getRed() < 1) then if getPlayerStorageValue(cid,joined) == 1 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doRemoveConditions(cid, FALSE) doPlayerAddItem(cid, random_item, 1) doRemoveConditions(cid, FALSE) doCreatureSay(cid, "You have won a "..getItemNameById(random_item).." as a reward from war event", TALKTYPE_ORANGE_1) setPlayerStorageValue(cid, joined,-1) setGlobalStorageValue(running1,-1) resetBlue() end end if (getBlue() < 1 and getRed() >= 1) then if getPlayerStorageValue(cid,joined) == 2 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doRemoveConditions(cid, FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doRemoveConditions(cid, FALSE) doPlayerAddItem(cid, random_item, 1) doCreatureSay(cid, "You have won a "..getItemNameById(random_item).." as a reward from war event", TALKTYPE_ORANGE_1) setGlobalStorageValue(running1,-1) setPlayerStorageValue(cid, joined,-1) resetRed() end end end end return true end ]]></globalevent> <globalevent name="Team" interval="3" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') function onThink(interval, lastExecution) local random_item = conf.rewards_id[math.random(1, #conf.rewards_id)] if getGlobalStorageValue(sto) == 1 then if (getRed() > getBlue()) then doBroadcastMessage("The War-Event has finished as the " ..team2name.. " team has killed all players in oponnent team,they will recieve their rewards.Event will be reopened in ".. timebetween .." minutes") for _, cid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(cid,joined) == 2 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doRemoveConditions(cid, FALSE) doPlayerAddItem(cid, random_item, 1) doRemoveConditions(cid, FALSE) doCreatureSay(cid, "You have won a "..getItemNameById(random_item).." as a reward from war event", TALKTYPE_ORANGE_1) setPlayerStorageValue(cid, joined,-1) end if getPlayerStorageValue(cid,joined) == 1 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doPlayerSendTextMessage(cid,24, "Your team has lost in the war event war event") setPlayerStorageValue(cid, joined,-1) doRemoveConditions(cid, FALSE) end end addEvent(onStopp, timebetween * 60 * 1000) end if (getRed() < getBlue()) then doBroadcastMessage("The War-Event has finished as the " ..team1name.. " team has killed all players in oponnent team,they will recieve their rewards.Event will be reopened in ".. timebetween .." minutes") for _, cid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(cid,joined) == 1 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doPlayerAddItem(cid, random_item, 1) doRemoveConditions(cid, FALSE) doRemoveConditions(cid, FALSE) doCreatureSay(cid, "You have won a "..getItemNameById(random_item).." as a reward from war event", TALKTYPE_ORANGE_1) setPlayerStorageValue(cid, joined,-1) end if getPlayerStorageValue(cid,joined) == 2 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doRemoveConditions(cid, FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doPlayerSendTextMessage(cid,24, "Your team has lost in the war event war event") setPlayerStorageValue(cid, joined,-1) end end addEvent(onStopp, timebetween * 60 * 1000) end if (getRed() == getBlue()) then for _, cid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(cid,joined) == 2 or getPlayerStorageValue(cid,joined) == 1 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doRemoveConditions(cid, FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doRemoveConditions(cid, FALSE) setPlayerStorageValue(cid, joined,-1) doBroadcastMessage("Event max time ended.And niether of the teams won the event.Event will be reopened in ".. timebetween .." minutes") end end addEvent(onStopp, timebetween * 60 * 1000) end resetBlue() resetRed() setGlobalStorageValue(sto, -1) end return true end ]]></globalevent> <globalevent name="Broad" interval="90" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') function onThink(interval, lastExecution) if getGlobalStorageValue(running2) == -1 then doBroadcastMessage("O evento de batalha está aberto.O npc Eventer precisa de 2 times de 20 pessoas para iniciar a batalhe,ele esta na Arena Pvp que vai por teleport de Carlin. Ja tem "..getBlue().." players no blue team vs "..getRed().." players no Red team,o time vencedor sera premiado.") return true end return true end ]]></globalevent> <globalevent name="Karim" interval="40000" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') function onThink(interval, lastExecution) if getGlobalStorageValue(running1) > 0 then local blue = {} local green = {} for _, pid in ipairs(getPlayersOnline()) do if isInRange(getCreaturePosition(pid),arena.frompos, arena.topos) then if getPlayerStorageValue(pid, joined) == 1 then table.insert(blue,getCreatureName(pid)) elseif getPlayerStorageValue(pid, joined) == 2 then table.insert(green,getCreatureName(pid)) end end end local greenn = table.concat(green,', ') local bluee = table.concat(blue,', ') for _, tid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(tid, joined) > 0 then doPlayerSendTextMessage(tid,19,'<<!-- Players left --!>>\n '..team1name..' team ('..#blue..') : '..bluee..'.\n '..team2name..' team ('..#green..') : '..greenn..'.') end end end return true end ]]></globalevent> </mod> Aqui você pode editar a recompensa: rewards_id = {2472}, -- Rewards ID Para adicionar mais ficaria assim: rewards_id = {ID DO ITEM,ID DO ITEM,ID DO ITEM}, -- Rewards ID espero que gostem e comentem! bjs :XTibia_smile: :tux: Editado Fevereiro 1, 2011 por Hudsin Link para o comentário https://xtibia.com/forum/topic/149806-mod-full-auto-war-teambattle-event-com-recompensa/ Compartilhar em outros sites More sharing options...
baaka 0 Postado Janeiro 24, 2011 Share Postado Janeiro 24, 2011 Pergunta isso pega ein Server de pokemon ? Link para o comentário https://xtibia.com/forum/topic/149806-mod-full-auto-war-teambattle-event-com-recompensa/#findComment-992288 Compartilhar em outros sites More sharing options...
Hudsin 48 Postado Janeiro 24, 2011 Autor Share Postado Janeiro 24, 2011 Bom... pelo que eu saiba,pokemon nao eh player vs player e sim pokemon vs pokemon... nao sei se o script funciona,tenho quase certeza que não,pois a funções tem a ver com playerkill e nao pokemon :penguin: Link para o comentário https://xtibia.com/forum/topic/149806-mod-full-auto-war-teambattle-event-com-recompensa/#findComment-992343 Compartilhar em outros sites More sharing options...
guiihenriquee 0 Postado Janeiro 29, 2011 Share Postado Janeiro 29, 2011 Hudsin man sou teu maior fan , todos seus scripts eu uso em meu OT , mais tipo tu manda o script e não explica muito sobre ele e tals , como funciona ... Mesmo assim vlw ' Link para o comentário https://xtibia.com/forum/topic/149806-mod-full-auto-war-teambattle-event-com-recompensa/#findComment-994799 Compartilhar em outros sites More sharing options...
Hudsin 48 Postado Fevereiro 1, 2011 Autor Share Postado Fevereiro 1, 2011 (editado) Vlw =D e obrigado pela dica,vou me esforçar para explicar mais as funções dos scripts,vlw! Lembrando: Apenas alguns scripts que eu posto eu mesmo que sou autor,a maioria eu apenas modifico algumas coisas,mas mesmo assim vlw! :smile_positivo: :tux: Editado Fevereiro 1, 2011 por Hudsin Link para o comentário https://xtibia.com/forum/topic/149806-mod-full-auto-war-teambattle-event-com-recompensa/#findComment-996328 Compartilhar em outros sites More sharing options...
Vodkart 1515 Postado Fevereiro 2, 2011 Share Postado Fevereiro 2, 2011 Parece um ótimo sistema,obrigado por compartilhar Link para o comentário https://xtibia.com/forum/topic/149806-mod-full-auto-war-teambattle-event-com-recompensa/#findComment-996632 Compartilhar em outros sites More sharing options...
refi 2 Postado Março 13, 2011 Share Postado Março 13, 2011 Systema muito Bom pra quem ainda não conseguiu um War system que funcione. Obg por compartilhar. Link para o comentário https://xtibia.com/forum/topic/149806-mod-full-auto-war-teambattle-event-com-recompensa/#findComment-1012244 Compartilhar em outros sites More sharing options...
johann07 4 Postado Março 28, 2011 Share Postado Março 28, 2011 aki deu esse erro [28/03/2011 18:28:31] > Loading Eventer.xml...[Error - ScriptingManager::loadFromXml] Cannot load mod mods/Eventer.xml [28/03/2011 18:28:31] Line: 357, Info: Input is not proper UTF-8, indicate encoding ! [28/03/2011 18:28:31] Bytes: 0xE1 0x20 0x61 0x62 tem como ajudar?? Link para o comentário https://xtibia.com/forum/topic/149806-mod-full-auto-war-teambattle-event-com-recompensa/#findComment-1018528 Compartilhar em outros sites More sharing options...
atakashi 11 Postado Março 29, 2011 Share Postado Março 29, 2011 (editado) é , deixa keto oq escrevi . esse npc ai so funfa em tfs 4.0 galera ja vi ele. Editado Março 29, 2011 por atakashi Link para o comentário https://xtibia.com/forum/topic/149806-mod-full-auto-war-teambattle-event-com-recompensa/#findComment-1018564 Compartilhar em outros sites More sharing options...
johann07 4 Postado Maio 26, 2011 Share Postado Maio 26, 2011 [26/05/2011 15:35:26] > Loading Event.xml...[Error - ScriptingManager::loadFromXml] Cannot load mod mods/Event.xml [26/05/2011 15:35:26] Line: 357, Info: Input is not proper UTF-8, indicate encoding ! [26/05/2011 15:35:26] Bytes: 0xE1 0x20 0x61 0x62 ta dando esse error oq pode ser alguem me ajuda? uso ot 8.60 Link para o comentário https://xtibia.com/forum/topic/149806-mod-full-auto-war-teambattle-event-com-recompensa/#findComment-1038231 Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Maio 28, 2011 Share Postado Maio 28, 2011 (editado) @Up Vai em mods/Event.xml, acha essa linha: <?xml version="1.0" encoding="UTF-8"?> E troca por essa: <?xml version="1.0" encoding="ISO-8859-1"?> Abraços. OBS: Isso aconteceu porque você colocou acento no mod. Editado Maio 28, 2011 por Demonbholder Link para o comentário https://xtibia.com/forum/topic/149806-mod-full-auto-war-teambattle-event-com-recompensa/#findComment-1038726 Compartilhar em outros sites More sharing options...
guixap 60 Postado Junho 1, 2011 Share Postado Junho 1, 2011 Só uma pergunta... Todos os players são mandados automaticamente... E quando o evento acontece? Link para o comentário https://xtibia.com/forum/topic/149806-mod-full-auto-war-teambattle-event-com-recompensa/#findComment-1039942 Compartilhar em outros sites More sharing options...
Lost654 0 Postado Junho 4, 2011 Share Postado Junho 4, 2011 quando alguem morre o servidor cai, alguem sabe como arrumar? Link para o comentário https://xtibia.com/forum/topic/149806-mod-full-auto-war-teambattle-event-com-recompensa/#findComment-1041133 Compartilhar em outros sites More sharing options...
railsonsousareis 0 Postado Novembro 7, 2011 Share Postado Novembro 7, 2011 Fonte: Otland - Doggynub Modificações e tradução de algumas falas do npc e do MOD: Hudsin Testado em tfs 0.4 O que faz o script: Sistema de guerra entre 2 times(vermelho e azul),para que a war se inicie é necessário 2 times de 20 players(pode ser mudado no script) além de todos que forem participar precisar falar com o npc Eventer. Atualizações: 1- GM pode resetar o evento. 2- Players nao pode mudar a cor do outfit durante o evento. 3- Cada 40 segundos é enviado a mensagem avisando quantos players estão participando. Crie um novo npc em npc/Eventer.xml: <?xml version="1.0" encoding="UTF-8"?> <npc name="Eventer" script="event.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="129" head="79" body="113" legs="105" feet="86" addons="0"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|. Para entrar na batalha diga {Battle} e para sair diga leave."/> <parameter key="message_farewell" value="Good bye."/> <parameter key="message_walkaway" value="Farewell then.." /> </parameters> </npc> Agora em npc/script crie Event.lua e cole: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end --[[start edit]]-- local mingroup = 4 --(updated) minimum group to reset the event local joined = 10000 ---must be like the storage in mod local maxPlayerEachTeam = 20 ---must be like max number in mod local team1Name = "Blue" ---must be like team number i mod local team2Name = "Red" local minlevel = 130 --(added) min lvl for a player to join. --[[storage like in the mod file]]-- local running1 = 12000 --just add a non ussed storage local running2 = 12001 --just add a non ussed storage local sto = 12223 --just add a non ussed storage --[[storage end]]-- --[[End of edit]]-- local function getBlue() return getGlobalStorageValue(9888) end local function removeBlue() return setGlobalStorageValue(9888, getGlobalStorageValue(9888) - 1) end local function addBlue() return setGlobalStorageValue(9888, getGlobalStorageValue(9888) + 1) end local function resetBlue() return setGlobalStorageValue(9888,0) end local function getRed() return getGlobalStorageValue(9887) end local function removeRed() return setGlobalStorageValue(9887, getGlobalStorageValue(9887) - 1) end local function addRed() return setGlobalStorageValue(9887, getGlobalStorageValue(9887) + 1) end local function resetRed() return setGlobalStorageValue(9887,0) end --[[script start]]-- function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if getPlayerGroupId(cid) >= mingroup then npcHandler:say("Oh! Hail, sire. Do you want to reset my event?", cid) talkState[talkUser] = 1 if msgcontains(msg, 'yes') and talkState[talkUser] == 1 then resetBlue() resetRed() setGlobalStorageValue(running1,-1) setGlobalStorageValue(running2,-1) setGlobalStorageValue(sto,-1) npcHandler:say("Event was reseted, sire.", cid) doBroadcastMessage("Eventer: Meu evento foi resetado por ordens do "..getCreatureName(cid)..". Para participar fale comigo outra vez,estou na arena pvp.") for _,cid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(cid, joined) > 0 then setPlayerStorageValue(cid, joined,-1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) end end elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then npcHandler:say("As You wish, sire.", cid) talkState[talkUser] = 0 end else if msgcontains(msg, 'battle') then if getGlobalStorageValue(running2) == 1 then npcHandler:say("Ja tem batalha em andamento,tente mais tarde.", cid) elseif getPlayerLevel(cid) < minlevel then npcHandler:say("Apenas level 130+ pode participar.",cid) else npcHandler:say("Voce esta preparado para a abatalha? Por enquanto temos " .. getBlue() .. "/" .. maxPlayerEachTeam .. " players no {" .. team1Name .. "} team e " .. getRed() .. "/" .. maxPlayerEachTeam .. " players no {" .. team2Name .. "} team,vc quer escolher algum?", cid) talkState[talkUser] = 1 end elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then if getPlayerStorageValue(cid, joined) ~= 1 and getPlayerStorageValue(cid, joined) ~= 2 then npcHandler:say("Vc quer ser do {" .. team1Name .. "} team ou {" .. team2Name .. "} team?", cid) talkState[talkUser] = 2 else npcHandler:say("Vc esta cadastrado!", cid) talkState[talkUser] = 0 end elseif msgcontains(msg, 'no') and talkState[talkUser] == 1 then npcHandler:say("Okay then.", cid) talkState[talkUser] = 0 elseif msgcontains(msg, team1Name) and talkState[talkUser] == 2 then if getBlue() ~= maxPlayerEachTeam then --fixed setPlayerStorageValue(cid, joined, 1) addBlue() npcHandler:say("Vc entrou no " .. team1Name .. " team! Quando ambas equipes tiverem " .. maxPlayerEachTeam .. " os players serao teleportados para arena de batalha.", cid) talkState[talkUser] = 0 else npcHandler:say("{" .. team1Name .. "} team esta cheio, entre no {" .. team2Name .. "} team ou espere alguem sair do {" .. team1Name .. "} team.", cid) --fixed talkState[talkUser] = 1 end elseif msgcontains(msg, team2Name) and talkState[talkUser] == 2 then if getRed() ~= maxPlayerEachTeam then --fixed setPlayerStorageValue(cid, joined, 2) --fixed addRed() npcHandler:say("Vc esta no " .. team2Name .. " team! Quando ambas equipes tiverem " .. maxPlayerEachTeam .. " os players serao teleportados para arena de batalha.", cid) talkState[talkUser] = 0 else npcHandler:say("{" .. team2Name .. "} team esta cheio, entre no {" .. team1Name .. "} team ou espere alguem sair do {" .. team2Name .. "} team.", cid) talkState[talkUser] = 1 end elseif msgcontains(msg, 'leave') then npcHandler:say("Vc quer sair da lista de espera para batalha?", cid) talkState[talkUser] = 3 elseif msgcontains(msg, 'yes') and talkState[talkUser] == 3 then if getPlayerStorageValue(cid,joined) == 1 then setPlayerStorageValue(cid, joined, -1) -- fixed removeBlue() npcHandler:say("Vc saiu da batalha.", cid) doBroadcastMessage("Event: " .. getPlayerName(cid) .. " saiu da batalha " .. team1Name .. " e " .. team2Name .. "!") elseif getPlayerStorageValue(cid,joined) == 2 then --fixed setPlayerStorageValue(cid,joined,-1) removeRed() npcHandler:say("Vc saiu da batalha.", cid) doBroadcastMessage("Event: " .. getPlayerName(cid) .. " saiu da batalha " .. team1Name .. " e " .. team2Name .. "!") else npcHandler:say("Vc nao esta cadastrado!", cid) end talkState[talkUser] = 0 -- moved end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Agora para instalar o MOD crie um novo arquivo Event.xml na pasta mods de seu ot e coloque o seguinte codigo: <?xml version="1.0" encoding="UTF-8"?> <mod name="Team Event" version="1.0" author="Damadgerz" contact="support@lualand.net" enabled="yes"> <description> This is a full auto Team BattleEvent(missing part for site) : 1- Player will get the ability to talk to the npc event starter to start the event every x times(time between each event) 2- players will go to npc and say battle and then join their desired team(you adjust team names) , they also have ability to leave team 3- You have ability to set max players per each team, npc will not tp the players to arena except when both teams are full 4- Script automatically set the place of event to a pvp arena (players no lose items,levels,geet msg who killed them).Place cant be a non-pvp area. 5- if player logged out they will automatically be lifted out from event. 6- players in same team cant attack each others even with spells 7- each team will have a uniform 8-you choose where the first team be tped and where the second team be tped 9-when event start, you set a max time for event.So if ppl couldnt kill each other( if players in first team = players in second team when event times finish) They will automatically be sent to temple and no one will take reward and broadcast 10 -during event if max time didnt finish and player of team 1 killed all of those of team2 then players of team1 will be tped to temple broadcasting they won by killing all other members and will recieve a random reward taht you set 11 -Then the event will be on hold untill time between each event pass(you set that) , and when it pass a auto broadcast is made every minute to tell player that event is open. </description> <config name="tutorial_m"><![CDATA[ running1 = 12000 --just add a non ussed storage running2 = 12001 --just add a non ussed storage joined = 10000 --just add a non ussed storage sto = 12223 --just add a non ussed storage check = 5454 -- empty storage redpotision = {x=19068, y=18978, z=7} --place where the red team player be teleported to blueposition = {x=19060, y=19052, z=7} --place where the blue team player be teleported to stoptime = 2 --in minutes team1name = "Blue" --just put the name without <team> team2name = "Red" timebetween = 5 -- time between each event arena = { frompos = {x=19068,y=18978,z=7}, topos = {x=19060,y=19052,z=7} } ----Put you event area here conf = { rewards_id = {2472}, -- Rewards ID maxplayers = 20 ---maxplayers per team } ]]></config> <lib name="football-lib"><![CDATA[ function getBlue() return getGlobalStorageValue(9888) end function removeBlue() return setGlobalStorageValue(9888, getGlobalStorageValue(9888) - 1) end function addBlue() return setGlobalStorageValue(9888, getGlobalStorageValue(9888) + 1) end function resetBlue() return setGlobalStorageValue(9888,0) end function getRed() return getGlobalStorageValue(9887) end function removeRed() return setGlobalStorageValue(9887, getGlobalStorageValue(9887) - 1) end function addRed() return setGlobalStorageValue(9887, getGlobalStorageValue(9887) + 1) end function resetRed() return setGlobalStorageValue(9887,0) end function onStop() if getGlobalStorageValue(running1) == 1 then setGlobalStorageValue(running1, -1) setGlobalStorageValue(sto,1) end return true end function onStopp() if getGlobalStorageValue(running2) > 0 then setGlobalStorageValue(running2,-1) doBroadcastMessage("Event : event is started again , go talk to the Evnet's Npc.") end end ]]></lib> <event type="login" name="Tutorial Login" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') function onLogin(cid) if getPlayerStorageValue(cid,check) > 0 then if isInRange(getCreaturePosition(cid), arena.frompos, arena.topos) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) setPlayerStorageValue(cid,check,-1) else setPlayerStorageValue(cid,check,-1) end end registerCreatureEvent(cid, "Log") registerCreatureEvent(cid, "Arena") registerCreatureEvent(cid, "Attk") return true end ]]></event> <event type="combat" name="Attk" event="script"><![CDATA[ domodlib('tutorial_m') domodlib('football-lib') function onCombat(cid, target) if getPlayerStorageValue(cid, joined) == 1 and getPlayerStorageValue(target, joined) == 1 then return false end if getPlayerStorageValue(cid, joined) == 2 and getPlayerStorageValue(target, joined) == 2 then return false end return true end ]]></event> <event type="logout" name="Log" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') function onLogout(cid) if getPlayerStorageValue(cid,joined) == 1 then doBroadcastMessage(""..getPlayerName(cid).." have left the War-Event") setPlayerStorageValue(cid,joined,-1) setPlayerStorageValue(cid,check,1) removeBlue() return true end if getPlayerStorageValue(cid,joined) == 2 then doBroadcastMessage(""..getPlayerName(cid).." have left the War-Event") setPlayerStorageValue(cid,check,1) removeRed() return true end return true end ]]></event> <event type="statschange" name="Arena" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') local 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 isInRange(getCreaturePosition(cid), arena.frompos, arena.topos) then doItemSetAttribute(doCreateItem(corpse_ids[getPlayerSex(cid)], 1, getThingPos(cid)), "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[War-Event kill]") doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doRemoveConditions(cid, FALSE) doCreatureAddHealth(cid, getCreatureMaxHealth(cid) - getCreatureHealth(cid)) doCreatureAddMana(cid, getCreatureMaxMana(cid) - getCreatureMana(cid)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You got killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item").." in the war event.") if isPlayer(attacker) then doPlayerSendTextMessage(attacker, MESSAGE_STATUS_CONSOLE_BLUE, "You killed "..getCreatureName(cid).." in the war event.") end if getPlayerStorageValue(cid,joined) == 1 then removeBlue() setPlayerStorageValue(cid,10000,-1) elseif getPlayerStorageValue(cid,joined) == 2 then removeRed() setPlayerStorageValue(cid,10000,-1) end end return true end ]]></event> <globalevent name="reset" type="start" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') function onStartup() resetBlue() resetRed() setGlobalStorageValue(running1,-1) setGlobalStorageValue(running2,-1) setGlobalStorageValue(sto,-1) return true end ]]></globalevent> <globalevent name="TeamBattle" interval="7" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') 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}) function onThink(interval, lastExecution) local random_item = conf.rewards_id[math.random(1, #conf.rewards_id)] if (getBlue() == conf.maxplayers and getRed() == conf.maxplayers) then if (getGlobalStorageValue(running1) == -1 and getGlobalStorageValue(sto) == -1) then setGlobalStorageValue(running1,1) doBroadcastMessage("The Team Battle Event have started.And will end in "..stoptime.." minutes, unless one of the teams has killed all the oponents") addEvent(onStop, stoptime * 60 * 1000) for _, cid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(cid, joined) == 1 then if getPlayerSex(cid) == 1 then doAddCondition(cid, bmale) elseif getPlayerSex(cid) ~= 1 then doAddCondition(cid, bfemale) end doTeleportThing(cid, blueposition, FALSE) doSendMagicEffect(blueposition, 10) elseif getPlayerStorageValue(cid, joined) == 2 then if getPlayerSex(cid) == 1 then doAddCondition(cid, rmale) elseif getPlayerSex(cid) ~= 1 then doAddCondition(cid, rfemale) end doTeleportThing(cid, redpotision, FALSE) doSendMagicEffect(redpotision, 10) end end end end if getGlobalStorageValue(running1) == 1 then setGlobalStorageValue(running2,1) if (getBlue() >= 1 and getRed() < 1) then addEvent(onStopp, timebetween * 60 * 1000) doBroadcastMessage("The War-Event has finished as the " ..team1name.. " team has killed all players in oponnent team ,they will recieve their rewards.Event will be reopened in ".. timebetween .." minutes") elseif (getBlue() < 1 and getRed() >= 1) then doBroadcastMessage("The War-Event has finished as the " ..team2name.. " team has killed all players in oponnent team,they will recieve their rewards.Event will be reopened in ".. timebetween .." minutes") addEvent(onStopp, timebetween * 60 * 1000) end for _, cid in ipairs(getPlayersOnline()) do if (getBlue() >= 1 and getRed() < 1) then if getPlayerStorageValue(cid,joined) == 1 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doRemoveConditions(cid, FALSE) doPlayerAddItem(cid, random_item, 1) doRemoveConditions(cid, FALSE) doCreatureSay(cid, "You have won a "..getItemNameById(random_item).." as a reward from war event", TALKTYPE_ORANGE_1) setPlayerStorageValue(cid, joined,-1) setGlobalStorageValue(running1,-1) resetBlue() end end if (getBlue() < 1 and getRed() >= 1) then if getPlayerStorageValue(cid,joined) == 2 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doRemoveConditions(cid, FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doRemoveConditions(cid, FALSE) doPlayerAddItem(cid, random_item, 1) doCreatureSay(cid, "You have won a "..getItemNameById(random_item).." as a reward from war event", TALKTYPE_ORANGE_1) setGlobalStorageValue(running1,-1) setPlayerStorageValue(cid, joined,-1) resetRed() end end end end return true end ]]></globalevent> <globalevent name="Team" interval="3" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') function onThink(interval, lastExecution) local random_item = conf.rewards_id[math.random(1, #conf.rewards_id)] if getGlobalStorageValue(sto) == 1 then if (getRed() > getBlue()) then doBroadcastMessage("The War-Event has finished as the " ..team2name.. " team has killed all players in oponnent team,they will recieve their rewards.Event will be reopened in ".. timebetween .." minutes") for _, cid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(cid,joined) == 2 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doRemoveConditions(cid, FALSE) doPlayerAddItem(cid, random_item, 1) doRemoveConditions(cid, FALSE) doCreatureSay(cid, "You have won a "..getItemNameById(random_item).." as a reward from war event", TALKTYPE_ORANGE_1) setPlayerStorageValue(cid, joined,-1) end if getPlayerStorageValue(cid,joined) == 1 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doPlayerSendTextMessage(cid,24, "Your team has lost in the war event war event") setPlayerStorageValue(cid, joined,-1) doRemoveConditions(cid, FALSE) end end addEvent(onStopp, timebetween * 60 * 1000) end if (getRed() < getBlue()) then doBroadcastMessage("The War-Event has finished as the " ..team1name.. " team has killed all players in oponnent team,they will recieve their rewards.Event will be reopened in ".. timebetween .." minutes") for _, cid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(cid,joined) == 1 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doPlayerAddItem(cid, random_item, 1) doRemoveConditions(cid, FALSE) doRemoveConditions(cid, FALSE) doCreatureSay(cid, "You have won a "..getItemNameById(random_item).." as a reward from war event", TALKTYPE_ORANGE_1) setPlayerStorageValue(cid, joined,-1) end if getPlayerStorageValue(cid,joined) == 2 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doRemoveConditions(cid, FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doPlayerSendTextMessage(cid,24, "Your team has lost in the war event war event") setPlayerStorageValue(cid, joined,-1) end end addEvent(onStopp, timebetween * 60 * 1000) end if (getRed() == getBlue()) then for _, cid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(cid,joined) == 2 or getPlayerStorageValue(cid,joined) == 1 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doRemoveConditions(cid, FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doRemoveConditions(cid, FALSE) setPlayerStorageValue(cid, joined,-1) doBroadcastMessage("Event max time ended.And niether of the teams won the event.Event will be reopened in ".. timebetween .." minutes") end end addEvent(onStopp, timebetween * 60 * 1000) end resetBlue() resetRed() setGlobalStorageValue(sto, -1) end return true end ]]></globalevent> <globalevent name="Broad" interval="90" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') function onThink(interval, lastExecution) if getGlobalStorageValue(running2) == -1 then doBroadcastMessage("O evento de batalha está aberto.O npc Eventer precisa de 2 times de 20 pessoas para iniciar a batalhe,ele esta na Arena Pvp que vai por teleport de Carlin. Ja tem "..getBlue().." players no blue team vs "..getRed().." players no Red team,o time vencedor sera premiado.") return true end return true end ]]></globalevent> <globalevent name="Karim" interval="40000" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') function onThink(interval, lastExecution) if getGlobalStorageValue(running1) > 0 then local blue = {} local green = {} for _, pid in ipairs(getPlayersOnline()) do if isInRange(getCreaturePosition(pid),arena.frompos, arena.topos) then if getPlayerStorageValue(pid, joined) == 1 then table.insert(blue,getCreatureName(pid)) elseif getPlayerStorageValue(pid, joined) == 2 then table.insert(green,getCreatureName(pid)) end end end local greenn = table.concat(green,', ') local bluee = table.concat(blue,', ') for _, tid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(tid, joined) > 0 then doPlayerSendTextMessage(tid,19,'<<!-- Players left --!>>\n '..team1name..' team ('..#blue..') : '..bluee..'.\n '..team2name..' team ('..#green..') : '..greenn..'.') end end end return true end ]]></globalevent> </mod> Aqui você pode editar a recompensa: rewards_id = {2472}, -- Rewards ID Para adicionar mais ficaria assim: rewards_id = {ID DO ITEM,ID DO ITEM,ID DO ITEM}, -- Rewards ID espero que gostem e comentem! bjs :XTibia_smile: :tux: MATCHURE DIZ: onde ta a pasta MOD?? ONDE TA A PASTA MOD ?? Fonte: Otland - Doggynub Modificações e tradução de algumas falas do npc e do MOD: Hudsin Testado em tfs 0.4 O que faz o script: Sistema de guerra entre 2 times(vermelho e azul),para que a war se inicie é necessário 2 times de 20 players(pode ser mudado no script) além de todos que forem participar precisar falar com o npc Eventer. Atualizações: 1- GM pode resetar o evento. 2- Players nao pode mudar a cor do outfit durante o evento. 3- Cada 40 segundos é enviado a mensagem avisando quantos players estão participando. Crie um novo npc em npc/Eventer.xml: <?xml version="1.0" encoding="UTF-8"?> <npc name="Eventer" script="event.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100"/> <look type="129" head="79" body="113" legs="105" feet="86" addons="0"/> <parameters> <parameter key="message_greet" value="Ola |PLAYERNAME|. Para entrar na batalha diga {Battle} e para sair diga leave."/> <parameter key="message_farewell" value="Good bye."/> <parameter key="message_walkaway" value="Farewell then.." /> </parameters> </npc> Agora em npc/script crie Event.lua e cole: local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end --[[start edit]]-- local mingroup = 4 --(updated) minimum group to reset the event local joined = 10000 ---must be like the storage in mod local maxPlayerEachTeam = 20 ---must be like max number in mod local team1Name = "Blue" ---must be like team number i mod local team2Name = "Red" local minlevel = 130 --(added) min lvl for a player to join. --[[storage like in the mod file]]-- local running1 = 12000 --just add a non ussed storage local running2 = 12001 --just add a non ussed storage local sto = 12223 --just add a non ussed storage --[[storage end]]-- --[[End of edit]]-- local function getBlue() return getGlobalStorageValue(9888) end local function removeBlue() return setGlobalStorageValue(9888, getGlobalStorageValue(9888) - 1) end local function addBlue() return setGlobalStorageValue(9888, getGlobalStorageValue(9888) + 1) end local function resetBlue() return setGlobalStorageValue(9888,0) end local function getRed() return getGlobalStorageValue(9887) end local function removeRed() return setGlobalStorageValue(9887, getGlobalStorageValue(9887) - 1) end local function addRed() return setGlobalStorageValue(9887, getGlobalStorageValue(9887) + 1) end local function resetRed() return setGlobalStorageValue(9887,0) end --[[script start]]-- function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if getPlayerGroupId(cid) >= mingroup then npcHandler:say("Oh! Hail, sire. Do you want to reset my event?", cid) talkState[talkUser] = 1 if msgcontains(msg, 'yes') and talkState[talkUser] == 1 then resetBlue() resetRed() setGlobalStorageValue(running1,-1) setGlobalStorageValue(running2,-1) setGlobalStorageValue(sto,-1) npcHandler:say("Event was reseted, sire.", cid) doBroadcastMessage("Eventer: Meu evento foi resetado por ordens do "..getCreatureName(cid)..". Para participar fale comigo outra vez,estou na arena pvp.") for _,cid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(cid, joined) > 0 then setPlayerStorageValue(cid, joined,-1) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) end end elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then npcHandler:say("As You wish, sire.", cid) talkState[talkUser] = 0 end else if msgcontains(msg, 'battle') then if getGlobalStorageValue(running2) == 1 then npcHandler:say("Ja tem batalha em andamento,tente mais tarde.", cid) elseif getPlayerLevel(cid) < minlevel then npcHandler:say("Apenas level 130+ pode participar.",cid) else npcHandler:say("Voce esta preparado para a abatalha? Por enquanto temos " .. getBlue() .. "/" .. maxPlayerEachTeam .. " players no {" .. team1Name .. "} team e " .. getRed() .. "/" .. maxPlayerEachTeam .. " players no {" .. team2Name .. "} team,vc quer escolher algum?", cid) talkState[talkUser] = 1 end elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then if getPlayerStorageValue(cid, joined) ~= 1 and getPlayerStorageValue(cid, joined) ~= 2 then npcHandler:say("Vc quer ser do {" .. team1Name .. "} team ou {" .. team2Name .. "} team?", cid) talkState[talkUser] = 2 else npcHandler:say("Vc esta cadastrado!", cid) talkState[talkUser] = 0 end elseif msgcontains(msg, 'no') and talkState[talkUser] == 1 then npcHandler:say("Okay then.", cid) talkState[talkUser] = 0 elseif msgcontains(msg, team1Name) and talkState[talkUser] == 2 then if getBlue() ~= maxPlayerEachTeam then --fixed setPlayerStorageValue(cid, joined, 1) addBlue() npcHandler:say("Vc entrou no " .. team1Name .. " team! Quando ambas equipes tiverem " .. maxPlayerEachTeam .. " os players serao teleportados para arena de batalha.", cid) talkState[talkUser] = 0 else npcHandler:say("{" .. team1Name .. "} team esta cheio, entre no {" .. team2Name .. "} team ou espere alguem sair do {" .. team1Name .. "} team.", cid) --fixed talkState[talkUser] = 1 end elseif msgcontains(msg, team2Name) and talkState[talkUser] == 2 then if getRed() ~= maxPlayerEachTeam then --fixed setPlayerStorageValue(cid, joined, 2) --fixed addRed() npcHandler:say("Vc esta no " .. team2Name .. " team! Quando ambas equipes tiverem " .. maxPlayerEachTeam .. " os players serao teleportados para arena de batalha.", cid) talkState[talkUser] = 0 else npcHandler:say("{" .. team2Name .. "} team esta cheio, entre no {" .. team1Name .. "} team ou espere alguem sair do {" .. team2Name .. "} team.", cid) talkState[talkUser] = 1 end elseif msgcontains(msg, 'leave') then npcHandler:say("Vc quer sair da lista de espera para batalha?", cid) talkState[talkUser] = 3 elseif msgcontains(msg, 'yes') and talkState[talkUser] == 3 then if getPlayerStorageValue(cid,joined) == 1 then setPlayerStorageValue(cid, joined, -1) -- fixed removeBlue() npcHandler:say("Vc saiu da batalha.", cid) doBroadcastMessage("Event: " .. getPlayerName(cid) .. " saiu da batalha " .. team1Name .. " e " .. team2Name .. "!") elseif getPlayerStorageValue(cid,joined) == 2 then --fixed setPlayerStorageValue(cid,joined,-1) removeRed() npcHandler:say("Vc saiu da batalha.", cid) doBroadcastMessage("Event: " .. getPlayerName(cid) .. " saiu da batalha " .. team1Name .. " e " .. team2Name .. "!") else npcHandler:say("Vc nao esta cadastrado!", cid) end talkState[talkUser] = 0 -- moved end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Agora para instalar o MOD crie um novo arquivo Event.xml na pasta mods de seu ot e coloque o seguinte codigo: <?xml version="1.0" encoding="UTF-8"?> <mod name="Team Event" version="1.0" author="Damadgerz" contact="support@lualand.net" enabled="yes"> <description> This is a full auto Team BattleEvent(missing part for site) : 1- Player will get the ability to talk to the npc event starter to start the event every x times(time between each event) 2- players will go to npc and say battle and then join their desired team(you adjust team names) , they also have ability to leave team 3- You have ability to set max players per each team, npc will not tp the players to arena except when both teams are full 4- Script automatically set the place of event to a pvp arena (players no lose items,levels,geet msg who killed them).Place cant be a non-pvp area. 5- if player logged out they will automatically be lifted out from event. 6- players in same team cant attack each others even with spells 7- each team will have a uniform 8-you choose where the first team be tped and where the second team be tped 9-when event start, you set a max time for event.So if ppl couldnt kill each other( if players in first team = players in second team when event times finish) They will automatically be sent to temple and no one will take reward and broadcast 10 -during event if max time didnt finish and player of team 1 killed all of those of team2 then players of team1 will be tped to temple broadcasting they won by killing all other members and will recieve a random reward taht you set 11 -Then the event will be on hold untill time between each event pass(you set that) , and when it pass a auto broadcast is made every minute to tell player that event is open. </description> <config name="tutorial_m"><![CDATA[ running1 = 12000 --just add a non ussed storage running2 = 12001 --just add a non ussed storage joined = 10000 --just add a non ussed storage sto = 12223 --just add a non ussed storage check = 5454 -- empty storage redpotision = {x=19068, y=18978, z=7} --place where the red team player be teleported to blueposition = {x=19060, y=19052, z=7} --place where the blue team player be teleported to stoptime = 2 --in minutes team1name = "Blue" --just put the name without <team> team2name = "Red" timebetween = 5 -- time between each event arena = { frompos = {x=19068,y=18978,z=7}, topos = {x=19060,y=19052,z=7} } ----Put you event area here conf = { rewards_id = {2472}, -- Rewards ID maxplayers = 20 ---maxplayers per team } ]]></config> <lib name="football-lib"><![CDATA[ function getBlue() return getGlobalStorageValue(9888) end function removeBlue() return setGlobalStorageValue(9888, getGlobalStorageValue(9888) - 1) end function addBlue() return setGlobalStorageValue(9888, getGlobalStorageValue(9888) + 1) end function resetBlue() return setGlobalStorageValue(9888,0) end function getRed() return getGlobalStorageValue(9887) end function removeRed() return setGlobalStorageValue(9887, getGlobalStorageValue(9887) - 1) end function addRed() return setGlobalStorageValue(9887, getGlobalStorageValue(9887) + 1) end function resetRed() return setGlobalStorageValue(9887,0) end function onStop() if getGlobalStorageValue(running1) == 1 then setGlobalStorageValue(running1, -1) setGlobalStorageValue(sto,1) end return true end function onStopp() if getGlobalStorageValue(running2) > 0 then setGlobalStorageValue(running2,-1) doBroadcastMessage("Event : event is started again , go talk to the Evnet's Npc.") end end ]]></lib> <event type="login" name="Tutorial Login" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') function onLogin(cid) if getPlayerStorageValue(cid,check) > 0 then if isInRange(getCreaturePosition(cid), arena.frompos, arena.topos) then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) setPlayerStorageValue(cid,check,-1) else setPlayerStorageValue(cid,check,-1) end end registerCreatureEvent(cid, "Log") registerCreatureEvent(cid, "Arena") registerCreatureEvent(cid, "Attk") return true end ]]></event> <event type="combat" name="Attk" event="script"><![CDATA[ domodlib('tutorial_m') domodlib('football-lib') function onCombat(cid, target) if getPlayerStorageValue(cid, joined) == 1 and getPlayerStorageValue(target, joined) == 1 then return false end if getPlayerStorageValue(cid, joined) == 2 and getPlayerStorageValue(target, joined) == 2 then return false end return true end ]]></event> <event type="logout" name="Log" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') function onLogout(cid) if getPlayerStorageValue(cid,joined) == 1 then doBroadcastMessage(""..getPlayerName(cid).." have left the War-Event") setPlayerStorageValue(cid,joined,-1) setPlayerStorageValue(cid,check,1) removeBlue() return true end if getPlayerStorageValue(cid,joined) == 2 then doBroadcastMessage(""..getPlayerName(cid).." have left the War-Event") setPlayerStorageValue(cid,check,1) removeRed() return true end return true end ]]></event> <event type="statschange" name="Arena" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') local 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 isInRange(getCreaturePosition(cid), arena.frompos, arena.topos) then doItemSetAttribute(doCreateItem(corpse_ids[getPlayerSex(cid)], 1, getThingPos(cid)), "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[War-Event kill]") doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doRemoveConditions(cid, FALSE) doCreatureAddHealth(cid, getCreatureMaxHealth(cid) - getCreatureHealth(cid)) doCreatureAddMana(cid, getCreatureMaxMana(cid) - getCreatureMana(cid)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You got killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item").." in the war event.") if isPlayer(attacker) then doPlayerSendTextMessage(attacker, MESSAGE_STATUS_CONSOLE_BLUE, "You killed "..getCreatureName(cid).." in the war event.") end if getPlayerStorageValue(cid,joined) == 1 then removeBlue() setPlayerStorageValue(cid,10000,-1) elseif getPlayerStorageValue(cid,joined) == 2 then removeRed() setPlayerStorageValue(cid,10000,-1) end end return true end ]]></event> <globalevent name="reset" type="start" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') function onStartup() resetBlue() resetRed() setGlobalStorageValue(running1,-1) setGlobalStorageValue(running2,-1) setGlobalStorageValue(sto,-1) return true end ]]></globalevent> <globalevent name="TeamBattle" interval="7" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') 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}) function onThink(interval, lastExecution) local random_item = conf.rewards_id[math.random(1, #conf.rewards_id)] if (getBlue() == conf.maxplayers and getRed() == conf.maxplayers) then if (getGlobalStorageValue(running1) == -1 and getGlobalStorageValue(sto) == -1) then setGlobalStorageValue(running1,1) doBroadcastMessage("The Team Battle Event have started.And will end in "..stoptime.." minutes, unless one of the teams has killed all the oponents") addEvent(onStop, stoptime * 60 * 1000) for _, cid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(cid, joined) == 1 then if getPlayerSex(cid) == 1 then doAddCondition(cid, bmale) elseif getPlayerSex(cid) ~= 1 then doAddCondition(cid, bfemale) end doTeleportThing(cid, blueposition, FALSE) doSendMagicEffect(blueposition, 10) elseif getPlayerStorageValue(cid, joined) == 2 then if getPlayerSex(cid) == 1 then doAddCondition(cid, rmale) elseif getPlayerSex(cid) ~= 1 then doAddCondition(cid, rfemale) end doTeleportThing(cid, redpotision, FALSE) doSendMagicEffect(redpotision, 10) end end end end if getGlobalStorageValue(running1) == 1 then setGlobalStorageValue(running2,1) if (getBlue() >= 1 and getRed() < 1) then addEvent(onStopp, timebetween * 60 * 1000) doBroadcastMessage("The War-Event has finished as the " ..team1name.. " team has killed all players in oponnent team ,they will recieve their rewards.Event will be reopened in ".. timebetween .." minutes") elseif (getBlue() < 1 and getRed() >= 1) then doBroadcastMessage("The War-Event has finished as the " ..team2name.. " team has killed all players in oponnent team,they will recieve their rewards.Event will be reopened in ".. timebetween .." minutes") addEvent(onStopp, timebetween * 60 * 1000) end for _, cid in ipairs(getPlayersOnline()) do if (getBlue() >= 1 and getRed() < 1) then if getPlayerStorageValue(cid,joined) == 1 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doRemoveConditions(cid, FALSE) doPlayerAddItem(cid, random_item, 1) doRemoveConditions(cid, FALSE) doCreatureSay(cid, "You have won a "..getItemNameById(random_item).." as a reward from war event", TALKTYPE_ORANGE_1) setPlayerStorageValue(cid, joined,-1) setGlobalStorageValue(running1,-1) resetBlue() end end if (getBlue() < 1 and getRed() >= 1) then if getPlayerStorageValue(cid,joined) == 2 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doRemoveConditions(cid, FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doRemoveConditions(cid, FALSE) doPlayerAddItem(cid, random_item, 1) doCreatureSay(cid, "You have won a "..getItemNameById(random_item).." as a reward from war event", TALKTYPE_ORANGE_1) setGlobalStorageValue(running1,-1) setPlayerStorageValue(cid, joined,-1) resetRed() end end end end return true end ]]></globalevent> <globalevent name="Team" interval="3" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') function onThink(interval, lastExecution) local random_item = conf.rewards_id[math.random(1, #conf.rewards_id)] if getGlobalStorageValue(sto) == 1 then if (getRed() > getBlue()) then doBroadcastMessage("The War-Event has finished as the " ..team2name.. " team has killed all players in oponnent team,they will recieve their rewards.Event will be reopened in ".. timebetween .." minutes") for _, cid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(cid,joined) == 2 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doRemoveConditions(cid, FALSE) doPlayerAddItem(cid, random_item, 1) doRemoveConditions(cid, FALSE) doCreatureSay(cid, "You have won a "..getItemNameById(random_item).." as a reward from war event", TALKTYPE_ORANGE_1) setPlayerStorageValue(cid, joined,-1) end if getPlayerStorageValue(cid,joined) == 1 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doPlayerSendTextMessage(cid,24, "Your team has lost in the war event war event") setPlayerStorageValue(cid, joined,-1) doRemoveConditions(cid, FALSE) end end addEvent(onStopp, timebetween * 60 * 1000) end if (getRed() < getBlue()) then doBroadcastMessage("The War-Event has finished as the " ..team1name.. " team has killed all players in oponnent team,they will recieve their rewards.Event will be reopened in ".. timebetween .." minutes") for _, cid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(cid,joined) == 1 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doPlayerAddItem(cid, random_item, 1) doRemoveConditions(cid, FALSE) doRemoveConditions(cid, FALSE) doCreatureSay(cid, "You have won a "..getItemNameById(random_item).." as a reward from war event", TALKTYPE_ORANGE_1) setPlayerStorageValue(cid, joined,-1) end if getPlayerStorageValue(cid,joined) == 2 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doRemoveConditions(cid, FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doPlayerSendTextMessage(cid,24, "Your team has lost in the war event war event") setPlayerStorageValue(cid, joined,-1) end end addEvent(onStopp, timebetween * 60 * 1000) end if (getRed() == getBlue()) then for _, cid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(cid,joined) == 2 or getPlayerStorageValue(cid,joined) == 1 then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), FALSE) doRemoveConditions(cid, FALSE) doSendMagicEffect(getCreaturePosition(cid), 10) doRemoveConditions(cid, FALSE) setPlayerStorageValue(cid, joined,-1) doBroadcastMessage("Event max time ended.And niether of the teams won the event.Event will be reopened in ".. timebetween .." minutes") end end addEvent(onStopp, timebetween * 60 * 1000) end resetBlue() resetRed() setGlobalStorageValue(sto, -1) end return true end ]]></globalevent> <globalevent name="Broad" interval="90" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') function onThink(interval, lastExecution) if getGlobalStorageValue(running2) == -1 then doBroadcastMessage("O evento de batalha está aberto.O npc Eventer precisa de 2 times de 20 pessoas para iniciar a batalhe,ele esta na Arena Pvp que vai por teleport de Carlin. Ja tem "..getBlue().." players no blue team vs "..getRed().." players no Red team,o time vencedor sera premiado.") return true end return true end ]]></globalevent> <globalevent name="Karim" interval="40000" event="script"><![CDATA[ domodlib('football-lib') domodlib('tutorial_m') function onThink(interval, lastExecution) if getGlobalStorageValue(running1) > 0 then local blue = {} local green = {} for _, pid in ipairs(getPlayersOnline()) do if isInRange(getCreaturePosition(pid),arena.frompos, arena.topos) then if getPlayerStorageValue(pid, joined) == 1 then table.insert(blue,getCreatureName(pid)) elseif getPlayerStorageValue(pid, joined) == 2 then table.insert(green,getCreatureName(pid)) end end end local greenn = table.concat(green,', ') local bluee = table.concat(blue,', ') for _, tid in ipairs(getPlayersOnline()) do if getPlayerStorageValue(tid, joined) > 0 then doPlayerSendTextMessage(tid,19,'<<!-- Players left --!>>\n '..team1name..' team ('..#blue..') : '..bluee..'.\n '..team2name..' team ('..#green..') : '..greenn..'.') end end end return true end ]]></globalevent> </mod> Aqui você pode editar a recompensa: rewards_id = {2472}, -- Rewards ID Para adicionar mais ficaria assim: rewards_id = {ID DO ITEM,ID DO ITEM,ID DO ITEM}, -- Rewards ID espero que gostem e comentem! bjs :XTibia_smile: :tux: CARA quando o player fala com o npc tem q escolher a cor quando agente fala BLUE ou RED n vai pq?? Link para o comentário https://xtibia.com/forum/topic/149806-mod-full-auto-war-teambattle-event-com-recompensa/#findComment-1129126 Compartilhar em outros sites More sharing options...
jamersonandres 14 Postado Novembro 23, 2011 Share Postado Novembro 23, 2011 e o mapa ? Link para o comentário https://xtibia.com/forum/topic/149806-mod-full-auto-war-teambattle-event-com-recompensa/#findComment-1138016 Compartilhar em outros sites More sharing options...
Posts Recomendados