Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 03/10/13 em todas áreas
-
Inicio Castelo
BrenoNeto e um outro reagiu a BlueDragon por um tópico no fórum
Sem nada pra fazer comecei a fazer este castelo. Falta bastante coisa ainda2 pontos -
[Gesior Acc] Guild War System Com Escudos
guiduarteee reagiu a walefxavier por um tópico no fórum
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 -
[9.60] Azeroth RPG
Arisen Trapzer reagiu a Vmspk por um tópico no fórum
Azeroth Server Updated 28/01/2013: v2.0 by Vmspk Este servidor foi disponibilizado para você gratuitamente, nunca retire os créditos Versões Anteriores: v1.0 [8.70]: http://www.xtibia.co...server-updated/ v1.1 [8.60]: http://www.xtibia.co...oth-rpg-reborn/ Versão: 9.60 Distro: TFS 0.4 Mapa Base: Yourots Edited e Mix Yourots Features: > 7 Cidades: Azeroth Avalon Zatur Liberty Bay Gloria Sand Trap Tiquanda > Mapa RPG bem detalhado para Ots Low e Mid rate. > Inúmeras invasões automáticas, Low e High lvl (ou iniciadas pelo comando /raid "nome"). > NPCs de Travel/Boat diferentes para cada cidade. > Mais de 100 quests (além das principais) espalhadas pelo mapa. > Quests especiais com NPCs > Arena PvP sem perda de items. > Sistema de Guerras pelo Castelo [entre guilds] (mais detalhes abaixo) > Sistema de Refinamento e Slot (mais detalhes abaixo). > Sistema de Mineração (mais detalhes abaixo) > Scripts e sistemas aprimorados para o servidor > Distro SEM erro algum > Equipamentos 9.60 funcionando corretamente > Novas Hunts > Raids de bosses 9.60 > Montarias por quest > Principais Quests: Annihilator Blue Legs Pits of Inferno MMS The Inquisition The Death FireWalker Boots Demon Helmet Draken Hell Conquer Prismatic Armory Deepling Abismal > 27 Raids Automáticas e configuradas: > Sistema de Guerras pelo Castelo [Honor Castle, a oeste de Azeroth] Evento automático. Quando a guerra é anunciada as guilds podem batalhar pelo controle do castelo, dando use no monumento do último andar e permanecendo assim até a guerra acabar. O último jogador a ter o controle do castelo antes do tempo acabar será o vencedor, e sua guild se tornará dona do castelo. Todos os membros da Guild ganharão uma recompensa e poderão acessar o mapa do subsolo. Os membros de outras Guilds serão teleportados para o templo e não poderão acessar o castelo. O sistema envia mensagens a todos antes de o evento começar, quando começar, quando o dono do castelo muda, antes de se finalizar e ao finalizar, relatando o conquistador do castelo e a guild vencedora. Imagens: Raids Honor Castle War Upgrade & Slot System > Histórico: V 0.2 V 0.3 V 0.4 V 1.0 V 1.1 V 2.0 Não há teleports diretos para hunts ou quests. Não há items ou monstros editados(além dos trainers). Não há sistema VIP, VIP 2, VIP 3, VIP 345456364. Não há raids com monstros excessivamente fortes nas cidades iniciais. Créditos: < Unknow YourOts Edited >< Mix Yourots Team >< Crystal Server Team >< Tryller >< Mock >< TFS Team >< TonyHanks >< Centera World >< SmoOker >< Mappers Xtibia e OtservBr >< Vmspk > (Este servidor foi disponibilizado para você gratuitamente, nunca retire os créditos) DOWNLOADS > Opcionais Utilitários - Source *Utilitários inclui: SQLite Studio + Otland Ipchanger > Servidor Azeroth Server v2.0 [MEDIAFIRE] Para entrar no servidor sem usar a internet, ponha no ipchanger localhost Se você estiver usando sqlite, vá até o config.lua e mude ingameGuildManagement = false para ingameGuildManagement = true > Scan Acc do GOD: vmspk/222222 Comandos: !war para executar a guerra pelo castelo manualmente, !reset para interromper o funcionamento da war e !castle para limpar todos os dados, ou seja, o castelo volta a ser terra de ninguém. !info para saber mais sobre as novidades do Azeroth Server. Editável na pasta do Ot, em Notícias. Comando !bless e !rank disponíveis. Para saber os IDs das pedras e outras coisas vá ao Histórico, na versão 1.0. 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. Conheça o mapa, 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. Contato: vmspk@hotmail.com Os arquivos dos ots 9.60 estavam muito errados e incompletos, ou melhor, podres. Não duvido que a maioria desses 9.60 postados aqui ou nos outros fóruns estejam infestados de bugs e coisas que não funcionam. Loots errados, monstros copiados, escadas sem registros, novos equipamentos sem movements (propriedades não faziam efeito), bordas de mapas 9.60 fora do lugar, scripts simples como os de Locked Doors em conflito com a lib, etc, etc. Tive um trampo do cão pra arrumar tudo isso. Do meu suor eu digo a vocês, dou-lhes o melhor servidor 9.60 (pelo menos por enquanto) Conheça também o 4Fun Server 9.11 ponto -
Client para Poketibia igual ao Pxg ,alguem tem?
ManoTobira reagiu a Aberos por uma questão
AE galera Xtibia! sou novo aki no forum e enfin, estou junto com um amigo meu criando um poketibia e ja temos e server mas o client ainda nao , entao eu queria um client igual ao novo client do pokexgame ou um client que tenha barra de move,se alguem souber de um pfv me passe o link de download ! desde de ja muito obrigado a todos !!!!!1 ponto -
Reset Que Ganha Vocation
igorodrigues reagiu a gleison157 por um tópico no fórum
Reset Vocation System Sisteme de reset igual do rozinx 8.60 pra quem nunca viu o sistema entra ae> rorinz.servegame.com // raiva.servegame.com Vá em data/talkaction/script e copie qualquer arquive e cole isso dentro: o sistema de reset não vai funcionar para poder funcionar vá em creaturescript/script/login.lua e adicione isso antes do ultimo return true : Créditos: 90% VodKart 10% A mim por ajuster ATENÇÃO= Duvidas sobre o Script falar com o Vodkard pois ele que configurou pra mim.... Não sou script só sei apenas mudar nomes etc coisas de noob msm kkk' Grato!!! Vim apenas disponibilizar o sistema pra vocês pois sou muito atencioso com aqueles que tentam copiar o mapa tão famoso do Rozinx ;D Gostou então da um REP+ Da um Rep+ ae quem gosto do sistema de reset pois vi que varias pessoas estavam pedindo então se ajudei vcs não custa nada me ajudar tb Rep+ ae pra mim1 ponto -
Nova estrutura XTibia
VictorWEBMaster reagiu a noobinhu por um tópico no fórum
Fala galera, tudo certo? Depois de alguns dias em reuniões com Gustavo, membros e equipe, chegamos ao novo modelo que vai compor o XTibia daqui pra frente. O modelo é simples e dispensa burocracia. Agora temos a seguinte estrutura no fórum: Administrador | Colunista | Moderador | Estagiário | Herói | Membros Como podem perceber, entrou o novo cargo de Colunista e foram removidos 3 cargos: Diretor, Coordenador e Colaborador. O motivo pelo qual excluímos alguns cargos e criamos outros é simples: queremos diminuir a quantidade de pessoas na equipe. Eu, especialmente, nunca trabalhei com equipes grandes. Dentro de empresas e startups, o máximo de pessoas dentro de uma equipe minha foram 10 ou 15. Logo, nada melhor do que trazer um plano de equipe que eu já tinha em prática pra cá também. O cargo colunista Esse novo cargo foi criado pensando em trazer conteúdo diferenciados para comunidade. Basicamente, especialistas em áreas que não estão diretamente ligadas ao desenvolvimento de Open Tibia, mas sim ao público que temos aqui. Pretendemos trazer gente de diversas áreas, desde business, empreendedorismo e advocacia para dar uns toques sobre como "empreender e criar seu OTServer", referências em tecnologia, programação, design até as mais inusitadas como "vestibulares". Acreditamos que assim a comunidade terá uma visão mais ampla sobre todos os assuntos, podendo discutir com referências de diversas áreas. Sendo assim, o cargo colunista não é relacionado a conteúdo semanal ou diário aqui no fórum, mas sim pequenas contribuições de referências em diversos assuntos. Acredite, empreender e criar um OTServer é mais do que fazer um mapa e desenvolver em LUA! O cargo moderador Esse sim será composto por membros que estão todos os dias em áreas de desenvolvimento. Esse modelo de moderação foi importado do fórum iMasters (o maior fórum de programação do Brasil), o qual representei por alguns anos, e que funcionava muito bem. Membros destaques em áreas de desenvolvimento serão chamados para participarem de reuniões internas, e posteriormente, para a equipe. O cargo estagiário O grupo de estagiários por sua vez será composto de pessoas com alto potencial de crescimento e que participarão das nossas atividades diárias, porém não as executando, agilizando o desenvolvimento de cada um no grupo e permitindo que a administração conheça mais a fundo o perfil de um membro antes de ingressar na equipe. Dêem boas vindas então aos novos moderadores: Demonbholder - Scripting Caotic - Scripting Erimyth - Mapping Stigal - Geral Aguardem então a presença de pessoas referências em diversas áreas e mais novidades nos próximos dias. Abs!1 ponto -
1 ponto
-
Iae xtibia ! Hoje venho trazer um script de fly todo conheçe um fly sistema então não darei explicação va em data / talkaction / scripts / e renome qualquer arquivo.lua para fly e add isso tudo la dentro: dps em talkactions.xml add essa tag la: Então eu adicionei uma lista dos lugares ai dps e so o player falal "!fly lugares" que ele ver os lugares para se teleport Então e so isso galera Creditos Smartbox 99 % (Por criar) e Saulins 1 % (Por Postar Aki No Xtibia)1 ponto
-
Olá pessoal, hoje venho demonstrar um otserver derivado, com sourcer, de pokemon. Estou trabalhando nele faz uma semana, junto com meus 'vizinhos de casa'. Nele há muitos sistemas, copiados inteiramente da antiga SvkE. Vou mostrar alguns deles aqui, e necessito da ajuda de vocês para sistemas interativos, um feedback de cada um. O nosso changelog abaixo: SvkE Atualizações: • Retirado alguns scripts inuteis, e otmizados outros. • Pokemons 1ª Geração(Inclusive Shinys) foram reformulados, corretamente. ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- • Hypnosis completamente funcional. • Sleep Powder deixa o monstro mimindo por 10 segundos. • Foods funcionando igual SvkE. OBS.:Chupa danilo • Pokémons selvagens não matam seu "Amigos". • Sistema de Felicidade. OBS.:Chupa danilo ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- • !CD System perfeito • Pokemons apanham de acordo com a fome. • Pokemons batem de acordo com a fome. ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- • Revive 100% funcionau. • Novas pokebolas feitas (dark, love, golden e frash). • Boost System 100% pronto. • Barco System 50% pronto. Falta colocar a rota dele. ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- ----------------------------- Bugs que danilo Achou • Concertados ------------------------------ ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- • M8 - Rest do snorlax, arrumado, ele continuava a andar. • M9 - Metronome da Clefabel. • M6 - Healarea da Wigglytuff. • M2 - Roar do Arcanine. • Nidorans não evoluiam. • M8 - "Selfheal" healava mais que o "healarea", Clefable. • M9 - Restore do Dewgong, reformulado. • Crystal Onix com move1 até move9. • M10 - Wardog do arcanine agora tem que estár colado. • T1, T2, T3 e T4 arrumados, agora sem cooldown. ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- ----------------------------- Bugs que danilo Achou • Concertados ------------------------------ ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- ---*-*--- • Burn system, deixa o pokemon incendiado, caso seja atacado por magias prédefinidas. • Ice system, deixa o pokemon com congelado, caso seja atacado por magias prédefinidas. • Venom system, deixa o pokemon com envenenado, caso seja atacado por magias prédefinidas. • Npc que pinta bolas. • Evento, dedicado a waguinho(é wagner), suddenAttack. O player escolhe uma das raças , "Zumbies" ou "Vampiros", as quais tem a missão de acabar com a raça contraria. • Troféus dos torneios. • Torneio adiciona, 1x1. • Adicionado itens de decoração do mapa: • Pokefluts adicionadas. Espero comentários e ideias das quais vocês querem nesse servidor.1 ponto
-
Falaa galera através de um pedido do skydarkyes eu resolvi criar-lo é postar ele aki pra vocês então vamos lá . va em data / actions / scripts / renome algum arquivo para vocitem.lua e adicione . function onUse(cid, item, frompos, item2, topos) local voc = 5 -- id da vocation que ele vai ser promovido local storage = 29301 -- não mexa if getPlayerStorageValue(cid, storage) >= 1 then doPlayerSendTextMessage(cid, 22, "Desculpe voce ja clico no item") return true end if item.itemid == 4852 then -- id do item que vai tenque clickar doPlayerSetVocation(cid,voc) setPlayerStorageValue(cid, storage, 1) doRemoveItem(item.uid,1) doPlayerSendTextMessage(cid, 22, "Parabéns se troco de vocation") end return true end em actions.xml <action itemid="ID DO ITEM QUE VAI DA USE" script="vocitem.lua"/>1 ponto
-
1 ponto
-
PEDIDO : NPC PROMOTION
sergionilo reagiu a Gears por uma questão
Wouldaa 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 price = 80000000 if msgcontains(msg, 'hi') then selfSay("You want to be promoted? Say 'promotion' or 'vip promotion'?", cid) elseif msgcontains(msg, 'promotion') or msgcontains(msg, 'vip promotion') then selfSay('You want to be promoted vip for 80000000 gold coins?', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if getPlayerLevel(cid) >= 750 then if getPlayerPromotionLevel(cid) == 1 and getPlayerMoney(cid, price) == TRUE then setPlayerPromotionLevel(cid, 2) selfSay('Congratulations! You were promoted vip! good bye!', cid) else if getPlayerMoney(cid, price) == FALSE then selfSay('Sorry, You dont have the member promotion, or you dont have 80000000 gold coins to be promoted vip, good bye...', cid) end else selfSay("You are already promoted vip, or not have level 750 to be promoted vip, good bye...", cid) end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then talkState[talkUser] = 0 selfSay('Good bye.', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())1 ponto -
Não precisa clicar order na borda apenas , anda pra frente com um pokemon de surf que automaticamente ira usar surf1 ponto
-
Oi Galera . tudo bom? bom fiz ese topico para uns mlks q me pediram dai resolvi fazer 1' topico pratodos obs: se eu tiver feito na area errada. mne disculpe. movam o topico pf. bom vamos ao que enteressa primeiro vamos criar a paralyzation holy blade primeiro vá em data/weapons/scripts copie 1 arquivo lua e troke o nome por paralyzerholy.lua e apage tudo dentro e coloke iso \/ agr va em data/weapons/weapons.xml procure pelo id da sword no meu caso 7390 quando axar substitua por ese <melee id="7390" level="75" unproperly="1" event="script" value="paralyzerholy.lua"> agora va em data/items/items.xml procure o id da sua sword e Renomeie para qual nome vc kiser no meu caso Paralyzation Blade [spoile] <item id="7390" article="the" name="Holy Paralyzation Blade"> <attribute key="weight" value="5000"> <attribute key="defense" value="500"> <attribute key="attack" value="150"> <attribute key="weaponType" value="sword"> <attribute key="extradef" value="50"> </attribute></attribute></attribute></attribute></attribute></item> pronto esa feita sua paralyzation holy agr vamo fazer a death crie 1 arquivo em data/weapons/scripts com nome de paralyzerdeath.lua e coloke iso dentro \/ depois va em data/weapons/weapons.xml procure pelo id da sword death no meu caso 2390 axe e substitue por depois va em data/items/items.xml procure o id da sua sword no caso d aminha 2390 substitua por \/ agora a parte q alguns nao sabe esa parte realmente eu copiei de um server nao digo o nome porque o proposito n é divulgaçao emfim... va a data/spells/spells.xml procure ---conjure spells--- adicione esta tag em reage id é o id da sua sword DEATH e em conjure id é o id da sua HOLY sword dps de adicionar esa tag adicione outra embaixo desa em reage id o id da sua sword HOLY e em conjure id o id da sua sword DEATH após feito isso salve tudo e pronto seja feliz gosto? Rep+ n cai o dedo ^^ fotos Death Blade.bmp Holy Blade.bmp1 ponto
-
quem te desbaniu? -.-'' "Tu só fala bosta, tem que ter uma privada do lado quando conversa com alguém pra não sujar o chão"!1 ponto
-
Chicken Egg
20cm reagiu a drakylucas por um tópico no fórum
você pode utilizar um registerCreatureEvent no monstro com onThink, dae você cria um arquivo.lua em creaturescript, no arquivo cria uma função que a cada 1 minuto, por exemplo, passe (com addEvent msm), e dps se repita, e logo no final do script la coloca o unregisterCreatureEvent para evitar ficar repetindo... dae a galinha poderia botar o ovo, sem esses erros, e sem dar lag... é só abrir o chicken.xml (monstro), registrar o script, e criar um script +- assim (Fiz direto no xtibia, assim nao irá funcionar, mas a ideia é essa )1 ponto -
[Encerrado] [PEDIDO]Editar esse script
Drk Shadow reagiu a Skymagnum por um tópico no fórum
substitui por esse script o da action function onUse(cid, item, fromPosition, itemEx, toPosition) local CREATE_M = "Grim Reaper" local CREATE_P = {x = x, y = y, z = z} doTeleportThing(cid, CREATE_P, true) doSummonCreature(CREATE_M, CREATE_P) setPlayerStorageValue(cid, 782739, 1) return true end em creaturescripts/scripts cria um arquivo e coloca o nome de aska e taca isso la function onKill(cid, target, lastHit) local CREATE_M = "Grim Reaper" if getPlayerStorageValue(cid, 782739) > 0 then if getCreatureName(target) == CREATE_M then setPlayerStorageValue(cid, 782739, 0) end end return true end agora na msm pasta cria outro arquivo e coloca de askaa e taca isso function onPrepareDeath(cid, deathList) if getPlayerStorageValue(cid, 782739) > 0 then doRemoveCreature(deathList[1]) doRemoveCreature(deathList[2]) end return true end agora em creaturescripts.xml taca esas 2 linha <event type="kill" name="sksk" event="script" value="aska.lua"/> <event type="preparedeath" name="sksksk" event="script" value="askaa.lua"/> agora volta pra creaturesscripts/scripts em login.lua taca isso: registerCreatureEvent(cid, "sksksk") registerCreatureEvent(cid, "sksk")1 ponto -
Isso ai velho é porque os cara ta com vara de outro serve no cliente deles , manda eles logar nos serve que eles jogava e abrir hotkey e tirar a fishing daquele ot depois coloca a do seu server1 ponto
-
[Encerrado] Duvidas Client
Gomking reagiu a SkyDarkyes por um tópico no fórum
hex editor é complicado tem mt coisa1 ponto -
Simples, baixe o Hex editor, abra seu cliente nele, aperte ctrl+f e procure por a palavra que voce quer troka, ex: enter game, dai va aparecer la e voce muda pra q vc kiser!1 ponto
-
Mapa totalmente desenvolvido por mim, para o projeto Tibia Survival, ainda não finalizado. Espero que gostem!!! Link para ver ampliado: http://img842.imageshack.us/img842/2974/semttulozme.jpg1 ponto
-
Uma quest diferente e facil
MonicaLopes reagiu a Goomba por um tópico no fórum
Cara eu imaginei que tinha que ter 2 players, ir um em cada quadrado acima da alavanca e puxarem a alavanca, nunca iria imaginar dar exani hur ali Como disse o @Lucasblaze, se fosse uma quest grande e essa fosse a última etapa, até que seria um bom enigma...1 ponto -
[8.6][Tibia Gta] - Por Beddy / Sem Bugs - V1.1
vinnevinne reagiu a tutumelo por um tópico no fórum
Aff 8.6 nao existe no tibia MULTI-ip changer 7,46.601 ponto -
Parece que só eu não entendi como funciona..kkkkkkkk' teria como explicar? Abraço1 ponto
-
Runa Heal Por Vocation v2.0
Queissozik reagiu a SkyLigh por um tópico no fórum
Falaa galera toda de volta com o runa heal por vocation que fez um grande sucesso então espero fazer o mesmo na v2.0 so que agora heala mana também . em data / action / scripts / e renome algum arquivo para vocrune.lua function onUse(cid, item, fromPosition, itemEx, toPosition) local knightmin = 400 -- quanto o knight vai heala no min local knightmax = 1100 -- quanto o knight vai heala no max local druidmin = 500 -- quanto o druid vai heala no min local druidmax = 700 -- quanto o druid vai heala no max local sorcerermin = 900 -- quanto o sorcerer vai heala no min local sorcerermax = 1000 -- quanto o sorcerer vai heala no max local paladinmin = 100 -- quanto o paladin vai heala no min local paladinmax = 200 -- quanto o paladin vai heala no maxlocal local knight,druid,sorcerer,paladin = 4,2,1,3 -- nao mexa local storage = 11548 local exhau = 3 -- quantos segundos pra usar denovo a potion if getPlayerVocation(cid) <= knight and doCreatureAddHealth(itemEx.uid, math.random(knightmin, knightmax))and doPlayerAddManaSpent(itemEx.uid, math.random(knightmin, knightmax)) then return true elseif getPlayerLevel(cid) <= druid and doCreatureAddHealth(itemEx.uid, math.random(druidmin, druidmax)) and doPlayerAddManaSpent(itemEx.uid, math.random(druidmin, druidmax)) then return true elseif getPlayerLevel(cid) <= sorcerer and doCreatureAddHealth(itemEx.uid, math.random(sorcerermin, sorcerermax)) and doPlayerAddManaSpent(itemEx.uid, math.random(sorcerermin, sorcerermax)) then return true elseif getPlayerLevel(cid) <= paladin and doCreatureAddHealth(itemEx.uid, math.random(paladinmin, paladinmax)) and doPlayerAddManaSpent(itemEx.uid, math.random(sorcerermin, sorcerermax)) then return true elseif (getPlayerStorageValue(cid, storage) <= os.time()) then setPlayerStorageValue(cid,storage,os.time()+exhau) doSendMagicEffect(getThingPos(itemEx.uid), CONST_ME_MAGIC_BLUE) doCreatureSay(itemEx.uid, "Curado..", TALKTYPE_ORANGE_1) return true end end em actions.xml <action itemid="ID DA RUNA" script="vocrune.lua"/> então so isso espero que goste , BEIJO DO SKY1 ponto -
[Pedido] Reset Vocation System
igorodrigues reagiu a gleison157 por uma questão
Sistema de reset que ganha vocation Vocations 1-Sorcerer 2-Druid 3-Paladin 4-Knight 5-Mixed Assassin 6-Spin Assassin 7-Sacred Martyr 8-Lonely Star 9-Falling Star 10-Hellborn Deathdriver 11-Supreme Hellborn deathdrive 12-Apocalypse Deathbringer 13-Nova Hero. 14-Addicted Zealot Mixed Assassin: Se eu for kina,druid,pali ou sorc... e o player falar !mixedpromo quando tiver lvl 10k+ ele vai resetar para o lvl 8 e fica na vocation numero 5 que e a mixed Assasin. Spin Assassin: Ae quando o player chegar no lvl 60k+ ele vai falar !spinpromo ele ira reseta para o lvl 8 e fica na vocation numero 6 que e a spin assassin... Sacred Martyr: Ae quando o player chegar no lvl 95k+ ele vai falar !sacredpromo ele ira reseta e vai voltar para o lvl 30k.. Obs... O playe so Pode reseta as vocation mixed para spin se ele for a vocation mixed.e ele so pode reseta para a vocation sacred so se ele for spin... Quests Agora parte da quest que reseta vocation se tiver lvl permitido Lonely Star: O player so pode resetar para essa vocation se ele fizer a quest com a vocation Sacred Martyr com lvl 130k+ . Apos a resetar o player trocarar de vocation e ficarar com o lvl 30k. Falling Star: O player so pode resetar para essa vocation se ele fizer a quest com a vocation Lonely Star Com lvl 160k+. Apos a resetar o player trocarar de vocation e ficarar com o lvl 90k. Hellborn Deathdriver: O player so pode resetar para essa vocation se ele fizer a quest com a vocation Falling Star com lvl 250k+. Apos a resetar o player trocarar de vocation e ficarar com o lvl 90k. Para as outras vocation como a : Superme Hellborn Deathdriver. Apocalypse Deathbringer. Nova Hero. Vai ser por Comando. Explicaçao: Supreme Hellborn Deathdriver: O player so pode resetar para essa vocation se ele tiver com a vocation Hellborn Deathdriver e tiver lvl 310k+. Para o player resetar ele tem que falar !supremepromo. Apocalypse Deathbringer: O player so pode resetar para essa vocation se ele tiver com a vocation Supreme Hellborn Deathdriver e tiver lvl 550k+. Para o player resetar ele tenque falar !forgottenpromo. Nova Hero: O player so pode resetar para essa vocation se ele tiver com a vocation Apocalypse Deathbringer e tiver lvl 715k+. Para O player resetar ele tenque falar !novapromo. Addicted Zealot: O player so pode resetar para essa vocation se ele estiver com a vocation Nova Heo e tiver level 715k+. Para o player resetar ele tem que falar !zealotpromo ------------------------------------------------------------------------------------------------------------------------------------------------------------- Ae Gostaria Desse Systema De Reset e o sistema de reset vocation quest ja tenho REP+ PARA QUEM FAZER E GOSTARIA QUE FIZESSE O SCRIPT COM URGENCIA PARA MEU OT Agradeço!!!1 ponto -
[Encerrado]Dragon Ball: The History
tarsisvd reagiu a luangustavo123456 por um tópico no fórum
bota contraste nessas sprite cara esse macaco do seu avatar ta fora de perspectiva1 ponto -
Tutorial - Como adicionar icon system.
KilluaFox reagiu a MauricioPC por um tópico no fórum
@StyloMaldoso tem um bug na great ball ela nao vira icon, vc sabe arrumar isso? ---Achei o Bug -- para resolver que a great ball vire icon. vá em data/lib/ -- abra o arquivo IconSys.lua e em deixe assim: dpois desça um pouco e logo achara assim: e deixe: desça mais ate achar: e deixe assim: Bom, é isso ae OBS: eu so troquei o id da great ball que estava errado nos 3 lugares.1 ponto -
Tibia 3D Sera Que Um Dia Sai ?
felipeluppi reagiu a Bloxx por um tópico no fórum
Tibia em 3D não vai ser a mesma coisa, porque ele faz sucesso justamente por ser um dos poucos MMORPGs com gráficos em 2D. mais por outro lado, vai ser mais legal e emocionante e iria restaurar uma mínima (nem pequena mesmo) parte de RPG no Tibia. mais eu não gostaria que fosse em 3D poderia ser no máximo 2.5D, ou que pelo menos mostrasse uma animação de ataque, não apenas números.1 ponto -
Uma quest diferente e facil
MonicaLopes reagiu a Lucasblaze por um tópico no fórum
gostei da quest , mais acho q deveria ser dividida por etapas , e esta fosse a ultima delas .1 ponto -
Cara é o seguinte, quando deu isso no meu, eu fui em cada pos que ta falando ae e ajeitando, ae fala que tem algum item nas certas casas que podem ser movidos..é so vc retirar.. Os monstros tao com o respwn 0 tu tem que ir nas pos que ta falando ae e editar o o tempo do respaw de cada monstro que fala acima. Vlw EDIT: são teus treiner que tão com respawn 0.1 ponto
-
Naruto Ultimate (24 Horas)
Demonbholder reagiu a viniciusBIG por um tópico no fórum
Assese:http://www.narutoshinobi.com/ Novos Personagens em Breve! Personagens Free: Naruto Sasuke Sakura Itachi Gaara Lee Neji Kiba Chouji Hidan Kankuro Kakashi Killer Bee Tenten Hinata Shikamaru Personagens Pago: Madara Obito(Tobi) Orochimaru Exp: 300x Server Dedicado 24 horas-1 pontos -
-1 pontos
-
[8.54] Naruto Atarashi Online V.1 Beta
Demonbholder reagiu a viniciusBIG por um tópico no fórum
Parabens!!!!-1 pontos -
Pokemon Darkness 24H Online
Demonbholder reagiu a viniciusBIG por um tópico no fórum
Ate qui e legal!! Recomendo! Se eu tivesse +REP PRA DA AINDA, EU DAVA 1 PRA VC E QUI HJ EU GASTEI OS REP TUDIM '-'-1 pontos