GeKirAh
Banned User
Hello Ot-land!!!
Credits:
*Nahruto
*Gekirah
I'm Here to release the guild war system!!!
Lets go!!! :}
IT work with TFS 0.3b3+
Give some reputation for me, or donations!!!
Donations with paypal to email:
[email protected]
Lets go to tutorial!!! :}
1.0Creat an file with name GuildWar.lua with your OT-Server folder {the same folder from distro}, and wrote that with this new lua archive!!!:
2.0Create an file with folder: data\creaturescripts\scripts with name: Kill.lua and wrote this:
3.0 add to creaturescripts.xml {it are with creaturescripts folder}:
add a line with it:
4.0 Create an file with folder {data\globalevents\cripts} with name wars.lua, and write that!!!
5.0add line with globalevents.xml {its with globalevents folder} and write that with this line:
6.0Create an file with data\talkactions\scripts, with a name GuildWar.lua and write that:
7.0Add line to talkactions.xml {its with talkactions folder} and add that:
THE THINGS FROM SERVER, ARE DONE, NOW LETS CONFIG THE WEBSITE!!!
8.0Create an file with name wars.php, with htdocs folder,
and write this:
9.0Add to database this:
GUILD-WAR SYSTEM DONE!!!
ABOUT:
Its not only guild war system!!! It have too Bounty hunter system
and Arena system {Working with all TFS version!!!}
To it work with the 0.3.4 {tibia 8.4x client!!!} you need to add return!!!
I WILL RELEASE ARENA+BOUNTY HUNTER SYSTEM, IN SOME TIME!!!
PLEASE!!!
GIVE ME SOME DONATIONS!!!
Any problem?
Post here!!!
How to use?
to invite one guild to war:
/war-invite GUILDNAME
to accept war, invited from one enemy
/war-accept
to reject an convite to war!!!
/war-reject
to cancel the war
/war-cancel
to challange war
/war-challenge
to cancel invitation to war {when enemmy not accepted!!!}
/war-cancel-invite
THANKS A LOOT OT-LAND!!!
PLEASE GIVE ME SOME DONATIONS
TO MY PAYPAL EMAIL:
[email protected]
Rep++ please!!!:}
Thanks a loot, yours GeKirAh...
Credits:
*Nahruto
*Gekirah
I'm Here to release the guild war system!!!
Lets go!!! :}
IT work with TFS 0.3b3+
Give some reputation for me, or donations!!!
Donations with paypal to email:
[email protected]
Lets go to tutorial!!! :}
1.0Creat an file with name GuildWar.lua with your OT-Server folder {the same folder from distro}, and wrote that with this new lua archive!!!:
Code:
DelayToCancel = 24 * 60 * 60 --minutes
Maps = {
["map 1"] =
{
Guild1Pos = {x=998, y=1006, z=7},
Guild2Pos = {x=1002, y=1006, z=7}
},
["map 2"] =
{
Guild1Pos = {x=994, y=1004, z=6},
Guild2Pos = {x=1000, y=1003, z=6}
}
}
TimeToTeleport = 1 --minutes, when star a challenge
StopBattle = TRUE --Stop battle after X time ? TRUE / FALSE
TimeToStop = 60 --Minutes Time to Stop if StopBattle = TRUE.
--Cancel messages~
CancelMessagesWar = {
--Message when player try accept/reject/cancel a war but there is no a invitation.
[1] = "Not pending invitations.",
--Message when the player is not the guild leader.
[2] = "Only Guild Leader can execute this command.",
--Message when try Cancel the invitation but the war is already accepted.
[3] = "The war is already accepted.",
--MEssage when the invited guild name is not correct or does not exist.
[4] = "Not correct guild name.",
--Message when try invite any guild to a war but his guild already have a war or a pending invitation.
[5] = "Your guild is already in war or have a pending invitation.",
--Same of the cancel message 5 but the the enemy guild.
[6] = "This guild is already in war or have a pending invitation.",
--Message when use invite command but not write guild name.
[7] = "Command needs param.",
--Message when try invite his guild.
[8] = "You can\´t invite you guild.",
--Message when the map name is not correct.
[9] = "Please write a correct name.",
--Message when try go to any map but the guild is have no received/sent any war invitation
[10] = "Your guild is not in any war.",
--When try to cancel a war before the delay
[11] = "You should wait ".. DelayToCancel .." minutes to cancel the war"
}
--Broadcast messages when invite/accept/reject/cancel ~ Remember the Spaces.
BroadCast_Type = MESSAGE_EVENT_ADVANCE
BroadCast = {
--Message when inviting
[1] =
{
"Guild ",
--Here will be the guild name
" have invited guild ",
--Here will be the invited guild name
" to have a war."
},
--Message when accept.
[2] =
{
"Guild ",
--Here will be the guild name
" have accepted the invitation of the guild " ,
--Here will be the name of the guild who have invited em.
" to have a war."
},
--Message when reject.
[3] =
{
"Guild ",
--Here will be the guild name
" have rejected the invitation of the guild " ,
--Here will be the name of the guild who have invited em.
" to have a war."
},
--Message when cancel.
[4] =
{
"Guild ",
--Here will be the guild name
" have canceled the invitation to the guild " ,
--Here will be the name of the guild who have invited em.
" to have a war."
},
--Message whenstar a battle..
[5] =
{
"Guild ",
--Here will be the guild name
" and guild " ,
--Here will be the name of the guild who have invited em.
" will have a battle in the map :"
},
--message when a battle ends.
[6] =
{
"The battle betwen guild ",
--Here will be the guild name
" and guild " ,
--Here will be the name of the guild who have invited em.
" its over."
},
}
--Functions ~.
function getGuildWarInfo(id)
local Info = db.getResult("SELECT `invited_to`, `invited_by`, `in_war_with`,`war_time` FROM `guilds` WHERE `id` = " .. id .. "")
if Info:getID() ~= LUA_ERROR then
local invTo, invBy, warWith, Time = Info:getDataInt("invited_to"), Info:getDataInt("invited_by"), Info:getDataInt("in_war_with"), Info:getDataInt("war_time")
Info:free()
return {To = invTo, By = invBy, With = warWith, T = Time}
end
return LUA_ERROR
end
function getGuildNameById(id)
local Info = db.getResult("SELECT `name` FROM `guilds` WHERE `id` = " .. id .. "")
if Info:getID() ~= LUA_ERROR then
local Name = Info:getDataString("name")
Info:free()
return Name
end
return LUA_ERROR
end
function GuildIsInPEace(id)
local Info = getGuildWarInfo(id)
return (Info.To == 0 and Info.By == 0 and Info.With == 0)
end
function doInviteToWar(myGuild, enemyGuild)
db.executeQuery("UPDATE `guilds` SET `invited_to` = ".. enemyGuild .." WHERE `id` = ".. myGuild .."")
db.executeQuery("UPDATE `guilds` SET `invited_by` = ".. myGuild .." WHERE `id` = ".. enemyGuild .."")
end
function WarAccept(myGuild, enemyGuild)
local StartTime = os.time()
db.executeQuery("UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `war_time` = ".. StartTime ..", `in_war_with` = ".. myGuild ..", `kills` = 0, `show` = 1 WHERE `id` = ".. enemyGuild .."")
db.executeQuery("UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `war_time` = ".. StartTime ..", `in_war_with` = ".. enemyGuild ..", `kills` = 0, `show` = 0 WHERE `id` = ".. myGuild .."")
end
function cleanInfo(myGuild)
db.executeQuery("UPDATE `guilds` SET `invited_to` = 0, `invited_by` = 0, `war_time` = 0, `in_war_with` = 0, `kills` = 0, `show` = 0 WHERE `id` = ".. myGuild .."")
end
function registerDeath(myGuild, enemyGuild, cid, target)
db.executeQuery("INSERT INTO `deaths_in_wars` (`guild_id`, `player_id`, `killer_guild`, `killer`, `date`) VALUES ("..enemyGuild..", "..getPlayerGUID(target)..", "..myGuild..", "..getPlayerGUID(cid)..", " .. os.time() ..");")
db.executeQuery("UPDATE `guilds` SET `kills` = `kills` + 1 WHERE `id` = ".. myGuild .."")
end
function StopWar(myGuild, enemyGuild)
cleanInfo(myGuild)
cleanInfo(enemyGuild)
removeDeaths(myGuild)
removeDeaths(enemyGuild)
end
function removeDeaths(id)
db.executeQuery("DELETE FROM `deaths_in_wars` WHERE `guild_id` = " ..id .. ";")
end
function WeAreInWar(myGuild, enemyGuild)
local myGuildInfo = getGuildWarInfo(myGuild)
local enemyGuildInfo = getGuildWarInfo(enemyGuild)
if myGuild == enemyGuildInfo.With and enemyGuild == myGuildInfo.With then
if enemyGuildInfo.ON == 1 and myGuildInfo.ON == 1 then
return TRUE
end
end
return FALSE
end
function getOnlineMembers(id)
local PlayersOnline = getPlayersOnline()
local MembersOnline = {}
for i, pid in ipairs(PlayersOnline) do
if id == getPlayerGuildId(PlayersOnline[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() ~= LUA_ERROR then
while true do
table.insert(GuildW, res:getDataInt "id")
if not res:next() then
break
end
end
res:free()
end
return GuildW
end
function guildExist(nom)
local Get = db.getResult("SELECT `id` FROM `guilds` WHERE `name` = " .. db.escapeString(nom) .. ";")
if Get:getID() ~= LUA_ERROR then
local ret = Get:getDataInt("id")
Get:free()
return ret
end
return LUA_ERROR
end
function StarWar(x)
teleportGuild(x.myGuild, Maps[x.map].Guild1Pos)
teleportGuild(x.enemyGuild, Maps[x.map].Guild2Pos)
--[[
putWarOn(x.myGuild, x.enemyGuild)
if StopBattle == TRUE then
addEvent(StopWarNow, 60 * 1000, {myGuild = x.myGuild, enemyGuild = x.enemyGuild})
end
]]
end
--[[
function StopWarNow(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
]]
2.0Create an file with folder: data\creaturescripts\scripts with name: Kill.lua and wrote this:
Code:
dofile("./arena.lua")
dofile("./GuildWar.lua")
dofile("./bounty.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
local Target = getPlayerGUID(target)
if IsHunted(Target) == TRUE then
if isKilled(Target) == FALSE then
doPlayerAddMoney(cid, GetReward(Target))
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR,"Congratulations you received " .. GetReward(Target) .. " GPs for killing "..getCreatureName(target)..".")
UpdateKiller(getPlayerGUID(target), getPlayerGUID(cid))
end
end
end
if getPlayerStorageValue(cid, isIN) == 1 then
local Room = getArenaMonsterIdByName(getCreatureName(target))
if Room ~= 0 then
setPlayerStorageValue(cid, Room, 1)
doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, Cancel[8])
end
end
return TRUE
end
3.0 add to creaturescripts.xml {it are with creaturescripts folder}:
add a line with it:
Code:
<event type="kill" name="PlayerKill" event="script" value="kill.lua"/>
4.0 Create an file with folder {data\globalevents\cripts} with name wars.lua, and write that!!!
Code:
dofile("./GuildWar.lua")
function onThink(interval, lastExecution)
for _, id in ipairs(getGuildsWithWar()) do
local Check = db.getResult("SELECT `name` FROM `guilds` WHERE id = ".. getGuildWarInfo(id).With .."")
if Check:getID() == LUA_ERROR then
cleanInfo(id)
end
end
return TRUE
end
5.0add line with globalevents.xml {its with globalevents folder} and write that with this line:
<globalevent name="wars" interval="1800" event="script" value="wars.lua"/> <!--1800 is 30 minutes-->
6.0Create an file with data\talkactions\scripts, with a name GuildWar.lua and write that:
Code:
dofile("./GuildWar.lua")
function onSay(cid, words, param)
if getPlayerGuildLevel(cid) == GUILDLEVEL_LEADER then
local myGuild = getPlayerGuildId(cid)
if words == "/war-invite" then
if GuildIsInPEace(myGuild) == true then
if param ~= "" then
if guildExist(param) ~= LUA_ERROR then
local invitedGuild = getGuildId(param)
if invitedGuild ~= LUA_ERROR then
if invitedGuild ~= myGuild then
if GuildIsInPEace(invitedGuild) == true then
doInviteToWar(myGuild, invitedGuild)
doBroadcastMessage(BroadCast[1][1] ..getPlayerGuildName(cid).. BroadCast[1][2] ..getGuildNameById(invitedGuild).. BroadCast[1][3], BroadCast_Type)
else
doPlayerSendCancel(cid, CancelMessagesWar[6])
end
else
doPlayerSendCancel(cid, CancelMessagesWar[8])
end
else
doPlayerSendCancel(cid, CancelMessagesWar[4])
end
else
doPlayerSendCancel(cid, CancelMessagesWar[4])
end
else
doPlayerSendCancel(cid, CancelMessagesWar[7])
end
else
doPlayerSendCancel(cid, CancelMessagesWar[5])
end
elseif words == "/war-accept" then
if getGuildWarInfo(myGuild).By ~= 0 then
local enemyGuild = getGuildWarInfo(myGuild).By
doBroadcastMessage(BroadCast[2][1] ..getPlayerGuildName(cid).. BroadCast[2][2] ..getGuildNameById(enemyGuild).. BroadCast[2][3], BroadCast_Type)
WarAccept(myGuild, enemyGuild)
else
doPlayerSendCancel(cid, CancelMessagesWar[1])
end
elseif words == "/war-reject" then
if getGuildWarInfo(myGuild).By ~= 0 then
doBroadcastMessage(BroadCast[3][1] ..getPlayerGuildName(cid).. BroadCast[3][2] ..getGuildNameById(getGuildWarInfo(myGuild).By).. BroadCast[3][3], BroadCast_Type)
cleanInfo(getGuildWarInfo(myGuild).By)
cleanInfo(myGuild)
else
doPlayerSendCancel(cid, CancelMessagesWar[1])
end
elseif words == "/war-cancel-invite" then
if getGuildWarInfo(myGuild).To ~= 0 then
if getGuildWarInfo(myGuild).With == 0 then
doBroadcastMessage(BroadCast[4][1] ..getPlayerGuildName(cid).. BroadCast[4][2] ..getGuildNameById(getGuildWarInfo(myGuild).To).. BroadCast[4][3], BroadCast_Type)
cleanInfo(getGuildWarInfo(myGuild).To)
cleanInfo(myGuild)
else
doPlayerSendCancel(cid, CancelMessagesWar[3])
end
else
doPlayerSendCancel(cid, CancelMessagesWar[1])
end
elseif words == "/war-challenge" then
local map = Maps[param]
if map then
if getGuildWarInfo(myGuild).With ~= 0 and getGuildWarInfo(myGuild).ON == 0 then
local enemyGuild = getGuildWarInfo(myGuild).With
addEvent(StarWar, 15 * 1000, {myGuild = myGuild, enemyGuild = enemyGuild, map = param})
doBroadcastMessage(BroadCast[5][1] ..getPlayerGuildName(cid).. BroadCast[5][2] ..getGuildNameById(enemyGuild).. BroadCast[5][3] .. param ..".", BroadCast_Type)
else
doPlayerSendCancel(cid, CancelMessagesWar[10])
end
else
doPlayerSendCancel(cid, CancelMessagesWar[9])
end
elseif words == "/war-cancel" then
local enemy = getGuildWarInfo(myGuild).With
if enemy ~= 0 then
if (os.time() - getGuildWarInfo(myGuild).T) >= (60 * DelayToCancel) then
StopWar(myGuild, enemy)
doBroadcastMessage(BroadCast[6][1] ..getGuildNameById(myGuild).. BroadCast[6][2] ..getGuildNameById(enemy).. BroadCast[6][3], BroadCast_Type)
else
doPlayerSendCancel(cid, CancelMessagesWar[11])
end
else
doPlayerSendCancel(cid, CancelMessagesWar[10])
end
end
else
doPlayerSendCancel(cid, CancelMessagesWar[2])
end
local file = io.open("data/logs/Wars.txt", "a")
file:write("".. os.date("%d %B %Y %X ", os.time()) .." --> "..getCreatureName(cid)..": "..words.." "..param.."\n")
file:close()
return TRUE
end
7.0Add line to talkactions.xml {its with talkactions folder} and add that:
Code:
<!--Guilds Wars-->
<talkaction words="/war-invite" script="GuildWar.lua" />
<talkaction words="/war-accept" script="GuildWar.lua" />
<talkaction words="/war-reject" script="GuildWar.lua" />
<talkaction words="/war-cancel" script="GuildWar.lua" />
<talkaction words="/war-challenge" script="GuildWar.lua" />
<talkaction words="/war-cancel-invite" script="GuildWar.lua" />
THE THINGS FROM SERVER, ARE DONE, NOW LETS CONFIG THE WEBSITE!!!
8.0Create an file with name wars.php, with htdocs folder,
and write this:
Code:
<?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>
* /war-invite :
<FONT SIZE=1 COLOR=#04B404>
Send a invitation to start a war.<br>
Example: /war-invite Pain Factory
</FONT><br>
* /war-accept :
<FONT SIZE=1 COLOR=#04B404>
Accept the invitation to start a war.
</FONT><br>
* /war-reject :
<FONT SIZE=1 COLOR=#04B404>
Reject the invitation to start a war.
</FONT><br>
* /war-cancel-invite :
<FONT SIZE=1 COLOR=#04B404>
Cancel the invitation already snet to star a war.
</FONT><br>
* /war-cancel :
<FONT SIZE=1 COLOR=#04B404>
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.
</FONT>
</P>
<br>
<br>
';
$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
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)
{
$stats .="
<TR BGCOLOR=\"".$config['site'][($k % 2 == 1 ? 'light' : 'dark').'border']."\">
<TD>
<center>
<b>
<a href='index.php?subtopic=guilds&action=show&guild=" . $v[gname] . "'>$v[gname]</a>
</b>
</center>
</TD>
<TD>V/s</TD>
<TD>
<center>
<b>
<a href='index.php?subtopic=guilds&action=show&guild=" . $v[wgname] . "'>$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
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[iname] . "'>$v[iname]</a>
</b>
</center>
</TD>
<TD>
<center>
<b>
<a href='index.php?subtopic=guilds&action=show&guild=" . $v[igname] . "'>$v[igname]</a>
</b>
</center>
</TD>
<TD></TD>
</TR>
";
}
$main_content .= '
<center>
<h1>
Pending invitatios
</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 invitations in '.$config['server']['serverName'].'.
</TD>
</TR>
</TABLE>
';
} 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->getEnemy());
$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)
{
$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)
{
$totDeaths2 = $q[n];
}
$membersDeaths2 .="
<center>
<b>
<a href='index.php?subtopic=characters&name=" . $v[name] . "'>$v[name]</a> ($totDeaths)
</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[gtime]) . "
</center>
</TD>
</TR>
";
}
$main_content .= "
<center>
<b>
<h2>
War betwen
<a href='index.php?subtopic=guilds&action=show&guild=" . $guild->getName() . "'>
" . $guild->getName() . "</a>
and
<a href='index.php?subtopic=guilds&action=show&guild=" . $guild2->getName() . "'>
" . $guild2->getName() . "</a>
.
</h2>
<br>
Started at : </b>" . date("d/m/y H:i:s", $guild->getWarTime()) . "
<br>
<br>
<b>
Total Frags by " . $guild->getName() . " = " . $guild->getScore() . "
<br>
<br>
Total Frags by " . $guild2->getName() . " = " . $guild2->getScore() . "
<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 . "'>" . $mostDeadName . "</a> ($mostDeadNum)
<br>
<br>
The most dead of " . $guild2->getName() . " = <a href='index.php?subtopic=characters&name=" . $mostDeadName2 . "'>" . $mostDeadName2 . "</a> ($mostDeadNum2)
</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>
";
}
?>
9.0Add to database this:
Code:
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 `hunts` (
`hunted` INT( 11 ) NOT NULL ,
`hunter` INT( 11 ) NOT NULL ,
`reward` INT( 11 ) NOT NULL ,
`killer` INT( 11 ) NOT NULL
) TYPE = MYISAM
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
ALTER TABLE `deaths_in_wars` ADD `date` INT( 11 ) NOT NULL ;
GUILD-WAR SYSTEM DONE!!!
ABOUT:
Its not only guild war system!!! It have too Bounty hunter system
and Arena system {Working with all TFS version!!!}
To it work with the 0.3.4 {tibia 8.4x client!!!} you need to add return!!!
I WILL RELEASE ARENA+BOUNTY HUNTER SYSTEM, IN SOME TIME!!!
PLEASE!!!
GIVE ME SOME DONATIONS!!!
Any problem?
Post here!!!
How to use?
to invite one guild to war:
/war-invite GUILDNAME
to accept war, invited from one enemy
/war-accept
to reject an convite to war!!!
/war-reject
to cancel the war
/war-cancel
to challange war
/war-challenge
to cancel invitation to war {when enemmy not accepted!!!}
/war-cancel-invite
THANKS A LOOT OT-LAND!!!
PLEASE GIVE ME SOME DONATIONS
TO MY PAYPAL EMAIL:
[email protected]
Rep++ please!!!:}
Thanks a loot, yours GeKirAh...
Last edited: