Jump to content

[Gesior Acc] Guild War System Com Escudos


walefxavier

Recommended Posts

@topic

 

todos revejam se estao seguindo todas as etapas corretamente!

 

nao adianta usar a distro de seus servidores antigos tem que usar tudo que tem postado aqui!

 

se rodar com versao de distro abaixo de 0.4 noa irá funcionar!

Link to comment
Share on other sites

Aqui funfo legal, compilei meu distro com a trunk3.777 com os parametros do war system e ta ok, o unico problema eh que quando tem 2 guilds em guerra, ai um player mata o outro ( ambos de guilds diferentes, porem as duas guilds estao em guerra). ele ganha frag, nao pk, porem frag.

Link to comment
Share on other sites

Aqui funfo legal, compilei meu distro com a trunk3.777 com os parametros do war system e ta ok, o unico problema eh que quando tem 2 guilds em guerra, ai um player mata o outro ( ambos de guilds diferentes, porem as duas guilds estao em guerra). ele ganha frag, nao pk, porem frag.

é exatamente assim que funciona o systema!

Link to comment
Share on other sites

  • 1 month later...

Alguem me ajuda aki ta dando esse erro,

 

[Error - TalkAction Interface]

data/talkactions/scripts/war.lua:onSay

Description:

data/talkactions/scripts/war.lua:133: attempt to call field

'query' <a nil value>

stack traceback:

data/talkactions/scripts/war.lua:133: in function

<data/talkactions/scripts/war.lua:1>

Link to comment
Share on other sites

  • 3 months later...
  • 2 years later...
  • 5 months later...
  • 3 years later...
Em 22/04/2011 em 13:36, walefxavier disse:

Vou postar o tão famoso Guild War System Com Escudos.

 

Vou começar pelo site :

 

Vá em Xampp/Htdocs e crie e um arquivo chamado wars.php,dentro add isto:

 

 


<?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>

<a onclick=\"show_hide('information'); return false;\" style=\"cursor: pointer;\"><h1><center>» Click to se the commands «<center></h1></a>
<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"4\" id=\"information\" style=\"display: none;\";>
<tr align=\"center\"><b>You must send this commands in GUILD CHAT.</tr>
<tr style=\"background: #512e0b;\"><td align=\"center\" class=\"white\"><b>Command</b></td><td colspan=\"2\" align=\"center\" class=\"white\"><b>Description</b></td></tr>
<tr style=\"background: #F1E0C6;\"><td><b>/war invite, guild name, fraglimit</b></td><td>Sends an invitation to start the war. Example: <font color=red><BR>/war invite, Chickens, 150<BR></font><B>(Invite a guild to war with 150 frags count.)</B></td></tr>
<tr style=\"background: #D4C0A1;\"><td><b>/war invite, guild name, fraglimit, money</b></td><td>Send the invitation to start the war. Example: <font color=red><BR>/war invite, Chickens, 150, 10000</font><br><B> (Invite a guild to war with 150 frags count and payment of 10000 gold coins <- you need donate to guild to use it.)<B></td></tr>
<tr style=\"background: #F1E0C6;\"><td><b>/war accept, guild name</b></td><td>Accepts the invitation to start a war. Example: <font color=red><BR>/war accept, Chickens</font><BR><B>(Accept the war against guild \"Chickens\".)</b></td></tr>

<tr style=\"background: #D4C0A1;\"><td><b>/war reject, guild name</b></td><td>Rejects the invitation to start a war. Example: <font color=red><BR>/war reject, Chickens</font><BR><B>(Reject a invitation to war from Chickens.)</B></td></tr>
<tr style=\"background: #F1E0C6;\"><td><b>/war cancel, guild name</b></td><td>Cancels the invitation. Example: <font color=red><BR>/war cancel, Chickens</font><br><b>(Cancel my guild invitation to war with Chickens.)</b></td></tr>
<tr style=\"background: #D4C0A1;\"><td><b>/balance</b></td><td>See the guild balance - balance of money.</td></tr>
<tr style=\"background: #F1E0C6;\"><td><b>/balance donate value</b></td><td>Deposits money on the guild's bank account. All players can donate. Example: <font color=red><BR>/balance donate 100000 </font><BR><B>(You will donate 100k to your guild balance.)</B></td></tr>
<tr style=\"background: #D4C0A1;\"><td><b>/balance pick value</b></td><td>Withdraws money from the guild's bank account. Can be used only by the guild leader. Example: <font color=red><BR>/balance pick 100000 </font><BR><B>(You will withdraw 100k from your guild balance.)</B></td></tr>
</table>

<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"4\">
<tr>
<td style=\"background: #512e0b\" class=\"white\" width=\"150\"><b>Aggressor</b></td>

<td style=\"background: #512e0b\" class=\"white\"><b>Information</b></td>
<td style=\"background: #512e0b\" class=\"white\" width=\"150\"><b>Enemy</b></td>
</tr><tr style=\"background: #F1E0C6;\">";

$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 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=\"6\"><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=\"6\"><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=\"index.php?subtopic=characters&name=" . 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=\"index.php?subtopic=characters&name=".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>";
$main_content .= '<div align="right"><small><b>Customized by: <a href="http://www.xtibia.com/forum/user/240289-walef-xavier">Walef Xavier</a></b></small></div><br />';

?>
 

 

 

Agora vá em Xampp/Htdocs/index.php e add o seguinte:

 

 


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

 

 

Agora para finalizar a parte do site vá em Xampp/Htdocs/Layout/Tibiacom/layout.php e add o seguinte:

 

 


<a href='?subtopic=wars'>
 <div id='submenu_wars' class='Submenuitem' onMouseOver='MouseOverSubmenuItem(this)' onMouseOut='MouseOutSubmenuItem(this)'>
<div class='LeftChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div>
<div id='ActiveSubmenuItemIcon_polls' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div>
<div class='SubmenuitemLabel'><font color=red>Guild Wars</font></div>
<div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div>
 </div>
</a>
 

 

 

Agora vamos para seu Ot:

 

Va em GlobalEvents/scripts/start.lua e add o seguinte:

 

 


db.executeQuery("DELETE FROM `guild_wars` WHERE `status` = 0 AND `begin` < " .. (os.time() - 2 * 86400) .. ";")
db.executeQuery("UPDATE `guild_wars` SET `status` = 5, `end` = " .. os.time() .. " WHERE `status` = 1 AND `end` > 0 AND `end` < " .. os.time() .. ";")
 

 

 

Agora vá em Lib e crie um arquivo .lua chamado 101-war,dentro add o seguinte:

 

 


WAR_GUILD = 0
WAR_ENEMY = 1
 

 

 

Agora para finalizar vamos colocar os comandos em Talkactions !

 

Vá em Talkactions/scripts e crie dois arquivos chamados war.lua e balance.lua,dentro add o seguinte:

 

War.lua

 


function onSay(cid, words, param, channel)
	local guild = getPlayerGuildId(cid)
	if(not guild or getPlayerGuildLevel(cid) < GUILDLEVEL_LEADER) then
			doPlayerSendChannelMessage(cid, "", "You cannot execute this talkaction.", TALKTYPE_CHANNEL_W, 0)
			return true
	end

	local t = string.explode(param, ",")
	if(not t[2]) then
			doPlayerSendChannelMessage(cid, "", "Not enough param(s).", TALKTYPE_CHANNEL_W, 0)
			return true
	end

	local enemy = getGuildId(t[2])
	if(not enemy) then
			doPlayerSendChannelMessage(cid, "", "Guild \"" .. t[2] .. "\" does not exists.", TALKTYPE_CHANNEL_W, 0)
			return true
	end

	if(enemy == guild) then
			doPlayerSendChannelMessage(cid, "", "You cannot perform war action on your own guild.", TALKTYPE_CHANNEL_W, 0)
			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
					doPlayerSendChannelMessage(cid, "", "Currently there's no pending invitation for a war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0)
					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
							doPlayerSendChannelMessage(cid, "", "Your guild balance is too low to accept this invitation.", TALKTYPE_CHANNEL_W, 0)
							return true
					end

					db.query("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.query(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
							doPlayerSendChannelMessage(cid, "", "Your guild balance is too low for such payment.", TALKTYPE_CHANNEL_W, 0)
							return true
					end

					db.query("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.query("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.query(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
			doPlayerSendChannelMessage(cid, "", "Currently there's no pending war truce from " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0)
			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()
					doPlayerSendChannelMessage(cid, "", "You cannot request ending for war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0)
					return true
			end

			local query = "UPDATE `guild_wars` SET `status` = 4, `end` = " .. os.time() .. " WHERE `id` = " .. tmp:getDataInt("id")
			tmp:free()

			db.query(query)
			doBroadcastMessage(getPlayerGuildName(cid) .. " has signed an armstice declaration on a war with " .. enemyName .. ".", MESSAGE_EVENT_ADVANCE)
			return true
	end

	doPlayerSendChannelMessage(cid, "", "Currently there's no active war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0)
	return true
end
 

 

 

balance.lua

 


local function isValidMoney(value)
	if(value == nil) then
			return false
	end

	return (value > 0 and value <= 99999999999999)
end

function onSay(cid, words, param, channel)
	local guild = getPlayerGuildId(cid)
	if(guild == 0) then
			return false
	end

	local t = string.explode(param, ' ', 1)
	if(getPlayerGuildLevel(cid) == GUILDLEVEL_LEADER and isInArray({ 'pick' }, t[1])) then
			if(t[1] == 'pick') then
					local money = { tonumber(t[2]) }
					if(not isValidMoney(money[1])) then
							doPlayerSendChannelMessage(cid, '', 'Invalid amount of money specified.', TALKTYPE_CHANNEL_W, 0)
							return true
					end

					local result = db.getResult('SELECT `balance` FROM `guilds` WHERE `id` = ' .. guild)
					if(result:getID() == -1) then
							return false
					end

					money[2] = result:getDataLong('balance')
					result:free()

					if(money[1] > money[2]) then
							doPlayerSendChannelMessage(cid, '', 'The balance is too low for such amount.', TALKTYPE_CHANNEL_W, 0)
							return true
					end

					if(not db.query('UPDATE `guilds` SET `balance` = `balance` - ' .. money[1] .. ' WHERE `id` = ' .. guild .. ' LIMIT 1;')) then
							return false
					end

					doPlayerAddMoney(cid, money[1])
					doPlayerSendChannelMessage(cid, '', 'You have just picked ' .. money[1] .. ' money from your guild balance.', TALKTYPE_CHANNEL_W, 0)
			else
					doPlayerSendChannelMessage(cid, '', 'Invalid sub-command.', TALKTYPE_CHANNEL_W, 0)
			end
	elseif(t[1] == 'donate') then
			local money = tonumber(t[2])
			if(not isValidMoney(money)) then
					doPlayerSendChannelMessage(cid, '', 'Invalid amount of money specified.', TALKTYPE_CHANNEL_W, 0)
					return true
			end

			if(getPlayerMoney(cid) < money) then
					doPlayerSendChannelMessage(cid, '', 'You don\'t have enough money.', TALKTYPE_CHANNEL_W, 0)
					return true
			end

			if(not doPlayerRemoveMoney(cid, money)) then
					return false
			end

			db.query('UPDATE `guilds` SET `balance` = `balance` + ' .. money .. ' WHERE `id` = ' .. guild .. ' LIMIT 1;')
			doPlayerSendChannelMessage(cid, '', 'You have transfered ' .. money .. ' money to your guild balance.', TALKTYPE_CHANNEL_W, 0)
	else
			local result = db.getResult('SELECT `name`, `balance` FROM `guilds` WHERE `id` = ' .. guild)
			if(result:getID() == -1) then
					return false
			end

			doPlayerSendChannelMessage(cid, '', 'Current balance of guild ' .. result:getDataString('name') .. ' is: ' .. result:getDataLong('balance') .. ' bronze coins.', TALKTYPE_CHANNEL_W, 0)
			result:free()
	end

	return true
end
 

 

 

Agora vá em Talkactions/talkactions.xml e add as duas tags:

 

 


<talkaction words="/war" channel="0" event="script" value="war.lua" desc="(Guild channel command) War management."/>
<talkaction words="/balance" channel="0" event="script" value="balance.lua" desc="(Guild channel command) Balance management."/>
 

 

 

Pronto,seu Guild War Systema está instalado...mas para funcionar necessitará das tabelas na sua database e do Tfs 0.4 .Vou posta-los abaixo,respectivamente.

 

.:: Tabelas ::.

 

Para quem ainda não sabe add tabelas a sua database,vou ensinar:

 

Acesse seu phpmyadmin,digite sua senha (caso tenha),clique no nome da sua database a esquerda,assim que carregar a sua database clique em SQL lá em cima...Aparecerá um espaço em branco lá voce irá add as seguintes tabelas...e depois clicar em Executar.

 

 


CREATE TABLE IF NOT EXISTS `guild_wars` (
 `id` INT NOT NULL AUTO_INCREMENT,
 `guild_id` INT NOT NULL,
 `enemy_id` INT NOT NULL,
 `begin` BIGINT NOT NULL DEFAULT '0',
 `end` BIGINT NOT NULL DEFAULT '0',
 `frags` INT UNSIGNED NOT NULL DEFAULT '0',
 `payment` BIGINT UNSIGNED NOT NULL DEFAULT '0',
 `guild_kills` INT UNSIGNED NOT NULL DEFAULT '0',
 `enemy_kills` INT 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;
 

 

 

 


ALTER TABLE `guild_wars`
 ADD CONSTRAINT `guild_wars_ibfk_1` FOREIGN KEY (`guild_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE,
 ADD CONSTRAINT `guild_wars_ibfk_2` FOREIGN KEY (`enemy_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE;
 

 

 

 


ALTER TABLE `guilds` ADD `balance` BIGINT UNSIGNED NOT NULL AFTER `motd`;
 

 

 

 


CREATE TABLE IF NOT EXISTS `guild_kills` (
 `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
 `guild_id` INT NOT NULL,
 `war_id` INT NOT NULL,
 `death_id` INT NOT NULL
) ENGINE = InnoDB;
 

 

 

 


ALTER TABLE `guild_kills`
 ADD CONSTRAINT `guild_kills_ibfk_1` FOREIGN KEY (`war_id`) REFERENCES `guild_wars` (`id`) ON DELETE CASCADE,
 ADD CONSTRAINT `guild_kills_ibfk_2` FOREIGN KEY (`death_id`) REFERENCES `player_deaths` (`id`) ON DELETE CASCADE,
 ADD CONSTRAINT `guild_kills_ibfk_3` FOREIGN KEY (`guild_id`) REFERENCES `guilds` (`id`) ON DELETE CASCADE;
 

 

 

 

 


ALTER TABLE `killers` ADD `war` INT NOT NULL DEFAULT 0;
 

 

 

 

Pronto o Guild Wars System está totalmente instalado...falta apenas o Tfs 0.4 !

 

O meu The Forggoten Server 0.4 também comprei do mesmo cara que me vendeu o GWS,tenho um também que comprei na ChaitoSoft,mais conversei com eles por Msn e não permitirão que eu postasse pra ninguem,rsrs.

 

Então vou postar o link do download e o scan:

 

TFS 0.4 DEV

Scan

 

Ai está a DEV....

 

Também será necessario usar o items.xml e items.otb , a não ser que o que vc tenha seja compativel com o distro.

 

Item.xml e otb

Scan

 

 

 

Obs: Este distro não carrega scripts que tenha a função "dbExecute.query",sempre que tiver mude para "db.query" .Todo o script ja está configurado para funcionar assim,não se preucupe.

 

Só isso,obrigado a todos...que Deus Abençoe voces sempre !

Ola, fiz tudo certinho e até o momento de ir no phpmyadim na hora de adicionar as tables da erro, tentei adicionar todas de uma vez só nao foi, uma por uma, a primeira foi ja a segunda nao foi, poderia me dar uma ajuda, desde ja obrigado.

Link to comment
Share on other sites

  • 6 months later...

Estou com problema no Site

o sistema ta funcionando perfeito e a pagina do site tbm.. porem quando eu invito a guild na war, e ele cria os escudinhos.. a parte de war system no site para..

o que pode ser ?

 

Fatal error: Call to a member function createObject() on a non-object in F:\xampp\htdocs\pages\wars.php on line 38

Link to comment
Share on other sites

×
×
  • Create New...