Ir para conteúdo

Líderes

Conteúdo Popular

Exibindo conteúdo com a maior reputação em 10/22/11 em todas áreas

  1. 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 !
    1 ponto
  2. Friday War - v4.1 V1.0; ' War com 2 times. Azul e Vermelho ' Vocações: * Elder Druid * Master Sorcerer * Hero * Berserker * Warlock * Hunter * Sharpshooter (Todas Balanceadas) ' Troca de mapa a cada 20min. * Thais * Venore * Fibula * Edron * Lost Island * Khalifor * War Land ' Npc pra cada vocação. (Buff também) V2.0 V3.0 V4.0 V4.1 *Foi me reportado no e-mail que havia um bug no distro, que estaria causando um suposto lag e causando disconnect nos players (foi arrumado) [Então atualizem] *senha do ADM ( god/god ) #Download: Friday13-V4.1.rar #Scan: https://www.virustot...sis/1342011734/ #Creditos: Eu (Jeferson) Wilkinson (até v3.0) Demonder (Pelo x-dream war 8.5)
    1 ponto
  3. Snowz Thyranic Versão 3.3 (Perfect Edition) Ola para os fans do Thyranic vim trazer para vocês uma nova atualização!! espero que gostem! • 9 Cidades: ├ Rookgaard ├ Thyran ├ Murnia ├ Saaha ├ Icya ├ Venga ├ Mandrin ├ Talas └ Maltera(Vip) Agora vamos ver todas as atualizações! • Snowz Thyranic Versão 1: • Snowz Thyranic Versão 1.1: • Snowz Thyranic Versão 2: • Snowz Thyranic Versão 2.1: • Snowz Thyranic Versão 3.0: • Snowz Thyranic Versão 3.1 (Especial Edition): • Snowz Thyranic Versão 3.2 (King Edition): • Snowz Thyranic Versão 3.3 (Perfect Edition): Nesta atualização varios bugs foram arrumados ├ Bug do elf bot auto buy items!! ├ Inquisition Quest monstro com nomes errados não dava tp para continuar a quest! ├ Bug de alavancas de monsters! ├ FireWalker boots Quest! ├ Arena Icya tps bugados! ├ Algumas Quests bugadas! ├ Rings com % acima do normal! ├ A Demon Oak Quest !! ├ Npc de joias! └ Sql 100% funcionando para site Gesior! Oque tem de novo? ├ Items Vip ├ Cidade Vip ├ Novas hunts └ Npcs de addons espalhados pelo map Algumas fotos! Templo! Depot! Npcs! Thyrania almentada! Vip city! Areas Vip! Novas hunts para free!(OBS: tem outras alem dessas) Link download thyranic 3.3! Scan! ACC GOD loguin:god senha:god Créditos: - Maleski (eu) - Bizzani - Matheus - luisfe23 - Delton - Kaotar - RenanSdc - Thyranic - TFS Team Nessa ultima Atualização foi editado,etc!! por Maleski e Bizzani! Achou Bugs? Reporte !
    1 ponto
  4. Vodkart

    Double Exp Para Vip

    servidos testado 8.54 ~ 8.60 Quando você compra vip você pode aumentar a taxa de exp em percent que ele irá receber a mais,como se fosse um bonus... a taxa se modifica aqui: local rate = 1.5 -- 50% vermelho:representa o quanto irá subir em % caso fosse 20% seria local rate = 1.2 e por ai vai.... [ Double exp para o Perfect Vip System ] : [ Double exp para o Vip System By Account V1.0 ] : [ Double exp para o Vip System By Mock] :
    1 ponto
  5. anaosinho

    Pokemons Formato .idc

    Eae Galerinha, é meu Primeiro post no XTibia então sem pisar em mim em ;B Procurei e não achei um tutorial assim então vou postar pra ajudar os iniciantes Eu estarei ensinando como se adiciona sprites prontas com formato .idc Primeira mente você precisara do programa DAT EDITOR Download : Pacote de Sprites Prontas Pokemons Johto Feitos Pelo Purple: Agora com os 125 pokemons, Corpses, Magias e portraits de todos os johto: http://www.4shared.com/file/WWLgCVbT/johtos.html Dat Editor : http://www.multiupload.com/KD9NW6TMF0 Scan Dat Editor: http://www.virustotal.com/file-scan/report.html?id=3c5e94e59df52ef693d12b0543aa66d6f8b0dee89a88bdb1e1cd1ca5d3d13195-1306952621 Novo Scan Pacote de Sprites :http://www.virustotal.com/file-scan/report.html?id=98c2917453f3829817cf36562a34dc627000675528a0ef62f4838cf256584da2-1303932047 Agora vamos começar Depois de baixar o Dat Editor, extraia ele na pasta que você quiser. Abra o dat editor, Vá em : File / Open Procure a pasta do client do seu Server, e nos seus devidos lugares abra o Tibia.dat e Tibia.spr Espere carregar e as sprites do seu client irão aparecer Agora Extraia os pokemons que vocês baixaram , e note que eles estão em formato .idc Vá no dat editor e clique em : Import / Import Itens Vá ate a pasta onde você extraiu os pokemons em formato .idc, segure Ctrl e selecione todos de uma vez As sprites irão aparecer no Canto esquerdo Agora clique em : File / Save Na janelinha clique em Compile Depois que carregar totalmente Feixe a janelinha Más não fexe o Dat Editor Na tabela inferior do Dat Editor tem vários itens, e um deles é o ItemType Pegue esse numero do ItemType e grave ou copie. Abra a pasta do seu Server, clique em : Data / Monsters / Pokes Copie Qualquer Arquivo XML Renomeie para o nome do Pokemon que esta no Dat Editor Abra o arquivo com o bloco de notas. Mude o nome do Pokemon , e Lá onde está escrito : Look Type = ... Mude para o ItemType que esta no dat editor ( que eu falei pra copiar) Volte para a pasta : Data / Monsters Abra o arquivo Monsters.xml Copie qualquer Pokemon, mude o nome para o Pokémon que você criou, e no fim da linha esta escrito o nome do Pokemon .xml Mude para o nome do arquivo que você criou. Lembrete sempre ponha .xml no fim Salve tudo, e Abra o seu Server Proonto novo Pokémon Adicionado :x Se você quiser Adicionar os atakes novos dos pokemons fala isso: Embaixo , lá no xml do pokemon na linha </flags> <attacks> <attack name="nome da magia (tem que existir no seu server)" interval="tempo que o mosntro usa" chance="chance de usar" range="poder da magia" min="dano minimo use sempre o menos EX: -100" max="dano maximo use sempre o menos EX: -200"> </attack> ai vai adicionando as linhas com os novos atakes se o atake ainda não estiver criado vá na pasta Spells crie um xlm da nova magia, edite o nome, vá no dat editor pegue o item type da magia que você quer (o efeito desejado) volte, abra o Spells.xml adicione a sua nova magia. depois faça o que eu disse a cima. crie uma linha no xml do seu pokemon e vá adicionando as magias ^^ use isso para faser os pokemons selvagens '-' Gentee entra no meu novo tutorial , Criando novos itens e corpses com ids proprios http://www.xtibia.com/forum/topic/158900-criando-novos-id-de-items-e-corpses/page__p__1047720#entry1047720 See te Ajudei Dáa um +Rep Ae pro Okaminha ;B não cai o dedo \õ :smile_positivo: Créditos: Psycho Okama < Eoooooo E as sprites convertidas pelo < Purple Fuiz \õ/
    1 ponto
  6. AdminNecrox

    Mudar De Cargo Com Item

    Iae galera vou lhes ensinar nesse tópico a criar um item que pode mudar o cargo do player que usá-lo. Eu não sei se já existe um tutorial desses, mas vamos lá né. O que exatamente o script faz? O script é uma action que ao usar um determinado item, o player mudará de cargo. Ex: De player para Tutor, Gm. Fica a sua escolha. O script é dificil de se entender? Não. O script é totalmente facil de se editar. Parte 1 Primeiramente vamos escolher um item para fazer o script. Lembre-se que o Item que você escolheu não deve cair em loots, achar em quest ou outros. Ficará apenas prioritário de um ADM. Aqui eu escolhi esse (You see a document. It weighs 1.50 oz. ItemID: 1952.) Pode usar outro se quiser. Okey depois de ter escolhido o item, vá na pasta do seu OT/Data/Actions/scripts. Lá crie um arquivo chamado: Postchange.lua e adcione isto: Verde: Aqui é uma linha que mudará o nome do char que usar o item. Caso não queira é so apagar. Agora Salve e feiche. Após ter feito isso abra o actions.xml e no final uma linha antes de </actions> adcione isso: Vamos ver o resultado: Antes de Usar. Quando Usado. Resultado Final. Bom espero ter ajudado. Créditos: Eu por ter feito tudo. Att.
    1 ponto
  7. Isbigo

    Zombie Events + Pagina Gesior.

    Olá a todos, venho aqui lhes trazer o script de Zombie Event. Não tenho certeza se estou postando na areá correta, mais caso eu não esteja por favor movam o tópico. Mãos a obra. Zombie Events. Testado em: TFS 0.4 Se quiser testar em outro distro responsabilidade de vocês. Algumas informações sobre ele primeiramente, Quando o evento está começando você terá certos minutos em você para incorporar o teleport antes que desapareça. Quando o teleport desaparece mesmo acontece com zombie spawn após 20 segundos. Zombie iram aparece 1 de cada vez, a cada 20 segundos. Os players que morrerem no evento, serão teleportados para o templo. O vencedor do evento, recebe algumas recompensas e um cale-se dourado com seu nome. Lembrando a areá de evento tem que ser non-pvp para que os possam disputar la. Vamos la. Globalevents/scripts/zombie event.lua local config = {playerCount = 2001, -- Global storage for counting the players left/entered in the eventzombieCount = 2002, -- Global storage for counting the zombies in the eventteleportActionId = 2000, -- Action id of the teleport needed for the movement scriptteleportPosition = {x = 1135, y = 1077, z = 3, stackpos = 1}, -- Where the teleport will be createdteleportToPosition = {x = 1190, y = 1076, z = 7}, -- Where the teleport will take youteleportId = 1387, -- Id of the teleporttimeToStartEvent = 5, -- Minutes, after these minutes the teleport will be removed and the event will be declared startedtimeBetweenSpawns = 20, -- Seconds between each spawn of zombiezombieName = "event zombie", -- Name of the zombie that should be summonedplayersNeededToStartEvent = 5, -- Players needed before the zombies can spawn.-- Should be the same as in the creaturescript!-- The zombies will spawn randomly inside this areafromPosition = {x = 1186, y = 1072, z = 7}, -- top left cornor of the playgroundtoPosition = {x = 1195, y = 1081, z = 7}, -- bottom right cornor of the playground}function onTimer()local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportPosition)doItemSetAttribute(tp, "aid", config.teleportActionId)doBroadcastMessage("Zombie event starting in " .. config.timeToStartEvent .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING)setGlobalStorageValue(config.playerCount, 0)setGlobalStorageValue(config.zombieCount, 0)addEvent(startEvent, config.timeToStartEvent * 1000 * 60)print(getGlobalStorageValue(2001))endfunction startEvent()local get = getThingfromPos(config.teleportPosition)if get.itemid == config.teleportId thendoRemoveItem(get.uid, 1)endlocal fromp, top = config.fromPosition, config.toPositionif getGlobalStorageValue(config.playerCount) >= config.playersNeededToStartEvent thenaddEvent(spawnZombie, config.timeBetweenSpawns * 1000)doBroadcastMessage("Good luck in the zombie event people! The teleport has closed!", MESSAGE_STATUS_WARNING)for x = fromp.x, top.x dofor y = fromp.y, top.y dofor z = fromp.z, top.z doareapos = {x = x, y = y, z = z, stackpos = 253}getPlayers = getThingfromPos(areapos)if isPlayer(getPlayers.uid) thendoPlayerSendTextMessage(getPlayers.uid, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. config.timeBetweenSpawns .. " seconds! Good luck!")endendendendelsedoBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. config.playersNeededToStartEvent .. " players is needed!", MESSAGE_STATUS_WARNING)for x = fromp.x, top.x dofor y = fromp.y, top.y dofor z = fromp.z, top.z doareapos = {x = x, y = y, z = z, stackpos = 253}getPlayers = getThingfromPos(areapos)if isPlayer(getPlayers.uid) thendoTeleportThing(getPlayers.uid, getTownTemplePosition(getPlayerTown(getPlayers.uid)), false)doSendMagicEffect(getPlayerPosition(getPlayers.uid), CONST_ME_TELEPORT)endendendendendendfunction spawnZombie()if getGlobalStorageValue(config.playerCount) >= 2 thenpos = {x = math.random(config.fromPosition.x, config.toPosition.x), y = math.random(config.fromPosition.y, config.toPosition.y), z = math.random(config.fromPosition.z, config.toPosition.z)}doSummonCreature(config.zombieName, pos)doSendMagicEffect(pos, CONST_ME_MORTAREA)setGlobalStorageValue(config.zombieCount, getGlobalStorageValue(config.zombieCount)+1)doBroadcastMessage("A zombie has spawned! There is currently " .. getGlobalStorageValue(config.zombieCount) .. " zombies in the zombie event!", MESSAGE_STATUS_CONSOLE_RED)addEvent(spawnZombie, config.timeBetweenSpawns * 1000)endend Movements/scripts/zombie event.lua local config = {playerCount = 2001, -- Global storage for counting the players in the eventmaxPlayers = 15, -- Max players who can participate}function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)if getGlobalStorageValue(config.playerCount) < config.maxPlayers thensetGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)+1)if getGlobalStorageValue(config.playerCount) == config.maxPlayers thendoBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(config.playerCount) .. " players]! The event will soon start.")elsedoBroadcastMessage(getPlayerName(cid) .. " entered the Zombie event! Currently " .. getGlobalStorageValue(config.playerCount) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED)endelseaddEvent(tpBack, 1000, cid, fromPosition)doPlayerSendCancel(cid, "The event is full. There is already " .. config.maxPlayers .. " players participating in the quest.")return falseendprint(getStorage(config.playerCount) .. " Players in the zombie event.")return trueendfunction tpBack(cid, fromPosition)doTeleportThing(cid, fromPosition, true)doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)end Creaturescripts/scripts/zombie event.lua local config = {playerCount = 2001, -- Global storage for counting the players left/entered in the eventgoblet = 5805, -- id of the gold goblet you'll get when finishing the event.rewards = {2195, 2152, 2160}, -- You will get this + a gold goblet with your name on.-- {moneyId, count, using? 1 for using moneyReward, 0 for not using.}moneyReward = {2160, 10, 1},-- Should be same as in the globalevent!-- The zombies will spawn randomly inside this areafromPosition = {x = 1186, y = 1072, z = 7}, -- top left cornor of the playgroundtoPosition = {x = 1195, y = 1081, z = 7}, -- bottom right cornor of the playground}function onStatsChange(cid, attacker, type, combat, value)if isPlayer(cid) and isMonster(attacker) thenif isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) thenif getGlobalStorageValue(config.playerCount) >= 2 thendoBroadcastMessage(getPlayerName(cid) .. " have been eated by Zombies!", MESSAGE_STATUS_CONSOLE_RED)local corpse = doCreateItem(3058, 1, getPlayerPosition(cid))doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".")doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)-1)elseif getGlobalStorageValue(config.playerCount) == 1 thenif isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) thendoBroadcastMessage(getPlayerName(cid) .. " won the Zombie event! Congratulations!", MESSAGE_STATUS_WARNING)local goblet = doPlayerAddItem(cid, config.goblet, 1)doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(cid) .. " for winning the Zombie event.")local corpse = doCreateItem(3058, 1, getPlayerPosition(cid))doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".")doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)for _,items in ipairs(config.rewards) dodoPlayerAddItem(cid, items, 1)endif config.moneyReward[3] == 1 thendoPlayerAddItem(cid, config.moneyReward[1], config.moneyReward[2])endendfor x = config.fromPosition.x, config.toPosition.x dofor y = config.fromPosition.y, config.toPosition.y dofor z = config.fromPosition.z, config.toPosition.z doareapos = {x = x, y = y, z = z, stackpos = 253}getMonsters = getThingfromPos(areapos)if isMonster(getMonsters.uid) thendoRemoveCreature(getMonsters.uid)endendendendendreturn falseendendreturn trueend Creaturescripts/scripts/login.lua poste a seguinte função. registerCreatureEvent(cid, "zombieevent") Globalevents.xml insira: <globalevent name="zombieevent" time="15:00" event="script" value="zombie event.lua"/> Movements.xml insira: <movevent type="StepIn" actionid="2000" event="script" value="zombie event.lua"/> Creaturescripts.xml insira: <event type="statschange" name="zombieevent" event="script" value="zombie event.lua"/> Esta parte e de grande importância. Na pasta Monster crie um arquivo chamado Event zombie.xml e insira isto dentro: <?xml version="1.0" encoding="UTF-8"?><monster name="Event Zombie" nameDescription="an event zombie" race="undead" experience="280" speed="100" manacost="0"><health now="500" max="500"/><look type="311" corpse="9875"/><targetchange interval="5000" chance="50"/><strategy attack="100" defense="0"/><flags><flag summonable="0"/><flag attackable="0"/><flag hostile="1"/><flag illusionable="0"/><flag convinceable="0"/><flag pushable="0"/><flag canpushitems="1"/><flag canpushcreatures="1"/><flag targetdistance="1"/><flag staticattack="90"/><flag runonhealth="0"/></flags><attacks><attack name="melee" interval="2000" min="-350" max="-350"/></attacks><defenses armor="15" defense="10"/><immunities><immunity paralyze="1"/></immunities><voices interval="5000" chance="10"><voice sentence="You wont last long!"/><voice sentence="Mmmmh.. braains!"/></voices><loot><item id="2148" countmax="1" chance="100000"/><!-- gold coin --></loot></monster> Depois em monstros.xml adicione a seguinte linha: <monster name="Event zombie" file="event zombie.xml"/> Por pedidos vai ai uma pagina para seu website. Vá ate "C:/xampp/htdcos/" crie um arquivo chamado Zombieevent.php dentro coloque isso. <?PHP$main_content .= '<h4 style="" id="pt"><br><center><h2><b> Zombie Event</b></h2></center><br><br><center><object height="350" width="425"><imgsrc="http://i52.tinypic.com/wjdth1.jpg" height="700"width="525"></object></center><br><br><br> </h4><b></b><center><b>O que é o Zombie Event?</b><br><br>É um evento que acontece todos os dias as 12:00, 18:30 e 21:30 hr noservidor.<br><br><br><b>Como funciona?<br></b><br>Quando estiver na hora irá abrir um teleport no mesmo lugar onde aparece oteleport da WoE, basta você entrar e aguardar o tempo para inicio do Evento,o objetivo do jogo é correr dos zombies, a cada 20 segundos irá nascer um novo emalguma área randomica, você deve correr pois se eles te tocarem vocêautomaticamente é retirado do evento e volta para o seu temple.O ultimo jogador que sobrar vivo vence o evento.<br><br><br><b>Quais são os prêmios?<br></b><br>O ganhador irá ganhar<b> 100k</b>, uma <b>Boots of Haste</b> e um <b>Globet com onome dele</b>.<br><br></center>';?> Depois abra o index.php em "C:/xampp/htdcos/". Depois de: case "buypoints":$topic = "Buy Points";$subtopic = "buypoints";include("buypoints.php");break; Cole isso: case "zombieevent":$topic = "Zombie event";$subtopic = "zombieevent";include("zombieevent.php");break; Agora vá em "C:/xampp/htdcos/layout/tibiacom/" abra o arquivo layout.php. Depois de: <a href='?subtopic=highscores'><div id='submenu_highscores' 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_highscores' class='ActiveSubmenuItemIcon' style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div><div class='SubmenuitemLabel'>Highscores</div><div class='RightChain' style='background-image:url(<?PHP echo $layout_name; ?>/images/general/chain.gif);'></div></div></a> Cole isso: <a href='?subtopic=zombieevent'><div id='submenu_zombieevent' 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_highscores' class='ActiveSubmenuItemIcon'style='background-image:url(<?PHP echo $layout_name; ?>/images/menu/icon-activesubmenu.gif);'></div><div class='SubmenuitemLabel'>Zombie Event</div><div class='RightChain' style='background-image:url(<?PHP echo $layout_name;?>/images/general/chain.gif);'></div></div></a> Agora clique aqui e confira seu zombie events. Aqui vocês podem baixar o mapa para se usar com este evento: Download: Click aqui Scan: Clique aqui Prontinho espero que gostem. Créditos: Gostou? REP+ Arrumado Monster. Site Adicionado.
    1 ponto
  8. digo1040

    [Spell] Change Corpse

    Change Corpse Eai pessoal, tava vendo alguns videos e encontrei um que falava sobre uma magia, change corpse, como procurei e não a encontrei resolvi fazer ela e ficou assim: Versão Instant Spell: Versão Rune: Bom vamos as configs da magia: storage => devido a natureza da magia recomendo que ela tenha um delay proprio (cd), entao coloque uma storage que ficara salvo esse delay. time => defina o tempo em segundos do delay, para nao ter delay coloque 0. player/monster/npc => voce define em quais creatures o char pode usar a magia, recomendo deixar somente os players como true; pois eles poderiam usá-la para entrar em alguma sala que tenha somente um npc, ou trocar de posição com um trainer. chance => é a chance da magia ter sucesso (0-100) para funcionar todas as vezes coloque 100. Bom é isso, espero que gostem Segue o video com a chance corpse:
    1 ponto
  9. Olá galerinha do :XTibia_smile: , hoje trouxe aqui para area de pixel art um pacotão com 64 Sprites em formato .idc, nesse pacotao dessa vez e uma coisa que muitos querem, POKEMONS DE HOENN / SINOOH [RUBY/SAPPHIRE/DIAMOND/ETC...], entao vamos ao que intereça! O Que Contém/ Que Pokemons Contém: :button_ok: Não Contém :button_cancel: Downloads & Créditos: Pacotão Novos Pokemons: Clique Aqui! Scan: Clique Aqui! Créditos: OT Pokémon Brunoo Angel
    1 ponto
  10. Miineero

    Baiak O Melhor Editador Por Minero

    Ae PeSsOaL Fmz :* Vim Traser Pa Vc's Baiak Editado 100% Rox Ot Contem City do ot bAIAK Baiak Yourots Vip City Hydraland Baiak City... Desert City :button_ok: Novas hunt Tps Modificados Itens Editados Vende Na Vip City No Npc >>Updade Seller<< Quest Do Baiak POI ANihi MPA Quest DH Quest Entre Outras Secretas ..... :button_ok: Updat Baiak O Melhor. !!! Oq Mudou??? Ae PeSSoAl Ot 100% Modificado Nessa UpDaT Modifiquei 6 Hunt Free 100% Mais RpG :button_ok: \/ Draken elite New Hunt :button_ok: Blattlemaster Zunzu Hunt Modificado :button_ok: Ghastly Dragon Hunt Modificado :button_ok: Draken Warmaster Hunt Modificado :button_ok: Draken Spellweaver Hunt Modificado :button_ok: Wailing Widow New Hunt :button_ok: Deletei os Tp da city Vip2 E Fis Outros De\/ Medusa Vip :button_ok: Demon Vip :button_ok: Dragon Lord Vip :button_ok: Quara Matanssin :button_ok: Frost Dragon Vip :button_ok: Lizard Torre :button_ok: Adicionei Novas House Frente Templo :button_ok: Adicionei Todos os Monstro 8.6 100% :button_ok: Abomination Fury 100% :button_ok: Brimstone Bug 100% :button_ok: butterfly demon 100% :button_ok: Chrak 100% Draken Abomination 100% :button_ok: Draken Elite 100% :button_ok: Finger Killer 100% :button_ok: Living Plant 100% :button_ok: Lizard Abomination 100% :button_ok: lizard magistratus 100% :button_ok: lizard noble 100% :button_ok: Phantom Lord 100% :button_ok: Purple Turtle 100% :button_ok: Snake God Essence 100% :button_ok: Souleater 100% :button_ok: Triple Medusa 100% :button_ok: Novo Visual Templo \/ :button_ok: Novo Visual Tps vip2\/ :button_ok: Entrada Vip\/ :button_ok: Hunt Adicionadas\/ :button_ok: Nova hunt De Lizards Vip\/ :button_ok: Novo Divertimento Lançado Cassino !!!"Isso Vicia" :button_ok: Novo Visual Da City\/ :button_ok: Tps\/ :button_ok: Se Alguem Achar algum Bug Me Avise !! :button_ok: Creditos :button_ok: Minero :button_ok: Baiak :button_ok: Como Modifiquei o mapa muito nao sei os credito Se seu credito nao estiver aki me avise obrg!! :button_ok: Senha do God Account = minero / Password = minero GOSTOU ME DA REP+ NAO CUSTA NADA ^^ :button_ok: Como Minha net é Muito Ruim Nao Posso por ot on Quem For Por Ese Ot On Deixe o ip ae para eu jogar pleas !! Para q o ot Evolue Faça Eventos Iso Almenta a Diverçao No jogo Faça War Sorteios de Itens Se VC Por o ot on e nao faser eventos seu ot nao vai creser Ok Seja legal com os Jogadores Nao se Edite Feito iso Seu ot Vai Bombar =] Até
    1 ponto
  11. Syn IP Changer [7.6 - 8.7x] Imagem By Luan Henrique: Versões Suportadas: 7.6 até 8.7x! Créditos: Syntax Talaturen de IP Changer Talaturen IP's Changer é uma aplicação para substituir o host na tibiaclient. Ele é criado por Talaturen (meu amigo) com a ajuda do Kibe (eu) com a edição de memória. É escrito em C + + usando a biblioteca GUI Qt 4.7. É open source e licenciado sob a licença GNU GPL (General Public License) v2. Deve ser executado em sistemas Windows e * nix. Ele trabalha com o protocolo de 7,6, 7,8, 7,92, 8,0, 8,1, 8,11, 8,2, 8,21, 8,22, 8,3, 8,31, 8,4, 8,41, 8,42, 8,5, 8,52, 8,54, 8,55, 8,57, 8,61, 8,62 e 8,7. Informações sobre folhas de estilo: Qt 4.7: Qt Style Sheets Versão Atual: 3.7 ChangeLog (3.7): * 8,7 suporte ao cliente. Download: Attached Files * File Type: < Link removido - Acusação de vírus aparentemente inofensivo > Se não funcionar : http://otland.net/at...-ip-changer.exe Se gostou porfavor REP ++ Se você não posta é porque você é um mal agradecido Vlw xtibia , se for area errada Mova ! EDIT@ Scan : Here !
    1 ponto
  12. matheusalvez

    [8.60] Baiak Evolution 1.0

    ESSA É A EVOLUÇAO DOS BAIAK BY MATH... MAIS UMA VERSAO DO BAYAK EVOLUTION AE PRA VOCE.. Baiak Yurots V2.2 Oque Mudou ? Baiak Yurots V2.7 Oque Mudou ? Baiak Yurots v1.0.9 Oque Mudou ? Baiak Yurots v1.1.0 Oque Mudou ? Baiak Yurots V1.1.4 Oque Mudou ? Baiak Yurots Edited By Bryaan Oque mudou ? Baiak Evolution By Math o que mudou? Coloquei porta em todos os treiner para acabar com o pz em treiner's Adicionado 7 novos monster Adicionados novos itens Master Vip Helmet (Arm:40). Master Vip Armor (Arm:40). Master Vip Legs (Arm:40). Master Vip Boots (speed +75). Master Vip Shield (Def:85). Master Vip Rod. Batendo min="750" max="750". Master Vip Wand. Batendo min="750" max="750". Master Vip Arrows. Master Vip Crossbow (Range:4, Atk +10, Hit% +7) Master Vip Stars (Atk:150). Master Vip Club (Atk:170 physical + 30 ice, Def:45 +1). Master Vip Axe (Atk:170 physical + 30 ice, Def:45). Master Vip Sword (Atk:170 physical + 30 ice, Def:45 +2). Feito 100+ houses Adicionado Quest Master Vip (vip 3) Retirado os bugs (para completar quest master vip é necessario ser vip 2) Novos comandos adicionados... !glist !changeoutfit !party !attackguild !reparar soft !reparar firewalker Adicionado System de Rank que sempre esta atualizado segue a baixo a lista de comandos: (exemplo:eu estava lvl 1 upei pro lvl 2 ae aparece la no system meu nome lvl 2) !rank level !rank axe !rank club !rank sword !rank shield !rank fishing !rank guild Baiak Evolution By Math 1.0 o que mudou? Retirado o system de Rank(coloquei a versao antiga) Adicionado quest para os itens master vip Adicionado Zombie Event Adicionado Woe Event Adicionado lottery Event Templo Reformulado E retirado alguns bugs obs:para retirar o lottey system comandos para cm e god abrir o zombie event /zombiestart x (no lugar de x coloque quantos player voce quér que participe..ex:/zombiestart 6) /zombiestart force (caso nao entre o tanto que player desejado digite isso que o evento começara) ACC do god: god/god TEMPLO MASTER VIP TEMPLO FREE DOWNLOAD AQUI SCAN AQUE Reportem bugs aqui Abra BREVE NOVA VERSAO Creditos Baiak Bryaan Math Miner0
    1 ponto
  13. SkyDangerous

    [Nivél:básico] Fazendo Quest

    Muitos irão dizer esse tutorial já existe , porém não tão explicado quanto o meu e o meu é sempre melhor Algumas pessoas estavam com dificuldade em fazer as quests , então vamos ao tutorial. Vá na pasta actions do seu servidor e abra a pasta scripts. Crie um arquivo chamado quest.lua. function onUse(cid, item, frompos, item2, topos) if item.uid == XXXX then queststatus = getPlayerStorageValue(cid,XXX) if queststatus == -1 then doPlayerSendTextMessage(cid,22,"MENSAGEM QUE ENVIARA PARA O PLAYER.") doPlayerAddItem(cid,ID DO ITEM QUE VAI RECEBER,QUANTIDADE) setPlayerStorageValue(cid,XXX,1) else doPlayerSendTextMessage(cid,22,"Mensagem caso o player ja tenha feito.") end else return 0 end return 1 end Como configurar?: Essa linha seria o id da action , lugar de XXXX coloque qualquer número que não tenha nemhum igual if item.uid == XXXX then Essa linha seria verifica a storage do player , no lugar de XXXX um número , mas tome cuidado para não colocar repetido. queststatus = getPlayerStorageValue(cid,XXXX) Essa linha será a mensagem que o player receberá quando ele fazer a missão , so trocar a frase no lugar que está escrito. doPlayerSendTextMessage(cid,22,"MENSAGEM QUE ENVIARA PARA O PLAYER.") Essa linha ele vai atribuir um novo storage ,coloca o mesmo numero que você pois antes no getplayerStorageValue setPlayerStorageValue(cid,XXXx,1) Essa linha irá adicionar o item ao player , caso queira adicionar mais de um item , só adicionar uma linha a mais , e edite do seu jeito. doPlayerAddItem(cid,ID DO ITEM QUE VAI RECEBER,QUANTIDADE) Essa linha seria a mensagem que retornará para o player caso ele ja tenha feito a missão , mude para qualquer frase. doPlayerSendTextMessage(cid,22,"Mensagem caso o player ja tenha feito.") 2- Agora vá em action.xml e adicione essa tag Essa linha pode adicionar qualquer linha , no lugar de XXX você bota o numero que colocou nessa linha "if item.uid == XXXX then". No lugar de quest , seria o nome do arquivo que você criou. <action uniqueid="XXX" script="quest.lua" /> 3- Abra o RME , faz um bau clique no botão direito nele e vai em "Properties" e adiciona o numero que colocou nessa linha "if item.uid == XXXX then" 4 - Testando Eu tentei explicar detalhado , mas alguma coisa posso ter passado e se tiverem dúvidas podem perguntar
    1 ponto
  14. matheuusmv

    Mapa De Pokemon.

    Olá, Irei postar algumas fotos do mapa que estou trabalhando e finalizando. O mapa ficara online atraves do servidor Pokeonline.com.br. Não irei postar muitas fotos por 2 motios, 1° Minha net ta meio lenta. E o 2° Para nao estragar o ROLE PLAYING do server. MiniMap: Cidades: Cinnabar: Viridian: Pewter: Cerulean: Saffron: Celadon: Lavender: Vermilion: Fuchsia: Hunts: Obrigado galera, Espero Criticas, Sugetoes e Duvidas de vocês. Ate logo.
    1 ponto
  15. matheusalvez

    Baiak Evolution By Math 0.1

    ESSA É A EVOLUÇAO DOS BAIAK BY MATH... CANSADO DAQUELES BAIAK QUE SO MUDAM UM POUQUINHO AQUI OU POUQUINHO ALI E PRONTO POSTA AQUE PRA NOIS... INTAO ESSE É O BAIAK CERTO PARA VCS.. OBSERVAÇÃO:ESSE MAPA É IGUAL O OUTRO POREM SEM OS BUGS QUE ME REPORTARAM NO OUTRO TOPICO E OS QUE EU ACHEI... Baiak Yurots V2.2 Oque Mudou ? Baiak Yurots V2.7 Oque Mudou ? Baiak Yurots v1.0.9 Oque Mudou ? Baiak Yurots v1.1.0 Oque Mudou ? Baiak Yurots V1.1.4 Oque Mudou ? Baiak Yurots Edited By Bryaan Oque mudou ? Baiak Evolution By Math o que mudou? Coloquei porta em todos os treiner para acabar com o pz em treiner's Adicionado 7 novos monster Adicionados novos itens Feito 100+ houses Adicionado Quest Master Vip (vip 3) Retirado os bugs (para completar quest master vip é necessario ser vip 2) Novos comandos adicionados... Adicionado System de Rank que sempre esta atualizado segue a baixo a lista de comandos: (exemplo:eu estava lvl 1 upei pro lvl 2 ae aparece la no system meu nome lvl 2) ACC do god: god/god BUERO FREE TEMPLO VIP CIDADE MASTER VIP (VIP 3) RESTAURANTE \O/ PRAIA (MASTER VIP) TREINER FREE TELEPORTS VIP TELEPORTS VIP 2 TELEPORTS VIP 3 TEMPLO FREE DOWNLOAD AQUI SCAN AQUE Reportem bugs aqui ou adiciona eu no msn para suporte:matheusalves96@hotmail.com Abra Creditos Baiak Bryaan Math Miner0
    1 ponto
  16. MarcioSkate22

    Pet System By Mskate22

    Eu vim programando esse script e finalmente acabei! Antes de começar,leia os dados: 1.Crie um monstro editado, sugestão: proprio pra PET 2. Abra actions e copie um arquivo e bote: Depois coloque Depois Mude O Nome do item e invente novos modos de utiliza-los x) Ajudei? Rep+
    1 ponto
  17. BrunooAngel

    [Pokémon] Adicionando Novos Items

    Olá Galera do :XTibia_smile: , primeiramente bem-vindos ao meu novo topico, hoje vim aqui ensinar a vocês como "Adicionar Novos Items Em seu Servidor de Pokémon", Muita gente ja me adicionou no msn falando que quando iam adicionar os items que postei dava erro no items.otb, na verçao e etc... Resolvi postar esse tutorial bem simples, Vamos Lá! -> Passo 1: Faça download do OT ITEM EDITOR 0.3.7 e o extraia na pasta do seu servidor, apos fazer isso va na pasta do seu client e copie seu TIBIA.DAT e seu TIBIA.SPR [OBS: tem que ser o do tibia global se nao ira dar erro], Abra-o e clique em File > Load OTB e Selecione Seu "ITEMS.OTB" -> Passo 2: Baixe um pacotao de items em .IDC ou adicione em seu DAT EDITOR, apos adiciona-lo ou importa-lo veja seu "ITEM TYPE" Agora Va no seu item editor novamente e clique no "+" Do lado do "DEPRECATED" e faça igual a foto abaixo: -> Passo 3: Agora clique sobre o lado direito do ITEM ID [no meu caso é 113] e clique em GROUND [se for piso] / CONTAINER [se for mochila ou coisa do tipo] / None [se for qualquer outro tipo de item, como no caso um POKEMON EGG/Parede e etc...], no meu caso é "NONE", entao cliquei nele, apos clikar no "NONE" clique no "-" do lado do "DEPRECATED" e clique no '+' do lado do "OTHER", apos fazer isso abaixe tudo e veja la em baixo o seu item id [no meu caso é 113], se ele estiver la clique em: File > Save As > Selecione seu items.otb > OK! pronto item adicionado, agora feche o "OT ITEM EDITOR" e vamos a configurar! -> Passo 4: agora va na PASTA DO SEU OT > DATA > ITEMS > E abra seu "ITEMS.XML", Agora procure um item parecido com o seu [no meu caso e um POKEMON EGG] e adicione uma linha parecida com essa: <item id="113" name="Pokemon Egg" /> Configurando a linha: <item id="ID DO ITEM DO ITEM EDITOR" name="nome do item" /> se for um corpse, copie uma linha do corpse do items.xml e faça como acima, e assim vai! Feche e salve o ITEMS.XML, e se seu servidor estiver ONLINE fexe-o e o coloque online novamente, entrando no seu ot fale /i NOME DO ITEM no meu caso: /i Pokemon Egg e la vai estar ele!, Espero ter ajudado :smile_positivo:
    1 ponto
  18. Bem gente muita gente ja postou esses tutorias de fazer client de Poketibia,Tibia e muito mais. Um deles foi o DeathAngels - Que fez muito sucesso com seu tutorial e pode contar com meu REP + Death. -Criando Próprio Client Do Seu Tibia ou Poketibia- 1°Passo -> Pegando seu client ! Click No Link:Vapus/CustomClient Me desculpem não estar encinado a vocês a mudar a imagem e o icone do seu tibia tava sem tempo mais logo botarei nesse mesmo post vlw :construction: ! Ajudei REP+ :button_ok:
    1 ponto
  19. ImperiumOT

    Baiak Edited By Imperiumot

    Eae xtibianos sussa? Vo posta meu 1 baiak editado Updat Baiak ImperiumOT. !!! Oq Mudou??? Ae PeSSoAl Ot 100% Modificado Nessa UpDaT Modifiquei 6 Hunt Free 100% Mais RpG \/ Draken elite New Hunt Blattlemaster Zunzu Hunt Modificado Ghastly Dragon Hunt Modificado Draken Warmaster Hunt Modificado Draken Spellweaver Hunt Modificado Wailing Widow New Hunt Deletei os Tp da city Vip2 E Fis Outros De\/ Medusa Vip Demon Vip Dragon Lord Vip Quara Matanssin Frost Dragon Vip Lizard Torre Adicionei Novas House Frente Templo Adicionei Todos os Monstro 8.6 100% Abomination Fury 100% Brimstone Bug 100% butterfly demon 100% Chrak 100% Draken Abomination 100% Draken Elite 100% Finger Killer 100% Living Plant 100% Lizard Abomination 100% lizard magistratus 100% lizard noble 100% Phantom Lord 100% Purple Turtle 100% Snake God Essence 100% Souleater 100% Triple Medusa 100% Print do MAP Map Todo ---------------------------------------- Downloads OTserver.rar Scan OBS : So novo nesses negocio de OT não sei mecher no virustotal não sei ver se tem virus pois esse map eu peguei do Minero Creditos Minero Baiak K4p3t4 TECHLOOK Bryaan ImperiumOT eu GOSTO ? QUE CUSTA DE UM RED +++ ALI ? \/ >
    1 ponto
  20. lLeandroo

    Baiak Totalmente Editado..!

    Ola Galera Vim Postar Mais Um Baiak Inovador Totalmente Diferente! Vamos Oque Interessa De Uma Olhada A Baixo!! .. baiak Yurots 8.60 .. Quem Não Gosta do Bom e Antigo Yurots.. Bom Ai Está Mapa Yurots Super Rox Editado Por baiak Lula... Baiak Yurots V2.2 Oque Mudou ? Mudou a City ta 90% 8.5 Foi Arrumada As Houses. Adicioano Npc Papai Noel no Templo Vende Items 8.54! Novos Items Novos Outifits Novas Hunts E Muito Mais... Baiak Yurots V2.7 Oque Mudou ? Foi Adicionada um Nova Cidade Chamada baiak City Foi Adidionada Um Teleport no Templo Que Vai para Alumas City's Foi Adicionado Npc de Bless,Pagando Todas as Bless você nao prescisa usar aol... Foi Adicionado Uma Ilha de GM's ... Bug do Account Mananger Arrumado. Novo Executer adicionado,se o ot cai ele salva sozinhoo. E Muito Mas Estara por vim ... Baiak Yurots v1.0.9 Oque Mudou ? Foi Adicionado Sistema Vip.. Foi Adicionado 5 Novos Portais Vip Foi Adicionado Novos Bixos Vip,Warlock Vip,Medusa Vip,Bossing of Baiak.. Foi Adicionado New Quest baiak Super Foda !! ;D Foi Modificado o Templo Foi Adicionado Mais Treiners ! Entre Alguns Bugs Retirados Baiak Yurots v1.1.0 Oque Mudou ? Mudou o Protocolo de 8.57 para 8.60 Novos Item Novo Outfit Baiak Yurots V1.1.4 Oque Mudou ? Tirei o Pz tool do Templo Fiz um Novo System Vip por Comando Fiz o Novo Addon do Outfit do Wayfarer Baiak Yurots Edited By:Lukiinhas Oque mudou ? Modifiquei o templo. Criei uma sala com alguns npc's. Fiz novos tps na cidade vip para hunts! Criei novos itens vips! (preço de 8kk cada) Fiz quest para axe, arrow e club vip! (1 para os 3) Baiak Yurots Edited By:SuinoSky Oque mudou ? Modifiquei o templo. "A City Vip Se Você Não Char Ela Esta No Lugar De Onde Era Inquestion" Fiz novos tps na cidade vip para hunts! Criei novos itens vips! (preço de 8kk cada) Fiz quest para axe, arrow e club vip! (1 para os 3) System Vip Como Funciona ? !buyvip (Para Comprar Vip)(Players) !vipdays (Para Ver Quantos Dias de Vip Você Tem)(Players) /addvip nomedoplayer,dyasvip (GOD) /delvip nomedoplayer,quantos dias de vip você quer tira desse player (GOD) Informações sobre armas vips: Vip Sword -> Atk: 120 Def: 40 (se nao me engano) Vip Axe -> Atk: 120 Def: 40 (se nao me engano) Vip Club -> Atk: 120 Def: 40 (se nao me engano) Vip Arrow -> Varia com o bow usado! Vip Staff -> entre 400 até 680 Knight Vip Armor -> +5 skill para club,sword,axe,fist. Paladin Vip Armor -> +5 skill para distance Mage Vip Armor -> +5 Mag.Level Visualize Umas Screenshot's! :camera: Templo! Dowloand Do Mapa... Scan Do Mapa... "Fazendo" Você Gostou Do Meu Mapa ? Serio De Um REP+ Ali :forward: Duvida's? ADD Me Msn : Leandro_level100@hotmail.com
    1 ponto
  21. ADMJuan

    Dúvida: Como Tirar Esse Erro!

    Warning: scandir(./signatures/) [function.scandir]: failed to open dir: No such file or directory in C:\xampp\htdocs\characters.php on line 147 Warning: scandir() [function.scandir]: (errno 2): No such file or directory in C:\xampp\htdocs\characters.php on line 147 Warning: Invalid argument supplied for fo como faço para tirar esse erro?? o gesior tá o usando que aquele sistema de outift. Ajuda plix!
    1 ponto
  22. jedian1

    Alguem Que Seja Crack Em Weapons.

    data/weapons/scripts/man.lua function onUseWeapon(cid, var) doTargetCombatHealth(cid, getCreatureTarget(cid), 1, -DANOMINIMO, -DANOMAXIMO, EFEITO) doSendDistanceShoot(getThingPos(cid), getThingPos(getCreatureTarget(cid)), 18) return doSendDistanceShoot(getThingPos(cid), getThingPos(getCreatureTarget(cid)), 30) end edita o DANOMINIMO e o DANOMAXIMO (deixa o - na frente) e o EFEITO ( ve eles com /z numero) weapons.xml <wand id="8911" level="22" mana="5" event="script" value="man.lua"> <!-- Northwind Rod --> <vocation id="2"/> </wand> </wand> aí você edita a id, o level, a mana e a vocação que pode usar
    1 ponto
  23. Gabriel Couto

    Meu Primeiro Mapa

    Mais atenção ao postar. Você postou na área errada. Leia os Nomes da seção! Cuidado com a reincidência nisso, você pode ser alertado. Movido para o local correto. Até!
    1 ponto
  24. Demonbholder

    Getstoragerank(Storage, N)

    Faaaaaala galera! Tudo tranquilo? Faz um tempão que eu não posto aqui né? Então, eu fiz essa função esses dias e resolvi divulgar porque todo mundo precisa dessa função eventualmente. Como funciona: No primeiro parâmetro você irá colocar o número de storage, o qual você deseja checar o rank. No segundo parâmetro será posto o número mínimo para o jogador entrar no rank, por exemplo, caso você coloque 0 e há algum jogador com -1 no valor de storage, ele não irá entrar na lista. A função retorna uma tabela com os nomes dos jogadores em ordem do maior valor ao menor. Enfim, vamos a função: function getStorageRank(storage, n) local n = n or 0 local data = tonumber(db.getResult("SELECT `id` FROM `players` ORDER BY `id` DESC;"):getDataString("id")) local val, ret, nome, tabela, max = {}, {}, {}, {}, {} for i = 1, data do if tonumber(db.getResult("SELECT `online` FROM `players` WHERE `id` = "..i..";"):getDataString("online")) == 0 then local data = db.getResult("SELECT `value` FROM `player_storage` WHERE `player_id` = "..i.." AND `key` = "..storage..";") resultado = data:getID() == -1 and -1 or tonumber(data:getDataString("value")) name = db.getResult("SELECT `name` FROM `players` WHERE `id` = "..i..";"):getDataString("name") else for _, pid in pairs(getPlayersOnline()) do if getPlayerGUID(pid) == i then resultado = getPlayerStorageValue(pid, storage) name = getPlayerName(pid) end end end table.insert(val, resultado) table.insert(tabela, resultado) table.insert(nome, name) end for i = 1, table.maxn(tabela) do valor = n for a, b in ipairs(tabela) do if b >= valor then valor = b end end table.remove(tabela, table.find(tabela, valor)) table.insert(max, valor) end for i = 1, #max do local pos = table.find(val, max[i]) table.insert(ret, nome[pos]) table.remove(nome, pos) table.remove(val, pos) end return ret end Vamos a um exemplo de uso: function onSay(cid, words, param) for _, t in pairs(getStorageRank(38000, -1)) do print(t) end end Neste exemplo será impresso no distro os nomes dos jogadores em ordem de maior para menor. É isso ai galera, espero que usem, até.
    1 ponto
  25. Uma coisa eu digo, coloca os títulos de descrição nas "spoilers" fica ruim de visualizar, Ainda não vi o servidor, mais pelo que falou pelo MSN parece estar bom!
    1 ponto
  26. Terun

    Poke Online V2

    Muito bom mesmo!
    1 ponto
  27. leonunes1202

    Básico Mas Funcional

    FALA AEW GAELRA MEU PRIMEIRO SCRIPT AKE NO XTIBIA... ELE É BEM SIMPLES, SERVE PARA TRANFORMAR 100CRYSTAL COINS EM 1 VIP COIN (MOEDA DO HEROSERV) LA VAI... VC SEGUE ATE: data\actions\scripts\otherchangegold.lua e add o seguinte: function onUse(cid, item, fromPosition, ItemEx, toPosition) if item.itemid == 2160 and item.type == 100 then doRemoveItem(item.uid,100) doPlayerAddItem(cid,11192,1) else return FALSE end return TRUE end DEPOIS VC VAI EM: data\actions\actions.xml E ADD A SEGUINTE TAG: <action itemid="11192" script="other/changegold.lua"/> HEROSERV DOWNLOAD DO HEROSERV: [download]http://www.megaupload.com/?d=CZXXVONN[/download] SCAN CREDITOS: SCRIPTS->100% PAKKITO(EU) MAPA->100% SUBWAT [code] [/code]
    1 ponto
  28. naneer

    Como Coloca Isso Aki?

    Olá, tem um topico explicando isso porem eu não me lembro de quem era então creditos para ele! vou explicar Vá em seu xampp/htdocs/layouts/tibiacom > abre o layouts.php Embaixo disso : <body onBeforeUnLoad="SaveMenu();" onUnload="SaveMenu();"> Cole isso : Em Verde vc poe aonde a img irá redirecionar ex: seusite.servegame.com/doacao Em Vermelho vc poe a pasta da img n precisa de htdocs somente /images/promocao.bmp Espero ter ajudado.
    1 ponto
  29. WolneiAC

    [Encerrado] Ajuda Bag Pokémon

    Ja aconteceu comigo uma vez isso,ñ sei se é o mesmo ae,vá em data/item/item.xml e procure pelo id da Pokebag e mude o Value dela para 0,ou vc tem que alterar os item iniciais em Firstitems.xml. :smile_positivo:
    1 ponto
  30. digo1040

    Loot Modificado

    Eai, ou poderia fazer um cresturescripts do tipo onDeath, fiz ele assim: function onDeath(cid, corpse, deathList) local rand = math.random(1,100) if rand > 50 then local item = doCreateItemEx(2383, 1) --cria o item 2383 (spike sword) doItemSetAttribute(item,'name',"novo nome") -- muda o nome do item doItemSetAttribute(item,'attack',34) -- muda o ataque da arma doAddContainerItemEx(corpse.uid, item) -- adiciona o item no corpo morto end return true end E nos monstros que é para executar o creaturescripts registra ele: <script> <event name="nome do creaturescript" /> </script> Nos meus testes: 16:49 Loot of a orc: a bag, meat, 4 gold coins, 7 worms, a studded shield, a novo nome.
    1 ponto
  31. Tony

    Como Criar Uma Cidade Boa Rpg?

    Como criar uma cidade boa RPG? Mappers caro e outras pessoas que não são mapeadas, mas ler este tutorial. Todos nós provavelmente desempenhou um ot uma vez, onde a cidade era plana, tinha 40 casas squary metros quadrados, tinha deco chato, e só tinha os edifícios que são estritamente necessários (lojas, casas depósito, e um templo). Isso significa que ele não é uma cidade muito boa rpg, e não consigo encontrar um tutorial para isso, então eu vou começar uma aqui. Este tutorial contém três capítulos: - Edifícios importantes - Casas e lojas - Outros edifícios Capítulo I Então, vamos começar, abra seu mapa editor e encontrar um bom lugar para fazer uma cidade, uma vez que você descobriu que, comece com um templo. Um templo é provavelmente o mais importante (sim, ainda mais importante, em seguida casas e tal) a construção de uma cidade. Principalmente porque os jogadores vão aparecer aqui depois de sua morte, ou qual quer outras razões que eu não posso chegar a, também eles podem obter sua cidadania aqui. Ok, agora eu vou começar explicando como você pode criar um templo boa: Primeiro você começa com a forma do templo, isso pode ser algo semelhante ao templo usado em Thais, ou use sua própria imaginação, que é melhor então é só copiar algo. Ok, você tem agora a forma (pelo menos eu espero), agora dar lugar ao chão. (Eu sugiro que você use um piso de mármore (ID. 406 ou 407) Se você usa o piso de mármore branco, use o preto uma telha tempo como lugar desovar Se você usar o preto use azulejo branco ou tempo de telha. como lugar Spawn. Forma e assoalho são feitos, agora você pode colocar as paredes. Aqui estão algumas dicas para as paredes: - Localização Onde está a sua cidade ser construir? Se é o deserto usar o branco (mármore) paredes ou as paredes de arenito. Se são a selvagem as paredes de bambu, ou paredes de pedra (não a cinza, mas a verde). Se está em terra grama normal, use paredes quadro ou paredes de pedra cinza. - Que idade tem seu templo? É o seu antigo templo e em uma selva? usar algumas paredes em ruínas. Se está em terra relva normal eu sugiro que você use as paredes de pedra. - Qual é a sua cidade? Se uma cidade é menor, a maioria deles resíduos menos dinheiro em uma cidade, para que eles usariam paredes quadro. Espero que isso te ajude a escolher as paredes de seu templo. Agora, o telhado, terra grama será telhado plano ou telhado (eu prefiro telhado, mas a escolha é até você). Deserto: telhado plano ou o telhado de madeira. E na E por último, mas não menos importante, a decoração, isso é muito importante para um templo. Este vai ser majoritariamente estátuas,Bassins carvão, mas também pode ser um altar, a escolha é até você de novo. Agora, o seu templo é feito! Aqui está um exemplo do meu templo: Nota: se você quer ter seu templo em forma de pirâmide, eu sugiro que você aprender a criar uma pirâmide aqui. Ok, algo importante em uma cidade é: não faça o cidades quadrada, e só estradas retas, tentem criar mais estradas pequenas. Agora o depósito, um prédio muito importante, a melhor maneira de fazer um depósito legal é dar-lhe as paredes mesmo como o templo, observe também os jogadores não podem ser capazes de afastar outros jogadores de seu peito dp. Também tentar fazer o depósito não grande, mas adicionar pisos mais do que isso, também tentar fazer uma loja de parcel se você quer isso Aqui está um exemplo de um depósito: agora nós temos um templo e um depósito. Capítulo II Vamos continuar com as lojas, a primeira coisa que você precisa saber é: quantos npc’s shop eu vou ter na minha cidade? Estes são os mostos em uma cidade: ferramentas, comprador arma /equipamento e / ou vendedor, vendedor de alimentos, parcela npc, loja de mágica, a loja de paladino (para munição e arcos) e uma loja de móveis. Claro que os jogadores não querem ver uma Rua 8 edifícios de comprimento, de modo a tentar colocá-los em lugares diferentes na cidade. Claro que você pode fazer um centro comercial (como eu fiz em uma cidade ). De qualquer forma, tentar fazer com que as lojas exclusivas. Vou dar um exemplo do meu ferreiro: (Eu sei que tem uma baixa quantidade de detalhes, mas é sobre alareira, o que lhe dá uniques alguma coisa). Agora você pode apenas dar a cada loja de um toque único, isto fará com que jogadores mais animados sobre ele. Agora nós temos um templo de depósito e lojas. Vamos começar com as casas. Casas são algo do qual você pode pensar, os jogadores não se importa a forma, vamos torná-lo fácil e rápido, desenhando 5 quadrados em uma linha, rua, 5 casas quadradas e continue assim. Isso pode ser rápido e fácil para o mapper, mas os jogadores não vai gostar (a menos que eles estão jogando por causa da taxa de exp). É uma idéia melhor para fazer todas as ruas diferentes (claro casas na mesma rua pode ser o mesmo, procure na sua própria rua, provavelmente nem todas as casas são diferentes dos eachother). Agora eu posso dar-lhe alguns exemplos de casas: Uma rua normal, que é muito bom: Algum tipo de um pequeno campo cercado por casas: Ou estrutura de um estranho: Agora, você já viu dois tipos imagens diferente de como você pode criar casas, você pode escolher qual deles você deseja usar. Claro que não é uma boa idéia para preencher uma cidade inteira com uma das 2 opções, tentar dar-lhe uma variação. Além disso, nem todas as casas têm de ser rentáveis em uma cidade, pensar em construir casas para npc’s. Estas casas devem estar a ter uma decoração agradável. Casas são feitas agora também. Então isso significa que a maioria da cidade é feito! Agora você pode escolher como quer ter o defendings cidade, isso pode ser feito por muros ou fronteiras naturais. Sugiro que você tem pelo menos um lado do mar ou lago, porque uma cidade precisa de água para beber e para o comércio com outras cidades. Agora, existem três lados esquerdos (mesmo se sua cidade não é um quadrado, há um norte, oeste e leste, ou qualquer outra combinação que não têm uma fronteira ainda). Agora você pode escolher em quantos lados você quer ter uma CityWall, e quantos lados fronteira natural. agora você pode dizer que sua cidade é feito. Capítulo III Você pode pular este capítulo se você acha que sua cidade é feito, mas isso significa que será apenas alguns edifícios! Vou dizer-lhe sobre essas coisas neste capítulo: - Natureza - Esgotos e spawns - Os barcos - Outros edifícios - Storylines Você pode escolher de novo, como você quer que sua natureza na cidade? ele precisa de muita natureza, não muito, ou completamente a natureza não? Pelo que eu ouvi uma cidade sem a natureza é muito chato, por isso tente adicionar um arbusto e árvore sempre que possível, também, parece bom ter um parque ou algo assim. Também um pouco de água no parque deve estar ok. Faça a natureza como você quer, mas não torná-lo grande demais, lembre-se, é uma cidade! Esgotos estão lá para suplies água e para o que sai do ser humano. Então você pode adicionar água subterrânea, assim: Não se esqueça de acrescentar alguns detalhes, e gera, que eu não fiz porque eu fiz um exemplo rápido. Você também pode adicionar múltiplos pisos de esgoto, onde mais poderia vivercriaturas mais fortes, ou seja edifícios escondidos. Barcos, eles são muito importantes para a economia de uma cidade. Também para os jogadores a viajar, tentar fazer um barco que não é muito grande, mas não muito smal quer. Isto é como um barco poderia olhar como Adicionar mais alguns detalhes, como caixas, barris, caixas, escadas berço, e na cabana capitães algo como uma estante de livros, pele de urso, mesa, char, globo, um livro, coisas assim. Agora, uma cidade tem outras construções, como uma biblioteca, uma Igreja, um teatro estável, talvez um castelo? Uma biblioteca é algo que eu diria: adicioná-lo, mas não adicioná-lo se você não tem nenhuma linha de história ou histórias para colocar nos livros. (para adicionar um livro em uma estante, pressione o botão direito do mouse> propriedades, e uma janela será aberta, na metade direita é um campo branco, botão direito do mouse> adicionar item. seleccionar o livro que você quer ter lá, pressione duas vezes, e você pode digitar a história do livro deve conter, pressione ok, e você vai voltar para a janela estante. estante de livros pode armazenar até 6 livros!) A igreja é algo que você não estritamente necessário adicionar, este é apenas para deco e realidade, já que algumas pessoas (e no tempo de tibia, muito) acreditar em DEUS. Um estábulo, os jogadores têm cavalos certo? adicionar um estável, alguns throughs e colocar água em que (botão direito do mouse> propriedades, e definir "contar" a 1.) Um teatro, algumas pessoas gostam de ir lá, basta fazer um pequeno. Se a sua cidade é uma capital (?), Você pode adicionar um castelo para um rei para viver. Faça um trono, alguns quartéis, aposentos reais (para o rei / rainha e sua esposa / marido e outras pessoas ricas que moram lá). uma sala cozinha e de armazenamento (basta olhar para o castelo thais, que é um bom exemplo de um castelo como poderia parecer) o último ponto deste tutorial, e então eu finalmente estou feito com a escrita ~ ~ ufa um enredo, uma boa cidade tem uma história, como ele é encontrado, é história, como o nome foi dado à cidade e tal, isso é algo que você vai precisar para chegar a si mesmo, eu não vou explicar como isso funciona. Finalmente, eu sou feito com a escrita, mas eu realmente gostei, e espero que você será capaz de usá-lo, em caso afirmativo, usá-lo. :star:CREDITOS:star: (JAKIIN)=POR TER TRAGO AO X-TIBIA (KAREL)= POR TER FEITO O TUTO
    1 ponto
  32. Frandruid

    Como Criar Uma Nova Magia!

    Como faso para colokar sprites q eu msm criei? me ajuda ae
    1 ponto
  33. Olá eu vi como se coloca as caveirinhas na ponta do mouse e vim postar aqui!! Vá na pasta do seu xampp entra na pasta htdocs/layouts/tibiacom e abra seu layout.php(Escolha para abrir no Bloco de Notas!) e entao bem no final antes de </body> adicione </SCRIPT> <div id="dot0" style="position: absolute; visibility: hidden; height: 11; width: 11;"></div> <div id="dot1" style="position: absolute; height: 35; width: 35;"><img src="ball1.gif" width="11" height="11" alt=""></div> <div id="dot2" style="position: absolute; height: 35; width: 35;"><img src="ball2.gif" width="11" height="11" alt="."></div> <div id="dot3" style="position: absolute; height: 35; width: 35;"><img src="ball1.gif" width="11" height="11" alt="."></div> <div id="dot4" style="position: absolute; height: 35; width: 35;"><img src="ball2.gif" width="11" height="11" alt="."></div> <div id="dot5" style="position: absolute; height: 35; width: 35;"><img src="ball1.gif" width="11" height="11" alt="."></div> <div id="dot6" style="position: absolute; height: 35; width: 35;"><img src="ball2.gif" width="11" height="11" alt="."></div> <script type='text/javascript'> <!-- Begin var nDots = 7; if (document.all&&window.print) document.body.style.cssText="overflow-x:hidden;overflow-y:scroll" var Xpos = 0; var Ypos = 0; var DELTAT = .01; var SEGLEN = 10; var SPRINGK = 10; var MASS = 1; var GRAVITY = 50; var RESISTANCE = 10; var STOPVEL = 0.1; var STOPACC = 0.1; var DOTSIZE = 35; var BOUNCE = 0.75; var isNetscape = navigator.appName=="Netscape"; var followmouse = true; var dots = new Array(); init(); function init() { var i = 0; for (i = 0; i < nDots; i++) { dots[i] = new dot(i); } for (i = 0; i < nDots; i++) { dots[i].obj.left = dots[i].X + "px"; dots[i].obj.top = dots[i].Y + "px"; } if (isNetscape) { startanimate(); } else { setTimeout("startanimate()", 20); } } function dot(i) { this.X = Xpos; this.Y = Ypos; this.dx = 0; this.dy = 0; this.obj = eval("document.getElementById('dot" + i + "').style"); } document.onmousemove = MoveHandler; function startanimate() { setInterval("animate()", 20); } function MoveHandler(e) { if (!e) { Xpos = window.event.x + document.body.scrollLeft; Ypos = window.event.y + document.body.scrollTop; } else { Xpos = e.pageX; Ypos = e.pageY; } } function vec(X, Y) { this.X = X; this.Y = Y; } function springForce(i, j, spring) { var dx = (dots[i].X - dots[j].X); var dy = (dots[i].Y - dots[j].Y); var len = Math.sqrt(dx*dx + dy*dy); if (len > SEGLEN) { var springF = SPRINGK * (len - SEGLEN); spring.X += (dx / len) * springF; spring.Y += (dy / len) * springF; } } function animate() { var start = 0; if (followmouse) { dots[0].X = Xpos; dots[0].Y = Ypos; start = 1; } for (i = start ; i < nDots; i++ ) { var spring = new vec(0, 0); if (i > 0) { springForce(i-1, i, spring); } if (i < (nDots - 1)) { springForce(i+1, i, spring); } var resist = new vec(-dots[i].dx * RESISTANCE, -dots[i].dy * RESISTANCE); var accel = new vec((spring.X + resist.X)/ MASS, (spring.Y + resist.Y)/ MASS + GRAVITY); dots[i].dx += (DELTAT * accel.X); dots[i].dy += (DELTAT * accel.Y); if (Math.abs(dots[i].dx) < STOPVEL && Math.abs(dots[i].dy) < STOPVEL && Math.abs(accel.X) < STOPACC && Math.abs(accel.Y) < STOPACC) { dots[i].dx = 0; dots[i].dy = 0; } dots[i].X += dots[i].dx; dots[i].Y += dots[i].dy; var height, width; if (isNetscape) { height = window.innerHeight + document.scrollTop; width = window.innerWidth + document.scrollLeft; } else { height = document.body.clientHeight + document.body.scrollTop; width = document.body.clientWidth + document.body.scrollLeft; } if (dots[i].Y >= height - DOTSIZE - 1) { if (dots[i].dy > 0) { dots[i].dy = BOUNCE * -dots[i].dy; } dots[i].Y = height - DOTSIZE - 1; } if (dots[i].X >= width - DOTSIZE) { if (dots[i].dx > 0) { dots[i].dx = BOUNCE * -dots[i].dx; } dots[i].X = width - DOTSIZE - 1; } if (dots[i].X < 0) { if (dots[i].dx < 0) { dots[i].dx = BOUNCE * -dots[i].dx; } dots[i].X = 0; } dots[i].obj.left = dots[i].X + "px"; dots[i].obj.top = dots[i].Y + "px"; } } // End --> </SCRIPT> em seguida baixe esse arquivo a seguir descompacte ele e copie as duas imagens que tem dentro dele para sua pasta htdocs: Baixe as Imagens Aqui!
    1 ponto
  34. daaniel13

    Erro Ao Criara Account No Site

    Olá. Simples vai em C:\xampp\htdocs\config.php Procure por essa linhha $config['site']['verify_code'] = 1; // Troque por essa $config['site']['verify_code'] = 0; // Boa Sorte Obrigado. Poste ake se conseguiu Abraço
    1 ponto
  35. Bondx

    [Fácil] Hunt De Spiders!

    # Hunt – Spiders Índice Introdução Tutorial Resultado final Anexos Introdução Olá a todos, por meio deste tópico respondo o pedido do usuário: Sosolid Peço desculpas pela demora! Tutorial Bom, vamos começar. Abra seu RME. Primeiramente, faça a área a ser mapeada e a bordenize. Feito isso, vamos fazer a entrada. Eu farei uma pequena montanha. Detalhe-a, com um pouco de swamp (Id: 4752) e randomize os grounds, um só fica horrível. Use ambos dos tipos de pedrinhas andáveis, pedras grandes, uma nature mais de swamp, musgos no chão, e claro ninhos e teias de aranha (Ids: 7536 até 7548), afinal é uma cave de aranhas certo? Ficando assim: Agora, vamos "formar" a cave. (DICA: Não faça no auto-border, pode até fazer o "corpo" da cave, mas vá ageitando). Depois, comece a detalhar. Primeiro detalhe a área da escada, faça algo diferente para "chamar a atenção" do jogador. Use o ground diferente do resto da cave, coloque pedras andáveis, musgos no chão, na parede da cave, e não se esqueça das teias de aranha! Agora, o resto da cave. Utilize o ground normal de cave (Ids: 351 até 355), utilize a borda grossa para randomizar o ambiente (Id: 7654). Use dirt também, e detalhe. Detalhe com um pouco mais de ênfase nas teias das aranhas. Resultado final Faça isso na cave e detalhe-a sem pressa! Meu resultado: Espero ter ajudado, caso haja alguma dúvida pendente, poste que eu incremento o tutorial. Anexos Link para download, Clique aqui Se gostou, REP + Abraços, Bondx.
    1 ponto
  36. chauz

    Newcomers Island

    sei lá cara, ta bom, mas no templo você poderia tirar o tapete ali, tirar um pouco esses grounds de "earth" e o jungle ali (bote alguns tufos sobre esse ground diferente, além de disfarçar fica mais bonito. Detalhe/ mude a forjaria, ou detalha melhor ou muda o formato. na img 3 tira akele grass tuf sobre a borda de madeira, e naquela praia melhore o formato. Não me leve a mal, o mapa esta muito bonito, mas se fizer isto sei que irá melhorar. Flw
    1 ponto
  37. existe essa You see a Vip Satff id:7958 de uma olhada ai. :positive:
    1 ponto
  38. Por favor, não mencione BUGS ! Você não sabe exatamente o que é isso. Bug = erro deixado por algo ou alguem. Isso ai, é falta de atenção sua. Isso é por que seu otserver tem monstros que o seu editor não tem. Faça o seguinte, pegue todos esses nomes citados ai, va na pasta do seu EDITOR, abra o creatures.xml.. Adicione uma nova linha para cada monster que você precisa. Feito isso, o Editor reconhecerá, e tudo se estabilizará. Se te ajudei, não esqueça do Rep+ Abraços =) Reportado. Double post. KamuiRunt é ao contrário, a pasta monsters do ot é q esta sem o monstro. Pode esta importado um monstro na world e colocado em algum spawn q a pasta monsters do ot n tem! Para concertar isso vc tem q adicionar cada monstro q esta aparecendo canot find na pasta monsters! Espero ter ajudado. Se gostou rep+ a mao nao vai cair!
    1 ponto
  39. matheuusmv

    Mapa De Pokemon.

    up~~~~
    -1 pontos
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...