Ir para conteúdo

[Gesior Acc] Guild War System Com Escudos


walefxavier

Posts Recomendados

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 !

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

É,o mais recomendável seria instalar um site mesmo,pois,sem o site os jogadores não irão saber os comandos e nem teriam como saber se foram invitados para WAR.

 

Vai na ABA aqui do Xtibia sobre divulgação de projetos,lá voce encontra muitos Web Makers,eles fazem um site pra voce.

Link para o comentário
Compartilhar em outros sites

Tah vamos la!... Primeiro...

Quando uso o Distro tfs 0.4 o ot abra, neiim um player pode logar...

da 1 minuto o distro fecha sozinho!

 

outra coisa e no seu tutorial! Onde você encontra na pasta globalevents/start.php ...Provalvemtne e LUA!

Link para o comentário
Compartilhar em outros sites

Isbigo,o fato de nenhum player estar conseguindo entrar no seu servidor não quer dizer que seja problema com o distro,podem ser muitas outras coisas,com o distro eu garanto que não é,pois,eu e muitos colegas meu donos de ot o usam.Fique observando o distro,pode ser FaTal Error.Quanto ao erro do lua por php,desculpem ae,o tutorial era grande,ficou complicado e acabei confundindo,mas ja arrumei.

 

Drahibavi,não vi diferença no seu War System com os demais...

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...