Ir para conteúdo

[Gesior Acc] Guild War System Com Escudos


walefxavier

Posts Recomendados

Não estou conseguindo nesta parte adicionar a database...

 

 

ALTERTABLE`guild_kills`ADDCONSTRAINT`guild_kills_ibfk_1`FOREIGNKEY (`war_id`)REFERENCES`guild_wars` (`id`)ONDELETECASCADE ,

ADDCONSTRAINT`guild_kills_ibfk_2`FOREIGNKEY (`death_id`)REFERENCES`player_deaths` (`id`)ONDELETECASCADE ,

ADDCONSTRAINT`guild_kills_ibfk_3`FOREIGNKEY (`guild_id`)REFERENCES`guilds` (`id`)ONDELETECASCADE

 

 

 

aparece o seguinte...

 

#1005 - Can't create table 'otdatabase.#sql-718_a8' (errno: 121)

 

 

"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."

 

 

Tentei colocar um de cada vez, todos de uma vez e não consegui, não sei mexer na database, espero ajuda, obrigado desde já!

Link para o comentário
Compartilhar em outros sites

Tente colocar corretamente ¬¬

 

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;

 

O seu esta sem o ";" no final...

 

Tente colocar corretamente, é veja se funciona!!

 

;x

Link para o comentário
Compartilhar em outros sites

Como eu uso o Tfs 0.4?

Como abro ele??? Tem q coloca ele na pasta do ot como é?

 

Sim, baixe o TFS 0.4 e coloque-o na pasta de seu servidor. Apenas o executável (TFS). E assim, retire o executável que estava antes.

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

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

O sistema que possuo comprei por 30 reais de um colega no MSN !

O sistema não é comprado da ChaitoSoft,muito menos do criador original,então não vejo problema algun em posta-lo.Os Créditos concerteza vão pro criador original...

 

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,não estendo de distros,mais se alguem não conseguir usar esse fala comigo que passo a REV ou SVN.

 

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 !

 

 

 

Cara mt bom o topico, mas, esse tfs 0.4 (TheForgottenServer) que eu baixei ai ele nao abre o mapa, ele da fatal error diz que nao pode abrir o mapa =S

 

me ajuda

Link para o comentário
Compartilhar em outros sites

Muito obrigado RaizenUrameshi

Mas agora estou com outro problema

 

Quando eu abro o .exe ele carrega tudo

mas da erro ao tentar carregar o mapa

no outro .exe o mapa ta abrindo correctamente e nesse

pq não esta abrindo alguém sabe?

 

shot0003.JPG

Link para o comentário
Compartilhar em outros sites

@ ElyktoSheldoki

 

Verifica o config.lua do servidor e procura por :

 

mapName = "" << Entre as aspas, coloca o nome do arquivo do map, que se encontra na pasta data/world. (Tem que ter .otbm) no final.

mapAuthor = ""

randomizeTiles = true

useHouseDataStorage = false

storeTrash = true

cleanProtectedZones = true

mailboxDisabledTowns = "-1"

 

 

Acho que è isso rs

Link para o comentário
Compartilhar em outros sites

eae walef xavier esse tfs 0.4 só funciona com emcryptação sha1 eu queria saber se tu não tem as sources dele para eu mudar isso pq eu gosto da plain... e tbm ele nao aceita o conjurefood e ele tenta carrega um npcsystem.lua na pasta lib da pasta npcs mas nunca teve esse arquivo... e sinceramente nem sei como arrumar nada disso mas ai eu procuro um programador para me ajudar tu tem as sources dele? eu testei o guild war system e funfo direitim ateh os escudos xD

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

×
×
  • Criar Novo...