• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Fixed Guild War System for Website [include all]-[will not count frags] (TFS 0.3+)

Status
Not open for further replies.

Xampy

PHP | SQL | LUA | C++
Joined
Jun 22, 2008
Messages
1,109
Reaction score
17
Guild-War System for TFS 0.3.5 & TFS 0.3.6 [include PHP file and MOD file]

Guild-War System for TFS 0.3.4 <----------|||----------> Guild-War System for TFS 0.4



||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

Guild-War System for TFS 0.3.5 or TFS 0.3.6.
It needs Gesior AAC too.


Let's begin with the "tutorial":

*Note 1: it's highly recommended to erase `deaths_in_wars` table before using this new system, else some functions will not works properly (DROP TABLE `deaths_in_wars`).

*Note 2: to make it work, it will delete all current wars (the wars that were working with previous release.

*Note 3: it works fine with Mozilla Firefox; it works buggy with Internet Explorer, Opera, etc. (I don't know how to repair it by the moment.).

1)Add this file to mods folder (mods folder is inside otserver folder) and call it guildWarSystem.xml:
PHP:
<?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)Add this to database (phpMyAdmin normally):


PHP:
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 ;
PHP:
 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 ;
PHP:
UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `in_war_with` = 0, `kills` = 0, `show` = 0, `war_time` = 0 WHERE `id` > 0;

If you have this error:
The Following Errors Have Occurred:
# Invalid guild name format.

///// Use PHP file from 3a step.
Elseif you have this other error:
The Following Errors Have Occurred:
# Guild with ID 0 doesn't exist.

///// Use PHP file from 3b step.

3a)Go to your xampp/htdocs folder. Copy this into a file called wars.php:
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;'>
      Coded by <a target='blank' href='http://otland.net/members/nahruto/'>Nahruto</a> and <a target='blank' href='http://otland.net/members/xampy/'>Xampy</a> | Fixed & Edited by <a target='blank' href='http://otland.net/members/xampy/'>Xampy</a></div></td></tr></tbody></table>";
?>


Next step (3b) continues hereeeee.

(The text that you have entered is too long (75765 characters). Please shorten it to 75000 characters long.)
 
Last edited:
@up:
It appears any error in console?

Oh, change your PHP file by the new one posted on main post (I repaired a little bug).

Thanks.
 
@Up
This same problem as in this posted by Gekirah, when you say /war-challenge map1 then it's telling you that you are not in any war -.- (0 errors in console).
 
As I said in main post, I only fixed/repaired the script from creaturescripts folder and the PHP file, nothing more. I will take a look later, I have to study for an exam now.
Try going to your server's folder (outside data folder), open the GuildWar.lua and edit this:

Code:
Maps = {
	["[COLOR="Red"]map 1[/COLOR]"] = 
		{
[COLOR="Blue"]			Guild1Pos = {x=998, y=1006, z=7},[/COLOR]
[COLOR="SeaGreen"]			Guild2Pos = {x=1002, y=1006, z=7}[/COLOR]
		},
	["[COLOR="Red"]map 2[/COLOR]"] =
		{
[COLOR="Blue"]			Guild1Pos = {x=994, y=1004, z=6},[/COLOR]
[COLOR="SeaGreen"]			Guild2Pos = {x=1000, y=1003, z=6}			[/COLOR]
		}
	}

TimeToTeleport = [COLOR="DarkOrange"]1[/COLOR] --minutes, when star a challenge
StopBattle = [COLOR="Magenta"]TRUE[/COLOR] --Stop battle after X time ? TRUE  /  FALSE
TimeToStop = [COLOR="Purple"]60[/COLOR] --Minutes Time to Stop if StopBattle = TRUE.
 
help me i cant add
PHP:
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 ;

 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 
) ENGINE = MYISAM ;
to my database
 
Fout
SQL-query:

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 ;



MySQL retourneerde:

#1060 - Duplicate column name 'invited_to'
 
@Tuchol & moderhuis:
That means that you already have got this columns on the `guilds` table.

Execute:
Code:
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 
) ENGINE = MYISAM ;

If it shows the same error: "Duplicate column name etc...". It means that you already have got this tables/columns and you don't need to create them another time. Then, go to step 9.0.

@Master-m:
Thanks ;)


Regards.
 
Got this error in console :
Lua Script Error: [TalkActions Inferface]
data/talkactions/scripts/GuildWar.lua: onSay

data/talkactions/scripts/GuildWar.lua:92: attempt to index local 'file' (a nil value)
stack traceback :
data/talkactions/scripts/GuildWar.lua:92: in function <data/talkactions/scripts/guildWar.lua:3>
TFS 0.3.2
------------
Also when I add it to kill.lua:
dofile("./GuildWar.lua")

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

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
removeFrag(cid)
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "This Frag will not count") --Remove this if you wish
doAddCondition(cid, PZ)
registerDeath(myGuild, enemyGuild, cid, target)
end
end
return TRUE
end
I can not kill the monster.
 
Last edited:
cannot load script globalevents/scripts/wars.lua help :0

Post your full error code showed in console.

Got this error in console :
Code:
Lua Script Error: [TalkActions Inferface]
data/talkactions/scripts/GuildWar.lua: onSay

data/talkactions/scripts/GuildWar.lua:92: attempt to index local 'file' (a nil value)
stack traceback :
data/talkactions/scripts/GuildWar.lua:92: in function <data/talkactions/scripts/guildWar.lua:3>
TFS 0.3.2

When I add it to kill.lua:
Code:
dofile("./GuildWar.lua")

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

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
removeFrag(cid)
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "This Frag will not count") --Remove this if you wish
doAddCondition(cid, PZ)
registerDeath(myGuild, enemyGuild, cid, target)
end
end
return TRUE
end
I can not kill the monster.
The problem is when you add the talkactions script, not the kill creaturescript. There's no line 92 in talkactions' script. You are copying the wrong script to the wrong folder. Please, read the tutorial (you are copying the script that must go on server's folder to talkactions/scripts folder).


Regards.

PS Write this inside login.lua (data/creaturescripts/scripts/):
After
Code:
registerCreatureEvent(cid, "PlayerDeath")
Write:
Code:
registerCreatureEvent(cid, "PlayerKill")
 
Last edited:
Hmm okay, now got this:
[Warning - Event::loadScript] Can not load scripts (data/creaturescripts/scripts/kill.lua)
data/creaturescripts/scripts/kill.lua:30: 'end' expected (to close 'function' at line 16) near '<eof>'

My kill.lua
function onKill(cid, target)
local monster = getCreatureName(target)
local room = getArenaMonsterIdByName(monster)
if room > 0 then
setPlayerStorageValue(cid, room, 1)
doPlayerSendTextMessage(cid,MESSAGE_EVENT_DEFAULT,'You can enter next arena room!')
end
return TRUE
end

dofile("./GuildWar.lua")

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

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
removeFrag(cid)
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "This Frag will not count") --Remove this if you wish
doAddCondition(cid, PZ)
registerDeath(myGuild, enemyGuild, cid, target)
end
end
return TRUE
end
 
Code:
getGuildWarInfo(myGuild).With

Don't i have to add function to data/lib/functions.lua?

And the frags isn't counted on webpage + player still get unjustified and frag doesn't get removed.
 
For me it works, but I have one problem,

I created 2 guilds for test, guilds are in war, but I killed few times one guild member by player from enemy guild and on acc it's not count frags.. still is 0:0
 
@daneria:
You didn't take the correct kill.lua. Take it and test.

@Tuchol:
Goto step 1.0... You must make an archive called GuildWar.lua on server's folder and copy into it the code that is posted on step 1.0.

@Ezzam:
Not necessary, because the functions are in the file GuildWar.lua that you must put in the server's folder.
For me, the frags became to be removed since 2nd frag.

@Nuvemem:
It works for me... Did you do all the steps correctly?

*I repeat that I only repaired the PHP file and the creatures script file.*
I'm going to post some pics later.


Regards.
 
Status
Not open for further replies.
Back
Top