Ir para conteúdo

[Mod] Full Auto War-Teambattle Event (Com Recompensa)


Hudsin

Posts Recomendados

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 por Hudsin
Link para o comentário
Compartilhar em outros sites

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
Compartilhar em outros sites

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 por Hudsin
Link para o comentário
Compartilhar em outros sites

  • 1 month later...
  • 3 weeks later...

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
Compartilhar em outros sites

  • 1 month later...

[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
Compartilhar em outros sites

@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 por Demonbholder
Link para o comentário
Compartilhar em outros sites

  • 5 months later...

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
Compartilhar em outros sites

  • 3 weeks later...
×
×
  • Criar Novo...