Add This Tables on Sql
>>> talkaction.xml
War Script
in xampp
Wars.php
Say Thx Fast And Go Make Befor im Take Delete all ineed Help all And no you should Buy premium From this Fucker Site
Here you Are Full Elf War System
PHP:
CREATE TABLE IF NOT EXISTS `guild_invites` (
`player_id` int(11) NOT NULL DEFAULT '0',
`guild_id` int(11) NOT NULL DEFAULT '0',
UNIQUE KEY `player_id` (`player_id`,`guild_id`),
KEY `guild_id` (`guild_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `guild_kills` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`guild_id` int(11) NOT NULL,
`war_id` int(11) NOT NULL,
`death_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `guild_kills_ibfk_1` (`war_id`),
KEY `guild_kills_ibfk_2` (`death_id`),
KEY `guild_kills_ibfk_3` (`guild_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;
CREATE TABLE IF NOT EXISTS `guild_ranks` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`guild_id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`level` int(11) NOT NULL COMMENT '1 - leader, 2 - vice leader, 3 - member',
PRIMARY KEY (`id`),
KEY `guild_id` (`guild_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;
CREATE TABLE IF NOT EXISTS `guild_wars` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`guild_id` int(11) NOT NULL,
`enemy_id` int(11) NOT NULL,
`begin` bigint(20) NOT NULL DEFAULT '0',
`end` bigint(20) NOT NULL DEFAULT '0',
`frags` int(10) unsigned NOT NULL DEFAULT '0',
`payment` bigint(20) unsigned NOT NULL DEFAULT '0',
`guild_kills` int(10) unsigned NOT NULL DEFAULT '0',
`enemy_kills` int(10) unsigned NOT NULL DEFAULT '0',
`status` tinyint(1) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `status` (`status`),
KEY `guild_id` (`guild_id`),
KEY `enemy_id` (`enemy_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
>>> talkaction.xml
PHP:
<talkaction words="!war" event="script" value="war.lua"/>
<talkaction words="/war" hide="yes" event="script" value="war.lua"/>
War Script
PHP:
function onSay(cid, words, param, channel)
local guild = getPlayerGuildId(cid)
if(not guild or getPlayerGuildLevel(cid) < GUILDLEVEL_LEADER) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You cannot execute this talkaction.")
return true
end
local t = string.explode(param, ",")
if(not t[2]) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Not enough param(s).")
return true
end
local enemy = getGuildId(t[2])
if(not enemy) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Guild \"" .. t[2] .. "\" does not exists.")
return true
end
if(enemy == guild) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You cannot perform war action on your own guild.")
return true
end
local enemyName, tmp = "", db.getResult("SELECT `name` FROM `guilds` WHERE `id` = " .. enemy)
if(tmp:getID() ~= -1) then
enemyName = tmp:getDataString("name")
tmp:free()
end
if(isInArray({"accept", "reject", "cancel"}, t[1])) then
local query = "`guild_id` = " .. enemy .. " AND `enemy_id` = " .. guild
if(t[1] == "cancel") then
query = "`guild_id` = " .. guild .. " AND `enemy_id` = " .. enemy
end
tmp = db.getResult("SELECT `id`, `begin`, `end`, `payment` FROM `guild_wars` WHERE " .. query .. " AND `status` = 0")
if(tmp:getID() == -1) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Currently there's no pending invitation for a war with " .. enemyName .. ".")
return true
end
if(t[1] == "accept") then
local _tmp = db.getResult("SELECT `balance` FROM `guilds` WHERE `id` = " .. guild)
local state = _tmp:getID() < 0 or _tmp:getDataInt("balance") < tmp:getDataInt("payment")
_tmp:free()
if(state) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your guild balance is too low to accept this invitation.")
return true
end
db.executeQuery("UPDATE `guilds` SET `balance` = `balance` - " .. tmp:getDataInt("payment") .. " WHERE `id` = " .. guild)
end
query = "UPDATE `guild_wars` SET "
local msg = "accepted " .. enemyName .. " invitation to war."
if(t[1] == "reject") then
query = query .. "`end` = " .. os.time() .. ", `status` = 2"
msg = "rejected " .. enemyName .. " invitation to war."
elseif(t[1] == "cancel") then
query = query .. "`end` = " .. os.time() .. ", `status` = 3"
msg = "canceled invitation to a war with " .. enemyName .. "."
else
query = query .. "`begin` = " .. os.time() .. ", `end` = " .. (tmp:getDataInt("end") > 0 and (os.time() + ((tmp:getDataInt("begin") - tmp:getDataInt("end")) / 86400)) or 0) .. ", `status` = 1"
end
query = query .. " WHERE `id` = " .. tmp:getDataInt("id")
if(t[1] == "accept") then
doGuildAddEnemy(guild, enemy, tmp:getDataInt("id"), WAR_GUILD)
doGuildAddEnemy(enemy, guild, tmp:getDataInt("id"), WAR_ENEMY)
end
tmp:free()
db.executeQuery(query)
doBroadcastMessage(getPlayerGuildName(cid) .. " has " .. msg, MESSAGE_EVENT_ADVANCE)
return true
end
if(t[1] == "invite") then
local str = ""
tmp = db.getResult("SELECT `guild_id`, `status` FROM `guild_wars` WHERE `guild_id` IN (" .. guild .. "," .. enemy .. ") AND `enemy_id` IN (" .. enemy .. "," .. guild .. ") AND `status` IN (0, 1)")
if(tmp:getID() ~= -1) then
if(tmp:getDataInt("status") == 0) then
if(tmp:getDataInt("guild_id") == guild) then
str = "You have already invited " .. enemyName .. " to war."
else
str = enemyName .. " have already invited you to war."
end
else
str = "You are already on a war with " .. enemyName .. "."
end
tmp:free()
end
if(str ~= "") then
doPlayerSendChannelMessage(cid, "", str, TALKTYPE_CHANNEL_W, 0)
return true
end
local frags = tonumber(t[3])
if(frags ~= nil) then
frags = math.max(10, math.min(1000, frags))
else
frags = 100
end
local payment = tonumber(t[4])
if(payment ~= nil) then
payment = math.max(100000, math.min(1000000000, payment))
tmp = db.getResult("SELECT `balance` FROM `guilds` WHERE `id` = " .. guild)
local state = tmp:getID() < 0 or tmp:getDataInt("balance") < payment
tmp:free()
if(state) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your guild balance is too low for such payment.")
return true
end
db.executeQuery("UPDATE `guilds` SET `balance` = `balance` - " .. payment .. " WHERE `id` = " .. guild)
else
payment = 0
end
local begining, ending = os.time(), tonumber(t[5])
if(ending ~= nil and ending ~= 0) then
ending = begining + (ending * 86400)
else
ending = 0
end
db.executeQuery("INSERT INTO `guild_wars` (`guild_id`, `enemy_id`, `begin`, `end`, `frags`, `payment`) VALUES (" .. guild .. ", " .. enemy .. ", " .. begining .. ", " .. ending .. ", " .. frags .. ", " .. payment .. ");")
doBroadcastMessage(getPlayerGuildName(cid) .. " has invited " .. enemyName .. " to war till " .. frags .. " frags.", MESSAGE_EVENT_ADVANCE)
return true
end
if(not isInArray({"end", "finish"}, t[1])) then
return false
end
local status = (t[1] == "end" and 1 or 4)
tmp = db.getResult("SELECT `id` FROM `guild_wars` WHERE `guild_id` = " .. guild .. " AND `enemy_id` = " .. enemy .. " AND `status` = " .. status)
if(tmp:getID() ~= -1) then
local query = "UPDATE `guild_wars` SET `end` = " .. os.time() .. ", `status` = 5 WHERE `id` = " .. tmp:getDataInt("id")
tmp:free()
doGuildRemoveEnemy(guild, enemy)
doGuildRemoveEnemy(enemy, guild)
db.executeQuery(query)
doBroadcastMessage(getPlayerGuildName(cid) .. " has " .. (status == 4 and "mend fences" or "ended up a war") .. " with " .. enemyName .. ".", MESSAGE_EVENT_ADVANCE)
return true
end
if(status == 4) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Currently there's no pending war truce from " .. enemyName .. ".")
return true
end
tmp = db.getResult("SELECT `id`, `end` FROM `guild_wars` WHERE `guild_id` = " .. enemy .. " AND `enemy_id` = " .. guild .. " AND `status` = 1")
if(tmp:getID() ~= -1) then
if(tmp:getDataInt("end") > 0) then
tmp:free()
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You cannot request ending for war with " .. enemyName .. ".")
return true
end
local query = "UPDATE `guild_wars` SET `status` = 4, `end` = " .. os.time() .. " WHERE `id` = " .. tmp:getDataInt("id")
tmp:free()
db.executeQuery(query)
doBroadcastMessage(getPlayerGuildName(cid) .. " has signed an armstice declaration on a war with " .. enemyName .. ".", MESSAGE_EVENT_ADVANCE)
return true
end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Currently there's no active war with " .. enemyName .. ".")
return true
end
in xampp
Wars.php
PHP:
<?php
$main_content = "<h1 align=\"center\">Guild Wars</h1>
<script type=\"text/javascript\"><!--
function show_hide(flip)
{
var tmp = document.getElementById(flip);
if(tmp)
tmp.style.display = tmp.style.display == 'none' ? '' : 'none';
}
--></script>
<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"4\">
<tr>
<td style=\"background: " . $config['site']['vdarkborder'] . "\" class=\"white\" width=\"150\"><b>Aggressor</b></td>
<td style=\"background: " . $config['site']['vdarkborder'] . "\" class=\"white\"><b>Information</b></td>
<td style=\"background: " . $config['site']['vdarkborder'] . "\" class=\"white\" width=\"150\"><b>Enemy</b></td>
</tr>";
$count = 0;
foreach($SQL->query('SELECT * FROM `guild_wars` WHERE `status` IN (1,4) OR ((`end` >= (UNIX_TIMESTAMP() - 604800) OR `end` = 0) AND `status` IN (0,5));') as $war)
{
$a = $ots->createObject('Guild');
$a->load($war['guild_id']);
if(!$a->isLoaded())
continue;
$e = $ots->createObject('Guild');
$e->load($war['enemy_id']);
if(!$e->isLoaded())
continue;
$alogo = $a->getCustomField('logo_gfx_name');
if(empty($alogo) || !file_exists('guilds/' . $alogo))
$alogo = 'default_logo.gif';
$elogo = $e->getCustomField('logo_gfx_name');
if(empty($elogo) || !file_exists('guilds/' . $elogo))
$elogo = 'default_logo.gif';
$count++;
$main_content .= "<tr style=\"background: " . (is_int($count / 2) ? $config['site']['darkborder'] : $config['site']['lightborder']) . ";\">
<td align=\"center\"><a href=\"?subtopic=guilds&action=show&guild=".$a->getId()."\"><img src=\"guilds/".$alogo."\" width=\"64\" height=\"64\" border=\"0\"/><br />".$a->getName()."</a></td>
<td class=\"white\" align=\"center\">";
switch($war['status'])
{
case 0:
{
$main_content .= "<b>Pending acceptation</b><br />Invited on " . date("M d Y, H:i:s", $war['begin']) . " for " . ($war['end'] > 0 ? (($war['end'] - $war['begin']) / 86400) : "unspecified") . " days. The frag limit is set to " . $war['frags'] . " frags, " . ($war['payment'] > 0 ? "with payment of " . $war['payment'] . " bronze coins." : "without any payment.")."<br />Will expire in three days.";
break;
}
case 3:
{
$main_content .= "<s>Canceled invitation</s><br />Sent invite on " . date("M d Y, H:i:s", $war['begin']) . ", canceled on " . date("M d Y, H:i:s", $war['end']) . ".";
break;
}
case 2:
{
$main_content .= "Rejected invitation<br />Invited on " . date("M d Y, H:i:s", $war['begin']) . ", rejected on " . date("M d Y, H:i:s", $war['end']) . ".";
break;
}
case 1:
{
$main_content .= "<font size=\"12\"><span style=\"color: red;\">" . $war['guild_kills'] . "</span> : <span style=\"color: lime;\">" . $war['enemy_kills'] . "</span></font><br /><br /><span style=\"color: darkred; font-weight: bold;\">On a brutal war</span><br />Began on " . date("M d Y, H:i:s", $war['begin']) . ($war['end'] > 0 ? ", will end up at " . date("M d Y, H:i:s", $war['end']) : "") . ".<br />The frag limit is set to " . $war['frags'] . " frags, " . ($war['payment'] > 0 ? "with payment of " . $war['payment'] . " bronze coins." : "without any payment.");
break;
}
case 4:
{
$main_content .= "<font size=\"12\"><span style=\"color: red;\">" . $war['guild_kills'] . "</span> : <span style=\"color: lime;\">" . $war['enemy_kills'] . "</span></font><br /><br /><span style=\"color: darkred;\">Pending end</span><br />Began on " . date("M d Y, H:i:s", $war['begin']) . ", signed armstice on " . date("M d Y, H:i:s", $war['end']) . ".<br />Will expire after reaching " . $war['frags'] . " frags. ".($war['payment'] > 0 ? "The payment is set to " . $war['payment'] . " bronze coins." : "There's no payment set.");
break;
}
case 5:
{
$main_content .= "<i>Ended</i><br />Began on " . date("M d Y, H:i:s", $war['begin']) . ", ended on " . date("M d Y, H:i:s", $war['end']) . ". Frag statistics: <span style=\"color: red;\">" . $war['guild_kills'] . "</span> to <span style=\"color: lime;\">" . $war['enemy_kills'] . "</span>.";
break;
}
default:
{
$main_content .= "Unknown, please contact with gamemaster.";
break;
}
}
$main_content .= "<br /><br /><a onclick=\"show_hide('war-details:" . $war['id'] . "'); return false;\" style=\"cursor: pointer;\">» Details «</a></td>
<td align=\"center\"><a href=\"?subtopic=guilds&action=show&guild=".$e->getId()."\"><img src=\"guilds/".$elogo."\" width=\"64\" height=\"64\" border=\"0\"/><br />".$e->getName()."</a></td>
</tr>
<tr id=\"war-details:" . $war['id'] . "\" style=\"display: none; background: " . (is_int($count / 2) ? $config['site']['darkborder'] : $config['site']['lightborder']) . ";\">
<td colspan=\"3\">";
if(in_array($war['status'], array(1,4,5)))
{
$deaths = $SQL->query('SELECT `pd`.`id`, `pd`.`date`, `gk`.`guild_id` AS `enemy`, `p`.`name`, `pd`.`level`
FROM `guild_kills` gk
LEFT JOIN `player_deaths` pd ON `gk`.`death_id` = `pd`.`id`
LEFT JOIN `players` p ON `pd`.`player_id` = `p`.`id`
WHERE `gk`.`war_id` = ' . $war['id'] . ' AND `p`.`deleted` = 0
ORDER BY `pd`.`date` DESC')->fetchAll();
if(!empty($deaths))
{
foreach($deaths as $death)
{
$killers = $SQL->query('SELECT `p`.`name` AS `player_name`, `p`.`deleted` AS `player_exists`, `k`.`war` AS `is_war`
FROM `killers` k
LEFT JOIN `player_killers` pk ON `k`.`id` = `pk`.`kill_id`
LEFT JOIN `players` p ON `p`.`id` = `pk`.`player_id`
WHERE `k`.`death_id` = ' . $death['id'] . '
ORDER BY `k`.`final_hit` DESC, `k`.`id` ASC')->fetchAll();
$count = count($killers); $i = 0;
$others = false;
$main_content .= date("j M Y, H:i", $death['date']) . " <span style=\"font-weight: bold; color: " . ($death['enemy'] == $war['guild_id'] ? "red" : "lime") . ";\">+</span>
<a href=\"/characters/" . urlencode($death['name']) . "\"><b>".$death['name']."</b></a> ";
foreach($killers as $killer)
{
$i++;
if($killer['is_war'] != 0)
{
if($i == 1)
$main_content .= "killed at level <b>".$death['level']."</b> by ";
else if($i == $count && $others == false)
$main_content .= " and by ";
else
$main_content .= ", ";
if($killer['player_exists'] == 0)
$main_content .= "<a href=\"/characters/".urlencode($killer['player_name'])."\">";
$main_content .= $killer['player_name'];
if($killer['player_exists'] == 0)
$main_content .= "</a>";
}
else
$others = true;
if($i == $count)
{
if($others == true)
$main_content .= " and few others";
$main_content .= ".<br />";
}
}
}
}
else
$main_content .= "<center>There were no frags on this war so far.</center>";
}
else
$main_content .= "<center>This war did not began yet.</center>";
$main_content .= "</td>
</tr>";
}
if($count == 0)
$main_content .= "<tr style=\"background: ".$config['site']['darkborder'].";\">
<td colspan=\"3\">Currently there are no active wars.</td>
</tr>";
$main_content .= "</table>";
?>
Say Thx Fast And Go Make Befor im Take Delete all ineed Help all And no you should Buy premium From this Fucker Site
Here you Are Full Elf War System