Ir para conteúdo

Warsystem


HeartBreak

Posts Recomendados

WarSystem para TFS 0.3.5 ou TFS 0.3.6.

Precisa de Gesior.

 

Para quem usa TFS 0.4 , veja o tópico :Warsystem Para TFS 0.4 [apenas o arquivo MOD]

 

Bom , chega de enrolar , vamos começar o "tutorial":

 

*Nota : é extremamente recomendavel que você limpe a tabela 'deaths_in_wars' antes de usar o sistema.

 

1) Adicione o arquivo a seguir , a pasta mods (OTServer/data/mod) basta criar um arquivo XML ou copiar algum outro e apagar tudo que tiver dentro , coloque o nome do arquivo de: guildWarSystem.xml:

 

<?xml version="1.0" encoding="UTF-8"?>
<mod name="Guild War System" version="0.3.5+" author="Xampy and Nahruto" contact="otland.net" enabled="yes">
<config name="function_config"><![CDATA[
DelayToCancel = 24 -- HOURS <-> [max: 47 -- min: 24] --> default: 24 hours [1 day]

Maps = {
       ["map1"] =
               {
                       Guild1Pos = {x=238, y=442, z=12},
                       Guild2Pos = {x=244, y=442, z=12}
               },
       ["map2"] =
               {
                       Guild1Pos = {x=994, y=1004, z=6},
                       Guild2Pos = {x=1000, y=1003, z=6}                      
               }
       }

TimeToTeleport = 1 --minutes, when start a challenge
StopBattle = TRUE --Stop battle after X time ? TRUE  /  FALSE
TimeToStop = 60 --Minutes Time to Stop if StopBattle = TRUE.

--Cancel messages~
CancelMessagesWar = {
       --Message when player try accept/reject/cancel a war but there is no a invitation.
       [1] = "Not pending invitations.",
       --Message when the player is not the guild leader.
       [2] = "Only Guild Leader can execute this command.",
       --Message when try Cancel the invitation but the war is already accepted.
       [3] = "The war is already accepted.",
       --MEssage when the invited guild name is not correct or does not exist.
       [4] = "Not correct guild name.",
       --Message when try invite any guild to a war but his guild already have a war or a pending invitation.
       [5] = "Your guild is already in war or have a pending invitation.",
       --Same of the cancel message 5 but the the enemy guild.
       [6] = "This guild is already in war or have a pending invitation.",
       --Message when use invite command but not write guild name.
       [7] = "Command needs param.",
       --Message when try invite his guild.
       [8] = "You can\'t invite you guild.",
       --Message when the map name is not correct.
       [9] = "Please write a correct name.",
       --Message when try go to any map but the guild is have no received/sent any war invitation
       [10] = "Your guild is not in any war.",
       --When try to cancel a war before the delay
       [11] = "You should wait ".. DelayToCancel .." hours to cancel the war"
       }

--Broadcast messages when invite/accept/reject/cancel ~ Remember the Spaces.
BroadCast_Type = MESSAGE_EVENT_ADVANCE
BroadCast = {
       --Message when inviting
       [1] =
               {
                       "Guild ",
                       --Here will be the guild name
                       " have invited guild ",
                       --Here will be the invited guild name
                       " to have a war."
               },
       --Message when accept.
       [2] =
               {
                       "Guild ",
                       --Here will be the guild name
                       " have accepted the invitation of the guild " ,
                       --Here will be the name of the guild who have invited em.
                       " to have a war."
               },
       --Message when reject.
       [3] =
               {
                       "Guild ",
                       --Here will be the guild name
                       " have rejected the invitation of the guild " ,
                       --Here will be the name of the guild who have invited em.
                       " to have a war."
               },
       --Message when cancel.
       [4] =
               {
                       "Guild ",
                       --Here will be the guild name
                       " have canceled the invitation to the guild " ,
                       --Here will be the name of the guild who have invited em.
                       " to have a war."
               },
       --Message whenstar a battle..
       [5] =
               {
                       "Guild ",
                       --Here will be the guild name
                       " and guild " ,
                       --Here will be the name of the guild who have invited em.
                       " will have a battle in the map :"
               },
       --message when a battle ends.
       [6] =
               {
                       "The battle betwen guild ",
                       --Here will be the guild name
                       " and guild " ,
                       --Here will be the name of the guild who have invited em.
                       " its over."
               },
       }

--Functions ~.

function getShowInfo(id)
       local Info = db.getResult("SELECT `show` FROM `guilds` WHERE `id` = " .. id .. "")
       if Info:getID() ~= -1 then
               local showy = Info:getDataInt("show")
               Info:free()
               return showy
       end
       return -1
end

function getKills(name)
       local Info = db.getResult("SELECT `kills` FROM `guilds` WHERE `name` = '"..name.."'")
       if Info:getID() ~= -1 then
               local killy = Info:getDataInt("kills")
               Info:free()
               return killy
       end
       return -1
end

function getGuildWarInfo(id)
       local Info = db.getResult("SELECT `invited_to`, `invited_by`, `in_war_with`,`war_time` FROM `guilds` WHERE `id` = " .. id .. "")
       if Info:getID() ~= -1 then
               local invTo, invBy, warWith, Time = Info:getDataInt("invited_to"), Info:getDataInt("invited_by"), Info:getDataInt("in_war_with"), Info:getDataInt("war_time")
               Info:free()
               return {To = invTo, By = invBy, With = warWith, T = Time}
       end
       return -1
end

function getGuildNameById(id)
       local Info = db.getResult("SELECT `name` FROM `guilds` WHERE `id` = " .. id .. "")
               if Info:getID() ~= -1 then
               local Name = Info:getDataString("name")
               Info:free()
               return Name
       end
       return -1
end

function GuildIsInPEace(id)
       local Info = getGuildWarInfo(id)
       return (Info.To == 0 and Info.By == 0 and Info.With == 0)
end

function doInviteToWar(myGuild, enemyGuild)
       local StartTime = os.time()
       db.executeQuery("UPDATE `guilds` SET `invited_to` = ".. enemyGuild ..", `war_time` = ".. StartTime .." WHERE `id` = ".. myGuild .."")
       db.executeQuery("UPDATE `guilds` SET `invited_by` = ".. myGuild .." WHERE `id` = ".. enemyGuild .."")
end

function WarAccept(myGuild, enemyGuild)
       local StartTime = os.time()
       db.executeQuery("UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `in_war_with`  =  ".. myGuild ..", `kills` = 0, `show` = 1 WHERE `id` = ".. enemyGuild .."")
       db.executeQuery("UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `war_time` = ".. StartTime ..", `in_war_with`  =  ".. enemyGuild ..", `kills` = 0, `show` = 0 WHERE `id` = ".. myGuild .."")
end

function cleanInfo(myGuild)
       db.executeQuery("UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `war_time` = 0, `in_war_with`  =  0, `kills` = 0, `show` = 0 WHERE `id` = ".. myGuild .."")
end

function registerDeathOne(myGuild, enemyGuild, cid, target)
       db.executeQuery("INSERT INTO `deaths_in_wars` (`guild_id`, `player_id`, `killer_guild`, `killer`, `date`, `result1`, `result2`) VALUES ("..enemyGuild..", "..getPlayerGUID(target)..", "..myGuild..", "..getPlayerGUID(cid)..", " .. os.time() ..", 1, 0);")      
       db.executeQuery("UPDATE `guilds` SET `kills` = `kills` + 1 WHERE `id` = ".. myGuild .."")
end

function registerDeathTwo(myGuild, enemyGuild, cid, target)
       db.executeQuery("INSERT INTO `deaths_in_wars` (`guild_id`, `player_id`, `killer_guild`, `killer`, `date`, `result1`, `result2`) VALUES ("..enemyGuild..", "..getPlayerGUID(target)..", "..myGuild..", "..getPlayerGUID(cid)..", " .. os.time() ..", 0, 1);")      
       db.executeQuery("UPDATE `guilds` SET `kills` = `kills` + 1 WHERE `id` = ".. myGuild .."")
end

function removeDeaths(id)
       db.executeQuery("DELETE FROM `deaths_in_wars` WHERE `guild_id` = " ..id .. ";")
end

function StopWar(myGuild, enemyGuild)
       cleanInfo(myGuild)
       cleanInfo(enemyGuild)
       removeDeaths(myGuild)
       removeDeaths(enemyGuild)
end

function WeAreInWar(myGuild, enemyGuild)
       local myGuildInfo = getGuildWarInfo(myGuild)
       local enemyGuildInfo = getGuildWarInfo(enemyGuild)
       if myGuild == enemyGuildInfo.With and enemyGuild ==  myGuildInfo.With then
               if enemyGuildInfo.ON == 1 and myGuildInfo.ON == 1 then
                       return TRUE
               end            
       end
       return FALSE
end

function getOnlineMembers(id)
       local PlayersOnline = getPlayersOnline()
       local MembersOnline = {}
       for i, pid in ipairs(PlayersOnline) do
               if id == getPlayerGuildId(PlayersOnline[i]) then
                       table.insert(MembersOnline, PlayersOnline[i])
               end
       end
       return MembersOnline
end

function teleportGuild(id, pos)
       local Members = getOnlineMembers(id)
       if #Members > 0 then
       for i = 1, #Members do
               if #Members > 1 then
                       if getTilePzInfo(getCreaturePosition(Members[i])) == TRUE then
                               doTeleportThing(Members[i], pos, FALSE)
                               doSendMagicEffect(pos, CONST_ME_TELEPORT)
                               doSendMagicEffect(getCreaturePosition(Members[i]), CONST_ME_POFF)
                               doPlayerSendTextMessage(Members[i], 22, 'Prepare to fight!')
                       else
                               doPlayerPopupFYI(Members[i], 'GuildWar challenge error:\n\nBoth guild members must stay in Protection Zone.')
                       end
               else
                       doPlayerPopupFYI(Members[i], 'GuildWar challenge error:\n\nBoth guilds must have more than one player online (leader & any member, at least).')
               end
       end
       end
end

function getGuildsWithWar()
       local res = db.getResult("SELECT `id` FROM `guilds` WHERE `in_war_with` > 0")
       local GuildW = {}
       if res:getID() ~= -1 then
               while true do
                       table.insert(GuildW, res:getDataInt "id")
                       if not res:next() then
                               break
                       end
               end
               res:free()
       end
       return GuildW
end

function guildExist(nom)
       local Get = db.getResult("SELECT `id` FROM `guilds` WHERE `name` = " .. db.escapeString(nom) .. ";")
       if Get:getID() ~= -1 then
               local ret = Get:getDataInt("id")
               Get:free()
               return ret
       end
       return -1
end

function StartWar(x)
       teleportGuild(x.myGuild, Maps[x.map].Guild1Pos)
       teleportGuild(x.enemyGuild, Maps[x.map].Guild2Pos)

       if StopBattle == TRUE then
               addEvent(StopWarNow, 60 * 1000, {myGuild = x.myGuild, enemyGuild = x.enemyGuild})
       end
end    

function StopWarNow(c)
       StopWar(c.myGuild, c.enemyGuild)
       doBroadcastMessage(BroadCast[6][1] ..getGuildNameById(c.myGuild).. BroadCast[6][2] ..getGuildNameById(c.enemyGuild).. BroadCast[6][3], BroadCast_Type)
end

function putWarOn(myGuild, enemyGuild)
       db.executeQuery("UPDATE `guilds` SET `war_time`  = 1 WHERE `id` = ".. myGuild .."")
       db.executeQuery("UPDATE `guilds` SET `war_time`  = 1 WHERE `id` = ".. enemyGuild .."")
end]]></config>


<talkaction words="!disband; /war-invite; /war-accept; /war-reject; /war-cancel-invite; /war-cancel" event="script"><![CDATA[
domodlib('function_config')
function onSay(cid, words, param, channel)
       if getPlayerGuildLevel(cid) == GUILDLEVEL_LEADER then
               local myGuild = getPlayerGuildId(cid)
               if words == "/war-invite" then
                       if GuildIsInPEace(myGuild) == true then
                               if param ~= "" then
                                       if guildExist(param) ~= -1 then
                                               local invitedGuild = getGuildId(param)
                                               if invitedGuild ~= -1 then
                                                       if invitedGuild ~= myGuild then
                                                               if GuildIsInPEace(invitedGuild) == true then
                                   if getPlayerStorageValue(cid, 65570) <= os.time() then
                                                                           doInviteToWar(myGuild, invitedGuild)
                                                                           doBroadcastMessage(BroadCast[1][1] ..getPlayerGuildName(cid).. BroadCast[1][2] ..getGuildNameById(invitedGuild).. BroadCast[1][3], BroadCast_Type)
                                       setPlayerStorageValue(cid, 65570, os.time()+(20*60))
                                   else
                                       local waitTime = (getPlayerStorageValue(cid, 65570) - os.time())
                                       doPlayerSendCancel(cid, "You must wait " .. os.date("%M", waitTime) .. " minutes and " .. os.date("%S", waitTime) .. " seconds until declare another war.")
                                   end
                                                               else
                                                                       doPlayerSendCancel(cid, CancelMessagesWar[6])
                                                               end
                                                       else
                                                               doPlayerSendCancel(cid, CancelMessagesWar[8])
                                                       end
                                               else
                                                       doPlayerSendCancel(cid, CancelMessagesWar[4])
                                               end
                                       else
                                               doPlayerSendCancel(cid, CancelMessagesWar[4])
                                       end
                               else
                                       doPlayerSendCancel(cid, CancelMessagesWar[7])
                               end
                       else
                               doPlayerSendCancel(cid, CancelMessagesWar[5])
                       end
               elseif words == "/war-accept" then
                       if getGuildWarInfo(myGuild).By ~= 0 then
                               local enemyGuild = getGuildWarInfo(myGuild).By
                               doBroadcastMessage(BroadCast[2][1] ..getPlayerGuildName(cid).. BroadCast[2][2] ..getGuildNameById(enemyGuild).. BroadCast[2][3], BroadCast_Type)
                               WarAccept(myGuild, enemyGuild)
                       else
                               doPlayerSendCancel(cid, CancelMessagesWar[1])
                       end
               elseif words == "/war-reject" then
                       if getGuildWarInfo(myGuild).By ~= 0 then
                               doBroadcastMessage(BroadCast[3][1] ..getPlayerGuildName(cid).. BroadCast[3][2] ..getGuildNameById(getGuildWarInfo(myGuild).By).. BroadCast[3][3], BroadCast_Type)
                               cleanInfo(getGuildWarInfo(myGuild).By)
                               cleanInfo(myGuild)
                       else
                               doPlayerSendCancel(cid, CancelMessagesWar[1])  
                       end
               elseif words == "/war-cancel-invite" then
                       if getGuildWarInfo(myGuild).To ~= 0 then
                               if getGuildWarInfo(myGuild).With == 0 then
                                       doBroadcastMessage(BroadCast[4][1] ..getPlayerGuildName(cid).. BroadCast[4][2] ..getGuildNameById(getGuildWarInfo(myGuild).To).. BroadCast[4][3], BroadCast_Type)
                                       cleanInfo(getGuildWarInfo(myGuild).To)
                                       cleanInfo(myGuild)
                               else
                                       doPlayerSendCancel(cid, CancelMessagesWar[3])
                               end
                       else
                               doPlayerSendCancel(cid, CancelMessagesWar[1])  
                       end
               elseif words == "/war-challenge" then
                       local map = Maps[param]
                       if map then
                               if enemy ~= 0 then
                                       local enemyGuild = getGuildWarInfo(myGuild).With
                                       addEvent(StartWar, 15000, {myGuild = myGuild, enemyGuild = enemyGuild, map = param})
                                       doBroadcastMessage(BroadCast[5][1] ..getPlayerGuildName(cid).. BroadCast[5][2] ..getGuildNameById(enemyGuild).. BroadCast[5][3] .. param ..".", BroadCast_Type)
                               else
                                       doPlayerSendCancel(cid, CancelMessagesWar[10])
                               end
                       else
                               doPlayerSendCancel(cid, CancelMessagesWar[9])
                       end
               elseif words == "/war-cancel" then
                       local enemy = getGuildWarInfo(myGuild).With
                       if enemy ~= 0 then
                               if (os.time() - getGuildWarInfo(myGuild).T) >= (60 * 60 * DelayToCancel) then
                                       StopWar(myGuild, enemy)
                                       doBroadcastMessage(BroadCast[6][1] ..getGuildNameById(myGuild).. BroadCast[6][2] ..getGuildNameById(enemy).. BroadCast[6][3], BroadCast_Type)
                               else
                   local timeEnd = getGuildWarInfo(myGuild).T + (60 * 60 * DelayToCancel)
                   local timeLeft = timeEnd - os.time()
                   local hours = (os.date("%H", timeLeft) + 23)
                                       doPlayerSendCancel(cid, "Time remaining: "..hours.." hours, " .. os.date("%M", timeLeft) .. " minutes and " .. os.date("%S", timeLeft) .. " seconds.")
                               end
                       else
                               doPlayerSendCancel(cid, CancelMessagesWar[10])
                       end
               elseif words == "!disband" then
                       local enemy = getGuildWarInfo(myGuild).With
                       if enemy > 0 then
               if channel == CHANNEL_GUILD then
                   if (os.time() - getGuildWarInfo(myGuild).T) >= (60 * 60 * DelayToCancel) then
                                           StopWar(myGuild, enemy)
                                           doBroadcastMessage(BroadCast[6][1] ..getGuildNameById(myGuild).. BroadCast[6][2] ..getGuildNameById(enemy).. BroadCast[6][3], BroadCast_Type)
                                   else
                   local timeEnd = getGuildWarInfo(myGuild).T + (60 * 60 * DelayToCancel)
                   local timeLeft = timeEnd - os.time()
                   local hours = (os.date("%H", timeLeft) + 23)
                                       doPlayerSendCancel(cid, "Time remaining: "..hours.." hours, " .. os.date("%M", timeLeft) .. " minutes and " .. os.date("%S", timeLeft) .. " seconds.")
                                   end
                           else
                   doPlayerSendCancel(cid, "You have to say this command in your guild channel.")
                           end
           else
                               return FALSE
           end
                               return FALSE
               end
       else
               doPlayerSendCancel(cid, CancelMessagesWar[2])
       end
       local file = io.open("data/logs/Wars.txt", "a")
       file:write("".. os.date("%d %B %Y %X ", os.time()) .." -->  "..getCreatureName(cid)..": "..words.." "..param.."\n")
       file:close()
       return TRUE
end]]></talkaction>

<event type="login" name="WarLogin" event="script"><![CDATA[
domodlib('function_config')
function onLogin(cid)
       registerCreatureEvent(cid, "WarKill")
       return true
end]]></event>

<event type="kill" name="WarKill" event="script"><![CDATA[
domodlib('function_config')

local PZ = createConditionObject(CONDITION_INFIGHT)
setConditionParam(PZ, CONDITION_PARAM_TICKS, getConfigInfo('whiteSkullTime'))

function onKill(cid, target, lastHit)

       if isPlayer(cid) == TRUE and isPlayer(target) == TRUE then

local config = {
               removeFrags = true -- If 'true' player won't gain frags from a player that is versus him; else, player will gain frags as normal.
               }

       local GUID = getPlayerGUID(cid)
       local namec = getPlayerName(cid)
       local namet = getPlayerName(target)
       local skull = getCreatureSkullType(cid)
       local skullend = getPlayerSkullEnd(cid)
   local playerPos = getPlayerPosition(cid)
   local targetPos = getPlayerPosition(target)
       local cidd = cid

       local timeA = os.time()
       local timesA = {today = (timeA - 86400), week = (timeA - (7 * 86400))}

       local contentsA, resultA = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. getPlayerGUID(cid) .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (timeA - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC")
       if(resultA:getID() ~= -1) then
               repeat
                       local contentA = {
                               name = resultA:getDataString("name"),
                               level = resultA:getDataInt("level"),
                               date = resultA:getDataInt("date")
                       }
                       if(contentA.date > timesA.today) then
                               table.insert(contentsA.day, contentA)
                       elseif(contentA.date > timesA.week) then
                               table.insert(contentsA.week, contentA)
                       else
                               table.insert(contentsA.month, contentA)
                       end
               until not resultA:next()
               resultA:free()
       end

       local sizeA = {
               day = table.maxn(contentsA.day),
               week = table.maxn(contentsA.week),
               month = table.maxn(contentsA.month)
       }
local function removeFrag(cid)

       local timeB = os.time()
       local timesB = {today = (timeB - 86400), week = (timeB - (7 * 86400))}

       local contentsB, resultB = {day = {}, week = {}, month = {}}, db.getResult("SELECT `pd`.`date`, `pd`.`level`, `p`.`name` FROM `player_killers` pk LEFT JOIN `killers` k ON `pk`.`kill_id` = `k`.`id` LEFT JOIN `player_deaths` pd ON `k`.`death_id` = `pd`.`id` LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id` WHERE `pk`.`player_id` = " .. GUID .. " AND `k`.`unjustified` = 1 AND `pd`.`date` >= " .. (timeB - (30 * 86400)) .. " ORDER BY `pd`.`date` DESC")
       if(resultB:getID() ~= -1) then
               repeat
                       local contentB = {
                               name = resultB:getDataString("name"),
                               level = resultB:getDataInt("level"),
                               date = resultB:getDataInt("date")
                       }
                       if(contentB.date > timesB.today) then
                               table.insert(contentsB.day, contentB)
                       elseif(contentB.date > timesB.week) then
                               table.insert(contentsB.week, contentB)
                       else
                               table.insert(contentsB.month, contentB)
                       end
               until not resultB:next()
               resultB:free()
       end

       local sizeB = {
               day = table.maxn(contentsB.day),
               week = table.maxn(contentsB.week),
               month = table.maxn(contentsB.month)
       }


if sizeB.day > sizeA.day or sizeB.week > sizeA.week or sizeB.month > sizeA.month then
       db.executeQuery("UPDATE `killers` SET `unjustified` = 0 WHERE `id` IN (SELECT `kill_id` FROM `player_killers` WHERE `player_id` = "..GUID..") ORDER BY `death_id` DESC LIMIT 1;")
       doPlayerSendTextMessage(cidd, 21, "Frag from "..namet.." wasn't counted.")
end

if skull == SKULL_RED then
       if getCreatureSkullType(cidd) == SKULL_BLACK then
               doPlayerSetSkullEnd(cidd, skullend, SKULL_RED)
               doCreatureSetSkullType(cidd, SKULL_RED)
       end
elseif skull == SKULL_WHITE then
       if getCreatureSkullType(cidd) == SKULL_RED then
               doPlayerSetSkullEnd(cidd, timeB, SKULL_RED)
               doCreatureSetSkullType(cidd, SKULL_WHITE)
       end
end

end

               local myGuild = getPlayerGuildId(cid)
               local enemyGuild = getPlayerGuildId(target)

               if myGuild ~= 0 and enemyGuild ~= 0 then
                       if enemyGuild == getGuildWarInfo(myGuild).With then
local guildc = getPlayerGuildName(cid)
local guildt = getPlayerGuildName(target)
                               doAddCondition(cid, PZ)

                               if lastHit == TRUE then
                   if getTileZoneInfo(playerPos) == 0 and getTileZoneInfo(targetPos) == 0 then
                                           if getShowInfo(myGuild) == 1 then
                                                   registerDeathOne(myGuild, enemyGuild, cid, target)
                                           else
                                                   registerDeathTwo(myGuild, enemyGuild, cid, target)
                                           end    
                   else
                       doPlayerSendTextMessage(cid, 19, "Remember: in PvP zone the system doesn't register the frag.")
                   end
                               end

                               if config.removeFrags == true then
                                       addEvent(removeFrag, 150)
                               end

local gsim = getShowInfo(myGuild)
local gsie = getShowInfo(enemyGuild)

if gsim > gsie then
   resulta = getKills(guildc)
   resultb = getKills(guildt)
else
   resulta = getKills(guildt)
   resultb = getKills(guildc)
end

local players = getOnlinePlayers()
   for i,playerName in ipairs(players) do
       local player = getPlayerByName(playerName);
       if getPlayerGuildId(player) == myGuild then
   if getTileZoneInfo(playerPos) == 0 and getTileZoneInfo(targetPos) == 0 then
           doPlayerSendChannelMessage(player, "", "Opponent "..namet.." of the "..guildt.." was killed by "..namec..". The new score is "..resulta..":"..resultb.." frags.", TALKTYPE_CHANNEL_W, CHANNEL_GUILD)
   end
       end
   end
                       end
               end
       end
       return TRUE
end]]></event>
</mod>

 

2) Adicione isso a database (no phpMyAdmin):

ALTER TABLE `guilds` 
ADD `invited_to` INT( 11 ) NOT NULL ,
ADD `invited_by` INT( 11 ) NOT NULL ,
ADD `in_war_with` INT( 11 ) NOT NULL ,
ADD `kills` INT( 11 ) NOT NULL ,
ADD `show` SMALLINT( 1 ) NOT NULL ,
ADD `war_time` INT( 11 ) NOT NULL ;  

 

e isso:

 

 CREATE TABLE `deaths_in_wars` (
`guild_id` INT( 11 ) NOT NULL ,
`player_id` INT( 11 ) NOT NULL ,
`killer_guild` INT( 11 ) NOT NULL ,
`killer` INT( 11 ) NOT NULL ,
`date` INT( 11 ) NOT NULL ,
`result1` INT( 11 ) NOT NULL ,
`result2` INT( 11 ) NOT NULL 
) ENGINE = MYISAM ;  

 

e finalmente isso:

 

UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `in_war_with` = 0, `kills` = 0, `show` = 0, `war_time` = 0 WHERE `id` > 0;  

 

não sabe como adicionar ? basta abrir o bloco de notas , copiar o conteudo acima e colar e salvar como "nome.sql" apos isso va a http://localhost/phpmyadmin , loga-se escolha a database clique em importar e selecione o arquivo que você salvou.

 

3) Va até xampp/htdocs. Crie um arquivo chamado wars.php: [copie um arquivo php e apague tudo que tiver dentro ou abra o bloco de notas coloque o conteudo e salve como "wars.php"]

 

<?PHP
//Litle Config
$MaxShow = 100;
//END

if($action == '')
{
$main_content .= '
<P ALIGN=CENTER>
   <br>
   <FONT SIZE=4 COLOR=#8A0808>
       How to use...
   </FONT>
   <br>
   <br>
   <FONT SIZE=2 COLOR=#DF0101>
   * <b>/war-invite</b> :
       <FONT SIZE=1 COLOR=green>
           Send an invitation to start a war.<br>
           <u>Example</u>: /war-invite Death Hard
       </FONT><br>
   * <b>/war-accept</b> :
       <FONT SIZE=1 COLOR=green>
           Accept the invitation to start a war.
       </FONT><br>
   * <b>/war-reject</b> :
       <FONT SIZE=1 COLOR=green>
           Reject the invitation to start a war.
       </FONT><br>
   * <b>/war-cancel-invite</b> :
       <FONT SIZE=1 COLOR=green>
           Cancel the invitation already sent to start a war.
       </FONT><br>
   * <b>/war-cancel</b> :
       <FONT SIZE=1 COLOR=green>
           Finish the current war: it can only be used after 1 day of war.
       </FONT><br>
   </FONT>
   <br>
   <FONT SIZE=2 COLOR=#8A0808>
       Those commands can only be executed by guild leaders.<br><br>
       <table border="1"><tr border="1"><td border="1"><h3>Remember:</h3>
       <ul>
       <li>You won\'t get any frag if you kill someone that is VERSUS you.</li>
       <li>If you kill someone that is in your guild, you will get a frag.</li>
       </ul></td></tr></table>
   </FONT>
</P>
';
$wars = $SQL->query("
   SELECT g.name AS gname, wg.name AS wgname, g.war_time AS gtime, wg.war_time AS wgtime, g.kills AS kills, wg.kills AS ekills, g.show AS s, g.id AS gid, wg.id AS wgid, g.logo_gfx_name AS glogo, wg.logo_gfx_name AS wglogo
       FROM guilds AS g
   INNER JOIN guilds AS wg
       ON wg.id = g.in_war_with
   ORDER BY s DESC LIMIT 50;
");

foreach ($wars as $k=>$v) {
if ($v[s] == 1) 
{

$glogo = "default_logo.gif";
$wglogo = "default_logo.gif";

if(!empty($v[glogo]))
$glogo = $v[glogo];
if(!empty($v[wglogo]))
$wglogo = $v[wglogo];

if(is_int($number_of_rows / 2)) { $bgcolor = '#D4C0A1'; } else { $bgcolor = '#D5E1A2'; } $number_of_rows++;

   $stats .="
       <TR BGCOLOR=".$bgcolor.">
           <TD WIDTH=30%><center><a href='index.php?subtopic=guilds&action=show&guild=" . $v[gname] . "'><font color='#5A2800'>$v[gname]</font></a></center></TD>
           <TD WIDTH=40%><center><a href='index.php?subtopic=wars&action=show&war=" . $v[gid] . "'><font color='#5A2800'>{$v[kills]} - {$v[ekills]}</font></a></center></TD>
           <TD WIDTH=30%><center><a href='index.php?subtopic=guilds&action=show&guild=" . $v[wgname] . "'><font color='#5A2800'>$v[wgname]</font></a></center></TD>
       </TR>
       <TR BGCOLOR=".$bgcolor.">
           <TD><center><img border=1 src='guilds/".$glogo."' width='64px' height='64px'/></center></TD>
           <TD><center><b>Declared at:</b><br />" . date("d/m/y   H:i:s", $v[gtime]) . "<p><b>Started at:</b><br />" . date("d/m/y   H:i:s", $v[wgtime]) . "</center></TD>
           <TD><center><img border=1 src='guilds/".$wglogo."' width='64px' height='64px'/></center></TD>
       </TR>
   ";

}
}
$main_content .= '
<table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody>            <TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b><blink>Active Wars</blink></b></font></td></tr></tbody></table>
';
if(!$stats) {
   $main_content .= '
       <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
           <TR BGCOLOR='.$config['site']['darkborder'].'>
               <TD>
                   No active wars in '.$config['server']['serverName'].' yet.
               </TD>
           </TR>
       </TABLE>
   ';
} else {
   $main_content .= "
       <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
           $stats
       </TABLE>
   ";    
}

?>

<?PHP
$invitations = $SQL->query("
   SELECT ig.name AS igname, i.name AS iname, i.id AS iid, ig.id AS igid, i.war_time AS itime, i.logo_gfx_name AS ilogo, ig.logo_gfx_name AS iglogo
       FROM guilds AS i
   INNER JOIN guilds AS ig
       ON ig.id = i.invited_to
   ORDER BY itime ASC LIMIT 50;    
");
foreach ($invitations as $k=>$v) {

$ilogo = "default_logo.gif";
$iglogo = "default_logo.gif";

if(!empty($v[ilogo]))
$ilogo = $v[ilogo];
if(!empty($v[iglogo]))
$iglogo = $v[iglogo];

           if(is_int($number_of_rows / 2)) { $bgcolor = '#D4C0A1'; } else { $bgcolor = '#D5E1A2'; } $number_of_rows++;

   $invi .="
       <TR BGCOLOR=".$bgcolor.">
           <TD width=30%>
               <center>
                   <b>
                       <a href='index.php?subtopic=guilds&action=show&guild=" . $v[iname] . "'><font color='#5A2800'>$v[iname]</font></a>
                   </b>
               </center>
           </TD>
           <TD width=40%><center>0-0</center></TD>
           <TD width=30%>
               <center>
                   <b>
                       <a href='index.php?subtopic=guilds&action=show&guild=" . $v[igname] . "'><font color='#5A2800'>$v[igname]</font></a>
                   </b>
               </center>
           </TD>
       </TR>
       <TR BGCOLOR=".$bgcolor.">
           <TD>
               <center>
                       <img border=1 src='guilds/".$ilogo."' width='64px' height='64px'/>
               </center>
           </TD>
           <TD><center><b>Declared on:</b><br />" . date("d/m/y   H:i:s", $v[itime]) . "</center></TD>
           <TD>
               <center>
           <img border=1 src='guilds/".$iglogo."' width='64px' height='64px'/>
               </center>
           </TD>
       </TR>
   ";
}
$main_content .= '<br><br><br>
<table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody>            <TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b><blink>Declared Wars</blink></b></font></td></tr></tbody></table>';
if(!$invi) {
   $main_content .= '
       <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
           <TR BGCOLOR='.$config['site']['darkborder'].'>
               <TD>
                   No declared wars in '.$config['server']['serverName'].' yet.
               </TD>
           </TR>
       </TABLE>
   <br>
   ';
} else {
   $main_content .= "
       <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
           $invi
       </TABLE>
   ";
}
}

//SHOW FRAGS ~~
if($action == 'show')
{
$guild = $ots->createObject('Guild'); 
$guild->load($_REQUEST['war']);
$ranks = $SQL->query("
   SELECT 
       *
   FROM 
       guild_ranks 
   WHERE 
       guild_id = ". $guild->getId() ."
   ORDER BY
   level DESC;
   ");

foreach ($ranks as $y)
{
   $Players = $SQL->query("
   SELECT 
       *
   FROM 
       players 
   WHERE 
       rank_id = ". $y[id] ." 
   ORDER BY
   name
   ASC;");
   foreach ($Players as $v)
   {
   $totDeaths = 0;
   $deaths = $SQL->query("
   SELECT  
       COUNT(player_id) AS n
   FROM 
       deaths_in_wars
   WHERE 
       player_id = ". $v[id] ." 
   GROUP BY 
       player_id
   DESC LIMIT 1;");
       foreach ($deaths as $q)
       {
           $totDeaths = $q[n];
       }

if($totDeaths > 1 || $totDeaths == 0){
$deathL = "deaths";
}
else{
$deathL = "death";
}

   $membersDeaths1 .="<tr bgcolor=#D4C0A1>
               <td width=70%><a href=index.php?subtopic=characters&name=" . $v[name] . "><u>$v[name]</u></a></td>
       <td width=30%>$totDeaths $deathL</td>
   </tr>
   ";

   $totFrags = 0;
   $frags = $SQL->query("
   SELECT  
       COUNT(killer) AS m
   FROM 
       deaths_in_wars
   WHERE 
       killer = ". $v[id] ." 
   GROUP BY
   killer
   DESC LIMIT 1;");
       foreach ($frags as $p)
       {
           $totFrags = $p[m];
       }

if($totFrags > 1 || $totFrags == 0){
$fragL = "frags";
}
else{
$fragL = "frag";
}

   $membersFrags1 .= "<tr bgcolor=#D4C0A1>
               <td width=70%><a href=index.php?subtopic=characters&name=" . $v[name] . "><u>$v[name]</u></a></td>
       <td width=30%>$totFrags $fragL</td>
   </tr>
   ";
   }
}

$guild2 = $ots->createObject('Guild'); 
$guild2->load($guild->getCustomField(in_war_with));
$ranks2 = $SQL->query("
   SELECT 
       *
   FROM 
       guild_ranks 
   WHERE 
       guild_id = ". $guild2->getId() ."
   ORDER BY
   level DESC;
   ");

foreach ($ranks2 as $y)
{
   $Players = $SQL->query("
   SELECT 
       *
   FROM 
       players 
   WHERE 
       rank_id = ". $y[id] ." 
   ORDER BY
   name
   ASC;");
   foreach ($Players as $v)
   {
   $totDeaths2 = 0;
   $deaths = $SQL->query("
   SELECT  
       COUNT(player_id) AS n
   FROM 
       deaths_in_wars
   WHERE 
       player_id = ". $v[id] ." 
   GROUP BY
   player_id
   DESC LIMIT 1;");
       foreach ($deaths as $q)
       {
           $totDeaths2 = $q[n];
       }

if($totDeaths2 > 1 || $totDeaths2 == 0){
$deathL = "deaths";
}
else{
$deathL = "death";
}

   $membersDeaths2 .= "<tr bgcolor=#D4C0A1>
               <td width=70%><a href=index.php?subtopic=characters&name=" . $v[name] . "><u>$v[name]</u></a></td>
       <td width=30%>$totDeaths2 $deathL</td>
   </tr>
   ";

   $totFrags2 = 0;
   $frags = $SQL->query("
   SELECT  
       COUNT(killer) AS m
   FROM 
       deaths_in_wars
   WHERE 
       killer = ". $v[id] ." 
   GROUP BY
   killer
   DESC LIMIT 1;");
       foreach ($frags as $p)
       {
           $totFrags2 = $p[m];
       }

if($totFrags2 > 1 || $totFrags2 == 0){
$fragL = "frags";
}
else{
$fragL = "frag";
}

   $membersFrags2 .= "<tr bgcolor=#D4C0A1>
               <td width=70%><a href=index.php?subtopic=characters&name=" . $v[name] . "><u>$v[name]</u></a></td>
       <td width=30%>$totFrags2 $fragL</td>
   </tr>
   ";
   }
}

$deaths3 = $SQL->query("
   SELECT 
       * 
   FROM 
       deaths_in_wars 
   WHERE 
       (killer_guild = ". $guild->getId() ." OR killer_guild = ". $guild2->getId() .")
   ORDER BY 
       date 
   DESC LIMIT ". $MaxShow .";");

$deathsG1 = $SQL->query("
   SELECT 
       * 
   FROM 
       deaths_in_wars 
   WHERE 
       killer_guild = ". $guild->getId() ." 
   ORDER BY 
       date 
   DESC LIMIT ". $MaxShow .";");

$deathsG2 = $SQL->query("
   SELECT 
       * 
   FROM 
       deaths_in_wars 
   WHERE 
       killer_guild = ". $guild2->getId() ." 
   ORDER BY 
       date
   DESC LIMIT ". $MaxShow .";");

$Topfragger1 = $SQL->query("
   SELECT 
       killer, COUNT(killer) maximo
   FROM 
       deaths_in_wars
   WHERE 
       killer_guild =     ". $guild->getId() ." 
   GROUP BY 
       killer
   ORDER BY 
       maximo 
   DESC LIMIT 1;");

   foreach ($Topfragger1 as $y) 
       {
           $name = $ots->createObject('Player');
           $name->load($y[killer]);
           $TopFraggerName = $name->getName();
           $numTop1 = $y[maximo];
       }

$Topfragger2 = $SQL->query("
   SELECT 
       killer, COUNT(killer) maximo
   FROM 
       deaths_in_wars
   WHERE 
       killer_guild =     ". $guild2->getId() ." 
   GROUP BY 
       killer
   ORDER BY 
       maximo 
   DESC LIMIT 1;");

   foreach ($Topfragger2 as $y) 
       {
           $name = $ots->createObject('Player');
           $name->load($y[killer]);
           $TopFraggerName2 = $name->getName();
           $numTop2 = $y[maximo];
       }

$mostDead = $SQL->query("
   SELECT 
       player_id, COUNT(player_id) maximo
   FROM 
       deaths_in_wars
   WHERE 
       killer_guild =     ". $guild->getId() ." 
   GROUP BY 
       player_id
   ORDER BY 
       maximo 
   DESC LIMIT 1;");

   foreach ($mostDead as $y) 
       {
           $name = $ots->createObject('Player');
           $name->load($y[player_id]);
           $mostDeadName = $name->getName();
           $mostDeadNum = $y[maximo];
       }

$mostDead2= $SQL->query("
   SELECT 
       player_id, COUNT(player_id) maximo
   FROM 
       deaths_in_wars
   WHERE 
       killer_guild =     ". $guild2->getId() ." 
   GROUP BY 
       player_id
   ORDER BY 
       maximo 
   DESC LIMIT 1;");

   foreach ($mostDead2 as $y) 
       {
           $name = $ots->createObject('Player');
           $name->load($y[player_id]);
           $mostDeadName2 = $name->getName();
           $mostDeadNum2= $y[maximo];
       }

foreach ($deaths3 as $a=>$b) {

   $killed3 = $ots->createObject('Player');
   $killed3->load($b[player_id]);
   $killedName3 = $killed3->getName();

   $killer3 = $ots->createObject('Player');
   $killer3->load($b[killer]);
   $killerName3 = $killer3->getName();

   $guild3 = $ots->createObject('Guild');
   $guild3->load($b[killer_guild]);
   $guildName3 = $guild3->getName();

   $totKills1 = 0;
   $killss1 = $SQL->query("
   SELECT  
       COUNT(result1) AS m
   FROM 
       deaths_in_wars
   WHERE 
       (killer_guild = ". $guild->getId() ." AND date <= ". $b[date] .")
   GROUP BY
   result1
   DESC LIMIT 1;");
       foreach ($killss1 as $p)
       {
           $totKills1 = $p[m];
       }

   $totKills2 = 0;
   $killss2 = $SQL->query("
   SELECT  
       COUNT(result2) AS n
   FROM 
       deaths_in_wars
   WHERE 
       (killer_guild = ". $guild2->getId() ." AND date <= ". $b[date] .")
   GROUP BY
   result2
   DESC LIMIT 1;");
       foreach ($killss2 as $q)
       {
           $totKills2 = $q[n];
       }

   $kills3 .="
       <TR BGCOLOR=#D4C0A1>
           <TD>
                       <a href='index.php?subtopic=characters&name=" . $killerName3 . "'><u>$killerName3</u></a>
           </TD>
           <TD>
                       <a href='index.php?subtopic=characters&name=" . $killedName3 . "'><u>$killedName3</u></a>
           </TD>
           <TD>
           $guildName3
           </TD>
           <TD>
           $totKills1:$totKills2
           </TD>
           <TD>
                   " . date("d/m/y   H:i:s", $b[date]) . "
           </TD>
       </TR>
   ";
}

if(!empty($mostDeadNum)){$mostDeadNum = $mostDeadNum;}else{$mostDeadNum = 0 + $mostDeadNum;}
if(!empty($mostDeadNum2)){$mostDeadNum2 = $mostDeadNum2;}else{$mostDeadNum2 = 0 + $mostDeadNum2;}
if(!empty($numTop1)){$numTop1 = $numTop1;}else{$numTop1 = 0 + $numTop1;}
if(!empty($numTop2)){$numTop2 = $numTop2;}else{$numTop2 = 0 + $numTop2;}

foreach ($deathsG1 as $k=>$v) {

   $killed = $ots->createObject('Player');
   $killed->load($v[player_id]);
   $killedName = $killed->getName();

   $killer = $ots->createObject('Player');
   $killer->load($v[killer]);
   $killerName = $killer->getName();

   $kills .="
       <TR BGCOLOR=\"".$config['site'][($k % 2 == 1 ? 'light' : 'dark').'border']."\">
           <TD>
               <center>
                   <b>
                       <a href='index.php?subtopic=characters&name=" . $killedName . "'>$killedName</a>
                   </b>
               </center>
           </TD>
           <TD>
               <center>
                   <b>
                       <a href='index.php?subtopic=characters&name=" . $killerName . "'>$killerName</a>
                   </b>
               </center>
           </TD>
           <TD>
               <center>
                   " . date("d/m/y   H:i:s", $v[date]) . "
               </center>
           </TD>
       </TR>
   ";
}

foreach ($deathsG2 as $k=>$v) {

   $killed = $ots->createObject('Player');
   $killed->load($v[player_id]);
   $killedName = $killed->getName();

   $killer = $ots->createObject('Player');
   $killer->load($v[killer]);
   $killerName = $killer->getName();

   $kills2 .="
       <TR BGCOLOR=\"".$config['site'][($k % 2 == 1 ? 'light' : 'dark').'border']."\">
           <TD>
               <center>
                   <b>
                       <a href='index.php?subtopic=characters&name=" . $killedName . "'>$killedName</a>
                   </b>
               </center>
           </TD>
           <TD>
               <center>
                   <b>
                       <a href='index.php?subtopic=characters&name=" . $killerName . "'>$killerName</a>
                   </b>
               </center>
           </TD>
           <TD>
               <center>
                   " . date("d/m/y   H:i:s", $v[date]) . "
               </center>
           </TD>
       </TR>
   ";
}

if($numTop1 > 1 || $numTop1 == 0){$fragl1 = "frags";}else{$fragl1 = "frag";}
if($numTop2 > 1 || $numTop2 == 0){$fragl2 = "frags";}else{$fragl2= "frag";}
if($mostDeadNum > 1 || $mostDeadNum == 0){$deathl1 = "deaths";}else{$deathl1 = "death";}
if($mostDeadNum2 > 1 || $mostDeadNum2 == 0){$deathl2 = "deaths";}else{$deathl2 = "death";}

$main_content .= '
<table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody>            <TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b>War Information</b></font></td></tr></tbody></table>
';

$logo = "default_logo.gif";
$logo2 = "default_logo.gif";
$a = $guild->getCustomField(logo_gfx_name);
$b = $guild2->getCustomField(logo_gfx_name);
if(!empty($a))
$logo = $a;
if(!empty($b))
$logo2 = $b;

$main_content .= "
       <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
       <TR BGCOLOR='#D4C0A1'>
           <TD WIDTH='35%'><center><a href='index.php?subtopic=guilds&action=show&guild=".$guild->getName()."'><font color='#5A2800'>".$guild->getName()."</font></a></center></TD>
           <TD WIDTH='30%'><center><font color='#5A2800'><b>".$guild->getCustomField(kills)." - ".$guild2->getCustomField(kills)."</b></font></center></TD>
           <TD WIDTH='35%'><center><a href='index.php?subtopic=guilds&action=show&guild=".$guild2->getName()."'><font color='#5A2800'>".$guild2->getName()."</font></a></center></TD>
       </TR>
       <TR BGCOLOR='#D4C0A1'>
           <TD><center><img border=1 src='guilds/".$logo."' width='64px' height='64px'/><p><b><u>Top fragger:</b></u><br /><a href='index.php?subtopic=characters&name=".$TopFraggerName."'>".$TopFraggerName."</a> (".$numTop1." ".$fragl1.")<p><b><u>Most dead:</b></u><br /><a href='index.php?subtopic=characters&name=".$mostDeadName2."'>".$mostDeadName2."</a> (".$mostDeadNum2." ".$deathl2.")</center></TD>
           <TD><center><b>Declared at:</b><br />" . date("d/m/y   H:i:s", $guild->getCustomField(war_time)) . "<p><b>Started at:</b><br />" . date("d/m/y   H:i:s", $guild2->getCustomField(war_time)) . "</center></TD>
           <TD><center><img border=1 src='guilds/".$logo2."' width='64px' height='64px'/><p><b><u>Top fragger:</u></b><br /><a href='index.php?subtopic=characters&name=".$TopFraggerName2."'>".$TopFraggerName2."</a> (".$numTop2." ".$fragl2.")<p><b><u>Most dead:</u></b><br /><a href='index.php?subtopic=characters&name=".$mostDeadName."'>".$mostDeadName."</a> (".$mostDeadNum." ".$deathl1.")</center></TD>
       </TR>
       </TABLE>    
";

$main_content .= '
<br><br><table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b>Kills - '.$guild->getName().' vs '.$guild2->getName().'</b></font></td></tr></tbody></table>
';

$main_content .= "
       <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
       <TR BGCOLOR=#D4C0A1>
           <TD><b>Killer</b></TD>
           <TD><b>Victim</b></TD>
           <TD><b>Fragging Guild</b></TD>
           <TD><b>Result</b></TD>
           <TD><b>Date</b></TD>
       </TR>
   $kills3
       </TABLE>";

$main_content .= '
<br><br><table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b>Most Frags</b></font></td></tr></tbody></table>';

$main_content .= "
   <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
       <TR BGCOLOR=#D4C0A1>
           <TD width=50%>
               <div align='right'>
                   <B>
                       ". $guild->getName() ."
                   </B>
               </div>
           </TD>
           <TD width=50%>
               <div align='left'>
                   <B>
                       ". $guild2->getName() ."
                   </B>
               </div>
           </TD>
       </TR>
       <TR BGCOLOR=#D4C0A1>
           <TD>
               <div align='right'>
           <img src=guilds/".$logo." width='64px' height='64px' border=1/>
       </div>
           </TD>
           <TD>
               <div align='left'>
           <img src=guilds/".$logo2." width='64px' height='64px'border=1/>
               </div>
           </TD>
       </TR>
   </TABLE>
   <TABLE ALIGN=LEFT BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=50%>
       $membersFrags1
   </TABLE>
   <TABLE ALIGN=RIGHT BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=50%>
       $membersFrags2
   </TABLE>

";
$main_content .= '
<table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody><TR><td><font color="white" size=1>.</font></td></tr></tbody></table>';
$main_content .= '
<table border="0" CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody><TR BGCOLOR="'.$config['site']['vdarkborder'].'"><td><font color="white" size=4><b>Most Deaths</b></font></td></tr></tbody></table>';
$main_content .= "
   <TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
       <TR BGCOLOR=#D4C0A1>
           <TD width=50%>
       <div align='right'>
                   <B>
                       ". $guild->getName() ."
                   </B>
       </div>
           </TD>
           <TD width=50%>
       <div align='left'>
                   <B>
                       ". $guild2->getName() ."
                   </B>
       </div>
           </TD>
       </TR>
       <TR BGCOLOR=#D4C0A1>
           <TD>
       <div align='right'>
           <img src=guilds/".$logo." width='64px' height='64px' border=1 />
       </div>
           </TD>
           <TD>
       <div align='left'>
           <img src=guilds/".$logo2." width='64px' height='64px'border=1 />
       </div>
           </TD>
       </TR>
   </TABLE>
   <TABLE ALIGN=LEFT BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=50%>
       $membersDeaths1
   </TABLE>
   <TABLE ALIGN=RIGHT BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=50%>
       $membersDeaths2
   </TABLE>
";
}
$main_content .= "
<table border='0' CELLSPACING=1 CELLPADDING=4 WIDTH=100%><tbody><TR><td><div style='text-align: right; margin: 20px auto; font-size: 10px;'>
     Created by <a target='blank' href='http://otland.net/members/xampy/'>Xampy</a></div></td></tr></tbody></table>";
?>

 

4) Abra o arquivo guilds.php [da pasta htdocs] e DEPOIS de (linha 1740~):

 

if($guild_leader) { 
if($_POST['todo'] == 'save') { 
delete_guild($guild->getId()); 
$saved = TRUE; 
}  

 

adicione isso:

 

$war = $guild->getCustomField("in_war_with"); 

if($war == 0) {  

 

e depois de :

 

else 
{ 
$guild_errors[] = 'You are not a leader of guild!'; 
} 
}  

 

adicione:

 

else 
{ 
$guild_errors[] = 'You are in war with with some other guild!'; 
} 
}  

 

5) Abra o arquivo index.php [na pasta htdocs] e depois ou antes de:(não faz diferença):

 

    case "buypoints"; 
       $subtopic = "buypoints"; 
       $topic = "Buy Points"; 
       include("buypoints.php"); 

break;

 

coloque:

 

    case "wars"; 
       $subtopic = "wars"; 
       $topic = "Wars"; 
       include("wars.php"); 
   break;  

 

6) Abra xampp/htdocs/layouts/tibiacom/ e depois layout.php. Depois de:

 

<a href='?subtopic=guilds'> 
 <div id='submenu_guilds' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'> 
   <div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> 

   <div id='ActiveSubmenuItemIcon_guilds' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> 
   <div class='SubmenuitemLabel'>Guilds</div> 
   <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> 
 </div> 
</a>

 

coloque isso:

 

<a href='index.php?subtopic=wars'> 
 <div id='submenu_wars' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'> 
   <div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> 
   <div id='ActiveSubmenuItemIcon_wars' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div> 
   <div class='SubmenuitemLabel'><font color="red">Wars</font></div> 
   <div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div> 
 </div> 
</a>

 

7) Agora entre na seção Wars do seu Site -> Localhost - Wars

 

2593-wars1.png

 

2592-wars2.png

 

2602-death-guild-channel.png

 

Por favor , rep +

 

Creditos:

Xampy [Por criar]

Heartbreak [Por trazer ao Xtibia]

 

Recuso Imitações , Proibido Copia [Peço a um moderador que arrume o Topico se possivel]

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

Obrigado Harry , peço a todos que COMENTEM e se gostarem REP+

 

se o topico for aprovado,e comentarem eu vou postar a versão para TFS 0.3.4 e TFS 4.0

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

acho q é por causa diso:

 

Vim avisar-lhes que os Tutoriais são aprovados/reprovados a cada período de tempo(não estipulado), por isso se vocês acharem essa seção muito lotada é porque não estava na semana de aprovação.

 

Os meus fazem uma semana q tao ai ja e nada :x

Link para o comentário
Compartilhar em outros sites

eu nem li o topico , mais so de ver o titulo ja sei que é otimo , obrigado por trazer pro xtibia , finalmente.

 

só não vou adicionar no meu server pq ja tenho

Cara, floodar assumido e quer tomar alerta.

Se não leu o tópico postou porque? se o titulo fosse autoexplicativo.

 

 

Obrigado Harry , peço a todos que COMENTEM e se gostarem REP+

 

se o topico for aprovado,e comentarem eu vou postar a versão para TFS 0.3.4 e TFS 4.0

 

 

Demoro cara, por favor posta ae pra nois ;)

Bem legal o sistema de war, perfeito..

 

Mais você tem os escudinhos?

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

Cara eu mesmo estava procurando esse tutorial um dia desses...

Obrigado por compartilhar o conteúdo com o XTibia.com!

 

Tutorial aprovado, abraços...

Link para o comentário
Compartilhar em outros sites

To tentando carregar o mod, mas quando vou abrir o ot, ele diz que não pode carregar o guildWarSystem.xml e dá algum erro referente ao utf8.. só que o arquivo xml tá em utf8 certinho..

 

Outra coisa que notei no próprio guildWarSystem.xml, é que ele é setado para teletransportar a guild para algum lugar na hora que tu aceita a war.. e que tem um troço de parar a war por X tempo.

 

Não entendi mt bem isso.. e gostaria de saber se alguém tá tendo o problema do utf8.. vlw..

 

Ps. Já tentei tirar a formatação de utf8 tb.. mas dá o msm erro.. acho que o erro diz que a formtação deve ser utf8, mas na verdade já tá e o troço acha que não.

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

passo 4 impossivel de fazer nao existe isso na guild.php e nao fazendo o passo 4 e fazendo o resto vai dar isso:

 

no passo 4 fasso a 1 copy/paste

 

depois o 2 dou search e nao encontra......... nao sei onde por sera que da para me mandarem o guild.php?

 

se nao fizer o passo 4 da isso no website:

 

Warning: include(wars.php) [function.include]: failed to open stream: No such file or directory in C:\xampp\htdocs\index.php on line 202

 

Warning: include() [function.include]: Failed opening 'wars.php' for inclusion (include_path='.;C:\xampp\php\pear\') in C:\xampp\htdocs\index.php on line 202

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

Ta imcompleto o tutorial.

-----------------------------------

Edita teu topico dessa forma mais completa...

 

1 - Crie um arquivo com o nome GuildWar.lua dentro da pasta do seu OTServer, aonde fica o distro, dll's , etc. E copie este código:

 

DelayToCancel = 24 * 60 * 60 --minutes

 

Maps = {

["map 1"] =

{

Guild1Pos = {x=998, y=1006, z=7},

Guild2Pos = {x=1002, y=1006, z=7}

},

["map 2"] =

{

Guild1Pos = {x=994, y=1004, z=6},

Guild2Pos = {x=1000, y=1003, z=6}

}

}

 

TimeToTeleport = 1 --minutes, when star a challenge

StopBattle = TRUE --Stop battle after X time ? TRUE / FALSE

TimeToStop = 60 --Minutes Time to Stop if StopBattle = TRUE.

 

--Cancel messages~

CancelMessagesWar = {

--Message when player try accept/reject/cancel a war but there is no a invitation.

[1] = "Not pending invitations.",

--Message when the player is not the guild leader.

[2] = "Only Guild Leader can execute this command.",

--Message when try Cancel the invitation but the war is already accepted.

[3] = "The war is already accepted.",

--MEssage when the invited guild name is not correct or does not exist.

[4] = "Not correct guild name.",

--Message when try invite any guild to a war but his guild already have a war or a pending invitation.

[5] = "Your guild is already in war or have a pending invitation.",

--Same of the cancel message 5 but the the enemy guild.

[6] = "This guild is already in war or have a pending invitation.",

--Message when use invite command but not write guild name.

[7] = "Command needs param.",

--Message when try invite his guild.

[8] = "You can\´t invite you guild.",

--Message when the map name is not correct.

[9] = "Please write a correct name.",

--Message when try go to any map but the guild is have no received/sent any war invitation

[10] = "Your guild is not in any war.",

--When try to cancel a war before the delay

[11] = "You should wait ".. DelayToCancel .." minutes to cancel the war"

}

 

--Broadcast messages when invite/accept/reject/cancel ~ Remember the Spaces.

BroadCast_Type = MESSAGE_EVENT_ADVANCE

BroadCast = {

--Message when inviting

[1] =

{

"Guild ",

--Here will be the guild name

" have invited guild ",

--Here will be the invited guild name

" to have a war."

},

--Message when accept.

[2] =

{

"Guild ",

--Here will be the guild name

" have accepted the invitation of the guild " ,

--Here will be the name of the guild who have invited em.

" to have a war."

},

--Message when reject.

[3] =

{

"Guild ",

--Here will be the guild name

" have rejected the invitation of the guild " ,

--Here will be the name of the guild who have invited em.

" to have a war."

},

--Message when cancel.

[4] =

{

"Guild ",

--Here will be the guild name

" have canceled the invitation to the guild " ,

--Here will be the name of the guild who have invited em.

" to have a war."

},

--Message whenstar a battle..

[5] =

{

"Guild ",

--Here will be the guild name

" and guild " ,

--Here will be the name of the guild who have invited em.

" will have a battle in the map :"

},

--message when a battle ends.

[6] =

{

"The battle betwen guild ",

--Here will be the guild name

" and guild " ,

--Here will be the name of the guild who have invited em.

" its over."

},

}

 

--Functions ~.

function getGuildWarInfo(id)

local Info = db.getResult("SELECT `invited_to`, `invited_by`, `in_war_with`,`war_time` FROM `guilds` WHERE `id` = " .. id .. "")

if Info:getID() ~= LUA_ERROR then

local invTo, invBy, warWith, Time = Info:getDataInt("invited_to"), Info:getDataInt("invited_by"), Info:getDataInt("in_war_with"), Info:getDataInt("war_time")

Info:free()

return {To = invTo, By = invBy, With = warWith, T = Time}

end

return LUA_ERROR

end

 

function getGuildNameById(id)

local Info = db.getResult("SELECT `name` FROM `guilds` WHERE `id` = " .. id .. "")

if Info:getID() ~= LUA_ERROR then

local Name = Info:getDataString("name")

Info:free()

return Name

end

return LUA_ERROR

end

 

function GuildIsInPEace(id)

local Info = getGuildWarInfo(id)

return (Info.To == 0 and Info.By == 0 and Info.With == 0)

end

 

function doInviteToWar(myGuild, enemyGuild)

db.executeQuery("UPDATE `guilds` SET `invited_to` = ".. enemyGuild .." WHERE `id` = ".. myGuild .."")

db.executeQuery("UPDATE `guilds` SET `invited_by` = ".. myGuild .." WHERE `id` = ".. enemyGuild .."")

end

 

function WarAccept(myGuild, enemyGuild)

local StartTime = os.time()

db.executeQuery("UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `war_time` = ".. StartTime ..", `in_war_with` = ".. myGuild ..", `kills` = 0, `show` = 1 WHERE `id` = ".. enemyGuild .."")

db.executeQuery("UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `war_time` = ".. StartTime ..", `in_war_with` = ".. enemyGuild ..", `kills` = 0, `show` = 0 WHERE `id` = ".. myGuild .."")

end

 

function cleanInfo(myGuild)

db.executeQuery("UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `war_time` = 0, `in_war_with` = 0, `kills` = 0, `show` = 0 WHERE `id` = ".. myGuild .."")

end

 

function registerDeath(myGuild, enemyGuild, cid, target)

db.executeQuery("INSERT INTO `deaths_in_wars` (`guild_id`, `player_id`, `killer_guild`, `killer`, `date`) VALUES ("..enemyGuild..", "..getPlayerGUID(target)..", "..myGuild..", "..getPlayerGUID(cid)..", " .. os.time() ..");")

db.executeQuery("UPDATE `guilds` SET `kills` = `kills` + 1 WHERE `id` = ".. myGuild .."")

end

 

function StopWar(myGuild, enemyGuild)

cleanInfo(myGuild)

cleanInfo(enemyGuild)

removeDeaths(myGuild)

removeDeaths(enemyGuild)

end

 

function removeDeaths(id)

db.executeQuery("DELETE FROM `deaths_in_wars` WHERE `guild_id` = " ..id .. ";")

end

 

function WeAreInWar(myGuild, enemyGuild)

local myGuildInfo = getGuildWarInfo(myGuild)

local enemyGuildInfo = getGuildWarInfo(enemyGuild)

if myGuild == enemyGuildInfo.With and enemyGuild == myGuildInfo.With then

if enemyGuildInfo.ON == 1 and myGuildInfo.ON == 1 then

return TRUE

end

end

return FALSE

end

 

function getOnlineMembers(id)

local PlayersOnline = getPlayersOnline()

local MembersOnline = {}

for i, pid in ipairs(PlayersOnline) do

if id == getPlayerGuildId(PlayersOnline) then

table.insert(MembersOnline, PlayersOnline)

end

end

return MembersOnline

end

 

function teleportGuild(id, pos)

local Members = getOnlineMembers(id)

if #Members > 0 then

for i = 1, #Members do

if getTilePzInfo(getCreaturePosition(Members)) == TRUE then

doTeleportThing(Members, pos, FALSE)

doSendMagicEffect(pos, CONST_ME_TELEPORT)

doSendMagicEffect(getCreaturePosition(Members), CONST_ME_POFF)

end

end

end

end

 

function removeFrag(cid)

local FragTime = getConfigInfo('timeToDecreaseFrags')

local myFragTime = getPlayerRedSkullTicks(cid)

local Remo = (myFragTime - FragTime)

if Remo < 0 then

Remo = 0

end

doPlayerSetRedSkullTicks(cid, Remo)

end

 

function getGuildsWithWar()

local res = db.getResult("SELECT `id` FROM `guilds` WHERE `in_war_with` > 0")

local GuildW = {}

if res:getID() ~= LUA_ERROR then

while true do

table.insert(GuildW, res:getDataInt "id")

if not res:next() then

break

end

end

res:free()

end

return GuildW

end

 

function guildExist(nom)

local Get = db.getResult("SELECT `id` FROM `guilds` WHERE `name` = " .. db.escapeString(nom) .. ";")

if Get:getID() ~= LUA_ERROR then

local ret = Get:getDataInt("id")

Get:free()

return ret

end

return LUA_ERROR

end

 

function StarWar(x)

teleportGuild(x.myGuild, Maps[x.map].Guild1Pos)

teleportGuild(x.enemyGuild, Maps[x.map].Guild2Pos)

--[[

putWarOn(x.myGuild, x.enemyGuild)

if StopBattle == TRUE then

addEvent(StopWarNow, 60 * 1000, {myGuild = x.myGuild, enemyGuild = x.enemyGuild})

end

]]

end

 

--[[

function StopWarNow©

StopWar(c.myGuild, c.enemyGuild)

doBroadcastMessage(BroadCast[6][1] ..getGuildNameById(c.myGuild).. BroadCast[6][2] ..getGuildNameById(c.enemyGuild).. BroadCast[6][3], BroadCast_Type)

end

 

function putWarOn(myGuild, enemyGuild)

db.executeQuery("UPDATE `guilds` SET `war_time` = 1 WHERE `id` = ".. myGuild .."")

db.executeQuery("UPDATE `guilds` SET `war_time` = 1 WHERE `id` = ".. enemyGuild .."")

end

]]

 

2 -Crie um novo arquivo em: data\creaturescripts\scripts\ com o nome de: war_attack.lua e copie este código:

 

dofile("./GuildWar.lua")

 

function onAttack(cid, target)

if isPlayer(cid) == TRUE and isPlayer(target) == TRUE then

local myGuild = getPlayerGuildId(cid)

local enemyGuild = getPlayerGuildId(target)

if myGuild ~= 0 and enemyGuild ~= 0 then

if enemyGuild == getGuildWarInfo(myGuild).With then

if getPlayerSkullType(cid) == 3 or getPlayerSkullType(cid) == 4 then

if getPlayerSkullType(target) == 0 then

doCreatureSetSkullType(cid, 1)

doCreatureSetSkullType(target, 1)

end

end

end

end

end

return TRUE

end

 

2.1 - Crie um novo arquivo em: data\creaturescripts\scripts\ com o nome de: war_kill.lua e copie este código:

 

dofile("./GuildWar.lua")

 

local PZ = createConditionObject(CONDITION_INFIGHT)

setConditionParam(PZ, CONDITION_PARAM_TICKS, getConfigInfo('whiteSkullTime'))

 

function onKill(cid, target)

if isPlayer(cid) == TRUE and isPlayer(target) == TRUE then

local myGuild = getPlayerGuildId(cid)

local enemyGuild = getPlayerGuildId(target)

if myGuild ~= 0 and enemyGuild ~= 0 then

if enemyGuild == getGuildWarInfo(myGuild).With then

doAddCondition(cid, PZ)

registerDeath(myGuild, enemyGuild, cid, target)

doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "This frag will not count!")

 

end

end

end

return TRUE

end

 

2.2 - Abra login.lua (data/creaturescripts/scripts/):

 

Após:

 

registerCreatureEvent(cid, "KillingInTheNameOf")

 

Adicione:

 

registerCreatureEvent(cid, "WarAttack")

registerCreatureEvent(cid, "WarKill")

 

Salve e Feche.

 

2.3 - Adicione isto em: creaturescripts.xml

 

<event type="attack" name="WarAttack" event="script" value="war_attack.lua"/>

<event type="kill" name="WarKill" event="script" value="war_kill.lua"/>

 

3.0 - Crie um novo arquivo com o nome de wars.lua em: (data\globalevents\scripts) e copie este código:

 

dofile("./GuildWar.lua")

 

function onThink(interval, lastExecution)

for _, id in ipairs(getGuildsWithWar()) do

local Check = db.getResult("SELECT `name` FROM `guilds` WHERE id = ".. getGuildWarInfo(id).With .."")

if Check:getID() == LUA_ERROR then

cleanInfo(id)

end

end

return TRUE

end

 

3.1 - Adicione isto em: globalevents.xml:

 

<globalevent name="wars" interval="1800" event="script" value="wars.lua"/> <!--1800 is 30 minutes-->

 

4.0 - Crie um novo arquivo com o nome GuildWar.lua em: (data\talkactions\scripts\) e copie este código:

 

dofile("./GuildWar.lua")

 

function onSay(cid, words, param)

if getPlayerGuildLevel(cid) == GUILDLEVEL_LEADER then

local myGuild = getPlayerGuildId(cid)

if words == "/war-invite" then

if GuildIsInPEace(myGuild) == true then

if param ~= "" then

if guildExist(param) ~= LUA_ERROR then

local invitedGuild = getGuildId(param)

if invitedGuild ~= LUA_ERROR then

if invitedGuild ~= myGuild then

if GuildIsInPEace(invitedGuild) == true then

doInviteToWar(myGuild, invitedGuild)

doBroadcastMessage(BroadCast[1][1] ..getPlayerGuildName(cid).. BroadCast[1][2] ..getGuildNameById(invitedGuild).. BroadCast[1][3], BroadCast_Type)

else

doPlayerSendCancel(cid, CancelMessagesWar[6])

end

else

doPlayerSendCancel(cid, CancelMessagesWar[8])

end

else

doPlayerSendCancel(cid, CancelMessagesWar[4])

end

else

doPlayerSendCancel(cid, CancelMessagesWar[4])

end

else

doPlayerSendCancel(cid, CancelMessagesWar[7])

end

else

doPlayerSendCancel(cid, CancelMessagesWar[5])

end

elseif words == "/war-accept" then

if getGuildWarInfo(myGuild).By ~= 0 then

local enemyGuild = getGuildWarInfo(myGuild).By

doBroadcastMessage(BroadCast[2][1] ..getPlayerGuildName(cid).. BroadCast[2][2] ..getGuildNameById(enemyGuild).. BroadCast[2][3], BroadCast_Type)

WarAccept(myGuild, enemyGuild)

else

doPlayerSendCancel(cid, CancelMessagesWar[1])

end

elseif words == "/war-reject" then

if getGuildWarInfo(myGuild).By ~= 0 then

doBroadcastMessage(BroadCast[3][1] ..getPlayerGuildName(cid).. BroadCast[3][2] ..getGuildNameById(getGuildWarInfo(myGuild).By).. BroadCast[3][3], BroadCast_Type)

cleanInfo(getGuildWarInfo(myGuild).By)

cleanInfo(myGuild)

else

doPlayerSendCancel(cid, CancelMessagesWar[1])

end

elseif words == "/war-cancel-invite" then

if getGuildWarInfo(myGuild).To ~= 0 then

if getGuildWarInfo(myGuild).With == 0 then

doBroadcastMessage(BroadCast[4][1] ..getPlayerGuildName(cid).. BroadCast[4][2] ..getGuildNameById(getGuildWarInfo(myGuild).To).. BroadCast[4][3], BroadCast_Type)

cleanInfo(getGuildWarInfo(myGuild).To)

cleanInfo(myGuild)

else

doPlayerSendCancel(cid, CancelMessagesWar[3])

end

else

doPlayerSendCancel(cid, CancelMessagesWar[1])

end

elseif words == "/war-challenge" then

local map = Maps[param]

if map then

if getGuildWarInfo(myGuild).With ~= 0 and getGuildWarInfo(myGuild).ON == 0 then

local enemyGuild = getGuildWarInfo(myGuild).With

addEvent(StarWar, 15 * 1000, {myGuild = myGuild, enemyGuild = enemyGuild, map = param})

doBroadcastMessage(BroadCast[5][1] ..getPlayerGuildName(cid).. BroadCast[5][2] ..getGuildNameById(enemyGuild).. BroadCast[5][3] .. param ..".", BroadCast_Type)

else

doPlayerSendCancel(cid, CancelMessagesWar[10])

end

else

doPlayerSendCancel(cid, CancelMessagesWar[9])

end

elseif words == "/war-cancel" then

local enemy = getGuildWarInfo(myGuild).With

if enemy ~= 0 then

if (os.time() - getGuildWarInfo(myGuild).T) >= (60 * DelayToCancel) then

StopWar(myGuild, enemy)

doBroadcastMessage(BroadCast[6][1] ..getGuildNameById(myGuild).. BroadCast[6][2] ..getGuildNameById(enemy).. BroadCast[6][3], BroadCast_Type)

else

doPlayerSendCancel(cid, CancelMessagesWar[11])

end

else

doPlayerSendCancel(cid, CancelMessagesWar[10])

end

end

else

doPlayerSendCancel(cid, CancelMessagesWar[2])

end

local file = io.open("data/logs/Wars.txt", "a")

file:write("".. os.date("%d %B %Y %X ", os.time()) .." --> "..getCreatureName(cid)..": "..words.." "..param.."\n")

file:close()

return TRUE

end

 

5.0 - Adicione isto em: talkactions.xml

 

<!--Guilds Wars-->

<talkaction words="/war-invite" event="script" value="GuildWar.lua"/>

<talkaction words="/war-accept" event="script" value="GuildWar.lua"/>

<talkaction words="/war-reject" event="script" value="GuildWar.lua"/>

<talkaction words="/war-cancel" event="script" value="GuildWar.lua"/>

<talkaction words="/war-challenge" event="script" value="GuildWar.lua"/>

<talkaction words="/war-cancel-invite" event="script" value="GuildWar.lua"/>

 

PRONTO ADD ISSO AE O RESTO VC JA BOTOU!

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

×
×
  • Criar Novo...