Líderes
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 04/06/13 em %
-
Evolera.pl v3 - UPDATE 12.11 EVOLUTION MEGA EDIT
Tony Araujo e 2 outros reagiu a LuckinhaSan por um tópico no fórum
Evolera v3 - SPECIAL EDITION 12.11 Equilíbrio De Profissões Nossa principal tarefa era equilibrar profissão, foi feito todos os esforços para fazer com que pareça profissional. Nesta edição ninguém reclamou dos ataques fracos de qualquer profissão. Bob Marley - Event Nosso convidado especial apareceu, NPC que nos dá missões incríveis. Eu acho que ele capturou um determinado grupo social para ots! Governor - Quest Quest Hardcore Oficialmente achamos ser a mais difícil missão no ot. Pode-se obter itens que não está no shoopie sms. Itens de hardcore aos equipamentos para cada profissão. Sacred Dragon Tales - Event Assim, as 10 missões de um dragão misterioso, cada missão é única. Dragão misterioso tem para você uma série de valiosos prêmios na forma de experience e itens. New Quest Room: Sala de quest totalmente reconstruída, agora parece muito mais agradável e linda! Reconstruiu a cidade/templo: A nova cidade é jescze mais misteriosa, esconde um monte de missões secretas, missões e locais para os quais podemos obter apenas alguns. O templo atualizou, agora com mais espaço, temos acrescentado novos teleports e npceki Novos monstros! Ghastly dragons Medusa Drakeny Helish Tortoisy Halloween Pumpkiny Rainbow Margarothy Sacred Dragon Child Sacred Mastery Novos NPC's! Bob Marley Governor Gladia Tommy Rastaman Uncle Fester Bob Marley Mother Novos Items! Armor-Noob Helmet-Noob Dark monk armor Guardian boots Dragon scale boots Lucky Charm Crystal-Tp Hardcore Set Hardcore Weapons E todos items Zaoan Novos Scripts! Agora, o seu progresso que você será capaz de verificar o log de quest Ou Lotto [sistema de bilhete! Ticket] Melhoria Tetris e Snake Boomberman Trem-atacante Monki Faster [você não pode matá-los] Segredos do sistema ou quests escondidas, missões, npceki lugar secreto Addons em nosso ots está ficando em 2 maneiras através de Missões Addon e Dolla Outfiter [alavanca dando addons no templo] agora muda roupas por 30min. Muito mais ataques e eventos Bounty Hunters [ou hunted system] Novos Systemas! War System Outfit system Afk system Extensive reporting system players New channels like "Yahoo" Castle System Vote System Boomberman system Tetris system Casino System Soccer System Snake system Addon Bonuses Lottery System Comandos para players! / Balance - controle de balanço ! Online - quem está online - Online ! Uptime - mostra quantas horas servidor Stoji ! Deathlist - lista de mortes ! Pvp - verifica se o servidor está pvp ou non-pvp ! serverinfo - informações do servidor / Commands - uma lista de comandos ! Soft - correção softy ! Firewalker - reparos FWB ! Backpack - mochila compra ! Aol - comprar Amulet of Loss ! Bless - abençoar compra 100% ! Premium - prêmio de compra ! spells - lista de spells ! Changesex - mudança de sexo ! Frags - mostra o número de frags ! it - guilda roupas mudança ! After - mudança de roupas festa ! Buyhouse - compra uma casa ! Sellhouse - vende uma casa ! Leavehouse - sair de casa ! Createguild - criar guildas ! Joinguild - Junte-se a guilda ! Afk on /! Afk off - afk sistema ! so - comando para votar ! Did not - comando para votar ! Bomb - bomba que você colocou no boomberman ! Ticket - Lotto sistema / War - todos os comandos para os goods Novos Eventos! Metin Stones Castle War Sacred Dragon Nesta edição, foi corrigido todos os erros de novos hosters [houses e problemas no map] Todos os créditos vão para Alex. Screens - Download - Via MediaFire Download - Via 4Shared3 pontos -
[Arquivado]Faça parte de nossa história
MarceloCB e um outro reagiu a arturDM por um tópico no fórum
Gostei da ideia, irei levar em pauta hoje na reunião, mas não será como você dissera.. Uma vez que os outfits serão por vocação e mais de uma raça existirá.2 pontos -
Alguem poderia mudar o ip do meu client?
Churuchuchu e um outro reagiu a Roksas por uma questão
Prontinho amigo, consegui lembrar o IP do primeiro cliente que você postou aqui no tópico, mudei o IP dos 2. Agora você tem 2 opções de uso: 1ª Opção (Pokemon_Nibe) = http://www.4shared.com/file/yxv5CEdZ/POKEMON_NIBE.html 2ª Opção (PDA_SLICER) = http://www.4shared.com/file/Td6dYhMi/PDA_SLICER.html2 pontos -
Se você usa alguma distro que não seja TFS 0.4, mude para ela, ou vice-versa. Atenciosamente, Thiagobji.2 pontos
-
Mensagem que aparece quando players criam novos chars
Roksas e um outro reagiu a MasterDino por uma questão
Cara ela aparece apenas 1 vez pra player, mais ela sempre vai aparecer para account manager. caso nao queira que isso aconteça faça assim, vai em creaturescripts/scripts crie um arquivo .lua com o nome de welcome.lua e coloque isso dentro: local texto = [[ESCREVA AQUI! ]] function onLogin(cid) if getPlayerStorageValue(cid, 12233) == -1 and getPlayerVocation(cid) > 0 then doShowTextDialog(cid, 2175, texto) setPlayerStorageValue(cid, 12233, 1) end return TRUE end salve e feche. registre a tag em creaturescripts.xml <event type="login" name="Welcome" event="script" value="welcome.lua"/> depois edite a vocation do account manager para "0". aqui eu testei e funfo, distro 8.54 se der problemas denovo, avise2 pontos -
Mostrando suas Hunts
kttallan reagiu a BananaFight por um tópico no fórum
Bom, como acho que todos ja viram o map do servidor de poketibia (Pxg) ele mostra icones, nomes etc no minimap, e hoje vim trazer isso para vocês Nome: Map IconDescrição: Adiciona um icone no minimapAutor: Eduardo Vicente (Banana Fight)Website: www.xtibia.com Versão 1.0 Features: Criar Icones no minimap Instalação dentro de modules/game_minimap/minimap.lua embaixo de : function toggle()if minimapButton:isOn() thenminimapWindow:close()minimapButton:setOn(false)elseminimapWindow:open()minimapButton:setOn(true)endend Você adiciona a função : function setMonsterCave(posx, posy, posz, icon, description)local pos = {}pos.x = posxpos.y = posypos.z = poszminimapWidget:addFlag(pos, icon, description)endfunction removeMonsterCave(posx, posy, posz, icon, description)local pos = {}pos.x = posxpos.y = posypos.z = poszminimapWidget:removeFlag(pos, icon, description)end Como usar setMonsterCave(Posição X do map, Posição Y do map,Posição Z do map, "Nome da Imagem", "Descrição que vai aparecer") Obs: como eu usei uma função que já existe você vai te que seguir um padrão na hora de adicionar o nome da sua imagem. Exemplo: O nome da minha imagem é "dragonicon.png", para que eu possa usar ela no script eu tenho que adicionar essa imagem dentro da pasta "data/images/game/minimap/", e vou ter que renomear essa imagem para "flagdragonicon.png", Ai depois de ter feito isso dentro do meu script quando eu for fazer o script adicionar essa imagem eu vou fazer da seguinte maneira : setMonsterCave(32238, 32240, 7, "dragonicon", "Dragon Cave") Se você ainda não entendeu é da seguinte forma, você tem uma imagem com nome "test.png", você vai adiciona a imagem no lugar certo, com o nome "flagtest.png", ai dentro do script você só usa "test", pois o script já sabe que vai ter que juntar flag+nome da imagem que você adicionou+.png. Obs 2: Sua imagem tem que ter o fundo transparente Obs 3: quando mais transparente for a imagem, mais do map aparece e causa o efeito igual ao do PXG, do map se abrindo. Exemplo de uso : arquivo : minimap.lua function init()minimapButton = modules.client_topmenu.addRightGameToggleButton('minimapButton', tr('Minimap') .. ' (Ctrl+M)', '/images/topbuttons/minimap', toggle)minimapButton:setOn(true)minimapWindow = g_ui.loadUI('minimap', modules.game_interface.getRightPanel())minimapWindow:setContentMinimumHeight(64)minimapWidget = minimapWindow:recursiveGetChildById('minimap')local gameRootPanel = modules.game_interface.getRootPanel()g_keyboard.bindKeyPress('Alt+Left', function() minimapWidget:move(1,0) end, gameRootPanel)g_keyboard.bindKeyPress('Alt+Right', function() minimapWidget:move(-1,0) end, gameRootPanel)g_keyboard.bindKeyPress('Alt+Up', function() minimapWidget:move(0,1) end, gameRootPanel)g_keyboard.bindKeyPress('Alt+Down', function() minimapWidget:move(0,-1) end, gameRootPanel)g_keyboard.bindKeyDown('Ctrl+M', toggle)g_keyboard.bindKeyDown('Ctrl+Shift+M', toggleFullMap)minimapWindow:setup()connect(g_game, {onGameStart = online,onGameEnd = offline,})connect(LocalPlayer, {onPositionChange = updateCameraPosition})if g_game.isOnline() thenonline()setMonsterCave(32239, 32240, 7, "dragon", "hihi")removeMonsterCave(32239, 32240, 7, "dragon", "hihi")endend1 ponto -
[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 -
1 ponto
-
Faz tempo que estou querendo colaborar com Xtibia, e hoje lá vai um mini tutorial para ajudar quem estiver com alguma dificuldade ao tentar abrir o seu map no remeres. Eu procurei diversos Tutoriais para tentar sanar meu problema com map editor, não encontrando nenhum que resolvesse eu fiz um teste e deu certo, e agora vou compartilhar. "Meu problema não era quando eu tentava criar um mapa do zero, mas sim quando eu queria editar os mapas de outros autores." para executar este tutorial eu usei o seguinte mapa: Map:> mastermap.otbm Autor:> Brun123 Tutorial: Se ao tentar abrir seu Map com o Remeres e ele aparecer com o "chão" vermelho em algumas partes, ou com partes do tibia como na imagem abaixo: Feche o Remeres e faça o seguinte: ►►Vá na pasta "C:\Arquivos de Programa\Remere's Map Editor\data\854" (Porque a pasta "854"?Essa é a pasta com os arquivos compatíveis com a versão do poketibia 8.54) Se você fizer tudo certo irá ver esses arquivos dentro da pasta: ►► Minimize esta pasta e agora vá em seu "Ot" ...data\ e copie os arquivos "items.xml" e "items.otb" e cole-os na pasta "C:\Arquivos de Programa\Remere's Map Editor\data\854" (vai perguntar se deseja substituir clique em ok) ►► Agora procure pelo arquivo "creatures.xml" na pasta do seu "Ot" e também cole-o na pasta "C:\Arquivos de Programa\Remere's Map Editor\data\854" e pronto. Atenção: para visualizar seu mapa e fazer edições nele abra-o diretamente sem abrir o Remere's por exemplo clique duas vezes em "mastermap.otbm" Ao abrir o mapa diretamente pelo Remeres ficará assim: Você só estará vendo seu minimap apertando a tecla "M", mas o resto do conteúdo não. Ao abrir seu mapa cicando duas vezes no ìcone "seu mapa.otbm" o Remeres irá carregar as configurações e aperecerá essa informação: Clique em "ok" e seu mapa será carregado. Depois poderá aparecer esta outra informação no seu editor: Caso essa mensagem apareça é por que o mapa foi salvo em uma versão mais antiga do Remeres e fica ao seu critério atualizar ou não. ►E como meu já disse abra seu mapa diretamente sem executar o Remere Clicando diretamente no icone do "seumap.otb": Você verá que seu mapa agora está completo sem nenhum erro! Mas espere, ao clicar em Pallete/Creature Pallete não estiver visualizando as imagens de seus pokemons, Shiny/pokes e nem dos NPC's então você deverá exporta-los: ►Vá no menu superior do Remere e Clique em "File" depois em "Import►Import Monsters/NPC..." Irá abrir uma janela para que você aponte onde estão esses arquivos tipo "xml". Eles estão em "...\data\monster\pokes" aperte "Ctrl+A" para selecionar todos os aquivos tipo "xml" depois clique em "Abrir". ►Faça a mesma coisa com os demais arquivos: Seus "NPC's" estão em "...\data\NPC" Carregue esses Arquivos também. Seus "Pokemons Shiny" estão em "...\data\monster\pokes\Shiny". Pronto tudo carregado com êxito e você pode editar o mapa do jeito que quiser. Meu primeiro Tutorial espero ter postado no lugar certo e que possa ajudar quem está com o mesmo problema que eu tive. Desculpem algum erro ou se fui muito repetitivo, pois eu vi que em alguns tutoriais tem muito Flood por causa dos usuários que não entenderam bem o que foi escrito. Falow ai galera, e quem sabe até um próximo tutorial ! Pasta Data do Remere's com as modificações do tutorial >> http://ads.tt/4ZGomA1 ponto
-
[Video Aula - Completa] Como Add Novos Pokemons no PDA
Elder Skrill reagiu a Gabrieltxu por um tópico no fórum
Conteudo Retirado.1 ponto -
Criando Um Cliente 100% Proprio
LuisMatheuziin reagiu a Tony por um tópico no fórum
Olá pessoal do Xtibia! Hoje vou ensinar a vocês como criar um cliente 100% próprio para seu servidor de tibia. :forward: Créditos :back: :star2: Jakiin :star2: Trazer ao x-tibia :star2: TiraDuvidas :star2: Fazer o Tutorial Este tópico recebeu destaque em nosso portal!1 ponto -
Positioner [v1] Iaaaae Galera, como vão? Hoje vim lhes apresentar o meu Action. É o Positioner, oque ele faz? O Positioner é um item (ID:1956 - MAPA), ao dar USE, ele grava suas coordenadas, ai você pode ir para aonde quiser. Pode até morrer, dando USE novamente, voltará para aquelas coordenadas (posição) que salvou. Legal né? Eu adaptei alguns códigos que achei para fazê-lo, vamos lá. Vá em data/lib, abra o arquivo 050-function.lua, as vezes pode estar só com o nome function.lua. Lá, na última linha de todas, dê um enter, pule uma linha e acrescente isso: function savePosition(cid) RETORNAR = {x = getPlayerStorageValue(cid, 20000), y = getPlayerStorageValue(cid, 20001), z = getPlayerStorageValue(cid, 20002)} local PLAYER = getPlayerGUID(cid) addEvent(function() if isCreature(cid) then setPlayerStorageValue(PLAYER, 20003, 0) else db.executeQuery("DELETE FROM `player_storage` WHERE `key` = 20003 AND `player_id` = " .. getPlayerGUID(cid) .. ";") end end) end Essa é a nossa função para salvar a position, usei a do SkyMagnum (talkaction) e adaptei para action. No caso, vá em data/actions/scripts, copie algum arquivo dessa pasta e cole. Renomeie para positioner.lua,abra com o bloco de notas, apague oque estiver dentro e cole: Agora no arquivo actions.xml, adicione essa tag: <action itemid="1956" event="script" value="positioner.lua"/> No caso é o item ID 1956 que é um mapa, basta dar USE nele para salvar e dar USE novamente para retornar á position! Se quiser trocar o ID do item na tag pode, mas esse item não pode ser do tipo "Use With..." Beeeeijo grande galera, aguardem por breves versões1 ponto
-
Abrindo novos Horizontes
Survivor98130 reagiu a BananaFight por um tópico no fórum
Depois de incomodar um pouco o baxnie, ele me ajudou a criar o sistema de abrir miniwindow para o lado. Nome: Resize Right Border Descrição: Abrir janelas para a direita Autor: Eduardo Vicente (Banana Fight) Website: www.xtibia.com Versão 1.0 Features: cria uma barra lateral para regular o tamanho de janelas criadas em miniwindow Instalação otclient-master\data\styles\30-miniwindow.otui embaixo de: ResizeBorder id: bottomResizeBorder anchors.bottom: parent.bottom anchors.left: parent.left anchors.right: parent.right height: 3 minimum: 48 margin-left: 3 margin-right: 3 background: #ffffff88 você adiciona: ResizeBorder id: rightResizeBorder anchors.top: parent.top anchors.bottom: parent.bottom anchors.right: parent.right width: 3 minimum: 48 margin-top: 3 magin-bottom: 3 background: #ffffff88 Agora em otclient-master\modules\corelib\ui\uiminiwindow.lua: você procura por: function UIMiniWindow:isResizeable() deleta a função inteira, e muda por essa: function UIMiniWindow:isResizeable() local resizeBorder = self:getChildById('bottomResizeBorder') local resizeBorderRight = self:getChildById('rightResizeBorder') return resizeBorder:isExplicitlyVisible() and resizeBorder:isEnabled() and resizeBorderRight:isExplicitlyVisible() and resizeBorderRight:isEnabled() end Agora em otclient-master\modules\corelib\ui\uiminiwindow.lua Procure por: function UIMiniWindow:disableResize() e adicione essa linha : self:getChildById('rightResizeBorder'):disable() Agora procure por: function UIMiniWindow:enableResize() e adicione essa linha : self:getChildById('rightResizeBorder'):enable() Pronto, agora seus mods criados em miniwindow poderão ser abertos para os lados. OBS: o sistema não esta 100%, e assim que possível vou adicionar as funções que faltam, como as de regular o tamanho maximo da tela e o minimo que ele pode abrir. OBS 2: Caso a barra lateral para editar o tamanho da tela não pareça é porque dentro do arquivo .lua do seu mod tem a função disableResize(), essa função impede a mudança no tamanho da janela.1 ponto -
Poketibia Erondio-Site e Suas versões!
Dnick reagiu a Gabrieltxu por um tópico no fórum
•[Pokemon] Servidor Erondino-Site v13• obs: Nesse Topíco Irei Postar Todas as Atualizaçoes melhor do que ir Criando um Topico Toda Hora que Atualizar Versoes Antigas! \/ Atualização dia 30/03/13 13.1 • Menu: ├ Informações; ├ Ediçoes; ├ Erros; ├ Prints; ├ Download; └ Creditos. • Informações Basicas • • Edições / Ajustes • • Erros Do Servidor • • Download's • >Server: http://www.4shared.c..._Site_v131.html >Client separado: http://www.4shared.c...ite_v131_C.html →Creditos← >Erondino >Hobab >Bradd Rullex >Rafael Bode >Bruno Carvalho >Gilmar (Configuraçao do site) >Flare (Imagen Do client)1 ponto -
PS: Ainda tem Uns Bugs... E Eu sei... tive uma grande ajuda do Gears... e também do DuMal E tem algumas partes incompletas e outras com um pouco da montanha vermelha! Obrigado por verem meu Show off ^^ depois estarei postando mais imagens Abraços.1 ponto
-
GTA San Andreas Server
92221066 reagiu a Animal Pak por um tópico no fórum
Informações: Mapa próprio; 40+ Quests; Arena PVP; Sistema de Armas; Sistema de Moto, Bicicleta, Carro, Skate; Todos Npcs configurados; Cada vocação tem suas próprias outfits; Jetpack; Todos os items com suas respectivas sprites; Sistema de WoE; Servidor 100% estável sem bugs e erros; Imagens: Download Server: http://www.mediafire.com/?z316hb4caj1ised Scan Server: https://www.virustotal.com/pt/file/876d75ad9a638c4c44c9e772b7cde60a5fb349f332c7cadb7c69a854f9d6e72f/analysis/1364336402/ Dowload Client: http://www.mediafire.com/?kzt230l0aihwh24 Scan Client: https://www.virustotal.com/pt/file/c18d1e7e73620ba8b21b72d455b24ffc393cb61fa4c67d69ed3f427beb41ee8f/analysis/1364336430/ Account do GOD: Account: 258536 Password: zxcvbnm123 Créditos: GTA OT Team Kalito BT SmoOkeR1 ponto -
Novidades - 03/04
Natanael Beckman reagiu a jb2 por um tópico no fórum
Olá galera da XTibia, trago a vocês novidades sobre o projeto WebATS Manager. O projeto esta em total andamento, para quem não conhece (ou não sabe oque é) o WebATS Manager aqui temos um tópico explicando. Pois bem, decidimos de começo já lançar o projeto com o template do Tibia Global, por ter uma maior aceitação da galera fã e administradora de servidores. Algumas prints: Ainda temos um longo caminho pela frente, trata-se de um projeto imenso e que trará grandes benefícios aos donos de servidores. E o melhor, totalmente free! Temos total apoio da comunidade XTibia, a qual nos abraço e apoio o projeto, e temos apoio já de grandes servidores que serão lançados já com o WebATS Manager. Quem sai ganhando é o administrador de servidor que terá uma aplicação estável, atualizada e sempre corrigida, e uma comunidade imensa para auxiliar-lo! E o jogador, que tem um WebSite completo! Gosto do projeto? Visite nossa sessão: http://www.xtibia.co...um/901-web-ats/ Além de gostar deseja participar? http://www.xtibia.co...re-para-equipe/ Abraços, e espero que tenham gostado da notícia! www.webats.xtibia.com1 ponto -
ta certo mais vc esqueceu de fecha function fecho apenas if1 ponto
-
[8.54] Naruto Atarashi Online V.1 Beta
Junior001 reagiu a SkyDarkyes por um tópico no fórum
Ow pode falar que dia +- sai as sources?o Junior001 Ta me cobrando aqui no skype? Cara ta louco pelas sources1 ponto -
[8.54] Naruto Atarashi Online V.1 Beta
Junior001 reagiu a SkyDarkyes por um tópico no fórum
Agora gostei,em xD1 ponto -
Em vermelho: quantos minutos vai demorar pra sumnonar1 ponto
-
[8.54] Pokemon Server
Roksas reagiu a LucaSAyreeS por um tópico no fórum
● Sistemas - Pokeball Icons - Bike System - Addon System - Respawn de shinys e lendários - Boost System - TV System - Pokemons com level - Duel System - Nick System - Shiny Stone System - Barra Cooldown e Pokes & Mapa Svke - Evolução System - TM System ● Screenshots ●Explicações De Alguns System - Poke Ícons: Pokemons ficam com seus ícones na pokebola. - TM System: Adiciona novos ataques ao seu pokemon. - Addon System: Você pode colocar addons em seus pokemons. - Evolução System: Seus pokemons evolui conforme o level deles. - Shiny Stone System: Você pode transforma um pokemon normal em shiny com uma certa stone ●Download & Scan http://www.4shared.com/rar/TY9UXFWk/pouncServer.html https://www.virustot...sis/1359677498/ OPS: Existe mais system no server só que não achei necessidade de comentar esses.1 ponto -
kk muito bom ms banana... ja tinha pensado q isso seria uma flag mas... xD -ps: o deles eh gif heim... uahuahauh-1 ponto
-
Amigo, apenas troque o .EXE ( o client) por esse: http://www.4shared.com/file/ckCKP2D2/PDA_SLICER_1.html1 ponto
-
Sistema de vip do ot, acabou vip acabou promotion..
curruwilliam reagiu a Roksas por uma questão
Ta pera, faz assim, troca aquele primeiro que eu passei por esse e troca as coordenadas: [color=#ff0000]local principal = {x = 500, y = 300, z = 7} -- Aqui poe as coordenadas do templo principal[/color] function onLogin(cid) if vip.hasVip(cid) == false then setPlayerPromotionLevel(cid, 1) doPlayerSendTextMessage(cid,27,"Sua VIP acabou, donate para ter mais acessos!") doTeleportThing(cid,principal) else setPlayerPromotionLevel(cid, 2) end return true end1 ponto -
1 ponto
-
Sistema de vip do ot, acabou vip acabou promotion..
curruwilliam reagiu a Roksas por uma questão
Em data/creaturescripts/scripts, copie qualquer arquivo e cole, renomeie para "vipend" sem as aspas, ai você abre com o bloco de notas e cola isso dentro: Aonde está vermelho mude para a posição do templo da CITY PRINCIPAL! çç Agora na mesma pasta abra com o bloco de notas o arquivo login.lua, aperte CTRL+F e procure por "registerCreatureEvent" sem as aspas! Muito bem, agora você verá vários juntos, no meio deles em uma linha adicione esse: registerCreatureEvent(cid,"VipEnd") Volte uma pasta, no arquivo creaturescripts.xml, abra-o com o bloco de notas e adicione essa tag: <event type="login" name="VipEnd" script="vipend.lua"/>1 ponto -
1 ponto
-
Como colocar para dar item Random nesse script?
TiagoBordin1988 reagiu a Roksas por uma questão
Thiago, troque por:1 ponto -
(TEXTCOLOR) TODAS!
BananaFight reagiu a koete por um tópico no fórum
TextColor Bom não sei se esse é o lugar certo para postar isso se não for por favor movam mas não deixem de avaliar, pois é algo que vi muitos pedindo a muito tempo e em nenhum lugar eu encontrava, então eu com meu irmão e com muita paciência resolvemos descobrir o padrão das cores da TEXTCOLOR do Tibia pra postar para vocês para ajudar a todos os donos de Ots e os que fazem script. Descobrimos também que existem varios padrões de cores e que existem mais de 3 milhões de cores apenas no Tibia não sei a onde acabam as cores mas aposto que é um múltiplo de 6 porém... as cores que são usadas como principais são as de 0 a 215 [0 é contado como cor (preto)]. São elas principais pois as outras acima de 216 cores são apenas tonalidades diferentes e insignificativas apenas com (0,01%) de modificação na tonalidade pois imperceptíveis a olho nú. EX: se você pintar uma área no paint de azul e plicar um valor de 0,01% na mesma cor azul e pintar ao lado da área pintada do azul anterior, quando você selecionar qualquer outra cor e for pintar tudo vai pintar apenas um lado pois a tonalidade é diferente. (por isso não tem tanto valor todas as outras cores a cima de 216. Coletamos todas as 216 cores do Tibia pra texto, numeramos e codificamos para melhor uso vou postar o download da imagem pois ela é bem grande (Não os bytes, mas a largura). MODO DE USAR doSendAnimatedText(fromPosition, "$$$", NUMERO DA COR) onde está "NUMERO DA COR" você coloca o numero da cor que você quiser lembrando que é de 0 a 215, sendo 0 preto e 215 branco. OBS: pra quem programa spells na Source é de grande importância as cores. DOWNLOAD DAS TEXTCOLOR ABAIXO TEXTCOLOR.bmp1 ponto -
1 ponto
-
Como colocar para dar item Random nesse script?
Roksas reagiu a PsyMcKenzie por uma questão
Testa ai manolo: function loseOnZombieArena(cid) kickPlayerFromZombiesArea(cid) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "BOOM! Você está morto.") local players = getZombiesEventPlayers() if(#players <= 1) then local winner = players[1] local items = {2160, 7958, 2352, 12610} if(winner) then doPlayerAddItem(cid,items[math.random(1,#items)], math.random(1, 100)) doPlayerSendTextMessage(winner, MESSAGE_STATUS_CONSOLE_BLUE, "Você Ganhou o Evento Zombie !!! Parabéns.") doBroadcastMessage("After " .. os.time() - getPlayerZombiesEventStatus(winner) .. " segundos de evento " .. getCreatureName(winner) .. " você ganhou o Evento Zombie contra " .. getStorage(ZE_ZOMBIES_SPAWNED) .. " zombies !!!") kickPlayerFromZombiesArea(winner) else doBroadcastMessage("Zombie Evento Acabou !!! Não teve vencedor ?!?!?! Como Assim ?") end doSetStorage(ZE_STATUS, 0) doSetStorage(ZE_PLAYERS_NUMBER, ZE_DEFAULT_NUMBER_OF_PLAYERS) doSetStorage(ZE_ZOMBIES_TO_SPAWN, 0) doSetStorage(ZE_ZOMBIES_SPAWNED, 0) local width = (math.max(ZE_spawnFromPosition.x, ZE_spawnToPosition.x) - math.min(ZE_spawnFromPosition.x, ZE_spawnToPosition.x)) / 2 + 1 local height = (math.max(ZE_spawnFromPosition.y, ZE_spawnToPosition.y) - math.min(ZE_spawnFromPosition.y, ZE_spawnToPosition.y)) / 2 + 1 local centerPos = {x=math.min(ZE_spawnFromPosition.x, ZE_spawnToPosition.x)+width,y=math.min(ZE_spawnFromPosition.y, ZE_spawnToPosition.y)+height,z=ZE_spawnFromPosition.z} for z = math.min(ZE_spawnFromPosition.z, ZE_spawnToPosition.z), math.max(ZE_spawnFromPosition.z, ZE_spawnToPosition.z) do centerPos.z = z for i, uid in pairs(getSpectators(centerPos, width, height, false)) do if(isMonster(uid)) then doRemoveCreature(uid) end end end end end function onStatsChange(target, cid, changetype, combat, value) if((cid and isMonster(cid) and getCreatureName(cid) == "Zombie Event") or (isInRange(getThingPosition(target), ZE_spawnFromPosition, ZE_spawnToPosition) and changetype == STATSCHANGE_HEALTHLOSS and math.abs(value) >= getCreatureHealth(target))) then doCreatureAddHealth(target, getCreatureMaxHealth(target)) loseOnZombieArena(target) return false end return true end1 ponto -
Novos Pokemons
Rodugoni reagiu a FlamesAdmin por um tópico no fórum
Bom bom, rep+ , tenho o corpo do Kabutops aki Corpo_Kabutops.rar1 ponto -
[Encerrado] Exani Hur up/down
Roksas reagiu a PsyMcKenzie por um tópico no fórum
Em data/spells/spells.xml, adicione a tag: <instant name="Levitate" words="exani hur" lvl="12" mana="50" prem="1" aggressive="0" exhaustion="1000" params="1" needlearn="0" function="Levitate"> <vocation name="Sorcerer" /> <vocation name="Druid" /> <vocation name="Paladin" /> <vocation name="Knight" /> <vocation name="Master Sorcerer" /> <vocation name="Elder Druid" /> <vocation name="Royal Paladin" /> <vocation name="Elite Knight" /> </instant>1 ponto -
Regras da Seção
Lordfireot reagiu a Roksas por um tópico no fórum
Regras da Seção "Anúncio de OTServers - Servidores Derivados" Esta seção é apenas para posts de servidores já online Postagens de servidores que não sejam do tipo de Servidor Open PVP, serão automaticamente fechadas. Floods implicarão no alerta imediato dos usuários que os cometerem, dependendo de uma conclusão geral da equipe se haverá ou não fechamento do tópico. É permitido reviver tópicos, mas sem flood, podendo fazer double post, UMA VEZ POR DIA (algumas vezes o dono do server foi o último a postar antes do tópico "morrer") mas com as condições dos itens abaixo: Somente é permitido reviver o tópico com alguma atualização do servidor, o que deixa eliminado posts como: "Entrem, temos mais de 200 players online!" ou algo do gênero. Com isso fica permitido reviver tópicos com frases de exemplo: "Estamos com uma Nova área de Hunt"; "Foi implantado Vip System no Servidor;" e afins. É permitido postar 1 vez por semana um novo tópico de seu servidor (não sendo obrigatório). Tópicos com mais de 1 mês sem respostas serão enviados para a lixeira sem aviso prévio! O Post de seu OTServer terá que ter obrigatoriamente as informações abaixo: Se o seu tópico não tiver essas informações acima o usuário será notificado via PM para editar seu tópico em 24 horas, caso contrário, o tópico será fechado. Regras sujeitas a mudanças sem prévios avisos.1 ponto -
1 ponto
-
Amigo, você reviveu um tópico de meses, punido com -REP. Para a solução do seu problema, troque o código por esse, ok? Tópico fechado.1 ponto
-
tinha esquecido do return TRUE, editado. abç1 ponto
-
[Encerrado] Problema ao ligar server Poketibia
BrutalPoke reagiu a mkbrabsolute por um tópico no fórum
Está faltando DLL'S, caso use windows, pegue um servidor legal e troque o executável e os arquivos .dll Tenha uma excelente Noite!1 ponto -
[AJUDA] BUG Templante
Roksas reagiu a Piabeta Kun por uma questão
não precisa mais é bom, porem isso parece um simples erro de cache..... resolvido?1 ponto -
[Encerrado] Por que todos usam 8.54
Gabrieltxu reagiu a Daniel Bighouse por um tópico no fórum
Bom vamos lá... O problema, o limite de sprites: Server 9.60 ou superior o limite é GIGANTESCO... falo isso por conta própria já coloquei quase 100mil sprites e ainda cabe muitoooo mais. Enquanto versão inferior a 9.60, tem limite de 65.535sprites, ruim néh? Usar OtClient já falo não resolve nada o problema de limite de sprites! Pois o problema de limite é no .spr. O aplicativo, o Cliente: Bom está é uma parte que tenho quase certeza que aquele client 'antigo' do tibia vai acabar parando de ser usado com o tempo. Ot client é superior, muito bom, dá para fazer sistemas novos com uma certa facilidade - sistemas que antes era considerado quase que impossível de se fazer-, enfim... O tão precioso, o Server: Como maioria devem saber, server sem sources = sem progressos. Pois sources controla muitos sistemas, que destes sistemas muitos só podem ser colocados por sources. Então é bom destacar que se busca fazer um server procura um com sources! Os tão usados, as Ferramentas de Edição: Para modificar mapa, itens, effects, .... Precisa-se de Ferramentas que edite isso. Então sempre é bom saber se tem tudo as ferramentas antes de começar a fazer um server que você queira que seja bom. Ferramentas como: RME, Tibia Editor(unico que edita arquivos .dat para versão 9.60+), Item Editor, entre outras ferramentas adicionais como um Sprite Editor (tem um que fizeram que achei muito bom). Bom seria ótimo ter um Tibia Editor ou um Dat Editor para estasa versões de 9.60+, porém muitos não tem a capacidade de fazer um programa avançado. Tenho as sources do Tibia Editor 9.60 até acho 9.81, que poderia alguém com capacidade de mexer nelas colocar a função para criar item, que tem que criar o item em 8.54 com o Dat Editor, exportar o item, abrir o Tibia Editor e importar o item no .dat e .spr superior a 9.60. Então já deu para ver a parte que muitos nem tentam criar um server de versão superior pela falta de um bom editor. O fácil, o Bot: Já fiz um tópico onde muitos ficavam falando não fazem server 9.60+ porque não tem bot. Já OtClient com Bot. E se fizeram bot para 8.54 porque não fariam para versões superiores? Visite meu tópico: http://www.xtibia.com/forum/topic/199045-porque-nao-investem-em-server-96x/page__fromsearch__1 Bom eu estou tentando fazer um PokeTibia 9.60, estou tendo progressos, lentos sim, porém está tendo... Espero ter tirado sua dúvida de porque não investem em server 9.60+1 ponto -
[Encerrado] Por que todos usam 8.54
tiagoduuarte reagiu a PostadorHunter por um tópico no fórum
todas a versões inferiores a 9.6 tem um limite de 65535 sprites1 ponto -
1 ponto
-
Novo Servidor de Narutibia Aberto hoje 24h- dedicado
Riddlebrown reagiu a mkbrabsolute por um tópico no fórum
Na boa, não costumo ver notícias de pokemon/servidores derivados, mas entrei no seu site e paguei um pau! site show, tomara que o servidor também seja. Vi que está Tibia lá no TOPO, editei talvez possa lhe ajudar Boa Sorte Amigo.1 ponto -
1 ponto
-
Rs, e por acaso eles estão na área certa? Pois é acho que não @topic O topico não é meu, logo não tem imagens1 ponto
-
[Encerrado]Equipe Pokemon DG 24/7
randerjp reagiu a ChronosPKM por um tópico no fórum
COMENTARIO RETIRADO PELO AUTOR.1 ponto -
[Help] Bug World
EoErickSouza reagiu a pessoa93 por uma questão
Estou sem config.lua aqui pra te mostrar a linha mais aonde fica o nome do mapa pode ser que esteja assim: test.otbm ou test Vou tentar dar um exemplo: Map name: "test.otbm" tem que estar assim ou Map name: "test"1 ponto -
[Encerrado] Bug Shop Gesior
cruelShark reagiu a CoLoRaDo por um tópico no fórum
use o que eu uso que não da erro nenhum: local SHOP_MSG_TYPE = MESSAGE_EVENT_ORANGE local SQL_interval = 30 function onThink(interval, lastExecution) local result_plr = db.getResult("SELECT * FROM z_ots_comunication WHERE `type` = 'login';") if(result_plr:getID() ~= -1) then while(true) do local id = tonumber(result_plr:getDataInt("id")) local action = tostring(result_plr:getDataString("action")) local delete = tonumber(result_plr:getDataInt("delete_it")) local cid = getCreatureByName(tostring(result_plr:getDataString("name"))) if isPlayer(cid) then local itemtogive_id = tonumber(result_plr:getDataInt("param1")) local itemtogive_count = tonumber(result_plr:getDataInt("param2")) local container_id = tonumber(result_plr:getDataInt("param3")) local container_count = tonumber(result_plr:getDataInt("param4")) local add_item_type = tostring(result_plr:getDataString("param5")) local add_item_name = tostring(result_plr:getDataString("param6")) local received_item = 0 local full_weight = 0 if add_item_type == 'container' then container_weight = getItemWeightById(container_id, 1) if isItemRune(itemtogive_id) == TRUE then items_weight = container_count * getItemWeightById(itemtogive_id, 1) else items_weight = container_count * getItemWeightById(itemtogive_id, itemtogive_count) end full_weight = items_weight + container_weight else full_weight = getItemWeightById(itemtogive_id, itemtogive_count) if isItemRune(itemtogive_id) == TRUE then full_weight = getItemWeightById(itemtogive_id, 1) else full_weight = getItemWeightById(itemtogive_id, itemtogive_count) end end local free_cap = getPlayerFreeCap(cid) if full_weight <= free_cap then if add_item_type == 'container' then local new_container = doCreateItemEx(container_id, 1) local iter = 0 while iter ~= container_count do doAddContainerItem(new_container, itemtogive_id, itemtogive_count) iter = iter + 1 end received_item = doPlayerAddItemEx(cid, new_container) else local new_item = doCreateItemEx(itemtogive_id, itemtogive_count) doItemSetAttribute(new_item, "description", "This item can only be used by the player ".. getPlayerName(cid) .."!") doItemSetAttribute(new_item, "aid", getPlayerGUID(cid)+10000) received_item = doPlayerAddItemEx(cid, new_item) end if received_item == RETURNVALUE_NOERROR then doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, 'You received >> '.. add_item_name ..' << from OTS shop.') db.query("DELETE FROM `z_ots_comunication` WHERE `id` = " .. id .. ";") db.query("UPDATE `z_shop_history_item` SET `trans_state`='realized', `trans_real`=" .. os.time() .. " WHERE id = " .. id .. ";") else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. Please make place for this item in your backpack/hands and wait about '.. SQL_interval ..' seconds to get it.') end else doPlayerSendTextMessage(cid, SHOP_MSG_TYPE, '>> '.. add_item_name ..' << from OTS shop is waiting for you. It weight is '.. full_weight ..' oz., you have only '.. free_cap ..' oz. free capacity. Put some items in depot and wait about '.. SQL_interval ..' seconds to get it.') end end if not(result_plr:next()) then break end end result_plr:free() end return true end e também adicione isso a sua database: CREATE TABLE IF NOT EXISTS `z_ots_comunication` ( `id` int(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `type` varchar(255) NOT NULL, `action` varchar(255) NOT NULL, `param1` varchar(255) NOT NULL, `param2` varchar(255) NOT NULL, `param3` varchar(255) NOT NULL, `param4` varchar(255) NOT NULL, `param5` varchar(255) NOT NULL, `param6` varchar(255) NOT NULL, `param7` varchar(255) NOT NULL, `delete_it` int(2) NOT NULL default '1', PRIMARY KEY (`id`) ); CREATE TABLE IF NOT EXISTS `z_shop_offer` ( `id` int(11) NOT NULL auto_increment, `points` int(11) NOT NULL default '0', `itemid1` int(11) NOT NULL default '0', `count1` int(11) NOT NULL default '0', `itemid2` int(11) NOT NULL default '0', `count2` int(11) NOT NULL default '0', `offer_type` varchar(255) default NULL, `offer_description` text NOT NULL, `offer_name` varchar(255) NOT NULL, PRIMARY KEY (`id`) ); CREATE TABLE IF NOT EXISTS `z_shop_history_item` ( `id` int(11) NOT NULL auto_increment, `to_name` varchar(255) NOT NULL default '0', `to_account` int(11) NOT NULL default '0', `from_nick` varchar(255) NOT NULL, `from_account` int(11) NOT NULL default '0', `price` int(11) NOT NULL default '0', `offer_id` int(11) NOT NULL default '0', `trans_state` varchar(255) NOT NULL, `trans_start` int(11) NOT NULL default '0', `trans_real` int(11) NOT NULL default '0', PRIMARY KEY (`id`) ); CREATE TABLE IF NOT EXISTS `z_shop_history_pacc` ( `id` int(11) NOT NULL auto_increment, `to_name` varchar(255) NOT NULL default '0', `to_account` int(11) NOT NULL default '0', `from_nick` varchar(255) NOT NULL, `from_account` int(11) NOT NULL default '0', `price` int(11) NOT NULL default '0', `pacc_days` int(11) NOT NULL default '0', `trans_state` varchar(255) NOT NULL, `trans_start` int(11) NOT NULL default '0', `trans_real` int(11) NOT NULL default '0', PRIMARY KEY (`id`) ); e no globalevents.xml add isso: <globalevent name="shop" interval="30" event="script" value="shop.lua"/>1 ponto
