Jump to content

Olá Tibiano! Notamos que você está com um adblocker ligado... 

Nós promovemos servidores dentro da comunidade, para que eles tenham visibilidade.

Por favor, nos ajude a continuar promovendo esses servidores. Adicione nosso domínio na whitelist de seu adblocker, ok? :)

Search the Community

Showing results for tags 'script'.



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 14.583 results

  1. Boa noite povo do xTibia, vim pedir se alguém pode me passar script que faca exatamente isso > cor de novo fosse azul.. se alguém tiver agradeceria Muito obrigado até mais..
  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. | Melhorado Mapa e Adicionado Varias Áreas | Novos Itens | Novas Questes | Novos Bichos | Adicionado VIP 15 | Retirado Bugs no Mapa... | Retirado Varios Bugs no Distro | Novo Visual do Templo | Critical System | Dodge System | Reset System,para resetar fale !reset | Guild Frags System | PvP Balanceado Agora todas vocações estão no balanço | Armas Arrumadas Para Melhor PvP | Varios Eventos | Invasões no Templo de Boss Automatico | Battle Field Event | City War | Adicionado CASTLE 24HORAS (COM CASTELO) e AVISOS DE INVASORES | Itens DONATES | Área DONATE ~~ (Só Entra Quem Usar o Itens de Premium Days) | Vários Novos Script | Fast Atk Arrumado | Frags no Look | Npc Hero Seller (Vende Itens Exclusivos para quem tiver honor points) Obs:Consegue no GFS) | Entre Muitas Outras Coisas | Confira ! | Senha do ADM: god/god IMAGENS Templo Parte Centro Treiners Abaixo do Templo Novo Visual Npc Hero Vendendo Itens Heros Castle WAR 24 Horas | Download http://www.4shared.c...ks_Vip_15.html? | Scan https://www.virustot...sis/1403811216/ | Créditos DeathRocks sirrubilax
  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. Olá a todos, vim pedir um script para vocês.. O script é o Level System para base baseada em OTP.. O script que to pedindo é meio assim.. Alakazam Lv100 /OU/ Alakazam [100] se for possivel - quero que quando mata algum poke apareça em algum lugar quantos de xp recebeu (é tambem se não for encomodo quantos falta de xp pra upar) o script pode ser o mais basico, se tiver essas informaçoes ficarei muito grato. Obrigado a todos
  6. Olá povo do xTibia desculpe qualquer coisa vim pedi um favor/sugestão algo desse tipo para vocês, estou querendo certas coisas se for possível 1: uma base OtPokemon C/S Source Server e Client que dá pra ver futuro nela se for trabalhada bem (Pode ser com trap ou não) Exemplo OtPokemon XYZ, Pokezring,pokeroxy e tals (que possa adicionar script de *PokeBar*/*PokeInfo*/*E Etc 2: um level system parecido com o do OtPokemon, que já pode ser ativada no jogo mas para ficar melhor precisa ser editada e tals 3: um launcher básico C/S autoupdate que tenha arquivos para mecher nele no visual Basic {Poketibia} 4: Uma pessoa que possa me falar onde tá os arquivos da PokeBar do OtPokemon XYZ que foi disponível nesse fórum [\] (Pasta do module >selectPokemon) No entanto é só isso desculpem fazer muito pedido mas é porque vou trabalhar sozinho no projeto, O maximo de ajuda que for possível irei agradecer se não for tudo bem,obrigado
  7. 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.
  8. 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:
  9. • 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 !
  10. FlorestaNiegra

    Sala de Boss

    Pessoal tenho esse código que achei por ai na internet ( mas como ele é meio antigo resolvi criar um post pra tentar solucionar ): Codigo: Ele vai na pasta Movements, e serve para criar uma Boss Room onde só entra 1 pessoa por vez. Enfim, ela faz quase tudo que está escrita pra fazer ( spawna o boss, seta o tempo para kickar o jogador ), porém não está limpando a sala e nem deixando o mesmo jogador repetir o boss. Coloquei ai no script para o boss poder ser feito de 1 em 1 minuto, porém ele não deixa o personagem fazer mais de 1 vez. Criei um item para dar ao personagem o Storage 9000, esse item qdo usado some e o personagem ganha o storage, então ele consegue entrar no TP. Acontece que depois que ele sai ele não consegue entrar mais, como se o storage tivesse sido removido, mas no banco de dados do PHPMYADMIN fica 9000 lá em players_storage. Ps: Se usar novamente o item de storage ele acaba conseguindo ir de novo no boss porém, somente +1 vez (???) Agradeço desde já ^^.
  11. Monstros Passivos Muito bom dia, galera. Sabe, eu estava estudando como funcionam os servidores de pokémons, aqueles que ainda estão começando, embriões de bons servidores, não grandes servidores como o Poke Brasil Online (PokeBro). O problema de todos esses servidores, é que todos são dependentes de sistemas criados pelo brun123 (se não me engano) dentro das sources, ou seja, esses servidores são dependentes do executável compilado do PDA, entre outros. A pedido de um amigo, eu desenvolvi o sistema de monstros passivos. Sim aquele sistema que dá um upgrade na inteligência artificial das criaturas, onde algumas podem atacar o jogador assim que o ver, outras podem atacar apenas quando for atacadas. É um sistema muito básico mesmo, eu fiz com C++ e Lua por puro comodismo, e pretendo deixar mais avançado apenas com C++ e uso de flags nos XMLs. Se você quiser usar, sinta-se a vontade. No seu arquivo monster.h, procure por: bool isHostile() {return mType->isHostile;} Substitua por: bool isHostile() const { std::string value; if(!getStorage("hostile", value)) return mType->isHostile; return booleanString(value); } No seu arquivo monster.cpp, procure por: Monster::selectTarget Dentro da função, procure por: if(!isTarget(creature)) return false; Adicione abaixo: if(!isHostile()) return false; No diretório creaturescripts/scripts, crie um novo arquivo com nome passive.lua e adicione: PASSIVE_BEHAVIOR = {"Deer", "Rabbit"} -- Aqui ficam os monstros que não atacam, mesmo que atacados. function onCombat(cid, target) if isMonster(target) then if not isInArray(PASSIVE_BEHAVIOR, getCreatureName(target)) then doCreatureSetStorage(target, "hostile", 1) end doMonsterSetTarget(target, cid) end return true end No mesmo diretório, abra o arquivo login.lua e adicione: registerCreatureEvent(cid, "PassiveSystem") No diretório creaturescripts/, abra o arquivo creaturescripts.xml e adicione: <event type="combat" name="PassiveSystem" event="script" value="passive.lua"/> Agora é só compilar seu servidor, sem a pasta obj, ou seja, dê um Rebuild All e correr pro abraço com seu sistema de monstros passivos. Abraços, Oneshot.
  12. 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 !
  13. [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.
  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. Galera, preciso de uma script que faça 100 gold coin ao dar use virar platinum, 100 platinum vira crystal coin.... Sei que existem algumas pelos foruns, mas testei todas as que vi e não funcionou... O servidor é 12.15, porém, só tem cliente 10.0 😁 Desculpa não saber definir exatamente TSF e tal... Sou novato nessa vida... Me helpa pfv changegold.lua actions.xml
  17. Primeiro vá em / data / actions/ scripts cria um arquivo.lua function onUse(cid, item, frompos, item2, topos) exhaust,lifemax,porce = 1100,math.max((getPlayerLevel(cid)*10)),9 -- 9% if getPlayerStorageValue(cid, 14725) >= os.time() then return true end if getPlayerLevel(cid) > (lifemax/10-1) then doCreatureAddHealth(item2.uid, math.random(math.floor(getCreatureMaxHealth(cid)/100*porce/1.4),math.ceil(getCreatureMaxHealth(cid)/100*porce))) doSendMagicEffect(topos, CONST_ME_MAGIC_BLUE) doCreatureSay(item2.uid, "Aaaah...", TALKTYPE_ORANGE_1) setPlayerStorageValue(cid, 14725, os.time() + exhaust / 1000) return true end end actions.xml <action itemid="iddoitem" script="arquivo.lua"/> para alterar quantos porcentos quer que heala altera aqui o red exhaust,lifemax,porce = 1100,math.max((getPlayerLevel(cid)*10)),9 -- 9%
  18. Colocando pokebar (a barrinha que troca de pokemon) no seu pda sem level. Se quiser que eu faça com pda com level comentem ai. PDA SEM LEVEL 1. Vá na pasta data\actions\scripts\goback.lua e embaixo da parte: function onUse(cid, item, frompos, item2, topos)coloque: sendAllPokemonsBarPoke(cid)2. Vá na pasta data\lib\catch system.luaProcure por: setPlayerStorageValue(cid, 854788, 'done') ende embaixo coloque: sendAllPokemonsBarPoke(cid)3. Vá na pasta data\lib\cooldown bar.lua Procure por: endreturn retende embaixo coloque: 4. Vá na pasta data\lib\some functions.lua Troque por esse: 5. Vá na pasta data\talkactions\talkactions.xml Coloque essa tag: <talkaction words="/poke" case-sensitive="no" event="script" value="poke.lua"/>depois crie um data\talkactions\scripts\poke.lua Coloque o game_barpoke dentro da pasta modules. Download: www.mediafire.com/download/8bavucwof24bkxv/game_barpoke.rar Créditos: Soulviling Caotic
  19. wenderotpoke

    Headbutt

    Opa.... e aí.... então quero add novas arvores no Headbutt, mas sem que atrapalhe nas outras.... quero que pegue essas 4 arvoes Id Normal "Id Quebrada" 2707 = "19967" 2706 = "19966" 2705 = "19965' 2704 = "19964" tipo quero que todas essas arvoes deem pra usar o headbutt e que transformem nas mesma sem mudar elas. Agradeço desde já REP+
  20. Olá galera do XT, estou trazendo aqui, meu primeiro NPC, um NPC que teleporta se tiver o item X, tudo configurável! Vá em data/npcs/scripts e copia e cola um arquivo.lua renomeia ele para tp.lua e cola o seguinte código: 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 ------------#Configurações#---------------- local config = { tp1 = {x=100, y=100, z=7}, -- coordenadas pra onde ele irá ao falar aonde está "ir". tp2 = {x=100, y=100, z=7}, -- coordenadas pra onde ele irá ao falar aonde está "ir2". tp3 = {x=100, y=100, z=7}, -- coordenadas pra onde ele irá ao falar aonde está "ir3". item1 = 2160, -- id do item 1 item2 = 2148, -- id do item 2 item3 = 2158, -- id do item 3 qtd1 = 2, -- quantidade a ser removida do item 1 qtd2 = 5, -- quantidade a ser removida do item 2 qtd3 = 7, -- quantidade a ser removida do item 3 } ----------#Fim das configurações#---------- ------------#*#Início do NPC#*#-------------- if msgcontains(msg, 'ir1') then -- o que ele tem que falar. if doPlayerRemoveItem(cid, config.item1, config.qtd1) then doTeleportThing(cid, config.tp1) -- não mexa. else selfSay("Você não tem "..config.qtd1.." {"..getItemNameById(config.item1).."s}.", cid) -- msg que retorna caso ele não tenha o item. end elseif msgcontains(msg, 'ir2') then -- o que ele tem que falar. if doPlayerRemoveItem(cid, config.item2, config.qtd2) then doTeleportThing(cid, config.tp2) -- não mexa. else selfSay("Você não tem "..config.qtd2.." {"..getItemNameById(config.item2).."s}.", cid) -- msg que retorna caso ele não tenha o item. end elseif msgcontains(msg, 'ir3') then -- o que ele tem que falar. if doPlayerRemoveItem(cid, config.item3, config.qtd3) then doTeleportThing(cid, config.tp3) -- não mexa. else selfSay("Você não tem "..config.qtd3.." {"..getItemNameById(config.item3).."s}.", cid) -- msg que retorna caso ele não tenha o item. end end ------------#*#Fim do NPC#*#-------------- return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) Feito isso, vá em data/npcs copia um arquivo.xml e renomeia ele para Teleport. Abra com o bloco de notas ou outro editor, e cole este arquivo: <?xml version="1.0" encoding="ISO-8859-1"?> <npc name="Gerson" script="data/npc/scripts/tp.lua" walkinterval="3000" floorchange="0"> <health now="100" max="100"/> <look type="367" head="0" body="38" legs="114" feet="94" addons="0"/> <parameters> <parameter key="message_greet" value="Eu posso levar você para {ir1}, {ir2}, {ir3}."/> <parameter key="message_farewell" value="Adeus!"/> <parameter key="message_walkaway" value="Que bons ventos o levem!"/> </parameters> </npc> Configurando o arquivo do npc: Tudo é feito aqui: ------------#Configurações#---------------- local config = { tp1 = {x=100, y=100, z=7}, -- coordenadas pra onde ele irá ao falar aonde está "ir". tp2 = {x=100, y=100, z=7}, -- coordenadas pra onde ele irá ao falar aonde está "ir2". tp3 = {x=100, y=100, z=7}, -- coordenadas pra onde ele irá ao falar aonde está "ir3". item1 = 2160, -- id do item 1 item2 = 2148, -- id do item 2 item3 = 2158, -- id do item 3 qtd1 = 2, -- quantidade a ser removida do item 1 qtd2 = 5, -- quantidade a ser removida do item 2 qtd3 = 7, -- quantidade a ser removida do item 3 } ----------#Fim das configurações#---------- Em tp1, tp2, tp3 coloque a posição de cada lugar que ele será mandado. Em item1, item2, item3 coloque o ID do item que você quer que seja removido para teleportar o jogador. Em qtd1, qtd2, qtd3 coloque apenas a quantidade a ser removida. Bom galera, este é meu primeiro script espero que gostem!! @Edit Hoje dei uma editada no NPC e removi 10 linhas. Gostaria que me dessem ideias de como melhorar este NPC, ou criar outros.
  21. 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.
  22. #Descrição: O evento ocorre com a separação automática de 2 times (Azul x Vermelho), onde um disputa com o outro a sala de prêmios. Para ter acesso à sala, um dos times deve derrotar os 3 geradores presentes antes do outro. #O que possui? - Totalmente automatizado (Script: Abertura, Entrega do premio, Designação dos vencedores e Encerramento) - Página explicativa (PHP: Os players entenderão como funciona o evento) - Talkactions ADM (Script: Comandos que podem ser usados para abrir o castle manualmente) - Tutorial (Arquivo: Explicando passo a passo a instalação) - Arena com 2 salas e waiting room (Mapa) - Entre outras coisas… *OBS: Este evento só funciona em TFS 0.4. DOWNLOAD: CLICK AQUI SCAN: CLICK AQUI Créditos: ChaitoSoft Jhon Thiagobji
  23. Bom, como um individuo(Vudi) não sabe cumprir o que fala, vou postar o sistema aqui.(não cabe ao post explicar aqui) Bom, aqui está o smeargle system, igual o da PxG. Vamos lá. 1 - Vá na pasta Lib, substitua seu cooldown bar.lua por isso: 2 - Ainda no Lib, no fim(depois do ultimo end) do Some Functions.lua, adicione isso: 3 - Agora no order.lua, do Actions, em baixo de: Adicione: 4 - Se seu servidor ja tiver os spells, sketch 1, sketch 2... Substitua por esses(data/lib/pokemon moves.lua): Se não, use os mesmos acima, não esqueça de adicionar no spells.xml. 5 - Agora, vá em talkactions/scripst, abra o move1.lua e substitua: Por Depois: Por: Pronto, se tiver feito tudo certo, funcionará. Como ficará: Como usar: Créditos: Eu(Todo o script)
  24. Boa tarde a todos, gostaria de saber onde fica os códigos (em quais arquivos) sobre Card System na base PokeMasterX , estou querendo adicionar em base PDA, até logo Obrigado
  25. Limite de player por sala Introdução: Esse script pode ser bem útil para baiak onde as salas tão sempre cheia de player upando ou então para eventos. O script simplesmente checa a quantidade de player que tem dentro da sala, caso não tenha atingido o limite o player pode entrar caso não, manda uma mensagem falando que a sala esta lotada. Exemplo de uso: pode servir até para a anihilator ou demon aok, invitando que um segundo time entre na sala antes que o primeiro acabe. Caso a sala esteja lotada. Caso não. Em data/movement/script, crie LimiteArea.lua e adicione. Em movement/movement.xml Adicione essa tag E depois adicionar o actionid no piso ou teleport pelo mapa editor. O script é fácil de se configurar mas caso tenha algum problema pode posta ai que eu vou ajuda. Caso você adicione mais locais você terá que adicione na tag também.
×
×
  • Create New...