• 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!
  • New resources must be posted under Resources tab. A discussion thread will be created automatically, you can't open threads manually anymore.

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

Status
Not open for further replies.
[25/09/2009 11:27:49] [C]: in function 'error'
[25/09/2009 11:27:49] data/lib/database.lua:60: in function 'getDataInt'
[25/09/2009 11:27:49] ./GuildWar.lua:212: in function 'getGuildsWithWar'
[25/09/2009 11:27:49] data/globalevents/scripts/wars.lua:4: in function <data/globalevents/scripts/wars.lua:3>
[25/09/2009 11:27:49] [Error - GlobalEvents: nThink] Couldn't execute event: wars

Please someone help me with that, bump~
 
Converted to Mods(tfs 3.5pl1)
Fixed losing Rs bug.

Lua:
<?xml version="1.0" encoding="UTF-8"?>
<mod name="Guild War System" version="1.0" author="Nahruto/christiandb/GeKirAh/Xampy/Babalow" contact="http://otland.net/f81/fixed-guild-war-system-website-include-all-will-not-count-frags-forgotten-server-0-3-a-32157/" enabled="yes">
    <description>
        Guild War System.
    </description>

    <config name="guild_war_lib"><![CDATA[
        DelayToCancel = 24 * 60 * 7 --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 your 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.
                    " is 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() ~= -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 LUA_ERROR
        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 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[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 getTilePzInfo(getCreaturePosition(Members[i])) == TRUE then
                        doTeleportThing(Members[i], pos, FALSE)
                        doSendMagicEffect(pos, CONST_ME_TELEPORT)
                        doSendMagicEffect(getCreaturePosition(Members[i]), 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() ~= -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 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(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="/war-help;/war-invite;/war-accept;/war-reject;/war-cancel;/war-cancel-invite" event="buffer"><![CDATA[
        domodlib('guild_war_lib')
        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
            elseif words == "/war-help" then
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Use: /war-invite guildname; /war-accept; /war-reject; /war-cancel; /war-challenge; /war-cancel-invite.")
            end
        else
            doPlayerSendCancel(cid, CancelMessagesWar[2])
        end
        if words ~= "/war-help" then
            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()
        end
        _result = true
    ]]></talkaction>

    <globalevent name="wars" interval="1810" event="buffer"><![CDATA[
        domodlib('guild_war_lib')
        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
        _result = true
    ]]></globalevent>

    <event type="login" name="WarLogin" event="buffer"><![CDATA[
        registerCreatureEvent(cid, "WarAttack")
        registerCreatureEvent(cid, "WarKill")
        _result = true
    ]]></event>

    <event type="combat" name="WarAttack" event="script"><![CDATA[
        domodlib('guild_war_lib')
        function onCombat(cid, target)
            if isPlayer(cid) and isPlayer(target) then
                local myGuild = getPlayerGuildId(cid)
                local enemyGuild = getPlayerGuildId(target)
                if myGuild ~= 0 and enemyGuild ~= 0 then
                    if enemyGuild == getGuildWarInfo(myGuild).With then
                        if getPlayerSkullType(target) == 0 then
                            doCreatureSetSkullType(target, 1)
                        end
                    end
                end
            end
            return true
        end
    ]]></event>

    <event type="kill" name="WarKill" event="script"><![CDATA[
        domodlib('guild_war_lib')
        local PZ = createConditionObject(CONDITION_INFIGHT)
        setConditionParam(PZ, CONDITION_PARAM_TICKS, getConfigInfo('whiteSkullTime'))

        function onKill(cid, target)
            if isPlayer(cid) and isPlayer(target) 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)
                    end
                end
            end
            return true
        end
    ]]></event>
</mod>

[25/09/2009 13:47:57] Loading GuildWars.xml...[Warning - TalkAction::configureEvent] Duplicate registered talkaction with words: /war-invite
[25/09/2009 13:47:57] [Warning - TalkAction::configureEvent] Duplicate registered talkaction with words: /war-accept
[25/09/2009 13:47:57] [Warning - TalkAction::configureEvent] Duplicate registered talkaction with words: /war-reject
[25/09/2009 13:47:57] [Warning - TalkAction::configureEvent] Duplicate registered talkaction with words: /war-cancel
[25/09/2009 13:47:57] [Warning - TalkAction::configureEvent] Duplicate registered talkaction with words: /war-cancel-invite
[25/09/2009 13:47:57] [Warning - GlobalEvents::configureEvent] Duplicate registered globalevent with name: wars

what is wrong?
 
[25/09/2009 13:47:57] Loading GuildWars.xml...[Warning - TalkAction::configureEvent] Duplicate registered talkaction with words: /war-invite
[25/09/2009 13:47:57] [Warning - TalkAction::configureEvent] Duplicate registered talkaction with words: /war-accept
[25/09/2009 13:47:57] [Warning - TalkAction::configureEvent] Duplicate registered talkaction with words: /war-reject
[25/09/2009 13:47:57] [Warning - TalkAction::configureEvent] Duplicate registered talkaction with words: /war-cancel
[25/09/2009 13:47:57] [Warning - TalkAction::configureEvent] Duplicate registered talkaction with words: /war-cancel-invite
[25/09/2009 13:47:57] [Warning - GlobalEvents::configureEvent] Duplicate registered globalevent with name: wars

what is wrong?

Just delete old scripts from talkactions and globalevents///

This mod contains all what u need




@@@
When im doing /war-challenge GuildName or without name it always says "Please write a correct name" whats wrong?
 
I forgot to add it ;x
<talkaction words="/war-help;/war-invite;/war-accept;/war-reject;/war-cancel;/war-cancel-invite" event="buffer">
change to
<talkaction words="/war-help;/war-invite;/war-accept;/war-reject;/war-cancel;/war-cancel-invite;/war-challenge" event="buffer">
 
ops.. I looked in the wrong post of mine....
It should be map number I think..
/war-challenge 1/2/3/4...n
 
Still the same :|

Edit:
Hm ok its full name of map >.>
/war-challenge map 1
but now I have some problems with invitation wars after they finished, will edit when I check it more times.


edit2: all is working for me :) thank u for script.
 
Last edited:
Hello,

I using 0.3.5pl1 and got following errors.

Please help us to found a solution.

I tried what i can but no success!

PHP:
[26/09/2009 15:18:15] Lua Script Error: [GlobalEvent Interface] 
[26/09/2009 15:18:15] data/globalevents/scripts/wars.lua:onThink

[26/09/2009 15:18:15] data/lib/database.lua:60: [Result:getDataInt] Result not set!
[26/09/2009 15:18:15] stack traceback:
[26/09/2009 15:18:15] 	[C]: in function 'error'
[26/09/2009 15:18:15] 	data/lib/database.lua:60: in function 'getDataInt'
[26/09/2009 15:18:15] 	./GuildWar.lua:212: in function 'getGuildsWithWar'
[26/09/2009 15:18:15] 	data/globalevents/scripts/wars.lua:4: in function <data/globalevents/scripts/wars.lua:3>
[26/09/2009 15:18:15] [Error - GlobalEvents::think] Couldn't execute event: wars

[26/09/2009 15:48:16] Lua Script Error: [GlobalEvent Interface]
[26/09/2009 15:48:16] data/globalevents/scripts/wars.lua:eek:nThink

PHP:
[26/09/2009 15:48:16] data/lib/database.lua:60: [Result:getDataInt] Result not set!
[26/09/2009 15:48:16] stack traceback:
[26/09/2009 15:48:16] 	[C]: in function 'error'
[26/09/2009 15:48:16] 	data/lib/database.lua:60: in function 'getDataInt'
[26/09/2009 15:48:16] 	./GuildWar.lua:212: in function 'getGuildsWithWar'
[26/09/2009 15:48:16] 	data/globalevents/scripts/wars.lua:4: in function <data/globalevents/scripts/wars.lua:3>
[26/09/2009 15:48:16] [Error - GlobalEvents::think] Couldn't execute event: wars

PHP:
[26/09/2009 16:48:18] Lua Script Error: [GlobalEvent Interface] 
[26/09/2009 16:48:18] data/globalevents/scripts/wars.lua:onThink
 
Hello,

I using 0.3.5pl1 and got following errors.

Please help us to found a solution.

I tried what i can but no success!

PHP:
[26/09/2009 15:18:15] Lua Script Error: [GlobalEvent Interface] 
[26/09/2009 15:18:15] data/globalevents/scripts/wars.lua:onThink

[26/09/2009 15:18:15] data/lib/database.lua:60: [Result:getDataInt] Result not set!
[26/09/2009 15:18:15] stack traceback:
[26/09/2009 15:18:15] 	[C]: in function 'error'
[26/09/2009 15:18:15] 	data/lib/database.lua:60: in function 'getDataInt'
[26/09/2009 15:18:15] 	./GuildWar.lua:212: in function 'getGuildsWithWar'
[26/09/2009 15:18:15] 	data/globalevents/scripts/wars.lua:4: in function <data/globalevents/scripts/wars.lua:3>
[26/09/2009 15:18:15] [Error - GlobalEvents::think] Couldn't execute event: wars



PHP:
[26/09/2009 15:48:16] data/lib/database.lua:60: [Result:getDataInt] Result not set!
[26/09/2009 15:48:16] stack traceback:
[26/09/2009 15:48:16] 	[C]: in function 'error'
[26/09/2009 15:48:16] 	data/lib/database.lua:60: in function 'getDataInt'
[26/09/2009 15:48:16] 	./GuildWar.lua:212: in function 'getGuildsWithWar'
[26/09/2009 15:48:16] 	data/globalevents/scripts/wars.lua:4: in function <data/globalevents/scripts/wars.lua:3>
[26/09/2009 15:48:16] [Error - GlobalEvents::think] Couldn't execute event: wars

PHP:
[26/09/2009 16:48:18] Lua Script Error: [GlobalEvent Interface] 
[26/09/2009 16:48:18] data/globalevents/scripts/wars.lua:onThink

Same problem here: "RESULT NOT SET"
Hello,

this script have helped me made by babalow.

thanks!

PHP:
  <?xml version="1.0" encoding="UTF-8"?>
<mod name="Guild War System" version="1.0" author="Nahruto/christiandb/GeKirAh/Xampy/Babalow" contact="dunno.com" enabled="yes">
    <description>
        Guild War System.
    </description>

    <config name="guild_war_lib"><![CDATA[
        DelayToCancel = 24 * 60 * 7 --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 your 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.
                    " is 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() ~= -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 LUA_ERROR
        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 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[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 getTilePzInfo(getCreaturePosition(Members[i])) == TRUE then
                        doTeleportThing(Members[i], pos, FALSE)
                        doSendMagicEffect(pos, CONST_ME_TELEPORT)
                        doSendMagicEffect(getCreaturePosition(Members[i]), 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() ~= -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 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(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="/war-help;/war-invite;/war-accept;/war-reject;/war-cancel;/war-cancel-invite;/war-challenge" event="script"><![CDATA[
        domodlib('guild_war_lib')
        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) ~= 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
                elseif words == "/war-help" then
                    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Use: /war-invite guildname; /war-accept; /war-reject; /war-cancel; /war-challenge; /war-cancel-invite.")
                end
            else
                doPlayerSendCancel(cid, CancelMessagesWar[2])
            end
            if words ~= "/war-help" then
                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()
            end
            return true
        end
    ]]></talkaction>

    <globalevent name="wars" interval="1810" event="buffer"><![CDATA[
        domodlib('guild_war_lib')
        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
        _result = true
    ]]></globalevent>

    <event type="login" name="WarLogin" event="buffer"><![CDATA[
        registerCreatureEvent(cid, "WarAttack")
        registerCreatureEvent(cid, "WarKill")
        _result = true
    ]]></event>

    <event type="combat" name="WarAttack" event="script"><![CDATA[
        domodlib('guild_war_lib')
        function onCombat(cid, target)
            if isPlayer(cid) and isPlayer(target) then
                local myGuild = getPlayerGuildId(cid)
                local enemyGuild = getPlayerGuildId(target)
                if myGuild ~= 0 and enemyGuild ~= 0 then
                    if enemyGuild == getGuildWarInfo(myGuild).With then
                        if getPlayerSkullType(target) == 0 then
                            doCreatureSetSkullType(target, 1)
                        end
                    end
                end
            end
            return true
        end
    ]]></event>

    <event type="kill" name="WarKill" event="script"><![CDATA[
        domodlib('guild_war_lib')
        function onKill(cid, target, lastHit)
            if isPlayer(cid) and isPlayer(target) then
                local myGuild = getPlayerGuildId(cid)
                local enemyGuild = getPlayerGuildId(target)
                if myGuild ~= 0 and enemyGuild ~= 0 then
                    if enemyGuild == getGuildWarInfo(myGuild).With then
                        registerDeath(myGuild, enemyGuild, cid, target)
                    end
                end
            end
            return true
        end
    ]]></event>
</mod>

You need to remove all other things! This script is a "all-in-one" package


best regards

eSpox
 
Code:
The Following Errors Have Occurred:
# Guild with ID 0 doesn't exist.

this should work


<?PHP
//Litle Config
$MaxShow = 20;
//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 a invitation to start a war.<br>
<u>Example</u>: /war-invite Pain Factory
</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 snet to star a war.
</FONT><br>
* <b>/war-cancel</b> :
<FONT SIZE=1 COLOR=green>
Finish the currect war, can only be used after 1 day.
</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, g.kills AS kills, wg.kills AS ekills, g.show AS s, g.id AS gid, wg.id AS wgid
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 == 1)
{
$stats .="
<TR BGCOLOR=\"".$config['site'][($k % 2 == 1 ? 'light' : 'dark').'border']."\">
<TD>
<center>
<b>
<a href='index.php?subtopic=guilds&action=show&guild=" . $v[gid] . "'>$v[gname]</a>
</b>
</center>
</TD>
<TD>V/s</TD>
<TD>
<center>
<b>
<a href='index.php?subtopic=guilds&action=show&guild=" . $v[wgid] . "'>$v[wgname]</a>
</b>
</center>
</TD>
<TD>
<center>
" . date("d/m/y H:i:s", $v[gtime]) . "
</center>
</TD>
<TD>
<center>
<a href='index.php?subtopic=wars&action=show&war=" . $v[gid] . "'>{$v[kills]} - {$v[ekills]}</a>
</center>
</TD>
</TR>
";
}
}
$main_content .= '
<center>
<h1>
Guilds Wars
</h1>
</center>
';
if(!$stats) {
$main_content .= '
<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
<TR BGCOLOR="'.$config['site']['vdarkborder'].'">
<TD CLASS=white>
</TD>
</TR>
<TR BGCOLOR='.$config['site']['darkborder'].'>
<TD>
No guilds in war in '.$config['server']['serverName'].' yet.
</TD>
</TR>
</TABLE>
';
} else {
$main_content .= "
<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
<TR BGCOLOR=\"{$config['site']['vdarkborder']}\">
<TD CLASS=white width=25%>
<center><B>Guild</B></center>
</TD>
<TD CLASS=white width=5%>
<B>V/s</B>
</TD>
<TD CLASS=white width=25%>
<center><B>Guild</B></center>
</TD>
<TD CLASS=white width=25%>
<center><B>Started at</B></center>
</TD>
<TD CLASS=white width=20%>
<center><B>Kills</B></center>
</TD>
</TR>
$stats
</TABLE>
";
}

?>

<?PHP
$invitations = $SQL->query("
SELECT ig.name AS igname, i.name AS iname, i.id AS iid, ig.id AS igid


FROM guilds AS i
INNER JOIN guilds AS ig
ON ig.id = i.invited_to
ORDER BY iname ASC LIMIT 50;
");
foreach ($invitations as $k=>$v) {
$invi .="
<TR BGCOLOR=\"".$config['site'][($k % 2 == 1 ? 'light' : 'dark').'border']."\">
<TD>
<center>
<b>
<a href='index.php?subtopic=guilds&action=show&guild=" . $v[iid] . "'>$v[iname]</a>
</b>
</center>
</TD>
<TD>
<center>
<b>
<a href='index.php?subtopic=guilds&action=show&guild=" . $v[igid] . "'>$v[igname]</a>
</b>
</center>
</TD>
<TD></TD>
</TR>
";
}
$main_content .= '
<center>
<h1>
Pending invitations
</h1>
</center>
';
if(!$invi) {
$main_content .= '
<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
<TR BGCOLOR="'.$config['site']['vdarkborder'].'">
<TD CLASS=white>
</TD>
</TR>
<TR BGCOLOR='.$config['site']['darkborder'].'>
<TD>
No pending for war invitations in '.$config['server']['serverName'].'.
</TD>
</TR>
</TABLE>
<br>
<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 Fixed by <a target="blank" href="http://otland.net/members/xampy/">Xampy</a></div>
';
} else {
$main_content .= "
<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
<TR BGCOLOR=\"{$config['site']['vdarkborder']}\">
<TD CLASS=white width=50%>
<center><B>Guild</B></center>
</TD>
<TD CLASS=white width=50%>
<center><B>Invited guild</B></center>
</TD>
</TD>
</TR>
$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() .";
");

foreach ($ranks as $y)
{
$Players = $SQL->query("
SELECT
*
FROM
players
WHERE
rank_id = ". $y[id] ."
ORDER BY
name
DESC;");
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];
}
$membersDeaths .="
<center>
<b>
<a href='index.php?subtopic=characters&name=" . $v[name] . "'>$v[name]</a> ($totDeaths)
</b>
</center>
";
}
}

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

foreach ($ranks2 as $y)
{
$Players = $SQL->query("
SELECT
*
FROM
players
WHERE
rank_id = ". $y[id] ."
ORDER BY
name
DESC;");
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];
}
$membersDeaths2 .="
<center>
<b>
<a href='index.php?subtopic=characters&name=" . $v[name] . "'>$v[name]</a> ($totDeaths2)
</b>
</center>
";
}
}

$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 ($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>
";
}
$main_content .= "
<center>
<b>
<h2>
War betwen
<a href='index.php?subtopic=guilds&action=show&guild=" . $guild->getId() . "'>
" . $guild->getName() . "</a>
and
<a href='index.php?subtopic=guilds&action=show&guild=" . $guild2->getId() . "'>
" . $guild2->getName() . "</a>
.
</h2>
<br>
Started at : </b>" . date("d/m/y H:i:s", $guild->getCustomField(war_time)) . "
<br>
<br>
<b>
Total Frags by " . $guild->getName() . " = " . $guild->getCustomField(kills) . "
<br>
<br>
Total Frags by " . $guild2->getName() . " = " . $guild2->getCustomField(kills) . "
<br>
<br>
Top fragger of " . $guild->getName() . " = <a href='index.php?subtopic=characters&name=" . $TopFraggerName . "'>" . $TopFraggerName . "</a> ($numTop1)
<br>
<br>
Top fragger of " . $guild2->getName() . " = <a href='index.php?subtopic=characters&name=" . $TopFraggerName2 . "'>" . $TopFraggerName2 . "</a> ($numTop2)
<br>
<br>
The most dead of " . $guild->getName() . " = <a href='index.php?subtopic=characters&name=" . $mostDeadName . "'>" . $mostDeadName2 . "</a> ($mostDeadNum2)
<br>
<br>
The most dead of " . $guild2->getName() . " = <a href='index.php?subtopic=characters&name=" . $mostDeadName2 . "'>" . $mostDeadName . "</a> ($mostDeadNum)
</b>
</center>
<br>
<br>
<br>

";

$main_content .= "
<center>
<h1>
Members Deaths
</h1>
<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
<TR BGCOLOR=\"{$config['site']['vdarkborder']}\">
<TD CLASS=white width=50%>
<center>
<B>
". $guild->getName() ."
</B>
</center>
</TD>
<TD CLASS=white width=50%>
<center>
<B>
". $guild2->getName() ."
</B>
</center>
</TD>
</TR>
<TR BGCOLOR=\"".$config['site']['darkborder']."\">
<TD>
$membersDeaths
</TD>
<TD>
$membersDeaths2
</TD>
</TR>


</TABLE>
</center>
<br>
<br>
<br>
<center>
<h1>
Latest frags by ". $guild->getName() ."
</h1>
</center>
<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
<TR BGCOLOR=\"{$config['site']['vdarkborder']}\">
<TD CLASS=white width=35%>
<center>
<B>
Player
</B>
</center>
</TD>
<TD CLASS=white width=35%>
<center>
<B>
Killed by
</B>
</center>
</TD>
<TD CLASS=white width=30%>
<center>
<B>
Date
</B>
</center>
</TD>
</TR>
$kills
</TABLE>
<center>
<h1>
Latest frags by ". $guild2->getName() ."
</h1>
</center>
<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>
<TR BGCOLOR=\"{$config['site']['vdarkborder']}\">
<TD CLASS=white width=35%>
<center>
<B>
Player
</B>
</center>
</TD>
<TD CLASS=white width=35%>
<center>
<B>
Killed by
</B>
</center>
</TD>
<TD CLASS=white width=30%>
<center>
<B>
Date
</B>
</center>
</TD>
</TR>
$kills2
</TABLE>
";
}
?>
 
Help me i can't make guild



HELP HELP HELPHELP HELP HELPHELP HELP HELPHELP HELP HELPHELP HELP HELPHELP HELP HELPHELP HELP HELP
 
I have got this error when i want ex /war-invite Legalis

73651232.png


And ingame is like normal speaking.
 
Please help :/
PHP:
[17/10/2009 21:12:15] [Warning - Event::loadScript] Cannot load script (data/talkactions/scripts/GuildWar.lua)
[17/10/2009 21:12:15] data/talkactions/scripts/GuildWar.lua:21: 'end' expected (to close 'if' at line 12) near '<eof>'
[17/10/2009 21:12:15] [Warning - Event::loadScript] Cannot load script (data/talkactions/scripts/GuildWar.lua)
[17/10/2009 21:12:15] data/talkactions/scripts/GuildWar.lua:21: 'end' expected (to close 'if' at line 12) near '<eof>'
[17/10/2009 21:12:15] [Warning - Event::loadScript] Cannot load script (data/talkactions/scripts/GuildWar.lua)
[17/10/2009 21:12:15] data/talkactions/scripts/GuildWar.lua:21: 'end' expected (to close 'if' at line 12) near '<eof>'
[17/10/2009 21:12:15] [Warning - Event::loadScript] Cannot load script (data/talkactions/scripts/GuildWar.lua)
[17/10/2009 21:12:15] data/talkactions/scripts/GuildWar.lua:21: 'end' expected (to close 'if' at line 12) near '<eof>'
[17/10/2009 21:12:15] [Warning - Event::loadScript] Cannot load script (data/talkactions/scripts/GuildWar.lua)
[17/10/2009 21:12:15] data/talkactions/scripts/GuildWar.lua:21: 'end' expected (to close 'if' at line 12) near '<eof>'
[17/10/2009 21:12:15] [Warning - Event::loadScript] Cannot load script (data/talkactions/scripts/GuildWar.lua)
[17/10/2009 21:12:15] data/talkactions/scripts/GuildWar.lua:21: 'end' expected (to close 'if' at line 12) near '<eof>'
[17/10/2009 21:12:15] [Warning - Event::loadScript] Cannot load script (data/creaturescripts/scripts/war_attack.lua)
[17/10/2009 21:12:15] data/creaturescripts/scripts/war_attack.lua:19: 'end' expected (to close 'function' at line 3) near '<eof>'
 
@christiandb:

For me it's counting 1 frag like 5 times (depends on how many killers). Is there any way to fix this?

PS: check Adaria - Guilds Wars

Change your war_kill.lua from creaturescripts by this:
Lua:
dofile("./GuildWar.lua")

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 myGuild = getPlayerGuildId(cid)
                local enemyGuild = getPlayerGuildId(target)
                if myGuild ~= 0 and enemyGuild ~= 0 then
                        if enemyGuild == getGuildWarInfo(myGuild).With then
                                doAddCondition(cid, PZ)
                                if lastHit == TRUE then
                                    registerDeath(myGuild, enemyGuild, cid, target)
                                end
                        end
                end
        end
        return TRUE
end

@Xal:

Please help :/
PHP:
[17/10/2009 21:12:15] [Warning - Event::loadScript] Cannot load script (data/talkactions/scripts/GuildWar.lua)
[17/10/2009 21:12:15] data/talkactions/scripts/GuildWar.lua:21: 'end' expected (to close 'if' at line 12) near '<eof>'
[17/10/2009 21:12:15] [Warning - Event::loadScript] Cannot load script (data/talkactions/scripts/GuildWar.lua)
[17/10/2009 21:12:15] data/talkactions/scripts/GuildWar.lua:21: 'end' expected (to close 'if' at line 12) near '<eof>'
[17/10/2009 21:12:15] [Warning - Event::loadScript] Cannot load script (data/talkactions/scripts/GuildWar.lua)
[17/10/2009 21:12:15] data/talkactions/scripts/GuildWar.lua:21: 'end' expected (to close 'if' at line 12) near '<eof>'
[17/10/2009 21:12:15] [Warning - Event::loadScript] Cannot load script (data/talkactions/scripts/GuildWar.lua)
[17/10/2009 21:12:15] data/talkactions/scripts/GuildWar.lua:21: 'end' expected (to close 'if' at line 12) near '<eof>'
[17/10/2009 21:12:15] [Warning - Event::loadScript] Cannot load script (data/talkactions/scripts/GuildWar.lua)
[17/10/2009 21:12:15] data/talkactions/scripts/GuildWar.lua:21: 'end' expected (to close 'if' at line 12) near '<eof>'
[17/10/2009 21:12:15] [Warning - Event::loadScript] Cannot load script (data/talkactions/scripts/GuildWar.lua)
[17/10/2009 21:12:15] data/talkactions/scripts/GuildWar.lua:21: 'end' expected (to close 'if' at line 12) near '<eof>'
[17/10/2009 21:12:15] [Warning - Event::loadScript] Cannot load script (data/creaturescripts/scripts/war_attack.lua)
[17/10/2009 21:12:15] data/creaturescripts/scripts/war_attack.lua:19: 'end' expected (to close 'function' at line 3) near '<eof>'
Check your files GuildWar.lua cos' there are two or three files that are called with the same name so, you copied the wrong file to the wrong directory.
 
se tendria que poder estar en war con mas de una guild a la vez :eek:
 
Intentaré hacer el script para mas de una guild en cada bando de la war. Ahora no tengo mucho tiempo por los exámenes y tal... xD
 
Status
Not open for further replies.
Back
Top