Jump to content

Search the Community

Showing results for tags 'tibia'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • xTibia - Notícias e Suporte
    • Regras
    • Noticias
    • Soluções
    • Projetos Patrocinados
    • Tutoriais para Iniciantes
    • Imprensa
  • OTServ
    • Notícias e Debates
    • OTServlist
    • Recursos
    • Suporte
    • Pedidos
    • Downloads
  • OFF-Topic

Categories

There are no results to display.


Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Sou

Found 24.651 results

  1. fala ae galera do xtibia, beleza estava meio que sem fazer nada então resolvi criar está video-aula muito rapido e simples espero que ajude vocês que estiverem com este problema link para download do programa que uso só clicar aqui bom fiquem com o video se gostou +rep https://www.youtube.com/watch?v=tCdnrKGh3fM
  2. Fala XTibianos,estou encinando a voces neste tutorial a como editar seu SHOP no ModernACC,bom vi muitas pessoas com este problema,mais em especial vim fazer este tutorial para meu querido amigo josegremista. Bom vamos começar Primeiramente,vá no banco de dados. Se voce esta usando um computador local,provavelmente será acessado por[url="http://localhost/phpmyadmin"] localhost/phpmyadmin.[/url] Se voce esta usando um dedicado/vps voce poderá usar tanto localhost/phpmyadmin quanto seuip.servegame.com/phpmyadmin. Depois de ter acessado o banco de dados vá em sua database e localize a tabela shop_offer.Conforme mostra a figura abaixo: Abra a tabela shop_offer e vc vai ver que vai ter alguns itens adicionados.Bom agora vamos ao que intereça. Para adicionar itens no SHOP voce segue a imagem abaicho. Depois embaixo desses ai. Description - Poem uma descrição do item. Name - Nome do item. OBS:esses dois itens vao aparecer junto no SHOP. Depois disso é so ir em executar e deu pessoal. Para quem nao intendeu muito bem no começo a parte do shop_offer Bom estou disponibilizando minhas 3 tabelas de shop. shop_offer shop_history shop_donation_story Bom é isso ai amigos.Se gostaram do tutorial nao esqueçam de dar um rep ai. Créditos: Mozark001
  3. Estarei Disponibilizando 1 Mapa Global Full + Zao 8.60. Modificações que contém no OT ? ilhas Vips Cast-System, War-System, Woe Itens Vips (com Id Próprio) (Configurado e Balanceado) Npcs Modificados Treiner Offline Treiners Vip Novas Hunts Invasões automáticas 2 Addons Novos (Soil Guardian e Entrepreneur) etc... (que já vem no Global) ~{[ Prints ]}~ ILHA VIP (Furia) NPCS (Tibia Addon, Vende Addon por Crystal Coin) Treiners (ON e OFFline) Itens Vip (Donate)~(ID Próprio) Cliente Próprio (Para Alterar a Imagem do Cliente Basta editar ou trocar o Tibia.pic) Downloads Globa Full 8.60 + DB ~~~ SCAN Cliente Próprio ~~~ SCAN Web-Site ~~~ SCAN items.xml - Sem Itens DONATE outfits.xml - Sem os 2 ADDONS OBS : A Database que vem junto com o OTSERV é compativel com o WEB-SITE acima. Cliente Próprio somente se for usar os itens Donate e os 2 Addons que foi adicionado. Baixando o Cliente Orion Créditos : Tiroleivi (Que Sou eu RioshiiSx)
  4. Ola cansados de serves inuteis???? que tal 1 legal??? informaçoes:Maximo de 6 PB o resto vai pro DP 100% Nova Pokedex: 100% Seu pokemon ganha mais life por level 100% Sistema de fraqueza 100% Pokemons passivos 100% Surf 100% Fly 100% Ride 100% Catch 100% Stones System (Alguns evolutem com 2 stones, alguns tem chance de evoluir pra shinys) 100% Move System 100% -- Order Button (Hold position .h) Teleport,Dive System 100% Dig Sys, Flash Sys, Blink Sys, Blink 2 para pokemons mais fortes, Rock Smash Sys, Cut Sys -- 100% order Fishing 100% (balanced) Loot de pokemons como Svke. M1~M12 100% Novos items: Rare candy, exp potion, novos loots. 100% 155 pokemons, raids de pokemons lendarios. 100% Mais de 20 quests e subindo. 100% Sistema de promocao, elite trainer e master trainer. 10%(pois irei fazer o npc de vocação pra quando rebornar escolher a vocaçao ) Cassino 100% Safari zone 100% Utilitarios, Arvores dropam sementes, tochas acesas com essence of fire. 100% Ranking, comando !rank. 100% Mapa, 98%(tem umas areas que se baseião na svke mais não e pareçido e tambem tem hunts faltando mais ireu colocar) svke, houses 100%, spawns 100%, quests 60%. Box 1-4, 100%. Fight arena de Fuchsia, 100%. Pokebags e pokebackpacks, 100%. Diamonds e small diamonds dropando de bixos. 100% Npc de anuncio para todo servidor, NPc ajudante. 100% Poke food, revive, Ultra potion 5x. 100% Evento inicial, a cada 2 horas pegue um premio no cp (random entre xp potions e rare candys).100% sistema !reborn(ao chegar level 150 fale !reborn e volte para level 15,e volte pro level 15) Link de Download: http://www.4shared.com/file/oVk0NVgY/Nova_pasta.html Link de Download do Catch Full: http://www.4shared.com/file/Olh3uExD/catch.html mapa: http://www.4shared.com/file/CVvg5lJ2/Mapa.html boa sorte! Suporte:Dash credito: http://poketibiatuto...s.blogspot.com/ olha voce tem que pegar e por o catch full e trocar o mapa e esse serve e do gbziin entao eu quis postar pra voces o creditos tambem e do: http://poketibiatuto...s.blogspot.com/ entrem blogpost muito bom eu apoio pois so muito amigo do dono ------------------------------------------------------------------ Da Reply plis PS:O serve esta na versão 1.0 esse serve é do gbziin mais eu irei editar ele pra ter o suporte do gbziin e muitas coisas editadas minha e lembrente tem vagas: script (1) mapper(1) Spriter(2) e hoster(1) /\isso a cima é pra criar um serve ok?
  5. https://Ots-List.org - Tibia, Ots, Otserv Open Tibia Server List, Otservlist Ots List. https://ots-list.org Ots List of database tibia server servers Otservlist Open Tibia with around the world. The Otserv list was created to facilitate the owners Ots advertising Tibia Ots, and thus acquiring players. Adding server is completely free, and delivering the desired results - increase in the number of players online. The website has a search engine ots servers https://ots-list.org/search server through which you can find for himself and https://ots-list.org/download section where you can find a customer for each protocol tibia.
  6. Monster Hunter Event Como não tive tempo para trazer um script semana passada, criei um bem legal para essa semana. Para ver os outros scripts de terça, clique aqui. Vídeo demonstrativo: Explicação detalhada: O evento possui duas versões: automática (globalevent) e manual (talkaction). Quando o evento inicia, é sorteado um monstro e um intervalo de tempo, por exemplo: Hydra e 15 minutos. Seguindo esse exemplo, os jogadores terão 15 minutos para matar hydras, no final dos 15 minutos, aquele que tiver matado mais hydras será o vencedor e receberá um prêmio. - É tudo configurável. Instalação: Crie Monster Hunter.lua em data/creaturescripts/scripts e coloque: -- Monster Hunter Event feito por Killua, XTibia.com function onKill(cid, target, lastHit) if isPlayer(cid) and isMonster(target) then if getCreatureMaster(target) ~= nil then return true end local name = getGlobalStorageValue(1919211) if string.lower(getCreatureName(target)) == string.lower(name) then doPlayerSetStorageValue(cid, 1814210, getPlayerStorageValue(cid, 1814210) + 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "[Monster Hunter Event] Voce ja matou "..getPlayerStorageValue(cid, 1814210).." "..name.."s! Continue matando para ser o vencedor!") end end return true end function onLogin(cid) if getGlobalStorageValue(1919211) == 0 then doPlayerSetStorageValue(cid, 1814210, 0) end registerCreatureEvent(cid, "Monster Hunter") return true end Em data/creaturescripts/creaturescripts.xml adicione essas TAGs: <event type="kill" name="Monster Hunter" event="script" value="Monster Hunter.lua"/> <event type="login" name="Monster Hunterl" event="script" value="Monster Hunter.lua"/> A próxima parte irá depender de qual versão escolher Versão manual (talkaction) Versão automática (globalevent) Configuração: local monsters = {"Demon", "Rat", "Hydra", "Dragon Lord", "Ancient Scarab"} -- Monstros que podem ser sorteados local time_min, max = 10, 15 -- Em minutos local premios, gold = {{2160, 10}, {2157, 5}}, 10000 -- {id do item, quantidade} que o jogador ganha e quantia de gold Em monsters, coloque o nome dos monstros que poderão ser sorteados no evento. Em time_min, max, coloque o tempo mínimo e o tempo máximo de duração do evento. em premios, gold adicione os itens e a quantidade de gold que o vencedor receberá (seguindo o modelo apresentado). TAG no Globalevents.xml (versão automática): <globalevent name="Monster Hunter Event" interval="3600000" event="script" value="Monster Hunter.lua"/> interval é o intervalo entre as execuções do evento, coloquei 3600000, que equivale a 1 hora (1000 = 1 segundo). Se seu servidor NÃO for em milissegundos, use 1 = 1 segundo, logo 1 hora = 3600. TAG no Talkactions.xml (versão manual): <talkaction log="yes" access="5" words="/monsterhunter" event="script" value="Monster Hunter.lua"/> Em access coloque o núemero de acesso mínimo para poder usar o comando. 5 = somente gods podem usar. Para iniciar o evento na maneira manual, basta usar /monsterhunter Para iniciar o evento na maneira automática, basta aguardar o tempo configurado.
  7. HOLY SWORD Nesse tutorial, você vai aprender a criar uma SWORD, com ataque de area com HOLY. Bom, aqui está um PREVIEW, uma imagem de como a sua sword vai ficar. Lembrando que só funciona em OT's 8.0+. Pra começar, entre na pasta do teu OT, e depois vá em DATA/WEAPONS/SCRIPTS Copie qualquer script que esteja la, (Um arquivo .lua) apague tudo que está escrito no Script e coloque isto: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WHIRLWINDSWORD) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -5.0, -500, -5.0, -500) local area = createCombatArea( { {1, 1, 1}, {1, 3, 1}, {1, 1, 1} } ) setCombatArea(combat, area) function onUseWeapon(cid, var) return doCombat(cid, combat, var) end feche e salve como demonrage.lua Explicando: COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE : É o tipo de combate, no caso physical. COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WHIRLWINDSWORD : É o cambate a distancia, isso que fará sair uma espada. COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) e COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE) : É o ataque de HOLY, isso que fará sair o ataque de area com HOLY. COMBAT_FORMULA_LEVELMAGIC, -5.0, -500, -5.0, -500 : É o poder da espada, no caso está como o dobro do poder do Sprite wand, para poder deixa mais fraco basta mexer nos numeros. -5.0, -500, -5.0, -500, mas eles devem ser sempre negativos. Agora abra o arquivo weapons.xml que esta na pasta weapons, abra-o e na parte onde esta escrito "<!-- Rods --> ou <!-- Wands -->" adicione em baixo do ultimo isso: Explicando: é o id do item que sera usado, no caso o id da demonrage 7382 é a distancia que irá atakar é o lvl necessario para usar a arma quantidade de mana que gasta Pronto a arma está feita, mas pera ae, quando a pessoa der look na arma vai aparecer oq? Nada, naum vai aparecer ataque nem nome, como resolver? faça o seguinte, va na pasta Items, e abra-o arquivo items.xml, aperta Ctrl+F, irá abrir uma janela, digite o id da demonrage, 7382, ele ira achar apenas um. estará assim: <item id="7382" name=""> <attribute key="weight" value="0"/> </item> Apague isso, e coloque isto: <item id="7382" name="Holy Sword"> <attribute key="weight" value="6400"/> <attribute key="defense" value="50"/> <attribute key="attack" value="120"/> <attribute key="weaponType" value="sword"/> <attribute key="description0" value="With Holy Damage"/> No caso a espada será de uma mao, para mudar isso, só colocar " <attribute key="slotType" value="two-handed"/>" abaixo do ultimo. Para mudar o ataque ou a defesa, só mudar o value de attack e defense. Pronto sua Holy Sword está pronta, agora quando alguem der look no item irá aparecer atk 120 def 50 e o nome aparecera Holy Sword. Obrigado. Créditos: theflammer 70% - POR CRIAR O TUTORIAL E O SCRIPT (?). KingDestroyer 30% - POR EDITAR O TUTORIAL E O SCRIPT. VALEU :XTibia_smile: :hi:
  8. • Snowz Thyranic 3.1 - Especial Edition (8.60) • Servidor feito por luisfe23 e Doidin. Fala galera estou aqui para apresentar o novo Snowz Thyranic, eu e o luisfe23 estamos trabalhando a muito tempo neste servidor e muitas novidades surgirão, este servidor é baseado no mapa Thyrania e contém um RPG super emocionante. Então, tá esperando o que? Confira logo! • 8 Cidades: ├ Rookgaard ├ Thyran ├ Murnia ├ Saaha ├ Icya ├ Venga ├ Mandrin └ Talas • Conta do GOD: ├ Account: god └ Senha: god Ok, vamos logo para as atualizações! • Snowz Thyranic Versão 1: • Snowz Thyranic Versão 1.1: • Snowz Thyranic Versão 2: • Snowz Thyranic Versão 2.1: • Snowz Thyranic Versão 3.0: • Snowz Thyranic Versão 3.1 (Especial Edition): ├ Modificações no Distro, ele está completamente estável! ├ Modificações no mapa, bugs foram removidos! ├ Modificações em vários NPC's, eles estão bem mais realistas! ├ Todos os NPC's de Addons foram removidos e substituidos por apenas 1 que fica nas redondezas de Thyran. ├ A Demon Oak Quest está funcionando perfeitamente. ├ A Dijin Quest agora está funcionando perfeitamente. ├ A Black Knight Quest está funcionando perfeitamente. ├ Todos os bugs que davam para fazer dinheiro foram removidos. ├ Adicionado NPC "Padre" em Thyran, ele realiza casamentos. ├ Agora as bless custam apenas 50k. ├ Arrumado as Quests no Quest Log. └ Entre várias outras mudanças! • Algumas Imagens: :forward: Download do Snowz Thyranic 3.1 (8.60) :forward: Scan do Snowz Thyranic 3.1 (8.60) • Créditos: Achou Bugs? Reporte !
  9. Este pack possui mais de 4.000 sprites do avatar, muitas são do meu antigo projeto OTAvatar e algumas são do atual projeto Avatar Online. IMAGENS: OBS: São apenas algumas das 4.000 que há. DOWNLOAD
  10. 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 !
  11. [Novo] Carlin War BeTa 2.1 ® By DeathCore (8.60) Depois Do Update 2.1. - Bug De Algumas Magias Forão Arrumadas. - City Maior E Mais Rpg Nas Escadas - Script Do Vocations Sem Bugss td balanceadinhuuu! - Scripts Bugados , e Alguns Sem Uso Forão Retirados, Para Dexar o Server Mais Estável. - Revisada No Distro, Para Dexar Mais Estável. - Update Em Breve , Para Melhorar O Server Pra " Vc vc vc vc (8 ". Antes Do Update. -Novos Player Inicia level 200 -Skills de Acordo com Level -Apenas level 200 não tem como voltar Level -Bugs das Houses que dava erro no distro,todos corrigidos -Npc vendedor de itens,vendendo mais itens -vocações mais fortes,mas balanceadas -Potions que healavão 1.0 agora healando 1.2 -Trainers modificados Atacando novos rapidos -Sala de Trainers almentada,bem maior do que antes -Stone Skin Amuleto Infinito mas com 10% de protect contra death e physical -Rings com mais tempo de duração -Novas Talkactions -Look no player mostrando Frags -Efeitos animados na hora de upar level ou skills -Magias com um pouco menos de Exausted,nada exagerado fiquem tranquilos -Alguns Items editados,mas nada exagerado -e muito mais !! Team x Team -Se quiser jogar com Team,Apenas entre em um dos 2 teleportes que há no templo com o team Red e Blue [as outfits seram mudadas,Red team usara outfit de CM,e Blue Team usa outfit de GM,mas calma não podem usar nenhum comando,apenas ganham a outfit Raid [Evento] -Evento que é executado a cada 40 minutos no server que dara invasão de monstro que daram exp,nada exagerado,de 1 a 2 level no maximo. -Esses monstros são chamados de [Evento],são fortes contra todos elentos e physical então não sera facil matalos sozinho vai dar tempo de todos uparem Acc God god/god Temple Do Mau ^^ Novas Talkactions Depot E Npcs. [Evento] Invasões Area Dos Treiners War Rolando ^^ Novos Itens a Venda Carlin War BeTa 2.1 (8.60) Download > http://www.4shared.c...DeathCore.html? Nunka Vo Postar Virus! Confiança é Tudo. Scan > http://www.virustota...0369-1309057164 Créditos Elsu Soldoran DeathCore (eu) -Créditos aos devidos donos dos Scripts-Créditos aos devidos donos pelas dlls e exe. -Creditos a min por incrementar o resto. Gosto? Então Da Rep+, Não Vai Cair Seu Dedo Comentem Eminhos e Eminhas. Mapas Antigos Não Perde RPG, Pra Min Os Antigos É Que Tem Rpg, Oq Eu Faço? , Tiro Bugs E Coloko Mais RPG Em Mapas Antigos.
  12. Exori.Rocks is an OT Server of the old school (version 7.7) and the client has --custom sprites--... Some features are: • Very high experience rate (x1000), this is a fun-war server. • You will have a lifetime premium account, you will never pay for VIP stuff. • You will never loss any point of experience, skills or magic level at dead (only items, so rememeber use AOL). • We have the original Cipsoft virgin files, the original and cool stuff (without some encrypted or compiled things). • Our custom client has --bot integrated-- and is completely legal to use. • You will never get banned for excess killing! This is WAR SERVER and you will get experience by killing other players! • You will get Runes and Amunitions x2 (conjured and in the shop). Start your adventure and be part of our community! Please visit: Exori Rocks - 2D MMORPG (http://exori.rocks/) See you in game, warriors. Have fun!!!
  13. Eae XTibianos... Estou trazendo para vcs o Emerald Map. • Créditos: Randall • Minimap: A qualidade ficou ruim porque salvei como JPG. • Download: http://www.4shared.com/file/AsHm4Soj/Emerald_Map.html • Download Link Protegido: http://lix.in/-85c7fb • Scan: http://www.virustotal.com/pt/analisis/320f026e6b49a99516ffccab44f3a985c7b49f5233a768a5a6139c499e8409a4-1279041485 Abraços.
  14. Olá Galerinha do xtibia, Tudo Bem ??? Antes de mais nada peço que movam para a área de Tutoriais de Website pois quando fui tentar criar um novo tópico la não estava dando tentei em Envie Seu Tutorial e nada. Vamos ao que interessa, estou fazendo esse tutorial ensinando a colocar o SHOP em seu Modern AAC pois vejo que muitos tem dúvida nesse assunto e eu quero que essas dúvidas acabem Quando acabarem de ler o Tópico veras que não é uma coisa dificil. Então vamos la para que funcione corretamente faça como eu peço no Tópico. Primeiramente vamos colocar para que o Shop entregue os items ao comprar certo ?!?! É Bem facil vá na pasta data/globalevents/script e crie um arquivo chamado shop.lua e coloco o seguinte script abaixo dentro e salve. Agora vá em globalevents.xml e coloque a seguinte tag <globalevent name="Shop" interval="3000" event="script" value="shop.lua"/> Pronto a parte do shop entregar os items após a compra está feito agora vamos instalar o SHOP. Peço que baixem o seguinte arquivo abaixo. http://www.4shared.com/rar/LLcxJq-dba/shop.html? Após baixarem, extraem em seu dekstop será extraida uma pasta chamada shop, renomeem ela para gifts e a coloque dentro da pasta do seu site(htdocs), após fazerem isso vá na pasta system/pages e crie um arquivo chamado gifts.php e coloque o codigo abaixo dentro e salve. Após fazerem isso va no phpmyadmin entre em sua DB e execulte o shop.sql que se encontra dentro da pasta SeuSite/gifts/config e pronto agora só entrar no link e terá la as instruções para finalizar a instalação. http://linkdoseusite/index.php/p/v/gifts.php Pronto SHOP instalado agora vamos colocar a aba de SHOP em seu site caso não tenha ou esteja com outro url. Vá na pasta seusite/templates/seutemplate e abra o index.php e coloque o seguinte url na parte onde tem as urls das paginas <li><a href="{$path}/index.php/p/v/gifts">SHOP</a></li> E pronto salve e entre em seu site e veja a magica Em Breve estarei fazendo um tópico ensinando a colocar o sistema de pagseguro automatico ou seja a pagina de DONATE do Server. Obrigado pela atenção de todos e até a próxima Creditos: Pelo Tutorial Junior Silva
  15. Fala galerinha XTibiana! Estou querendo por uns scripts novos no meu servidor ,e veio em mente o seguinte script. Quando o player de "USE" no 1kk ele vira outro item , tipo aquele Golden Nuget (acho que é assim). Alguem tem esse script e pode me passar ? Tanks !, Tipo do script: Transformação de item. Protocolo (versão do Tibia):8.60 Servidor utilizado: Subwat Editado Nível de experiência: Tanto fais rsrs.... Adicionais/Informações: PORFAVOR o mais rapido o possivel !
  16. Salve rapazeada, boa tarde ? estou aqui hoje pra mostrar um ModuleOTC que comprei de um player aqui do forum God Vitor e ele me bloqueou sem passar o script !, porem n foi ele quem fez, n tem creditos Segue os link abaixo ae rapazeada https://www.mediafire.com/file/lwhzxjm42110ct9/modules.rar/file https://www.mediafire.com/file/iersn6ze5844l8c/REEDEM_CODES_SYSTEM.rar/file Segue os TalkActions ai ! <talkaction log="no" words="#@[email protected]#" script="REEDEM CODES SYSTEM/Reedem MainWindow - Open.lua"/> <talkaction log="no" words="#@[email protected]#" script="REEDEM CODES SYSTEM/Reedem EventsWindow - Open.lua"/> <talkaction log="no" words="#@[email protected]#" script="REEDEM CODES SYSTEM/Reedem DonationsWindow - Open.lua"/> <talkaction log="no" words="#@[email protected]#" script="REEDEM CODES SYSTEM/Reedem OthersWindow - Open.lua"/> OBS: NÃO SOU BOM PRA FAZER TOPICO, DESCULPEM !! SE ALGUEM CONSEGUIR FAZER O SCRIPT .lua pro codigo me avisem ! Abraços
  17. Compilando OTCLient no Windows Antes de mais nada, gostaria de dizer que eu não fiz o tutorial, apenas traduzi para português. Link de post original >> https://github.com/e...ling-on-Windows Neste tutorial eu explicarei como compilar e rodar o OTClient em máquinas com o Windows. Faça o download do que você precisará Existem várias ferramentas que você precisa para compilar o projeto, cada uma delas está listada abaixo com seu link. * CMake 2.8.8 ou superior * CodeBlocks sem o MinGW, nós usaremos a versão mais nova * MinGW32 20120426 ou superior * otclient libraries for mingw32 * Código fonte do OTClient Tenha certeza que você instalou as últimas versões, caso contrário, as coisas podem não funcionar. Instale o MinGW32 Observe que o GCC que deve ser usado é o 4.6 ou superior, qualquer versão antiga do GCC que você já tenha instalado não funcionará porque o OTClient precisa de alguns recursos que só são suportados por compiladores recentes. Rode o instalador do MinGW32 e no processo de instalação quando for perguntado tenha certeza que você marcou a caixa para usar o catálogo mais atual. Instale o CMake Rode o instalador do CMake, durante o processo de instalação deverá ser perguntado se você quqer que o CMake configure suas variáveis do sistema(PATH), diga que não, isso será manualmente feito nos próximos passos. Instale o CodeBlocks Rode o instalador do CodeBlocks, Lembre-se, NÃO instale o MinGW quando ele pedir. Instale as bibliotecas do OTClient Extraia o arquivo otclient-libs_mingw32-dwarf2.zip em C:/MinGW/. Esse arquivo zip contem três pastas *lib, include e bin, que serão fundidas a C:/MinGW/lib, C:/MinGW/include e C:/MinGW/bin. Configure a variável PATH do sistema Agora que todas as ferramentas necessárias estão instaladas, você deve configurar a variável PATH do sistema, para fazer o CMake encontrar o MinGW32 e as bibliotecas instaladas, vá para: Painel de controle -> Sistema -> Avançado -> Variáveis de Ambiente Verifique se na área Variáveis de usuário, existe a variável PATH, se não, crie uma e defina ela como: C:\Program Files\CMake 2.8\bin;C:\MinGW\bin;C:\MinGW\lib;C:\MinGW\include Tenha certeza que a variável do usuário PATH existe e que refere para o diretório do CMake. Baixe o código fonte do OTClient Vá para página de download e faça o download do código fonte do OTCLient. O diretório onde você colocará esses arquivos não deve ser longo. Por exemplo: "C:\OTClient\" é um bom diretório, mas "C:\Program Files\OTClient" não é. Gere o arquivo de projeto do CodeBlocks Rode o CMake-gui.exe localizado em \Program Files\CMake 2.8\bin, e especifique o diretório onde você colocou o código fonte do OTCLient, e onde você quer que os arquivos do projeto sejam criados. Clique em configure, seleciona CodeBlocks - MinGW Makefiles, como gerador e gere os arquivos do projeto. Compilando Abra o arquivo de projeto do CodeBlocks que foi gerado (**otclient.cbp**) pelo CMake com o CodeBlocks. Para compilar você deve primeiro configurar a pasta do MinGW32, indo em Settings > Compiler And Debugger... > Toolchain Executables. Tenha certeza de copiar os arquivos Tibia.dat e Tibia.spr dentro da pasta /data/things// antes de rodar o cliente. Suporte a Dx9 Se você quiser ativar a camada de suporte do dx9 para o OTClient, você deve compilar com -DOPENGLES=2.0. Agora o OTClient.exe vai pedir pelas dll libEGL.dll e libGLESv2.dll que você pode conseguir aqui >> https://dl.dropbox.c...nt/dx9_dlls.zip, coloque essas dll na pasta do OTClient.exe Créditos: Eu por traduzir do github e trazer pra cá Edubart pelo tutorial original
  18. Fala galera, venho por meio desta mensagem dar informações sobre o nosso servidor que estamos inaugurando e vamos crescer diariamente, e buscar se tornar um dos maiores e melhores servidores OldSchool do momento. SITE: http://www.thetibianic.com Características: Mapa Global 7.x - Voltado para PVP/RPG. Host BR, Ant-Bot, Cliente Custom, Cast System, War System, Etc ... POI, Port Hope, Demon Oak, Hunts editadas, etc ... Exp/Vocações em equilíbrio. Knights e Paladins com 10% de chance de acerto critico. Servidor contando com uma super estrutura, Anti-DDoS, deixando o jogo sem LAG. Equipe correta, buscando sempre trazer novidades. Updates semanais e melhorias. Hunts estendidas (editadas): Demon em Edron, Dragon Lair em Venore, Necromancer em Drefia, Hero em Edron, Hellfire Fighter em Edron, Vampire em Drefia, Black Knight em Venore, Ancient Scarab em Ankrahmun, Serpent Spawn em Port Hope, Hydra em Port Hope, Warlock em Greenshore, Warlock em Dark Cathedral, etc... . Exp Low Stages Level 1 ao 8 - 50x Level 9 a 20 - 35x Level 21 a 30 - 30x Level 31 a 40 - 25x Level 41 a 50 - 20x Level 51 a 60 - 15x Level 61 a 70 - 10x level 71 a 80 - 7x Level 81 a 100 - 4x Level 101 em diant - 3x Skill 3,5x Magic 3x Loot 2,5x Venha fazer historia com The Tibianic ATS. Dúvidas, Sugestões, entre em contato. Atenciosamente, GM Tibianic
  19. Boa tarde amigos, vim aqui apresentar para vocês um projeto feito por mim. Presente de natal para todos, pois imagino que muitos já procuraram ou pensaram em fazer algo parecido. Imagino que até alguns já os conheçam, pois foi bastante divulgado na época em que eu o abri etc. Com essa nova onda de servidores RETRO, 7.x etc, eu adaptei um servidor da versão 8.6 global, para ter as principais características das versões 7.x ! Em 2 dias o server teve 130 players online, imagino que hoje em dia teria no minimo 200, isso faz apenas 15 dias. RETRO TIBIA 8.6 Principais Características: -> Sem bless, apenas AOL. -> Magias antigas (mas pox, mas vis fisico, burst arrow) -> NÃO POSSUI TRAINERS. -> Mage overpower e Knights na UH -> Apenas Mainland, Edron, Darashia e Ankrahmun. -> Cidades reformuladas para ficar como antiamente. -> Barcos sem protection zone. -> Poder viajar pz locked. -> Sistema de ADDON POR ITENS, sem venda de addon doll. -> Criar runas sem gastar soul. -> as runas: UH, IH, SD, Explo, Paralyze e MW [NÃO] vendem no NPC. -> Runas por magic level, e não por level minimo. -> Rates baixas, para dar mais dificuldade ao jogo (inicial 9x) -> Não aparece loot message, é necessário abrir o loot para saber o que caiu. -> RETIRADO restrição de vocação para itens OLD (Crown Set, K Set, MPA, G legs etc.), qualquer vocação pode usar. -> Burst Arrow 7.6 (baseado no Magic Level. Se era tão bom por que o projeto parou? -> Passamos por alguns problemas simples porém chatos, tais como nukes, TFS com alguns bugs que faziam travar etc. Durante esse tempo precisei fazer uma viagem de 4 dias, e durante esse tempo em que fiquei fora, um de nossos colaboradores teve acesso a máquina e pegou nosso servidor, com isso abriu um servidor cópia utilizando o nome dele como desenvolvedor, algo triste mas que ocorre frequentemente. -> Essa viagem que fiz foi para jogar futebol, nela consegui uma bolsa para estudar/jogar futebol nos Estados Unidos, com isso ficarei sem tempo de continuar qualquer tipo de projeto relacionado a esse, por isso irei disponibilizar em OPEN SOURCE para todos aqui. Algumas Imagens ~ Segundos após a abertura do servidor ~ ~ Old Thais Depot e o Barco de Thais ~ ~ Mapa do servidor ~ ~ Demonstração da magia Exevo Gran Mas Vis ~ ~ A cidade de Carlin com aparencia mais ANTIGA ~ ~ Para quem não viu diferença, essa é a carlin atual \/ ~ ~ Edron reformulada com aparencia ANTIGA ~ ~ Darashia com aparencia ANTIGA ~ ~ E por ultimo, nossa UNICA CAVE CUSTOM, bem conhecida de servidores como o UnderWar na versão 8.2 +- ~ Downloads: 4shared: http://www.4shared.c...etroServe.html? Scan: https://www.virustot...b2b86/analysis/ O scan está alertando algum arquivo malicioso no qual não tenho conhecimento qual seja, sintam-se livre para adquirir o conteúdo ou não. Aqui nunca houve problema. abraços AUTORIZO A POSTAGEM DESTE TÓPICO EM QUALQUER OUTRO FORUM DE SEU DESEJO, DESDE QUE SEJAM COLOCADOS OS DEVIDOS CREDITOS. Servidor feito por Aleex.
  20. Visualize o website Downloads Download Mega Scan Créditos: Shadowcores por disponibilizar @Daniel por postar
  21. Nogard

    Free For Use!

    O tópico servirá para postar sprites de uso livre. Conteúdo: 7 Pokémon (Chatot, Glameow, Hippopotas, Hippowddon, Purugly) + corpses. (credits are no needed but appreciated) DOWNLOAD Random Outfit Conteúdo: Placa Animada. DOWNLOAD Conteúdo: Pokémon Iniciais 5ª geração. Créditos: Jeff DOWNLOAD Conteúdo: Pokébolas. DOWNLOAD Participe!
  22. Olá pessoal, meu nome é Kenai e me considero um spriter de nivel mediano. Junto com a disponibilização dessas minhas "spritezinhas" eu quero fazer um pedido pra você que está lendo; Acredito que se você veio parar neste tópico é porque algum interesse em sprites você tem; Sabendo disso, eu gostaria de pedir pra você que é spriter, ou quer começar a fazer sprites, um simples favor..Parem de fazer sprites de pokemon, vamos inovar, o mundo das sprites é imenso, tanta coisa pra vocês criarem e ficaram estagnados em pokemon. Tanto projeto legal que poderia sair se tivessem um conteudo inovador.. Agradeço por lerem até aqui. (hipocrisia minha dizer isso e fazer um lucario e um eevee, mas tenho a desculpa que sao os meus 2 favoritos e amo eles). BY THE WAY AS SPRITES SAO LIVRES PRA USO CASO QUEIRAM UTILIZAR EM ALGO. Ps: tenho algumas a mais sobre black clover e se o post der um up legal eu libero o resto aqui.
  23. Fala galerinha do XTibia, vim aqui postar um sistema de Premium Points inGame, que eu achei muito útil, pois eu estava tendo sérios problemas com o Shop System do Modern AAC, ai vai os sistemas. antes de tudo execute esse comando em seu banco de dados. ALTER TABLE `accounts` ADD `premium_points` INT NOT NULL DEFAULT 0; [/code] [font=tahoma,geneva,sans-serif][color=#ff0000]#[/color][color=#000000]S[/color]istemas[/font] [font=tahoma,geneva,sans-serif]vá em data/libs e crie um novo arquivo com o nome [i]048-ppoints.lua[/i][/font] [i] function getAccountPoints(cid) local res = db.getResult('select `premium_points` from accounts where name = \''..getPlayerAccount(cid)..'\'') if(res:getID() == -1) then return false end local ret = res:getDataInt("premium_points") res:free() return tonumber(ret) end function doAccountAddPoints(cid, count) return db.executeQuery("UPDATE `accounts` SET `premium_points` = '".. getAccountPoints(cid) + count .."' WHERE `name` ='"..getPlayerAccount(cid).."'") end function doAccountRemovePoints(cid, count) return db.executeQuery("UPDATE `accounts` SET `premium_points` = '".. getAccountPoints(cid) - count .."' WHERE `name` ='"..getPlayerAccount(cid).."'") end [/i] vá em data/talkactions/talkactions.xml e adicione as seguintes tags. <!-- Premium Points System --> <talkaction log="yes" words="!getpoints;/getpoints" access="6" event="script" value="GetPoints.lua" /> <talkaction log="yes" words="!addpoints;/addpoints" access="6" event="script" value="AddPoints.lua" /> <talkaction log="yes" words="!removepoints;/removepoints" access="6" event="script" value="RemovePoints.lua" /> <talkaction words="!points" event="script" value="SelfGetPoints.lua" /> vá em data/talkactions/scripts e crie um novo arquivo com o seguinte nome AddPoints.lua function onSay(cid, words, param, channel) local split = param:explode(",") local name, count = split[1], tonumber(split[2]) pid = getPlayerByNameWildcard(name) if (not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. param .. " is not currently online.") return TRUE end if not(split[2]) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The commands requires 2 parameters: character name, amount") end if not(count) then print(count) return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Numeric parameter required.") end doAccountAddPoints(cid, count) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "" .. count .. " premium points were added to " .. getCreatureName(pid) .. "\'s Account.") return true end vá em data/talkactions/script e crie um arquivo com o seguinte nome GetPoints.lua function onSay(cid, words, param, channel) local pid = 0 if(param == '') then pid = getCreatureTarget(cid) if(pid == 0) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Command param required.") return TRUE end else pid = getPlayerByNameWildcard(param) end if (not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. param .. " is not currently online.") return TRUE end if isPlayer(pid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "" .. getCreatureName(pid) .. "\'s Account has " .. getAccountPoints(cid) .. " premium points.") return TRUE end return TRUE end vá em data/talkactions/script e crie um arquivo com o seguinte nome RemovePoints.lua function onSay(cid, words, param, channel) local split = param:explode(",") local name, count = split[1], tonumber(split[2]) local points = getAccountPoints(cid) pid = getPlayerByNameWildcard(name) if (not pid or (isPlayerGhost(pid) and getPlayerGhostAccess(pid) > getPlayerGhostAccess(cid))) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Player " .. param .. " is not currently online.") return TRUE end if not(split[2]) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "The commands requires 2 parameters: character name, amount") end if not(count) then print(count) return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Numeric parameter required.") end if (points <= 0) then return doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "" .. getCreatureName(pid) .. "\'s Account has 0 premium points.") end doAccountRemovePoints(cid, count) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "" .. count .. " premium points were deleted from " .. getCreatureName(pid) .. "\'s Account.") return true end vá em data/creaturescripts/scripts e crie um novo arquivo com o nome SelfGetPoints.lua function onLogin(cid) if isPlayer(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Your Account has " .. getAccountPoints(cid) .. " premium points.") end return TRUE end declare ele no creaturescripts.xml <event type="login" name="GetPoints" event="script" value="getpoints.lua" /> #Scripts aqui está um exemplo de talkaction para mudar o sexo do personagem usando o sistema de points. local config = { costPremiumDays = 2 } function onSay(cid, words, param, channel) if(getPlayerSex(cid) >= 2) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You cannot change your gender.") return end if(getAccountPoints(cid) < config.costPremiumDays) then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Sorry, not enough Premium Points - changing gender costs " .. config.costPremiumDays .. " Premium Points.") doSendMagicEffect(getThingPosition(cid), CONST_ME_POFF) return end if(getAccountPoints(cid) >= config.costPremiumDays) then doRemovePoints(cid, -config.costPremiumDays) end local c = { {3, 1, false, 6, 1}, {3, 2, false, 6, 2}, {6, 1, false, 3, 1}, {6, 2, false, 3, 2} } for i = 1, #c do if canPlayerWearOutfitId(cid, c[i][1], c[i][2]) then doPlayerRemoveOutfitId(cid, c[i][1], c[i][2]) c[i][3] = true end end doPlayerSetSex(cid, getPlayerSex(cid) == PLAYERSEX_FEMALE and PLAYERSEX_MALE or PLAYERSEX_FEMALE) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have changed your gender and lost " .. config.costPremiumDays .. " days of premium time.") doSendMagicEffect(getThingPosition(cid), CONST_ME_MAGIC_RED) for i = 1, #c do if c[i][3] == true then doPlayerAddOutfitId(cid, c[i][4], c[i][5]) end end return true end Aqui está um npc ( aconselho usar ele para vender seus itens vips ) local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local bootsid = 1455 local bootscost = 15 local ringid = 2145 local ringcost = 5 local bladeid = 12610 local bladecost = 20 local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if(msgcontains(msg, 'vip boots') or msgcontains(msg, 'boots')) then selfSay('Do you want to buy Vip Boots fo '.. bootscost ..' premium points?', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 1) then if(getAccountPoints(cid) >= bootscost) then if(doAccountRemovePoints(cid, bootscost) == TRUE) then doPlayerAddItem(cid, bootsid) selfSay('Here you are.', cid) else selfSay('Sorry, you don\'t have enough gold.', cid) end else selfSay('Sorry, you don\'t have the item.', cid) end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then talkState[talkUser] = 0 selfSay('Ok then.', cid) elseif(msgcontains(msg, 'blade of corruption') or msgcontains(msg, 'blade')) then selfSay('Do you want to buy blade of corruption for '.. bladecost ..' premium points?', cid) talkState[talkUser] = 2 elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 2) then if(getAccountPoints(cid) >= bladecost) then if(doAccountRemovePoints(cid, bladecost) == TRUE) then doPlayerAddItem(cid, bladeid) selfSay('Here you are.', cid) else selfSay('Sorry, you don\'t have enough points!.', cid) end end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then talkState[talkUser] = 0 selfSay('Ok then.', cid) elseif(msgcontains(msg, 'expring') or msgcontains(msg, 'ring')) then selfSay('Do you want to buy exp ring for '.. ringcost ..' premium points?', cid) talkState[talkUser] = 2 elseif(msgcontains(msg, 'yes') and talkState[talkUser] == 2) then if(getAccountPoints(cid) >= ringcost) then if(doAccountRemovePoints(cid, ringcost) == TRUE) then doPlayerAddItem(cid, ringid) selfSay('Here you are.', cid) else selfSay('Sorry, you don\'t have enough gold.', cid) end end talkState[talkUser] = 0 elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then talkState[talkUser] = 0 selfSay('Ok then.', cid) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) npc.xml <?xml version="1.0" encoding="UTF-8"?> <npc name="Donator" script="donator.lua" walkinterval="0" floorchange="0" speed="900"> <health now="150" max="150"/> <look type="131" head="19" body="19" legs="19" feet="19"/> <interaction range="3" idletime="60"> <interact keywords="hi" focus="1"> <keywords>hello</keywords> <response text="Hey there, I sell items only to Donators! To Donate check website or ask Server Staff."> <action name="idle" value="1"/> </response> </interact> <interact keywords="bye" focus="0"> <keywords>farewell</keywords> <response text="Good bye."/> </interact> </interaction> </npc> script made by Vodkart npc por trade say local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid -- ["nome do item"] = {Qntos pontos vao custar, id do item} local t = { ["boots of haste"] = {15, 2195}, -- ["demon helmet"] = {25, 2493}, ["frozen starlight"] = {30, 2361}, ["royal crossbow"] = {20, 8851}, ["solar axe"] = {30, 8925}, ["soft boots"] = {50, 2640}, ["demon armor"] = {100, 2494}, ["firewalker boots"] = {50, 9932}, ["magic plate armor"] = {70, 2472}, ["flame blade"] = {100, 8931} } if (msgcontains(msg, 'trade') or msgcontains(msg, 'TRADE'))then local str = "" str = str .. "Eu vendo estes items: " for name, pos in pairs(t) do str = str.." {"..name.."} = "..pos[1].." Points/" end str = str .. "." npcHandler:say(str, cid) elseif t[msg] then if (doAccountRemovePoints(cid, t[msg][1]) == TRUE) then doPlayerAddItem(cid,t[msg][2],1) npcHandler:say("Aqui está seu ".. getItemNameById(t[msg][2]) .."!", cid) else npcHandler:say("você não tem "..t[msg][1].." Points", cid) end end return TRUE end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) npc por trade local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid local shopWindow = {} local t = { [2195] = {price = 15}, [2493] = {price = 25}, [2361] = {price = 30}, [8851] = {price = 20}, [8925] = {price = 30}, [2640] = {price = 50}, [2494] = {price = 100}, [9932] = {price = 50}, [2472] = {price = 70}, [8931] = {price = 48} } local onBuy = function(cid, item, subType, amount, ignoreCap, inBackpacks) if t[item] and getAccountPoints(cid) < t[item].price then selfSay("You dont have "..t[item].price.." points", cid) else doPlayerAddItem(cid, item) doAccountRemovePoints(cid, t[item].price) selfSay("Here is you item!", cid) end return true end if (msgcontains(msg, 'trade') or msgcontains(msg, 'TRADE'))then for var, ret in pairs(t) do table.insert(shopWindow, {id = var, subType = 0, buy = ret.price, sell = 0, name = getItemNameById(var)}) end openShopWindow(cid, shopWindow, onBuy, onSell) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) é só isso! créditos: LucasOlzon Beeki XTibia Vodkart @Edit adicionado scripts by Vodkart.
  24. Fla galera, tranquilo. Queria editar um NPC que voce chegasse nele, pedia pelo outfit, addon 1 e depois addon 2, e ele te vendesse por KK's. Esse é o arquivo do NPC Benjamin, que vende Parcel em Thais, como eu poderia editar ele pra ele vender Addons 1 e 2 por KKs, voce chega la e pede Assassin, Addon 1 e talz e ele te vende por dinheiro. Dados no NPC Benjamin: <?xml version="1.0" encoding="UTF-8"?> <npc name="Benjamin" script="Benjamin.lua" walkinterval="2000" floorchange="0"> <health now="100" max="100" /> <look type="128" head="116" body="79" legs="117" feet="76" addons="0" /> <parameters> <parameter key="module_keywords" value="1" /> <parameter key="keywords" value="mail;letters;explain;depot;parcel;explain;" /> <parameter key="keyword_reply1" value="With our mail system you can send {letters} and {parcels} to other Tibians. I can either explain how {letters} and {parcels} work or sell them to you if you ask me for a {trade}." /> <parameter key="keyword_reply2" value="If you want to buy a letter, ask me for a {trade}. Or do you want me to {explain} how letters work?" /> <parameter key="keyword_reply3" value="With a letter you can send a message to another Tibian's {depot}. If you want to send it to 'Ben', use the letter - so that a form opens - and write 'Ben' in the first line. Write your message below that. ..." /> <parameter key="keyword_reply4" value="Each major city has at least one depot. Just step in front of one of the lockers and you can store items inside. Your mail will also arrive there. Each city has its own storage, don't forget where you store items!" /> <parameter key="keyword_reply5" value="If you want to buy a parcel, ask me for a {trade}. Or do you want me to {explain} how parcels work?" /> <parameter key="keyword_reply6" value="In a parcel you can send items to another Tibian's {depot}. Put your items into the parcel and also place a completed {label} with the name of the {receiver} inside. Then drag your parcel on one of the blue {mailboxes} here to send it." /> <parameter key="module_shop" value="1" /> <parameter key="shop_buyable" value="label,2599,1;parcel,2595,15;letter,2597,8;" /> <parameter key="message_sendtrade" value="Here. Don't forget that you need to buy a label too if you want to send a parcel. Always write the name of the {receiver} in the first line." /> </parameters> </npc> Como eu poderia editar este NPC? +Rep pela ajuda.
×
×
  • Create New...