Jump to content

Search the Community

Showing results for tags 'tibia'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • xTibia - Notícias e Suporte
    • Regras
    • Noticias
    • Soluções
    • Projetos Patrocinados
    • Tutoriais para Iniciantes
    • Imprensa
  • OTServ
    • Notícias e Debates
    • OTServlist
    • Downloads
    • Recursos
    • Suporte
    • Pedidos
    • Show-Off
    • Tutoriais
  • OFF-Topic
    • Barzinho do Éks
    • Design
    • Informática

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Sou

  1. DO REP+
  2. 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 !
  3. [Novo] Carlin War BeTa 2.1 ® By DeathCore (8.60) Depois Do Update 2.1. - Bug De Algumas Magias Forão Arrumadas. - City Maior E Mais Rpg Nas Escadas - Script Do Vocations Sem Bugss td balanceadinhuuu! - Scripts Bugados , e Alguns Sem Uso Forão Retirados, Para Dexar o Server Mais Estável. - Revisada No Distro, Para Dexar Mais Estável. - Update Em Breve , Para Melhorar O Server Pra " Vc vc vc vc (8 ". Antes Do Update. -Novos Player Inicia level 200 -Skills de Acordo com Level -Apenas level 200 não tem como voltar Level -Bugs das Houses que dava erro no distro,todos corrigidos -Npc vendedor de itens,vendendo mais itens -vocações mais fortes,mas balanceadas -Potions que healavão 1.0 agora healando 1.2 -Trainers modificados Atacando novos rapidos -Sala de Trainers almentada,bem maior do que antes -Stone Skin Amuleto Infinito mas com 10% de protect contra death e physical -Rings com mais tempo de duração -Novas Talkactions -Look no player mostrando Frags -Efeitos animados na hora de upar level ou skills -Magias com um pouco menos de Exausted,nada exagerado fiquem tranquilos -Alguns Items editados,mas nada exagerado -e muito mais !! Team x Team -Se quiser jogar com Team,Apenas entre em um dos 2 teleportes que há no templo com o team Red e Blue [as outfits seram mudadas,Red team usara outfit de CM,e Blue Team usa outfit de GM,mas calma não podem usar nenhum comando,apenas ganham a outfit Raid [Evento] -Evento que é executado a cada 40 minutos no server que dara invasão de monstro que daram exp,nada exagerado,de 1 a 2 level no maximo. -Esses monstros são chamados de [Evento],são fortes contra todos elentos e physical então não sera facil matalos sozinho vai dar tempo de todos uparem Acc God god/god Temple Do Mau ^^ Novas Talkactions Depot E Npcs. [Evento] Invasões Area Dos Treiners War Rolando ^^ Novos Itens a Venda Carlin War BeTa 2.1 (8.60) Download > http://www.4shared.c...DeathCore.html? Nunka Vo Postar Virus! Confiança é Tudo. Scan > http://www.virustota...0369-1309057164 Créditos Elsu Soldoran DeathCore (eu) -Créditos aos devidos donos dos Scripts-Créditos aos devidos donos pelas dlls e exe. -Creditos a min por incrementar o resto. Gosto? Então Da Rep+, Não Vai Cair Seu Dedo Comentem Eminhos e Eminhas. Mapas Antigos Não Perde RPG, Pra Min Os Antigos É Que Tem Rpg, Oq Eu Faço? , Tiro Bugs E Coloko Mais RPG Em Mapas Antigos.
  4. Exori.Rocks is an OT Server of the old school (version 7.7) and the client has --custom sprites--... Some features are: • Very high experience rate (x1000), this is a fun-war server. • You will have a lifetime premium account, you will never pay for VIP stuff. • You will never loss any point of experience, skills or magic level at dead (only items, so rememeber use AOL). • We have the original Cipsoft virgin files, the original and cool stuff (without some encrypted or compiled things). • Our custom client has --bot integrated-- and is completely legal to use. • You will never get banned for excess killing! This is WAR SERVER and you will get experience by killing other players! • You will get Runes and Amunitions x2 (conjured and in the shop). Start your adventure and be part of our community! Please visit: Exori Rocks - 2D MMORPG (http://exori.rocks/) See you in game, warriors. Have fun!!!
  5. Eae XTibianos... Estou trazendo para vcs o Emerald Map. • Créditos: Randall • Minimap: A qualidade ficou ruim porque salvei como JPG. • Download: http://www.4shared.com/file/AsHm4Soj/Emerald_Map.html • Download Link Protegido: http://lix.in/-85c7fb • Scan: http://www.virustotal.com/pt/analisis/320f026e6b49a99516ffccab44f3a985c7b49f5233a768a5a6139c499e8409a4-1279041485 Abraços.
  6. Fala galerinha XTibiana! Estou querendo por uns scripts novos no meu servidor ,e veio em mente o seguinte script. Quando o player de "USE" no 1kk ele vira outro item , tipo aquele Golden Nuget (acho que é assim). Alguem tem esse script e pode me passar ? Tanks !, Tipo do script: Transformação de item. Protocolo (versão do Tibia):8.60 Servidor utilizado: Subwat Editado Nível de experiência: Tanto fais rsrs.... Adicionais/Informações: PORFAVOR o mais rapido o possivel !
  7. Fala galera, venho por meio desta mensagem dar informações sobre o nosso servidor que estamos inaugurando e vamos crescer diariamente, e buscar se tornar um dos maiores e melhores servidores OldSchool do momento. SITE: http://www.thetibianic.com Características: Mapa Global 7.x - Voltado para PVP/RPG. Host BR, Ant-Bot, Cliente Custom, Cast System, War System, Etc ... POI, Port Hope, Demon Oak, Hunts editadas, etc ... Exp/Vocações em equilíbrio. Knights e Paladins com 10% de chance de acerto critico. Servidor contando com uma super estrutura, Anti-DDoS, deixando o jogo sem LAG. Equipe correta, buscando sempre trazer novidades. Updates semanais e melhorias. Hunts estendidas (editadas): Demon em Edron, Dragon Lair em Venore, Necromancer em Drefia, Hero em Edron, Hellfire Fighter em Edron, Vampire em Drefia, Black Knight em Venore, Ancient Scarab em Ankrahmun, Serpent Spawn em Port Hope, Hydra em Port Hope, Warlock em Greenshore, Warlock em Dark Cathedral, etc... . Exp Low Stages Level 1 ao 8 - 50x Level 9 a 20 - 35x Level 21 a 30 - 30x Level 31 a 40 - 25x Level 41 a 50 - 20x Level 51 a 60 - 15x Level 61 a 70 - 10x level 71 a 80 - 7x Level 81 a 100 - 4x Level 101 em diant - 3x Skill 3,5x Magic 3x Loot 2,5x Venha fazer historia com The Tibianic ATS. Dúvidas, Sugestões, entre em contato. Atenciosamente, GM Tibianic
  8. Visualize o website Downloads Download Mega Scan Créditos: Shadowcores por disponibilizar @Daniel por postar
  9. Nogard

    Free For Use!

    O tópico servirá para postar sprites de uso livre. Conteúdo: 7 Pokémon (Chatot, Glameow, Hippopotas, Hippowddon, Purugly) + corpses. (credits are no needed but appreciated) DOWNLOAD Random Outfit Conteúdo: Placa Animada. DOWNLOAD Conteúdo: Pokémon Iniciais 5ª geração. Créditos: Jeff DOWNLOAD Conteúdo: Pokébolas. DOWNLOAD Participe!
  10. Olá pessoal, meu nome é Kenai e me considero um spriter de nivel mediano. Junto com a disponibilização dessas minhas "spritezinhas" eu quero fazer um pedido pra você que está lendo; Acredito que se você veio parar neste tópico é porque algum interesse em sprites você tem; Sabendo disso, eu gostaria de pedir pra você que é spriter, ou quer começar a fazer sprites, um simples favor..Parem de fazer sprites de pokemon, vamos inovar, o mundo das sprites é imenso, tanta coisa pra vocês criarem e ficaram estagnados em pokemon. Tanto projeto legal que poderia sair se tivessem um conteudo inovador.. Agradeço por lerem até aqui. (hipocrisia minha dizer isso e fazer um lucario e um eevee, mas tenho a desculpa que sao os meus 2 favoritos e amo eles). BY THE WAY AS SPRITES SAO LIVRES PRA USO CASO QUEIRAM UTILIZAR EM ALGO. Ps: tenho algumas a mais sobre black clover e se o post der um up legal eu libero o resto aqui.
  11. Fala galerinha do XTibia, vim aqui postar um sistema de Premium Points inGame, que eu achei muito útil, pois eu estava tendo sérios problemas com o Shop System do Modern AAC, ai vai os sistemas. antes de tudo execute esse comando em seu banco de dados. ALTER TABLE `accounts` ADD `premium_points` INT NOT NULL DEFAULT 0; [/code] [font=tahoma,geneva,sans-serif][color=#ff0000]#[/color][color=#000000]S[/color]istemas[/font] [font=tahoma,geneva,sans-serif]vá em data/libs e crie um novo arquivo com o nome [i]048-ppoints.lua[/i][/font] [i] function getAccountPoints(cid) local res = db.getResult('select `premium_points` from accounts where name = \''..getPlayerAccount(cid)..'\'') if(res:getID() == -1) then return false end local ret = res:getDataInt("premium_points") res:free() return tonumber(ret) end function doAccountAddPoints(cid, count) return db.executeQuery("UPDATE `accounts` SET `premium_points` = '".. getAccountPoints(cid) + count .."' WHERE `name` ='"..getPlayerAccount(cid).."'") end function doAccountRemovePoints(cid, count) return db.executeQuery("UPDATE `accounts` SET `premium_points` = '".. getAccountPoints(cid) - count .."' WHERE `name` ='"..getPlayerAccount(cid).."'") end [/i] vá em data/talkactions/talkactions.xml e adicione as seguintes tags. <!-- Premium Points System --> <talkaction log="yes" words="!getpoints;/getpoints" access="6" event="script" value="GetPoints.lua" /> <talkaction log="yes" words="!addpoints;/addpoints" access="6" event="script" value="AddPoints.lua" /> <talkaction log="yes" words="!removepoints;/removepoints" access="6" event="script" value="RemovePoints.lua" /> <talkaction words="!points" event="script" value="SelfGetPoints.lua" /> vá em data/talkactions/scripts e crie um novo arquivo com o seguinte nome AddPoints.lua function onSay(cid, words, param, channel) local split = param:explode(",") local name, count = split[1], tonumber(split[2]) pid = getPlayerByNameWildcard(name) if (not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. param .. " is not currently online.") return TRUE end if not(split[2]) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The commands requires 2 parameters: character name, amount") end if not(count) then print(count) return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Numeric parameter required.") end doAccountAddPoints(cid, count) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "" .. count .. " premium points were added to " .. getCreatureName(pid) .. "\'s Account.") return true end vá em data/talkactions/script e crie um arquivo com o seguinte nome GetPoints.lua function onSay(cid, words, param, channel) local pid = 0 if(param == '') then pid = getCreatureTarget(cid) if(pid == 0) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return TRUE end else pid = getPlayerByNameWildcard(param) end if (not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. param .. " is not currently online.") return TRUE end if isPlayer(pid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "" .. getCreatureName(pid) .. "\'s Account has " .. getAccountPoints(cid) .. " premium points.") return TRUE end return TRUE end vá em data/talkactions/script e crie um arquivo com o seguinte nome RemovePoints.lua function onSay(cid, words, param, channel) local split = param:explode(",") local name, count = split[1], tonumber(split[2]) local points = getAccountPoints(cid) pid = getPlayerByNameWildcard(name) if (not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. param .. " is not currently online.") return TRUE end if not(split[2]) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The commands requires 2 parameters: character name, amount") end if not(count) then print(count) return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Numeric parameter required.") end if (points <= 0) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "" .. getCreatureName(pid) .. "\'s Account has 0 premium points.") end doAccountRemovePoints(cid, count) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "" .. count .. " premium points were deleted from " .. getCreatureName(pid) .. "\'s Account.") return true end vá em data/creaturescripts/scripts e crie um novo arquivo com o nome SelfGetPoints.lua function onLogin(cid) if isPlayer(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your Account has " .. getAccountPoints(cid) .. " premium points.") end return TRUE end declare ele no creaturescripts.xml <event type="login" name="GetPoints" event="script" value="getpoints.lua" /> #Scripts aqui está um exemplo de talkaction para mudar o sexo do personagem usando o sistema de points. local config = { costPremiumDays = 2 } function onSay(cid, words, param, channel) if(getPlayerSex(cid) >= 2) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You cannot change your gender.") return end if(getAccountPoints(cid) < config.costPremiumDays) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Sorry, not enough Premium Points - changing gender costs " .. config.costPremiumDays .. " Premium Points.") doSendMagicEffect(getThingPosition(cid), CONST_ME_POFF) return end if(getAccountPoints(cid) >= config.costPremiumDays) then doRemovePoints(cid, -config.costPremiumDays) end local c = { {3, 1, false, 6, 1}, {3, 2, false, 6, 2}, {6, 1, false, 3, 1}, {6, 2, false, 3, 2} } for i = 1, #c do if canPlayerWearOutfitId(cid, c[i][1], c[i][2]) then doPlayerRemoveOutfitId(cid, c[i][1], c[i][2]) c[i][3] = true end end doPlayerSetSex(cid, getPlayerSex(cid) == PLAYERSEX_FEMALE and PLAYERSEX_MALE or PLAYERSEX_FEMALE) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have changed your gender and lost " .. config.costPremiumDays .. " days of premium time.") doSendMagicEffect(getThingPosition(cid), CONST_ME_MAGIC_RED) for i = 1, #c do if c[i][3] == true then doPlayerAddOutfitId(cid, c[i][4], c[i][5]) end end return true end Aqui está um npc ( aconselho usar ele para vender seus itens vips ) local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local bootsid = 1455 local bootscost = 15 local ringid = 2145 local ringcost = 5 local bladeid = 12610 local bladecost = 20 local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if(msgcontains(msg, 'vip boots') or msgcontains(msg, 'boots')) then selfSay('Do you want to buy Vip Boots fo '.. bootscost ..' premium points?', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if(getAccountPoints(cid) >= bootscost) then if(doAccountRemovePoints(cid, bootscost) == TRUE) then doPlayerAddItem(cid, bootsid) selfSay('Here you are.', cid) else selfSay('Sorry, you don\'t have enough gold.', cid) end else selfSay('Sorry, you don\'t have the item.', cid) end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then talkState[talkUser] = 0 selfSay('Ok then.', cid) elseif(msgcontains(msg, 'blade of corruption') or msgcontains(msg, 'blade')) then selfSay('Do you want to buy blade of corruption for '.. bladecost ..' premium points?', cid) talkState[talkUser] = 2 elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 2) then if(getAccountPoints(cid) >= bladecost) then if(doAccountRemovePoints(cid, bladecost) == TRUE) then doPlayerAddItem(cid, bladeid) selfSay('Here you are.', cid) else selfSay('Sorry, you don\'t have enough points!.', cid) end end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then talkState[talkUser] = 0 selfSay('Ok then.', cid) elseif(msgcontains(msg, 'expring') or msgcontains(msg, 'ring')) then selfSay('Do you want to buy exp ring for '.. ringcost ..' premium points?', cid) talkState[talkUser] = 2 elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 2) then if(getAccountPoints(cid) >= ringcost) then if(doAccountRemovePoints(cid, ringcost) == TRUE) then doPlayerAddItem(cid, ringid) selfSay('Here you are.', cid) else selfSay('Sorry, you don\'t have enough gold.', cid) end end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then talkState[talkUser] = 0 selfSay('Ok then.', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) npc.xml <?xml version="1.0" encoding="UTF-8"?> <npc name="Donator" script="donator.lua" walkinterval="0" floorchange="0" speed="900"> <health now="150" max="150"/> <look type="131" head="19" body="19" legs="19" feet="19"/> <interaction range="3" idletime="60"> <interact keywords="hi" focus="1"> <keywords>hello</keywords> <response text="Hey there, I sell items only to Donators! To Donate check website or ask Server Staff."> <action name="idle" value="1"/> </response> </interact> <interact keywords="bye" focus="0"> <keywords>farewell</keywords> <response text="Good bye."/> </interact> </interaction> </npc> script made by Vodkart npc por trade say local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid -- ["nome do item"] = {Qntos pontos vao custar, id do item} local t = { ["boots of haste"] = {15, 2195}, -- ["demon helmet"] = {25, 2493}, ["frozen starlight"] = {30, 2361}, ["royal crossbow"] = {20, 8851}, ["solar axe"] = {30, 8925}, ["soft boots"] = {50, 2640}, ["demon armor"] = {100, 2494}, ["firewalker boots"] = {50, 9932}, ["magic plate armor"] = {70, 2472}, ["flame blade"] = {100, 8931} } if (msgcontains(msg, 'trade') or msgcontains(msg, 'TRADE'))then local str = "" str = str .. "Eu vendo estes items: " for name, pos in pairs(t) do str = str.." {"..name.."} = "..pos[1].." Points/" end str = str .. "." npcHandler:say(str, cid) elseif t[msg] then if (doAccountRemovePoints(cid, t[msg][1]) == TRUE) then doPlayerAddItem(cid,t[msg][2],1) npcHandler:say("Aqui está seu ".. getItemNameById(t[msg][2]) .."!", cid) else npcHandler:say("você não tem "..t[msg][1].." Points", cid) end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) npc por trade local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid local shopWindow = {} local t = { [2195] = {price = 15}, [2493] = {price = 25}, [2361] = {price = 30}, [8851] = {price = 20}, [8925] = {price = 30}, [2640] = {price = 50}, [2494] = {price = 100}, [9932] = {price = 50}, [2472] = {price = 70}, [8931] = {price = 48} } local onBuy = function(cid, item, subType, amount, ignoreCap, inBackpacks) if t[item] and getAccountPoints(cid) < t[item].price then selfSay("You dont have "..t[item].price.." points", cid) else doPlayerAddItem(cid, item) doAccountRemovePoints(cid, t[item].price) selfSay("Here is you item!", cid) end return true end if (msgcontains(msg, 'trade') or msgcontains(msg, 'TRADE'))then for var, ret in pairs(t) do table.insert(shopWindow, {id = var, subType = 0, buy = ret.price, sell = 0, name = getItemNameById(var)}) end openShopWindow(cid, shopWindow, onBuy, onSell) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) é só isso! créditos: LucasOlzon Beeki XTibia Vodkart @Edit adicionado scripts by Vodkart.
  12. Fla galera, tranquilo. Queria editar um NPC que voce chegasse nele, pedia pelo outfit, addon 1 e depois addon 2, e ele te vendesse por KK's. Esse é o arquivo do NPC Benjamin, que vende Parcel em Thais, como eu poderia editar ele pra ele vender Addons 1 e 2 por KKs, voce chega la e pede Assassin, Addon 1 e talz e ele te vende por dinheiro. Dados no NPC Benjamin: <?xml version="1.0" encoding="UTF-8"?> <npc name="Benjamin" script="Benjamin.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100" /> <look type="128" head="116" body="79" legs="117" feet="76" addons="0" /> <parameters> <parameter key="module_keywords" value="1" /> <parameter key="keywords" value="mail;letters;explain;depot;parcel;explain;" /> <parameter key="keyword_reply1" value="With our mail system you can send {letters} and {parcels} to other Tibians. I can either explain how {letters} and {parcels} work or sell them to you if you ask me for a {trade}." /> <parameter key="keyword_reply2" value="If you want to buy a letter, ask me for a {trade}. Or do you want me to {explain} how letters work?" /> <parameter key="keyword_reply3" value="With a letter you can send a message to another Tibian's {depot}. If you want to send it to 'Ben', use the letter - so that a form opens - and write 'Ben' in the first line. Write your message below that. ..." /> <parameter key="keyword_reply4" value="Each major city has at least one depot. Just step in front of one of the lockers and you can store items inside. Your mail will also arrive there. Each city has its own storage, don't forget where you store items!" /> <parameter key="keyword_reply5" value="If you want to buy a parcel, ask me for a {trade}. Or do you want me to {explain} how parcels work?" /> <parameter key="keyword_reply6" value="In a parcel you can send items to another Tibian's {depot}. Put your items into the parcel and also place a completed {label} with the name of the {receiver} inside. Then drag your parcel on one of the blue {mailboxes} here to send it." /> <parameter key="module_shop" value="1" /> <parameter key="shop_buyable" value="label,2599,1;parcel,2595,15;letter,2597,8;" /> <parameter key="message_sendtrade" value="Here. Don't forget that you need to buy a label too if you want to send a parcel. Always write the name of the {receiver} in the first line." /> </parameters> </npc> Como eu poderia editar este NPC? +Rep pela ajuda.
  13. Vejo muito, mas muito tópico com pessoas perguntando: Por que meu OT cai do nada? Por que meu OT cai sem dar erros? Creio que esse bug que vou falar agora pode ser 50% das vezes responsável pelo seu OT, 8.6 (TFS 0.3.6) cair. No TFS 0.3.6, existe um bug no qual você pode derrubar um OT, o método da house, aleta sio/som e adicionando caracteres inválidos. Esse bug é meio que exclusivo do TFS 0.3.6. Eu sei que tem vários tópicos em vários fóruns gringos explicando como corrigir o bug, mas a maioria deles não é funcional, ou seja, não corrige o bug totalmente, e além do mais, não achei o tópico no xtibia. Ok, é simples demais: Pegue as sources do seu servidor (TFS 0.3.6pl1r83 , no caso), abra o .dev com um Cpp Editor (Stians, por exemplo), edite House.cpp e ache: replaceString (outExp, "*", ".*"); Então você cairá onde estão os seguintes replaceString: Substitua por: Compile. É só isso. Fiz bem detalhado pois há pessoas que ainda reclamam pelo ot estar caindo sem motivo, porém não sabem o que é c++ ou source. Está aí então, caso não saiba como abrir o house.cpp, procure um tutorial de como compilar um OT, é simples.
  14. Querendo relembrar as war's do 7.6? Entre agora no novo servidor 7.6 Salgado OT totalmente War, contas 1/1 2/2 3/3 e acc druid liberada aos domingos. IP salgadot.servegame.com Versão 7.6 Port 7171 Para baixar o client se não o possuir acesse baixe.net e procure por Tibia 7.6. BOT LIBERADO Boa Morte (rsrsrsrs) Atenciosamente, Eryrrel.
  15. Limite de player por sala Introdução: Esse script pode ser bem útil para baiak onde as salas tão sempre cheia de player upando ou então para eventos. O script simplesmente checa a quantidade de player que tem dentro da sala, caso não tenha atingido o limite o player pode entrar caso não, manda uma mensagem falando que a sala esta lotada. Exemplo de uso: pode servir até para a anihilator ou demon aok, invitando que um segundo time entre na sala antes que o primeiro acabe. Caso a sala esteja lotada. Caso não. Em data/movement/script, crie LimiteArea.lua e adicione. Em movement/movement.xml Adicione essa tag E depois adicionar o actionid no piso ou teleport pelo mapa editor. O script é fácil de se configurar mas caso tenha algum problema pode posta ai que eu vou ajuda. Caso você adicione mais locais você terá que adicione na tag também.
  16. Informações PDA By Slicer 1.9 editado by senhor, 1,2 geração completa, 3 geração incompleta, Edições adicionado alguns pokemons mega, reformulado cp saffron, adiconado novos spawns de pokes shiny e mega fixo, refeito alguns remakes. Erros pokes mega nao tem corpse, usam a corpse de pokes normais, a um erro no boost.lua mas ja estou resolvendo, mega charizard x e y nao tem pokeball Download server: https://www.dropbox....liopah.rar?dl=0 client: https://www.dropbox....liopah.rar?dl=0
  17. Fala galera do xtibia, Hoje estou trazendo o servidor PDA by: Bolz editado por mim, Passei um bom tempo Editando ele Espero que gostem;; • Menu: ├ Informações; ├ Ediçoes; ├ Erros; ├ Prints; ├ Download; └ Creditos. • Informações Basicas • • Erros do servidor • • PrintScreen • • Download's • Servidor PDA by: Bolz [Editado Por Mim ] http://www.4shared.com/rar/06OG8lB5ba/pda_by_bolz_verso_god_anna.html? OTClient:: http://www.4shared.com/rar/x5LgTQKLce/OTclient.html? @Atualizado 02/04/2014 • Menu: ├ Ediçoes; ├ Prints; ├ Download; • Edições / ajustes • • PrintScreen • • Download's • Servidor PDA by: Bolz [Editado Por Mim v2 ] http://www.4shared.com/rar/_lB31rwxba/PDA_By_Bolz_Verso_GOD_anna_v2.html? OTclient v2:: http://www.4shared.com/rar/aiqka_kQce/OTclient_v2.html? • Creditos • Slicer (pelo servidor) Brun123 (por alguns scripts, e por criar o pda) Stylo Maldoso (pelo mapa) Bolz (por editar Maior Parte do Server) Eu ( por Corrigir Varios bugs e Editar varias coisas no Servidor) Gabrielsales ( pelos Systemas:: "Held item", "Ditto system" ) valakas ( Por ter ajudado a resolve o Bug da Barra de Ataques do OTclient v2) Xtibia (por alguns scripts) Cometem OQ acharam do Server Tou parando com as atualizações por enquanto POr causa das Provas (Tenho que Passa) Mais quando terminar as Aulas posto Nova atualiazação... Obrigado a Todos que Elogiaram minha edição nesse Belo servidor
  18. Haha, grande servidor lunus ot, consegui achar aqui pelo computador, e estou postando aqui para vocês Vantagem e desvantagem dependendo do tipo dos pokémons (agora com múltiplos tipos). • Order funcional com as habilidades dos pokemons (fly, ride, dig, cut, light, rock smash, blink, move). • Comandos m1 até m12, desta vez configurado para todos os 151 pokémons. • Pokémons passivos e agressivos, desta vez feito em c++ (sources) melhorando o desempenho. • Catch com 4 pokébolas, com limite de 6 pokémons e o 7º indo para o CP. • Nurse heala todos os pokémons de uma só vez, inclusive retira os status de sleep, burn etc. • Portrait, go back e todos os outros sistemas mais básicos. • Pokedex automática, ao usar em um pokémon, o texto é escrito automaticamente (não é necessário ficar editando arquivo por arquivo). • Pokémons tem seu próprio level e evoluem ao atingir o level necessário sozinhos, alguns usam stones ainda. • Cada pokémon tem seus status (offense, defense, special attack, agility). • Comando !cd parar checar os cooldowns do pokémon. • Sistema TV/Cam e PC. • Sistemas de felicidade, influenciando no ataque e evolução. • Sistema de fome. • Box que da pokémons. • NPC que troca nick. • Potions que healam a vida dos pokemons. • SPR e DAT do tibia original mantidos, e adicionado maioria dos sprites de pokémon. • Pokemon Statistics (veja quantas vezes tentaram capturar um pokemon/já capturaram ele). • Fly com apenas 1 chão embaixo do player, e não vários em volta. • Pokémons de players podem se atacar desde que os donos estejam em uma party E Tambem ajustes do servidor LunusOT Todos os pokemons desde Shinys a Johto com forças,vida e ataques ajustados Pokemons upam até o nível 300 Pokemons selvagens podem ser encontrados até no nível 255 Mapa contando com respaw de pokemons Johtos e quests Alguns pokemons lendarios no final das quests Magias novas Cooldown Bar Old,Great,Super e Ultra fishing rod Box ajustada e mais alguns ajustes. Download : Download Client Créditos Equipe Lunus Flinkton ~Exclusivo XTibia.Com =)
  19. Olá a todos, eu não achei nenhum tutorial nesta página de como colocar potions infinitas, então resolvi elaborar um: Primeiro Método: Na pasta do seu servidor, entrar na pasta "data", depois na pasta "actions" e por último na pasta "liquids" "Pasta do Servidor/data/actions/liquids/" Procure pelo arquivo "potions.lua" e abra ele com algum editor. (bloco de notas, etc..) (se não tiver esse arquivo veja o segundo método) Depois de ter aberto o arquivo procure por essa linha: (dica: Control + F) [8704] = {empty = 7636, splash = 2, health = {50, 100}}, -- small health potion Copie o primeiro ID da linha (no caso 8704) e coloque-o no lugar do ID que se encontra depois de "empty = " (no caso 7636) Ficará assim: [8704] = {empty = 8704, splash = 2, health = {50, 100}}, -- small health potion Depois faça isso com todas as outras linhas de potions. Segundo Método: O início é o mesmo do primeiro método: Na pasta do seu servidor, entrar na pasta "data", depois na pasta "actions" e por último na pasta "liquids" "Pasta do Servidor/data/actions/liquids/" Abra o arquivo de uma potion (exemplo: great_mana), e você terá isso: local MIN = 200 local MAX = 300 local EMPTY_POTION = 7635 local exhaust = createConditionObject(CONDITION_EXHAUST) setConditionParam(exhaust, CONDITION_PARAM_TICKS, (getConfigInfo('timeBetweenExActions') - 100)) function onUse(cid, item, fromPosition, itemEx, toPosition) if isPlayer(itemEx.uid) == FALSE then return FALSE end if hasCondition(cid, CONDITION_EXHAUST_HEAL) == TRUE then doPlayerSendDefaultCancel(cid, RETURNVALUE_YOUAREEXHAUSTED) return TRUE end if((not(isSorcerer(itemEx.uid) or isDruid(itemEx.uid)) or getPlayerLevel(itemEx.uid) < 80) and getPlayerCustomFlagValue(itemEx.uid, PlayerCustomFlag_GamemasterPrivileges) == FALSE) then doCreatureSay(itemEx.uid, "Only sorcerers and druids of level 80 or above may drink this fluid.", TALKTYPE_ORANGE_1) return TRUE end if doPlayerAddMana(itemEx.uid, math.random(MIN, MAX)) == LUA_ERROR then return FALSE end doAddCondition(cid, exhaust) doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE) doCreatureSay(itemEx.uid, "Aaaah...", TALKTYPE_ORANGE_1) doRemoveItem(item.uid, 1) doPlayerAddItem(cid, EMPTY_POTION, 1) return TRUE end Remova essas 2 linhas: doRemoveItem(item.uid, 1) doPlayerAddItem(cid, EMPTY_POTION, 1) (Se você não encontrar essas 2 linhas, veja o terceiro método, MAS NÃO FECHE O SCRIPT DA POTION!) Pronto, depois é só fazer isso com as outras potions! Terceiro Método: Bom, continuando, depois de ter aberto o script da potion, procure por essa parte: (dica: Control + F) doTransformItem(item.uid, Essa mesma linha (completa) da health_potion é assim: doTransformItem(item.uid, 7618) Retire essa linha, pronto, depois é só fazer o mesmo com as outras potions! OBS:. No terceiro método usei como exemplo uma health_potion, então o "... 7618)" não terá nas outras potions! Obrigado, e tomara que resolva o seu problema! :positive:
  20. Seja bem vindo ao hardian, servidor feito especialmente para jogadores que gostam de um hard up, mapa global. site: http://hardian.ddns.net/ ip: hardian.ddns.net rates: Cliente Próprio versão 10.98 abriu hj 22/12/2019
  21. Informações: Bug da vip removido; 150+ Quests; Novas áreas, algumas importadas de outros mapas; Todos os items 9.81 funcionando; Erro dos NPC's corrigidos; Respawn do mapa 100% Novas áreas de Carlin, Kazz, Port Hope, que possuem Coryms, Dragons e Lost Dwarves; 33 montarias agregadas + 70 novas obtidas com mountdoll; Respawns melhorados; Diversos bugs removidos entre outras coisas melhoradas; Servidor 100% estável livre de lag e erros; Imagens: Download Server: https://mega.co.nz/#...9XlGgGeXW0oza54 http://www.mediafire.com/?828xjbusvaplaem Scan Server: Não realizei porque o tamanho ultrapassa o limite do virustotal; Importante: Servidor compilado para rodar em Windows 64Bit; Créditos: tfs Team kalyst001 NvSo BT Outros.. SmoOkeR
  22. • SPR & DAT Naruto 8.54 - RickSoares [Download]• • Menu: ├ Informações; ├ Download; ├ PrintScreen; └ Creditos. • Informações Basicas • Galerinha estou trazendo pra vcs um pacote com sprites de personagens do Naruto e alguns monstros para ajudar na construção de novos e melhorados servs • Download's • [Naruto] SPR e DAT [Personagens] (4shared) http://www.4shared.com/rar/SgoDhKLe/Naruto_BY_RickSoares.html? Sprite Editor [v1.3.0] (4shared) http://www.4shared.com/rar/ZQ1w2BpH/Stigal_-_Spriter_Editor.html? Scan [Naruto] SPR e DAT [Personagens] (Virus Total) https://www.virustotal.com/pt/file/b88a6327313d931513d7734bb59ffa5981dd18ec5bf1bf9b53be444cf3672084/analysis/1384382974/ • Prints De Algumas SPR • • Creditos • RickSoares and Gabrieltxu.
  23. 4Fun Server Versão: 9.1 Distro: Crystal Server 1.5 Mapa Base: Vários Foi um edit rápido, 2 dias. Juntei algumas partes de mapas desconhecidos e algo do Azeroth. 2 amigos (ociosos =D) me ajudaram a importar algumas quests e editar o resto. Me disseram que os Ots 9.1 estavam muito ruins, talvez este possa ajudar. 4 Cidades: -> Celestia -> Theos -> Valmun -> Sandrina Mudanças/Conteúdo: Principais Quests: Imagens: Sistema de Guerras pelo Castelo [Honor Castle] Upgrade & Slot System ACC GOD: 222222/password Se acha que ter um OtServ é só baixar, abrir e largar lá, ou ainda editar chars e equipamentos para você mesmo jogar e fazer o que quiser, garanto-lhe que não vai durar 2 dias. Crie eventos, interaja com os jogadores, faça torneios Pvp, marque datas para a Honor Castle, faça updates no mapa, crie monstros, hunts e quests, dê suporte e, o mais importante, mantenha o HELP aberto, sempre. IpChanger 9.1 - Sources - Scan Download 4Fun Server Completo - [MEDIAFIRE] Créditos: Otmind/Kantera, Mistocalana, Mock, Majesty, Bruno0, Crystal Server Team, TFS Team, Coruja e Vmspk. Este tópico recebeu destaque em nosso portal!
  24. TibiaAvatar.com (Sábado, 21 de Dezembro às 13:00 UTC-3) VÍDEO Principais motivações para entrar no mundo Avatar: • 4 vocações espelhadas no anime Avatar - Fire Bender, Water Bender, Air Bender e Earth Bender. • Possibilidade de ter sua vocação promovida - Fire Lord, Tribal Chief Water, Air Monk e Dai Li Earth (com passivas únicas, ofensivas e defensivas). • 96 magias/dobras também espelhadas no anime Avatar - sendo 24 para cada vocação. • Possibilidade de aprimorar suas magias/dobras através de stones lendárias. • Sistema de encantamento com runas - possibilidade de encantar seus equipamentos com três tipos diferentes de runas lendárias. • Mapa completamente próprio - inúmeras quests, dungeons, bosses, mini-bosses, tasks globais, tasks diárias, etc. • Sistema de distribuição de atributos - a cada level o personagem ganhará um ponto de atributo para distribuir em: Health, Mana, Bend Level e Dodge. • Sistema de passiva - se o personagem estiver com a passiva ativa e por alguma razão perder todo o seu hp, ela ressuscitará automaticamente esse personagem com uma pequena porcentagem de vida. • Evento que funciona a cada 4 horas e que determina um novo Avatar. Lembrando que estamos com um sorteio em nossa página do facebook. Boa sorte à todos, estamos esperando todos vocês!
  25. Informações: » Mounts 100% » Items 97% » Outfits 100% » Trainer offline Estatuas e Camas 100% » Todos os Monstros 9.70 (Falta Incluir os 9.80) » TheOTX 2.44 Codename: "Chronodia" Requerimentos Minimos: » Windows XP 32Bits ou 64Bits » Intel Core 2 Duo 2,40 GHZ » 2GB de Memoria RAM Ferramentas Necessárias: » Para não ter problemas com arquivos (dll). » Microsoft Visual C++ 2010 - 32Bits: Redistributable Package Screen's: Download Server / Scan: » Download Server: Mediafire »Scan Server: https://www.virustot...sis/1357087768/ Download Database / Scan: » Download Database: Mediafire » Scan Database: https://www.virustot...sis/1357088007/ Download Sources / Scan: » Download Sources: Mediafire » Scan Sources: https://www.virustot...sis/1357088122/ Acc GOD: tibia/tibia Créditos: NvSo OTXTeam - 99,99% Soldoran SmoOkeR 0,01% - Uploads / Formatação / Scan
×
×
  • Create New...