Ir para conteúdo

[globalevent] War System! Com Script Para Website (tfs 0.3+)


allan1001

Posts Recomendados

Para quem não conheçe o War System é aquele sistema onde duas guild se declaram em guerra onde então os frags nao sera contados como "Unjusted kills"

 

É preciso TFS 0.3+ & Gesior AAC

 

Bom vamos la então !

 

1.0 - Crie um arquivo com o nome GuildWar.lua dentro da pasta do seu ot , aonde fica o distro, as dll's , etc... e copie este codigo:

 

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©
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.0 - Crie um novo arquivo em: data\creaturescripts\scripts\ com o nome de: war_attack.lua e copie esse codigo:

 

dofile("./GuildWar.lua")

function onAttack(cid, target)
if isPlayer(cid) == TRUE and isPlayer(target) == TRUE then
	local myGuild = getPlayerGuildId(cid)
	local enemyGuild = getPlayerGuildId(target)
	if myGuild ~= 0 and enemyGuild ~= 0 then
		if enemyGuild == getGuildWarInfo(myGuild).With then
			if getPlayerSkullType(cid) == 3 or getPlayerSkullType(cid) == 4 then
				if getPlayerSkullType(target) == 0 then
					doCreatureSetSkullType(cid, 1)
					doCreatureSetSkullType(target, 1)
				end
			end
		end
	end
       end
return TRUE
end

 

2.1 - Crie um novo arquivo em: data\creaturescripts\scripts\ com o nome de: war_kill.lua e copie esse codigo:

 

dofile("./GuildWar.lua")

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

function onKill(cid, target)
if isPlayer(cid) == TRUE and isPlayer(target) == TRUE then
	local myGuild = getPlayerGuildId(cid)
	local enemyGuild = getPlayerGuildId(target)
	if myGuild ~= 0 and enemyGuild ~= 0 then
		if enemyGuild == getGuildWarInfo(myGuild).With then
			doAddCondition(cid, PZ)
			registerDeath(myGuild, enemyGuild, cid, target)
			doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "This frag will not count!")

		end
	end
       end
return TRUE
end

 

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

 

Após:

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

 

4.1 - Adicione isto em: talkactions.xml

 

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

if($action == '')
{
$main_content .= '
<P ALIGN=CENTER>
   <br>
   <FONT SIZE=4 COLOR=#8A0808>
       Como usar...
   </FONT>
   <br>
   <br>
   <FONT SIZE=2 COLOR=#DF0101>
   * <b>/war-invite</b> :
       <FONT SIZE=1 COLOR=green>
           Enviar um convite para iniciar uma War.<br>
           <u>Exemplo</u>: /war-invite Feel the Power
       </FONT><br>
   * <b>/war-accept</b> :
       <FONT SIZE=1 COLOR=green>
           Aceitar o convite para iniciar a War.
       </FONT><br>
   * <b>/war-reject</b> :
       <FONT SIZE=1 COLOR=green>
           Rejeitar o convite.
       </FONT><br>
   * <b>/war-cancel-invite</b> :
       <FONT SIZE=1 COLOR=green>
           Cancelar o convite.
       </FONT><br>
   * <b>/war-cancel</b> :
       <FONT SIZE=1 COLOR=green>
           Terminar a War, so pode ser usado apos 5 dias.
       </FONT><br>
   </FONT>
   <br>
   <FONT SIZE=2 COLOR=#8A0808>
       Esses comandos podem somente ser executados por lideres da guild.<br><br>
       <table border="1"><tr border="1"><td border="1"><h3>Obs:</h3>
       <ul>
       <li>Seu time so ganhara frag se matar quem esta na guild inimiga.</li>
       <li>Se alguen do mesmo time se matar sera descontado um frag da guild.</li>
       <li>Todos os frag da war nao sera contados como "Unjusted kills".</li>
       <li>Quando iniciada uma War so podera ser encerrada apos 5 dias.</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[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[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>
                   " . data("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>
                   Nenhuma guild em War no '.$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=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>
           Invitacoes Pendentes
       </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>
                   Nenhuma invitacao pendente no '.$config['server']['serverName'].'.
               </TD>
           </TR>
       </TABLE>
   <br>
     <div style="text-align: right; margin: 20px auto; font-size: 10px;">
     Script by <a target="blank" href="http://otland.net/members/xampy/">Xampy</a> edited by <a href="http://www.xtibia.com/forum/allan1001-m205633.html">Allan</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 
       data 
   DESC LIMIT ". $MaxShow .";");

$deathsG2 = $SQL->query("
   SELECT 
       * 
   FROM 
       deaths_in_wars 
   WHERE 
       killer_guild = ". $guild2->getId() ." 
   ORDER BY 
       data
   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>
                   " . data("d/m/y   H:i:s", $v[data]) . "
               </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>
                   " . data("d/m/y   H:i:s", $v[data]) . "
               </center>
           </TD>
       </TR>
   ";
}
$main_content .= "
   <center>
   <b>
       <h2>
       Guilds em War 
           <a href='index.php?subtopic=guilds&action=show&guild=" . $guild->getId() . "'>
               " . $guild->getName() . "</a> 
       Versus 
           <a href='index.php?subtopic=guilds&action=show&guild=" . $guild2->getId() . "'>
               " . $guild2->getName() . "</a>
       .
       </h2>
   <br>
   Iniciada em : </b>" . data("d/m/y   H:i:s", $guild->getCustomField(war_time)) . "
   <br>
   <br>
   <b>
   Total Frags da " . $guild->getName() . " = " . $guild->getCustomField(kills) . "
   <br>
   <br>
   Total Frags da " . $guild2->getName() . " = " . $guild2->getCustomField(kills) . "
   <br>
   <br>
   Top fragger da " . $guild->getName() . " = <a href='index.php?subtopic=characters&name=" . $TopFraggerName  . "'>" . $TopFraggerName  . "</a> ($numTop1)
   <br>
   <br>
   Top fragger da " . $guild2->getName() . " = <a href='index.php?subtopic=characters&name=" . $TopFraggerName2  . "'>" . $TopFraggerName2  . "</a> ($numTop2)
   <br>
   <br>
   O mais noob da  " . $guild->getName() . " = <a href='index.php?subtopic=characters&name=" . $mostDeadName  . "'>" . $mostDeadName2  . "</a> ($mostDeadNum2)
   <br>
   <br>
   O mais noob da  " . $guild2->getName() . " = <a href='index.php?subtopic=characters&name=" . $mostDeadName2  . "'>" . $mostDeadName  . "</a> ($mostDeadNum)    
   </b>
   </center>
   <br>
   <br>
   <br>

";

$main_content .= "
   <center>
   <h1>
       Mortes dos Membros
   </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>
                       Data
                   </B>
               </center>
           </TD>
       </TR>
       $kills
   </TABLE>
       <center>
       <h1>
           Ultimo frag da ". $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>
                       Data
                   </B>
               </center>
           </TD>
       </TR>
       $kills2
   </TABLE>
";
}
?>

 

6.01 Abra o index.php em: (C:/xampp/htdocs/)

Antes de:

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

 

Adicione:

 

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

 

7.0 - Agora para ver a suas guerras entre em: http://localhost/index.php?subtopic=wars

 

Se você encontra qualquer erro, post-it aqui .

 

Se isso o ajudou, comente por favor.

 

Aproveitem! :smile_positivo:

 

Creditos:

· GeKirAh

·Nahruto

·christiandb

· Xampy

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

  • 2 weeks later...
  • 2 weeks later...

Ajuda eu deu esse erro qnd dei /war-invite (Guild)

 

[28/09/2009 01:57:24] Lua Script Error: [TalkAction Interface]

[28/09/2009 01:57:24] data/talkactions/scripts/GuildWar.lua:onSay

 

[28/09/2009 01:57:24] data/talkactions/scripts/GuildWar.lua:10: attempt to call global 'guildExist' (a nil value)

[28/09/2009 01:57:24] stack traceback:

[28/09/2009 01:57:24] data/talkactions/scripts/GuildWar.lua:10: in function <data/talkactions/scripts/GuildWar.lua:4>

Link para o comentário
Compartilhar em outros sites

  • 1 month later...

Olá, fiquei numa dúvida...

 

O que acontece se 4 guildas declararem guerra ao mesmo tempo sem saber e escolherem o mesmo mapa?

ou

se, 6 guildas declararem guerra ao mesmo tempo, sendo q so tem 2 mapas, vão ficar todos no mesmo mapa?

 

entende o que quero dizer?

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...
×
×
  • Criar Novo...