Ir para conteúdo

Líderes


Conteúdo Popular

Mostrando conteúdo com a maior reputação desde 24-03-2019 em todas áreas

  1. 4 pontos
    VitorSubhi

    [Sistema] Advanced Trade Points

    Apresentação: Após ver que muitos usuários tinham interesse em um sistema de Trade de Points in-game resolvi trazer um sistema totalmente completo para vocês. Funcionamento: Player 1 após adquirir os Points, pode iniciar uma negociação com o Player 2 através do comando /tradepoints Player 2, Quantidade. Será aberto uma Janela de Trade com o item referente aos Points. Após ambos aceitarem a negociação será realizado a troca de Points pelo item requisitado. Algumas Imagens: Instalação: Sources > Luascript.cpp Sources > Luascript.cpp Sources > Luascript.h  Server > Data > Lib > 050-function Server > Data > Creaturescripts > Scripts >Trade_Orbs.lua Server > Data > Creaturescripts > Creaturescripts.xml Server > Data > Creaturescripts > Scripts > Login.lua Server > Data > Talkactions > Scripts > Points_Trade.lua Server > Data > Talkactions > Talkactions.xml Créditos:Todo o sistema foi feito completamente por mim: Vítor Subhi.
  2. 3 pontos
    Olá Xtibia. Hoje eu trago pra vocês um website de dragon ball 8.60, é bem simples, mas será bom pra vocês ter um website maneiro : ) Emfim.. vamos lá! Download: Scan: Print do SITE: Se gostou, da rep+ : ) Créditos: Eu por postar.
  3. 3 pontos
    Eai galera do Eks, tudo bão? Quanto tempo que eu não venho por esses lados, saudades xD Bom, sem muita enrolação, eu vim postar pra vocês o sistema de auto loot que eu fiz aqui rapidinho (literalmente, 10 mins), porém que ficou bem bacana. É aquele esquema, você coleta o loot quando abre o corpo do bicho morto. Está bem simples, porém funcional. Eu pesquisei a respeito, pra ter uma ideia e não encontrei nenhum que tivesse com um código legal, todos estavam bem antigos. Eu não tive muito tempo testando, então caso encontrem qualquer bug, me avise pfv. function onUse(cid, item, fromPosition, itemEx, toPosition) if getItemAttribute(item.uid, "corpseowner") ~= cid then return doPlayerSendCancel(cid, "You're not the owner.") end local items = {} for i = 0, getContainerSize(item.uid) do local it = getContainerItem(item.uid, i) if it.uid > 0 then table.insert(items, {it.itemid, it.type}) doRemoveItem(it.uid) end end if #items > 0 then for k = 1, #items do local playerItem = getPlayerItemById(cid, true, items[k][1]) if playerItem.uid > 0 then if (playerItem.type + items[k][2]) > 100 then doPlayerAddItem(cid, items[k][1], (playerItem.type + items[k][2]) - 100) doTransformItem(playerItem.uid, items[k][1], 100) else doTransformItem(playerItem.uid, items[k][1], playerItem.type + items[k][2]) end else doPlayerAddItem(cid, items[k][1], items[k][2]) end end return true end return false end
  4. 2 pontos
    Taiger

    PokeXCrazy

    Boa noite galera, estava aqui dando uma olhada na área de downloads e vi que postaram a base PokeXCrazy, derivada da DXP que eu postei a alguns anos. Achei bem legal o projeto mas vi que o tópico foi fechado. O que acham de repostarmos e com a ajuda da comunidade deixarmos ela show de bola, ou não vale a pena? Estou um bom tempo longe dos ots e queria me incomodar um pouco com alguma base kkk.
  5. 2 pontos
    Fala galera, tranquilão? Bom, hoje eu to aqui pra apresentar pra vocês o meu xodó. O projeto no qual já trabalho tem 4 anos, e de muita luta e sofrimento kkkkkkk, afinal, passamos por trancos e barrancos. Foi um servidor que eu pensei em fazer diferente, a forma que ele funcionava. Trabalhei em cima de uma source até eu criar a minha própria, voltada completamente para pokémon, para ter um melhor desempenho, tirando todas as funções do tibia e deixando o servidor bem mais leve. Bom, vamos falar exatamente o que é o oldPokemon. Eu criei esse servidor, junto com meu primo João, na ideia de trazer o oldschool do poketibia de volta a vida. Eu vejo muita gente comentando em vários forums / canais de poketibia / grupos do fb, que sentem saudades do antigo SvkE, e olha, eu também sentia, então foi de onde partimos nessa dura jornada de trazer um servidor que fosse fielmente o SvkE, porém com vários sistemas novos e funções inovadoras em nosso client e servidor. É com grande alegria que compartilho com vocês o Beta Test deste servidor, após uma longa caminhada. Algumas imagens do servidor: O servidor está contando com os seguintes sistemas: E MUITO MAIS! Para criar a conta, basta entrar no 1/1 e criar pelo Account Manager. Discord Link: https://discord.gg/UsKAPP2 Download Link (Atualizado 10/04): [MEGA.NZ]: https://mega.nz/#!hltigY4Z!CEncVtvPfuUzATIgK6Y9rPbrXGsCJ2xR6GxnCuWC_Dg [MEDIAFIRE]: https://www.mediafire.com/file/cbe23xa63trdc7t/oldPokemon_%2802.04%29.rar/file [DROPBOX]: https://www.dropbox.com/s/frcj0fotzfp2k56/oldPokemon%20%2802.04%29.rar?dl=0 SCAN DO CLIENT: https://www.virustotal.com/gui/file/64cb6d5bb3896fba98408336d4671e61b6c49bb57faf782f3f9bcfd393880f8d/detection
  6. 2 pontos
    Brunds

    [Modern Acc] Guild Dominante (Página)

    Salve galera bom estou trazendo mais um conteúdo dessa vez a página para mostrar a guild dominante do evento castle war para o modern acc com ajuda de muitos amigos claro consegui trazer esse conteúdo para vocês bora lá A página configurada corretamente vai ficar assim OBS: Eu não vou ceder a imagem porque é algo facinho de fazer e até porque eu não quero criar um padrão porque isso permite a pessoa criar do tamanho que desejar etc... então isso vou deixar a critério de vocês Código \/ <?php $consulta = $SQL->query('SELECT `guild` FROM `castelo_guerra` ORDER BY `id` ASC;'); $number_of_rows = 0; foreach($consulta as $guildid){ $id = $guildid['guild']; } $consulta2 = $SQL->query('SELECT `name`, `id` FROM `guilds` WHERE id = '.$id.';'); ?> <style type="text/css"> a.castlefont { font-family: Verdana, Arial, Helvetica; font-size: 17px; color: #ffcc33; text-shadow:#000 4px 6px 4px, #000 -1px 1px 2px, #000 1px 1px 2px, #000 -1px -1px 2px; text-decoration:none } a:castle.topfont { font-family: Verdana, Arial, Helvetica; font-size: 10px; color: #CCC; text-decoration:none } </style> <div id="warcastle" style="margin-top:5px; margin-left:18px; height:150px; width:180px; background-image:url(<?PHP echo $layout_name; ?>LINK DA IMAGEM DE FUNDO AQUI);"> </br> </br> </br> <?php foreach($consulta2 as $guild){ echo ' <div align="center"> <a class="castlefont" href="/index.php/guilds/view/' . $id . '"> <img style="margin-left:8px; margin-top:6px" src="/public/guild_logos/' . (file_exists("public/guild_logos/".$guild['id'].".gif") == true ? $guild['id'].".gif" : "castlewar.gif").'" width="64" height="64" border="0"/> <br/> <div id="textcastle" style="margin-top:3px;">' . $guild['name'] . '</br></div> </a> </div> </td> </tr> </table> '; } ?> </div> Estarei deixando algumas explicações mais detalhadas abaixo 1º- Informações do evento do castle war basta mudar o castelo_guerra para o nome da tabela do seu banco de dados que pode estar como castle_war também (Fique atento a isso) $consulta = $SQL->query('SELECT `guild` FROM `castelo_guerra` ORDER BY `id` ASC;'); 2º- Nessa parte você vai editar tudo referente ao texto do nome da guilda cor, sombreamento etc... basta ir editando para ver qual fica melhor para você <style type="text/css"> a.castlefont { font-family: Verdana, Arial, Helvetica; font-size: 17px; color: #ffcc33; text-shadow:#000 4px 6px 4px, #000 -1px 1px 2px, #000 1px 1px 2px, #000 -1px -1px 2px; text-decoration:none } a:castle.topfont { font-family: Verdana, Arial, Helvetica; font-size: 10px; color: #CCC; text-decoration:none } </style> 3º- Nessa parte vai ser a imagem de fundo no caso do vídeo mostra uma imagem do tema naruto com a escrita Castle War porém você pode criar a imagem do tamanho que quiser e como quiser por isso estarei deixando em branco para vocês criarem uma imagem única e exclusiva para vocês <div id="warcastle" style="margin-top:5px; margin-left:18px; height:150px; width:180px; background-image:url(<?PHP echo $layout_name; ?>LINK DA IMAGEM DE FUNDO AQUI);"> 4º- Essa parte é a que busca a logo da guilda porém caso a guilda não tiver uma precisa haver uma reserva padrão no caso esta nomeada para castlewar.gif mude esse nome para uma imagem padrão que você tenha na pasta public/guild_logos <img style="margin-left:8px; margin-top:6px" src="/public/guild_logos/' . (file_exists("public/guild_logos/".$guild['id'].".gif") == true ? $guild['id'].".gif" : "castlewar.gif").'" width="64" height="64" border="0"/> Bom galera é isso espero que façam bom uso AVISO PROIBIDO PEDIDO DE AJUDA COM PROBLEMAS DE SQL E BUGS DO EVENTO CASTLE WAR NESSE TÓPICO CASO TIVER ALGUM PROBLEMA USE A ÁREA DE SUPORTE Agradecimentos (Créditos) @ricardo codenome @aspira @Yan Liima @Dwarfer @Yinz
  7. 2 pontos
    gabrielzika

    Erro no script

    @theodorogobi achei um erro que não tinha visto e já corrigi, eu apenas organizei o script e refiz algumas partes. Se te ajudei marque como melhor resposta para que pessoas com o mesmo problema possa resolve-lo
  8. 2 pontos
    O evento no qual você procura é o DTT(Defend the Towers). É possivel achar ele em muitos OTS de tibia que estão para download. Mesmo assim estarei deixando ele completo aqui para você. Não é dificil de configurar. Event DTT lolzin.rar
  9. 2 pontos
    @xugrude456 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 --------------------------- Configuração Inicial ------------------------------------ local strg = 9785 -- Valor da Storage local item = xxxx -- id do item local quant = yyy --quantidade local vocs = {zzz, www} -- id das vocaçao que irao poder receber a permissao --------------------------- Configuração das Falas ----------------------------------- if (msgcontains(msg, 'storage')) then if getPlayerStorageValue(cid, strg) < 1 then selfSay('Deseja receber a permissao? Para isso, deve me trazer X quantia do item Y', cid) talkState[talkUser] = 1 else selfSay('Voce ja recebeu a permissao.', cid) talkState[talkUser] = 0 end --------------------------- Falas de Entrada ----------------------------------- elseif(msgcontains(msg, 'yes') or msgcontains(msg, 'sim') and talkState[talkUser] == 1) then if getPlayerStorageValue(cid, strg) < 1 then if isInArray(vocs, getPlayerVocation(cid)) then if doPlayerRemoveItem(cid, item, quant) then setPlayerStorageValue(cid, strg, 1) selfSay('Permissao concedida com sucesso.', cid) talkState[talkUser] = 0 else selfSay('Voce nao tem o item.', cid) talkState[talkUser] = 0 end else selfSay('Sua vocaçao nao pode receber a permissao.', cid) return false end else selfSay('Permissao ja concedida anteriormente.', cid) return false end --------------------------- Falas de Rejeição ----------------------------------- elseif(msgcontains(msg, 'no') or msgcontains(msg, 'nao') and isInArray({1}, talkState[talkUser])) then talkState[talkUser] = 0 selfSay('Tudo bem entao.', cid) --------------------------- FIM do SCRIPT --------------------------------------- end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  10. 2 pontos
    1.0 - Funcionamento: Explicação:Este talkaction, apenas faz a execução de um comando em lua, direto do game.Exemplos:2.0 - Como Utilizar: Executando apenas uma função: /lua Função('variavél', 'variável', 'variável')Executando várias funções simultâneas: /lua Função('variável', variável'), Função('variável', variável', variável'), ...3.0 - Instalação: Talkactions.xml Data/Talkactions/scripts/lua.lua OBS.: Na versão atual, ainda não se é possível utilizar uma função dentro de outra, e nem funções de retorno (getters)Créditos: Desenvolvido inteiramente por mim (Vítor Subhi).
  11. 2 pontos
    Sistema de multi addon system sem erro, com talkaction pra trocar e configuração simples, estou postando pq vi uns frango vendendo o sistema... Ganhar dinheiro em cima das coisas de outros é coisa de retardado com limitação... se diz programador mas não sabe faze porra nenhuma, aqui fica uma reflexão desses "programadores"... Para usar é só colocar o addon no pokemon com o item, logo em seguida o pokemon ficara com o addon, para remove-lo é só digitar !addon 0, e para usa-lo novamente digite !addon 1, isso serve pra todos os addons que você adicionar, quando colocar mais de 1 addon é só ir trocando pelo comando, !addon 2, !addon 3 e etc, não esqueça de configurar o limite na lib. Lib action talkaction Parte que é colocada no look.lua (creaturescripts) Xml <action itemid="15923;15924;13089;13091;13092;13090;13101;13098;13099;13097;13394;13100;2207;2208;13106;13105;2456;2421;2422;2423;2428;2429;2430;2431;2432;2433;2434;2435;2436;2437;2445;2446;2447;2448;2449;2450;2451;2452;2453;2455;2458;2459;2460;2461;2487;2481;2486;2477;2478;2479;2480;2472;2473;2474;2339" event="script" value="addon.lua"/> <talkaction words="!addon" event="script" value="addon.lua"/> Sinto pena de quem pagoou por isso... bom uso nos seus poketibia. Créditos: Eu (Crypter) Demostração do funcionamento https://i.gyazo.com/bfa3b68eb259fcc67718d1bcbef55e70.mp4 https://i.gyazo.com/562e651c859a4fb05ab0be6584661c4e.mp4
  12. 2 pontos
    Salve galera meu amigo phsilva pediu para eu postar o cliente do servidor dele o NTO Under e vou confessar que o cliente dele ta muito top tem muita coisa boa o cliente esta tão completo que poderia fazer um servidor baseado nesse cliente espero que vocês curtam e ajude os projetos de nto que estão por ai eu com certeza vou usar no meu bom vamos lá Eu não vou postar prints para não estragar a surpresa kkk  NTO UNDER-NTO ACADEMY.zip SCAN DO CLIENTE
  13. 2 pontos
    Gengo

    [OtClient] Pokemon Health Info

    Eai galera do xtibia, hoje venho por meio desse post trazer para vocês uma pokebar, sei que já existe porém este é um pouco diferente do que costumamos ver. Antes de tudo faça o download do arquivo e vamos a configuração. OBS: Seu otClient precisa ter opcodes para poder funcionar. 1) Coloque o module na pasta do seu otClient em /modules. 2) No arquivo do seu servidor em data/lib/106-mainfunctions.lua coloque o seguinte trecho de código: 3) Ainda no mesmo arquivo 106-mainfunctions.lua procure pela função doOTCSendPokemonHealth e substitua ela pelo trecho a seguir: 4) Caso seu servidor não tenha a função table.serialize, adicione ela no arquivo do servidor em data/lib/012-table.lua: 5) No arquivo do seu servidor data/creaturescripts/script/login.lua coloque o seguinte trecho no final do onLogin antes do return sendPokeOTC(cid) 6) Abrindo o arquivo do npc Nurse Joy em especifico o script.lua, procure o trecho de codigo: doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_POKEMON_HEALTH, healthMax.."|"..healthMax) Substitui por esse: doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_POKEMON_HEALTH, healthMax.."|"..healthMax.."|"..getItemAttribute(mypb.uid, "identificador")) E no finalzinho da função do mesmo arquivo lua, antes do end, coloque o seguinte codigo: for indice, value in pairs(getPlayerPokeballs(cid)) do doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_POKEMON_HEALTH, getBallMaxHealth(cid, value).."|"..getBallMaxHealth(cid, value).."|"..getItemAttribute(value.uid, "identificador")) end 7) E por ultimo no arquivo opcodes.lua localizado na pasta data/creaturescript/script/opcodes.lua procure por: if buffer == "refresh" then doOTCSendPokemonHealth(cid) end E substitui por: if buffer == "refresh" then for indice, value in pairs(getPlayerPokeballs(cid)) do doSendPlayerExtendedOpcode(cid, opcodes.OPCODE_POKEMON_HEALTH, getBallHealth(cid, value).."|"..getBallMaxHealth(cid, value).."|"..getItemAttribute(value.uid, "identificador")) end end Bom é basicamente isso, a unica coisa que estará faltando e que vou deixar para vocês fazerem é quando o player colocar ou retirar outro pokemon na bag fazer com que o servidor chame a função sendPokeOTC(cid), não estarei ensinando essa parte pq o meu é bem diferente e não adiantaria eu mostrar como se faz, mas também não é um bixo de 7 cabeças fazer essa parte. Fazendo esse tutorial certinho e tudo mais, ficará assim no game: Espero que gostem e que entendam, desculpe-me por qualquer coisa não sou muito de explicar e ficar escrevendo tutorial. Download do arquivo: https://www.mediafire.com/file/p8wch1fogveh48e/game_poke.rar/file Scan do arquivo: https://www.virustotal.com/#/file/d88b33ad27520ddd28afdaeb7d17af26805fa3bf39400f1a30813a0da3ca1695/detection
  14. 2 pontos
    Olá a todos. Bom eu percebi que tem algumas pessoas levando vantagem em cima de um programa gratuito disponível na internet, então resolvi postar ele para todos usarem gratuitamente é um programa que além de criar a pasta cab muda a file name/mask do aplicativo, assim fazendo com que ele necessite abrir o data.cab criado por você trazendo enfim a proteção.cab para os clientes de hoje, o problema que existe nele é que ele coloca diversos falsos positivos no cliente fazendo com que qualquer anti-virus detecte o cliente do servidor como uma ameaça assim excluindo do computador e consequentemente faz com que o servidor perca jogadores, mas já que tem pessoas levando vantagem sobre esse programa gratuito na internet e cobrando horrores para passar esse programa e um tutorial de como fazer isso eu vou disponibilizar aqui para uso gratuito de todos. O Nome do programa em questão é Enigma Virtual Box Link para acessar o site oficial para baixar o programa https://enigmaprotector.com/en/downloads.html Bom agora irei mostrar como fazer o procedimento com um vídeo obs: estarei usando uma versão inferior mas o procedimento é o mesmo Após esse processo o cliente fica dessa forma Scan do cliente https://www.virustotal.com/#/file/c560af8310c672d88f20649178036220cc20b00e074959e9a14975727a8ec936/detection Scan da data.cab https://www.virustotal.com/#/file/2a43b080250ff3e02a1d3d5409f765e70cd4385bca748bae1f0b4b35bbd9e00b/detection Bom é isso pessoal o intuito é acabar com essa cilada Aproveito para falar sim que existe programadores que realmente criam programas próprios e realmente cria uma boa proteção mas não é o que esta acontecendo aqui ultimamente então o intuito e acabar com essas pessoas que estão se aproveitando desse programa para querer enganar falando que a proteção foi criada por eles etc... sendo que é um programa gratuito e disponível na internet
  15. 2 pontos
    Então eu tinha esse script de carpet em transform_to a bastante tempo desde 2016, mais simples Então então estou postando hoje Vamos ao Assunto. vai em data "datapack"/actions/scripts Crie um arquivo chamado carpet.lua coloque isso Volte na pasta actions abra o actions.xml Coloque Carpet fechado Carpet aberto DONO: PokemonZbr ( Online ) DONO: OtPokemonTvZ ( Offline ) Links do meu jogo https://pokemonzbr.com/ (Online) http://otpokemontvz.com/ (Offline) Eu sou: Scripter: 5% Mapper: 30% Programador: 4% Website : 50%
  16. 1 ponto
    Salve salve galera do XT! Hoje vos trago o Wodbo Wars versão 5.9(de 2016) Creio que muitos daqui que joga dbo deve conhecer esse servidor, atualmente ele está online! Pra quem não sabe eu já fui da equipe, ajudei a dar inicio ao projeto, corrigindo bugs, scripts,mexendo com site,db etc... Por conta de mesquice do Arkam, ele me tirou da equipe e ai rolou treta entre eu e ele. Muitos já devem saber a história. Enfim... Decidi trazer para vocês pois faz muito tempo que a galera vive enchendo o saco para mim postar. E como esse servidor não tem nenhum valor para mim, só guardava e não postava por respeito ao Matheus P.(Arkam), mesmo tendo nossas intrigas, ele é um grande rapaz. Decidi postar, já que o mesmo não liga mais! Imagens: Bom, não estarei postando a distro original, estarei deixando a que ele utilizou no inicio. Recomendo vocês baixarem alguma src(source) e compilarem. Recomendo utilizar a do @Fir3element. No site dele oficial tem um bug de gerar várias vezes a RK, concertei isso para vocês. Assim podendo gera apenas uma vez! A base utilizado nesse servidor foi o Dbo Hunter(criado pelo Renan), esse servidor tem umas gambiarras, mas creio que irá ajudar muitas pessoas que não tem muita experiência de começar do 0. Utilizem como base, sejam criativos e entre pra concorrência ;D DOWNLOAD: Créditos: Matheus Pacheco(Arkam or Arkamed) Yan Liima(Night) As vezes certas pessoas se aproveita de outras para poder chegar longe. ;( Façam um bom aproveito, abraços!
  17. 1 ponto
    gabrielzika

    Erro no script

    @theodorogobi https://hastebin.com/fuwevatuji.rb
  18. 1 ponto
    crie um arquivo em globalevents com nome removerbatle.lua local function removeBattle(cid) doRemoveCondition(cid, CONDITION_INFIGHT) return false end function onThink(interval) for _, cid in ipairs(getPlayersOnline()) do local pos, tile = getThingPos(cid), getTileThingByPos(getThingPos(cid)) if getTilePzInfo(pos) == true then removeBattle(cid) end end return true end tag xml 1000 é equivalente a 1 segundo em servidores milesegundos , caso contrário você deverá usar "1" <globalevent name="removerbatle" interval="1000" event="script" value="removerbatle.lua"/> - Você pode retirar pela source também (o correto é por la.) caso queira. em protocolgame.cpp Procura por if(player->hasCondition(CONDITION_INFIGHT)) Troque por: if(player->getZone() != ZONE_PROTECTION && player->hasCondition(CONDITION_INFIGHT))
  19. 1 ponto
    O fórum tava travando e não consegui mandar antes. Fora que não tô conseguindo mandar a tag direito da forma que mandei, porque o fórum identifica [.i] pra por itálico na frase, mas enfim, mude a linha 95 por essa: doTeleportThing(player[i].uid, new_player_pos[i], FALSE)
  20. 1 ponto
    xugrude456

    poblema na soucer ou outro lugar talvez

    vlw men vc e meu heroi s2 teda rep
  21. 1 ponto
    gabriel28

    poblema na soucer ou outro lugar talvez

    Por isso esse script não está funcionando, você está tentando usar um script feito para versões 1.x. Vou ver se acho um script pra essa versão, se conseguir, editarei esse comentário. EDIT: Já achei, tava fácil numa pasta aberta aqui. hahaha
  22. 1 ponto
    Ayron5

    Item que spawna um pokemon

    @R e d Testa aí ^^ Cria na actions um lua com o nome invoca e coloca dentro... No actions.xml coloca essa tag. Se preferir mudar o item, edite na tag o numero "1822" É isso espero ter ajudado! Aguardo respostas ^^
  23. 1 ponto
    Pra caso queira saber o problema, você esqueceu de por vírgula no final de duas linhas, o que ocasionou o erro.
  24. 1 ponto
    mister17

    ajuda aqui coisa rapida

    Ola, testa com 3 players local players_pos = { {x = 1099, y =842, z = 7, stackpos = 253}, {x = 1098, y =842, z = 7, stackpos = 253}, {x = 1097, y =842, z = 7, stackpos = 253}, {x = 1096, y =842, z = 7, stackpos = 253} } local new_player_pos = { {x = 1073, y = 810, z = 8}, {x = 1072, y = 810, z = 8}, {x = 1071, y = 810, z = 8}, } vou aproveitar este script para montar um quest poketibia vlw
  25. 1 ponto
    xugrude456

    npc que cobra algo e dps da algo em troca

    obrigado sua ajuda foi muito boa s2
  26. 1 ponto
    @xugrude456 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 --------------------------- Configuração Inicial ------------------------------------ local strg = 9785 -- Valor da Storage local item = xxxx -- id do item local quant = yyy --quantidade --------------------------- Configuração das Falas ----------------------------------- if (msgcontains(msg, 'storage')) then if getPlayerStorageValue(cid, strg) < 1 then selfSay('Deseja receber a permissao? Para isso, deve me trazer X quantia do item Y', cid) talkState[talkUser] = 1 else selfSay('Voce ja recebeu a permissao.', cid) talkState[talkUser] = 0 end --------------------------- Falas de Entrada ----------------------------------- elseif(msgcontains(msg, 'yes') or msgcontains(msg, 'sim') and talkState[talkUser] == 1) then if getPlayerStorageValue(cid, strg) < 1 then if doPlayerRemoveItem(cid, item, quant) then setPlayerStorageValue(cid, strg, 1) selfSay('Permissao concedida com sucesso.', cid) talkState[talkUser] = 0 else selfSay('Voce nao tem o item.', cid) talkState[talkUser] = 0 end else selfSay('Permissao ja concedida anteriormente.', cid) return false end --------------------------- Falas de Rejeição ----------------------------------- elseif(msgcontains(msg, 'no') or msgcontains(msg, 'nao') and isInArray({1}, talkState[talkUser])) then talkState[talkUser] = 0 selfSay('Tudo bem entao.', cid) --------------------------- FIM do SCRIPT --------------------------------------- end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  27. 1 ponto
    xugrude456

    npc que cobra algo e dps da algo em troca

    me perdoe sou novo, 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 --------------------------- Configuração Inicial ------------------------------------ local strg = 9785 -- Valor da Storage --------------------------- Configuração das Falas ----------------------------------- if (msgcontains(msg, 'storage')) then if getPlayerStorageValue(cid, strg) < 1 then selfSay('Deseja receber a permissao?', cid) talkState[talkUser] = 1 else selfSay('Voce ja recebeu a permissao.', cid) talkState[talkUser] = 0 end --------------------------- Falas de Entrada ----------------------------------- elseif(msgcontains(msg, 'yes') or msgcontains(msg, 'sim') and talkState[talkUser] == 1) then if getPlayerStorageValue(cid, strg) < 1 then setPlayerStorageValue(cid, strg, 1) selfSay('Permissao concedida com sucesso.', cid) talkState[talkUser] = 0 else selfSay('Permissao ja concedida anteriormente.', cid) return false end --------------------------- Falas de Rejeição ----------------------------------- elseif(msgcontains(msg, 'no') or msgcontains(msg, 'nao') and isInArray({1}, talkState[talkUser])) then talkState[talkUser] = 0 selfSay('Tudo bem entao.', cid) --------------------------- FIM do SCRIPT --------------------------------------- end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
  28. 1 ponto
    kamus9629

    Segredo Sprite

    https://www.facebook.com/Segredo-Spriters-119431992040772/
  29. 1 ponto
    @xugrude456 Quando tiver pedidos assim, já posta o script junto pra agilizar. Essa minha resposta de agora já poderia conter a solução.
  30. 1 ponto
    Essa TFS não tem a função de doPlayerOpenChannel. Tu tem as sources? se tu tiver basta tu editar e depois compilar. Em um dos comentários eu ensino a como adicionar essa função, segue o post: Só que como você usa TFS 0.3.6, no lugar de LuaInterface tu substitui para LuaScriptInterface. Só fazer com atenção que tu consegue.
  31. 1 ponto
    @mister17 havia entendido outra coisa: -- Elemental Orb System -- -- Developed by Rigby -- -- Edited by JS Lotus -- local config = { --- [ID DA ORB] = {ID DAS STONES, QUANTIDADE{minimo, maximo}, [10542] = {fruit = 11441, quantity = {0, 1}, CommomM = {2132, 175}}, [10543] = {fruit = 11442, quantity = {0, 1}, CommomM = {2132, 175}}, [10544] = {fruit = 11443, quantity = {0, 1}, CommomM = {2132, 175}}, } local tempo = 600 -- tempo em segundos local tempoVip = 300 local stoTempo = 8120 function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerStorageValue(cid, stoTempo) >= os.time() then doPlayerSendTextMessage(cid, 27, "You have to wait "..(getPlayerStorageValue(cid, stoTempo) - os.time()).." seconds to use this item again.") return false end if getPlayerItemCount(cid, config[item.itemid].CommomM[1]) < config[item.itemid].CommomM[2] then doPlayerSendTextMessage(cid, 27, "Você nao possui os materiais necessários!") return false end if config[item.itemid] then local randomWin = math.random(config[item.itemid].quantity[1],config[item.itemid].quantity[2]) if randomWin > 0 then doPlayerAddItem(cid, config[item.itemid].fruit, randomWin) doPlayerSendTextMessage(cid, 27, "Parabéns! O processo de transformaçao foi realizado com sucesso, assim se transformando em "..getItemNameById(config[item.itemid].fruit)..".") else doPlayerSendTextMessage(cid, 27, "A orb quebrou durante o processo!") end doRemoveItem(item.uid, 1) doPlayerRemoveItem(cid, config[item.itemid].CommomM[1], config[item.itemid].CommomM[2]) if isPremium(cid) then setPlayerStorageValue(cid, stoTempo, os.time() + tempoVip) else setPlayerStorageValue(cid, stoTempo, os.time() + tempo) end end return true end
  32. 1 ponto
    @mister17 Veja se é isso: -- Elemental Orb System -- -- Developed by Rigby -- -- Edited by JS Lotus -- local config = { --- [ID DA ORB] = {ID DAS STONES, QUANTIDADE{minimo, maximo}, [10542] = {fruit = {11441, 11442, 11443, 11444}, quantity = {0, 1}, CommomM = {2132, 175}}, } local tempo = 600 -- tempo em segundos local tempoVip = 300 local stoTempo = 8120 function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerStorageValue(cid, stoTempo) >= os.time() then doPlayerSendTextMessage(cid, 27, "You have to wait "..(getPlayerStorageValue(cid, stoTempo) - os.time()).." seconds to use this item again.") return false end if getPlayerItemCount(cid, config[item.itemid].CommomM[1]) < config[item.itemid].CommomM[2] then doPlayerSendTextMessage(cid, 27, "Você nao possui os materiais necessários!") return false end if config[item.itemid] then local randomWin = math.random(config[item.itemid].quantity[1],config[item.itemid].quantity[2]) local randomStone = math.random (1, #config[item.itemid].fruit) if randomWin > 0 then doPlayerAddItem(cid, config[item.itemid].fruit[randomStone], randomWin) doPlayerSendTextMessage(cid, 27, "Parabéns! O processo de transformaçao foi realizado com sucesso, assim se transformando em "..getItemNameById(config[item.itemid].fruit[randomStone])..".") else doPlayerSendTextMessage(cid, 27, "A orb quebrou durante o processo!") end doRemoveItem(item.uid, 1) doPlayerRemoveItem(cid, config[item.itemid].CommomM[1], config[item.itemid].CommomM[2]) if isPremium(cid) then setPlayerStorageValue(cid, stoTempo, os.time() + tempoVip) else setPlayerStorageValue(cid, stoTempo, os.time() + tempo) end end return true end
  33. 1 ponto
    Crypter

    [Resolvido] colocar exaustão nesse item

    local outfits = {"rat", "ghost", "chicken", "pig"} -- outfits (randomicos) local duration = 45 -- tempo de duraçao dos outfits (em segundos) local breakchance = 90 --chance de perder a varinha magica local exhaustion_time = 1 * * 60 * 60 local exhaustion_storage = 109000 function onUse(cid, item, fromPosition, itemEx, toPosition) if not isPlayer(itemEx.uid) then doPlayerSendCancel(cid, "Use only on players.") return true elseif exhaustion.check(cid, exhaustion_storage) then doPlayerSendCancel(cid, "Wait " .. exhaustion.get(cid, exhaustion_storage) .. " seconds.") return true end if math.random(100) <= breakchance then local pos = getClosestFreeTile(cid, toPosition, true, false) if isWalkable(pos) then doSummonCreature("Mad Sheep", pos) doSendMagicEffect(pos, CONST_ME_SOUND_BLUE) end doRemoveItem(item.uid, 1) else doSetMonsterOutfit(itemEx.uid, outfits[math.random(#outfits)], duration * 1000) doSendMagicEffect(toPosition, CONST_ME_MAGIC_BLUE) end exhaustion.set(cid, exhaustion_storage, exhaustion_time) return true end
  34. 1 ponto
    Deadpool

    Bug Pokedex

    É no game_textmessage: Isso faz com que não apareça essas mensagens na sua telinha, deu pra entender?
  35. 1 ponto
  36. 1 ponto
    amiroslo

    MyOTClient

    MyOTClient MyOTClient é um site que permite você criar seu próprio cliente Tibia alterando informações como chave RSA, IP, título do cliente, URL e mais. No momento, o suporte é para somente os clientes do Tibia. Caso as pessoas se interessem, o criador poderá tornar essa ferramenta compatível com o OTClient. Versões suportadas: 7.40, 7.60, 8.00, 8.10, 8.54, 8.60, 9.80, 10.98. 1 - Site: https://myotc.xyz/ 3 - Créditos: Amiroslo
  37. 1 ponto
    A algumas horas um membro postou um programa que faz criptografia data.cab. irei postar o descompilador que faz o reverso esta em anexo. bom proveito pra quem quer descompilar. Para usar é bem simples: 1- Executa o Cliente que está com essa proteção falsa proteção ou seja Tibia.exe e data.cab sem "dll" se não tiver a dll é porque é falsa 2- executa o programa 3- ache o nome do executável 4- selecione o executavel e click para extrair, ele ira pedir um caminho onde você quer que extraia a spr pic e dat. selecione 5- All Done. spr dat e pic extraidas Lembrando esse programa não só extrai esse falso data.cab sem "dll", como extrair outros compilados no molebox. etc.. aqui está o topico para criar o data.cab Topico para criar o falso data.cab Bom Proveito a todos. scan -> https://www.virustotal.com/pt/file/417d9bcafc6d0cbe0b8ca733288663df3bd142c98c15739fcfd5bf2103187958/analysis/1550776230/ descompilador_data.cab.rar
  38. 1 ponto
    Muito bem lembrado, vou adicionar a condição pertencente a isso. Muito obrigado brow! @Tópico Editado e adicionado a condição. Adicionado imagens do funcionamento.
  39. 1 ponto
    Stigal

    [Source/Download] Tibia Client Extended

    Versão: 8.54 & 8.60 Recursos Estendidos: Arquivos do cliente estendido (excede o limite de sprite 65535) Arquivo .spr (permite usar transparência (atualmente só funciona em DX9 e OGL) Mostra porcentagem de saúde / mana no cliente Corrigido alguns problemas estranhos com timeGetTime (Windows 10 + Ryzen CPU) Manabar desenhado abaixo do jogador Excede o limite de 255 magic effects Excede o limite de 65535 max health display Excede o limite de 65535 max mana display Excede o limite de 255 skills display Source: SaiyansKing/Tibia-Extended-Client-Library Download: SaiyansKing/Tibia-Extended-Client-Library Créditos: OTLand (Madzix)
  40. 1 ponto
    Refe

    BUGS: Clonar item e "derrubar" servidores

    Hoje eu percebi que muitas pessoas estão levando a melhor com bugs de otserver. E eu vim aqui ensinar para vocês como fazer tais bugs, e para quem administra um servidor também saber como tal bug é feito e assim pensar em uma forma de fixar. Bug de mochilas: Morte no trade: Bug da nurse: Clonar item por guild: Bom, a minha ideia é mostrar como os bugs são feitos para os donos de servidores arrrumar. Obrigado pela atenção! Até a próxima.
  41. 1 ponto
    Michyalex

    [DXP] PokeAlpha OpenSource

    Eai galera ja que parei de fazer meu projeito basado no DXP V3, vou disponibilizar por si algum quer olhar ou fazer algo com isso. Cabe destacar que as modificaçoes sao para ficar quase o igual ao PXG, vou destacar que sou spanhol e sim alguma palabra fica errada fala para mim ^^! ¿O que contem? - Arrumado as maiorias dos portraits e balls "Unmovable" - Maioria das spells sao agora ao estilo do PXG * Thunder bolt posiçao arrumada * Stone edge, Rock Slide posiçao arrumada * Invisible spell arrumada *Tongue grap modificada agora quita vida e nao deixa mover ao pokemon * Great Love, Night Daze, Entre outros adicionado o efeito central. - Items.xml 1000-1200 items con nome - Bike system arrumado com storage independente - OTClient o layout da camera refeito para parecer ao PXG - Spells com cors (bug com Mega) - Añadidos 30 efeitos. - Arrumado o look para parecer ao PXG - Price System, Mark trabalha com $ e nao Gold - House look arrumado nas sources para ficar como PXG - Arrumado os cors do minimap de algums items - Fly, Ride, Surf, tem as velocidades reais do PXG - Mensagems em portuguesse foi trocado por Ingleis a malhoria - Market com exemplo de venda de Mega direito - Muitos sprites arrumados, outfits, items, efeitos. - Exp por stages igual ao PXG - Modulo do Autoloot modificado ¿Maior BUG? - Statschange.lua (Creaturescripts) - Surf ainda nao arrumado Downloads: Scans: ¿Como faço para editar esse mapa? Créditos: DXP TEAM Comunidade do XTIBIA Smix Deadpool (City-Name Module) Michy (eu)
  42. 1 ponto
    Yan Liima

    Ajuda Urgente (Alguem sabe?)

    Além de scripts, mexo com sites também. Isso dai é bestera, só ajeitar direitinho que roda sem xD. E na pasta config do site já da pra por um .htaccess para proibir o acesso de terceiros. No caso dele, não estava no config... .htaccess.rar
  43. 1 ponto
    wesleyt10

    FREE GALERA SPRITES FREE

    FREE FOR USE PODEM USAR A VONTADE GALERA (meu editor nao da opçao de visualizaçao) https://i.imgur.com/TMMZB8c.png
  44. 1 ponto
    Sammy

    [OtClient] Tutorial sobre Módulos

    Olá pessoal, vi esse tutorial em um site gringo sobre a parte básica dos módulos de um otclient, que pode auxiliar muita gente que quiser explorar ainda mais o Otclient, já que essa área eu não vejo tanto conteúdo no Tibia Br, como sempre os créditos estarão ao final do tópico... Então, para começar as coisas que eu vou estar cobrindo: - a criação de módulos. - repassar alguns dos fundamentos para trabalhar no ambiente otclients lua. como testar eficientemente seus módulos e scripts. Para este tutorial você vai precisar: - Um editor de texto de algum tipo (eu gosto de usar o Notepad + +) também seria bom ter conhecimentos básicos de lua e habilidades de programação (mas isso é algo que você pode pegar rapidamente praticando). Agora que já temos tudo o que precisamos, podemos começar ! CRIANDO O NOVO MÓDULO Otclient front-end funciona fora o que chamamos de ' módulos '. Os módulos são uma forma de implementar eficazmente os recursos do cliente separados uns dos outros. Se você está considerando a criação de um novo módulo, é aconselhável que você pense sobre o que o recurso pode ser e se ele iria caber em um módulo já existente (provavelmente um módulo game_xxx), os módulos são encontrados no diretório/modules do otclient. Seus são atualmente dois módulo ' ambientes ': jogo e cliente. Os módulos de jogo usam o prefixo game_ e devem estar refletindo recursos que se relacionam especificamente com os recursos do ambiente do jogador ou do jogo por exemplo game_outfit ou game_mounts são ambos os recursos que são usados no ambiente de jogo. Os módulos de cliente usam o prefixo client_ e devem estar refletindo recursos que se relacionam especificamente com o cliente e o cliente somente. Ele não tem nada a ver com o ambiente de jogo de jogadores, por exemplo, client_options e client_skins estão diretamente relacionados com a funcionalidade de clientes. Isso pode ser um pouco difícil de Visualizar para agora, mas você vai pegar isso mais tarde. Então, agora que você tem uma compreensão do que é um módulo e um pouco como eles funcionam, vamos em frente e começar a criar um novo. COMEÇANDO DO ZERO Nós estamos indo para criar um novo módulo a partir do zero, a primeira coisa que você precisa fazer é criar o diretório modules. O nome do diretório deve refletir o recurso global em si, por isso vamos chamar o nosso game_spells para começar a criar um novo módulo que irá listar todos os players spells com suas informações apropriadas. Nós não estaremos criando este módulo inteiro, mas podemos começar a ver como tudo funciona. Crie um novo diretório chamado game_spells dentro do diretório/Modules clientes. Dentro de game_spells precisamos começar adicionando 3 novos arquivos base: Spells. lua, feitiços. otmod e Spells. otui para a lógica de módulos, registro e design de interface. Criar 3 novos arquivos base spells.lua, spells.otmod e spells.otui dentro/modules/game_spells Você já deve saber o que o arquivo. lua representa, mas quais são essas novas extensões. otmod e. otui? .otmod .otmod é o arquivo que é usado para inicializar o módulo dentro do otclient, é como um registro em que ele irá registrar o módulo para uso dentro do cliente. Este arquivo geralmente tem uma estrutura como esta (eu adicionei comentários, se você copiar este código não se esqueça de remover o--comments): Module nome: game_spells -- nome do módulo (geralmente o mesmo nome que o diretório modules. descrição: Exibir a player spell com sua informação apropriada--descrição do módulo que explica o que é. autor: Sammy -- nomes dos criadores e colaboradores do módulo. website: www.otclient.info -- Se você tem um site externo que você pode ligá-lo aqui. sandboxed: true--sandbox é uma maneira de conter a variável modules e funções para que você não tenha conflitos entre outros módulos. scripts: [ spells.lua ] -- Os scripts são a lógica por trás do módulo onde todas as funções estão contidas. @onLoad: init() -- Este é o lugar onde você define a função de inicialização do módulo (nós vamos cobrir isso mais tarde). @onUnload: terminate() -- Este é o lugar onde você define a função de término do módulo (vamos cobrir isso mais tarde) Copie o código .otmod acima em seu arquivo spells.otmod e remova os comentários. .otui .otui é o arquivo que é usado para criar a interface de usuário modules. Esta é uma linguagem de estilo feito encomenda projetado especificamente para otclient chamado OTML, ele se sente muito como a formatação CSS para aqueles de vocês que têm experiência em webdesign. A estrutura típica de um arquivo .otui se parece com isso (este é o arquivo base iniciar, não concluído): MainWindow !text: tr('Spells') size: 160 450 @onEnter: modules.game_spells.destroy() @onEscape: modules.game_spells.destroy() Label id: spellsLabel !text: tr('Player Spells') width: 130 anchors.top: prev.top anchors.left: prev.left margin-top: 5 margin-left: 5 MainWindow: Esta é a janela que estaremos usando para a interface da Spell List, é uma classe de janela padrão derivado de/client_skins/default/styles/windows.otui styling file estende janela que estende UIWindow. UIWindow é uma classe base dessa inicialização, ele controla a funcionalidade widgets e comportamentos. !text: Este é o texto que é exibido na seção de cabeçalho MainWindow size: isso é usado para definir a largura/altura da mainwindow. @onEnter: configura o retorno de chamada de widgets de MainWindow OnEnter (função que será chamada quando você pressiona a tecla Enter). @onEscape: configura os widgets de retorno de chamada de MainWindow (função que será chamado quando você pressiona a tecla de escape). Label: Este é um widget de etiquetas que é usado para exibir texto na maioria dos casos. É um derivado da classe UILabel. id: Este é o ID que esta mais comum será alias-se com para referenciar usando funções como widget: getChildById ( "spellsLabel ") !text: Este é o texto que será exibido pelo widget UILabel. width: Este é o tamanho da largura do Label anchors. top/bottom/left/right: São onde a parte superior/inferior/esquerda/direita do Label devem ser posicionada. margin-top/bottom/left/right: São deslocamentos para as anchors, eles permitirão que você afinar o posicionamento dos componentes da interface do usuário. Esta é apenas a superfície de .otui formatação e styling, há muito mais que pode ser feito, mas a ideia principal é que você obter uma compreensão sobre como a hierarquia dos componentes da interface do usuário para exibir corretamente, etc as convenções de styling OTML forçá-lo a manter o projeto de um interface separado para o código lógico, por exemplo, o .lua Copie o código otui acima e coloque em spells.otui Agora que entendemos qual arquivo é usado para registrar o módulo e que arquivo (s) são usados para construir os módulos da interface do usuário, podemos aprofundar o código de lógica de módulos e tentar entender como tudo funciona em conjunto. O arquivo spells.lua é o arquivo que contém o código de lógica de módulos. É aqui que os spells serão preenchidos e o manuseio da seleção ortográfica e do display ortográfico serão controlados. Abra o arquivo spells.lua e copie o seguinte código base para começar. Nós estaremos escolhendo aparte este código para ajudar a entendê-lo melhor. Eu fui em frente e comecei o código base para você, aqui está: Spells = {} spellWindow = nil selectedSpell = nil spells = {} function init() connect(g_game, { onOpenSpellWindow = Spells.create, onGameEnd = Spells.destroy }) end function terminate() disconnect(g_game, { onOpenSpellWindow = Spells.create, onGameEnd = Spells.destroy }) Spells.destroy() Spells = nil end function Spells.create(spellList) spells = spellList Spells.destroy() spellWindow = g_ui.displayUI('spells.otui') end function Spells.destroy() if spellWindow then spellWindow:destroy() spellWindow = nil selectedSpell = nil spells = {} end end function Spells.selectSpell() if table.empty(spells) then return end -- TODO end As principais coisas que eu quero focar aqui são: as variáveis (spellWindow, selectedSpell e spells). e as funções (armazenamento de funções e discutir o que init e Terminate são necessários). O VARIÁVEL Variáveis dentro de um módulo em modo seguro não precisam ser localizadas com a palavra-chave local como elas estão dentro de seu próprio ambiente de módulo. Se o módulo estiver em modo seguro: false, então você precisará certificar-se de que você localize a variável e redefini-los dentro da função Terminate (que vamos discutir mais tarde). Dentro deste módulo de feitiço precisamos ter uma maneira de armazenar o objeto janela módulos, fazemos isso definindo a variável spellWindow que temos inicializado como nulo, mas que vamos configurar em breve. Nós também precisamos de uma maneira de conter o que o jogador selecionou o que significa que devemos armazenar uma referência para o spell de alguma forma usando a variável selectedSpell. Por último, mas não menos importante e provavelmente não duram tanto! Precisamos armazenar a lista de spells e fazer isso com a variável Spells. AS FUNÇÕES Funções muito como variáveis estão contidas em módulos de área restrita para que a localização pode variar dependendo de suas preferências. Se você não estiver usando um module sandboxed: true, em seguida, você precisará certificar-se de que você está localizando e armazenar funções corretamente. Eu pessoalmente gosto de usar uma tabela para armazenar minhas funções dentro para manter as coisas organizadas mais este é o lugar onde você vê spells = {}. Spells é uma tabela que eu estarei usando para armazenar todas as funções públicas de um módulo. Funções de módulo privado serão localizadas mesmo que não seja inteiramente necessário dentro de um módulo em modo seguro, eu prefiro declarar quando a função é privada através da palavra-chave local. Então, quais são as funções init () e Terminate () usado para? Como você já deve ter notado dentro dos feitiços .otmod código que você vai ver: @onLoad: init() @onUnLoad: terminate() init() A função init é uma função que é chamada quando otclient tenta carregar o módulo registrado usando chamada de sinal OnLoad. Dentro desta função você deve estar inicializando todos os componentes que são exigidos pelo seu módulo. Como você pode ver dentro de spells.lua estamos chamando uma função dentro de init (): connect(g_game, { onOpenSpellWindow = Spells.create, onGameEnd = Spells.destroy }) terminate() A função Terminate é uma função que é chamada quando otclient tenta descarregar o módulo registrado usando a chamada de sinal OnUnload. Dentro desta função você deve estar destruindo e redefinir variáveis que precisam ser desmarcadas na terminação do módulo. Lembre-se de que nem todas as variáveis precisarão ser redefinidas, mas as referências de widget e a tabela de spells são todas necessárias para serem redefinidas. Como você pode ver dentro de feitiços. lua estamos chamando e definindo uma série de coisas dentro de terminate(): disconnect(g_game, { onOpenSpellWindow = Spells.create, onGameEnd = Spells.destroy }) Spells.destroy() Spells = nil Afirmei anteriormente que chamamos a função Connect dentro init (). Agora que estamos encerrando o módulo precisamos desconectar os retornos de chamada do conjunto de chamadas de sinal. Isto é feito através da função de desconexão (...). Com estas principais coisas cobertas você pode muito bem fazer o que você gosta dentro do módulo. Você pode com cuidado construir e craft o para inserir o que você precisa. Siga através do tutorial para estender o seu conhecimento de criação de módulos e também trabalhar dentro do ambiente do módulo otclients. COMO TESTAR EFICAZMENTE OS SEUS MÓDULOS Testar seus módulos será uma parte importante de fazê-los trabalhar da maneira que você precisa. Módulos de teste pode, por vezes, ser um pouco de um desafio para que haja algumas coisas que você precisa saber, a fim de torná-lo mais fácil para você. RECARREGANDO OS SEUS MÓDULOS Você pode recarregar seus módulos no cliente usando o Gerenciador módulo módulo Gerenciador módulo selecione seu módulo e clique em recarregar. Esteja ciente de que o seu init () e terminate (), funções serão chamados em recarregar por isso, se você não está inicializando e destruindo coisas particulares corretamente, então você pode obter erros no recarregamento. Nota importante: existem algumas alterações raras que podem não ser recarregadas corretamente com o gestor de módulos, coisas como .otui @ alterações (por exemplo, @onClick: edits). Pode haver algumas outras mudanças que não recarregam corretamente, mas para a maior parte ele funciona bem. Se você se encontrar com erros estranhos tentou fazer um reinício completo do cliente para garantir a sua não uma emissão de recarga. COMANDOS DE TESTE ÚTEIS Há uma seleção de comandos úteis que podem ser úteis para testes encontrados no arquivo de script/modules/client_terminal/Commands.lua. Aqui está uma lista dos comandos atuais que você pode inserir no terminal do cliente: dumpWidgets(widget, level) drawDebugBoxes(enable) hideMap() showMap() debugContainersItems() debugPosition(enable) autoReloadModule(name) Você pode adicionar novos comandos ao seu diretório/mod, a fim de evitar fazer alterações no arquivo de comando modules. Você deve sempre assegurar-se de que seus módulos estejam testados completamente antes de criar solicitações da tração ao repositório principal do git. Estas dicas podem ser muito úteis nas fases de teste! ALGUMAS ORIENTAÇÕES ÚTEIS Ao desenvolver seu módulo seja certo dar-lhe lotes do pensamento sobre como está indo trabalhar e mesmo se você pode fundir a característica a um módulo já existente. Também funções globais e variáveis constantes podem ser encontradas nos diretórios modules/corelib e modules/gamelib. Por favor, dê uma cuidadosa consideração para o que você colocar nesses arquivos e se possível tentar evitá-lo. Siga a regra "manter tudo para sua própria causa, e apenas essa causa ". FIM DO TÓPICO =] CRÉDITOS: edubart BeniS Eu(pela tradução e adaptação para o português)
  45. 1 ponto
    Amigo, poderia arrumar o Spawn.lua que está no creaturescript.. Está causando algum conflito que não estou sabendo resolver. Desde de já obg. Um printzinho só pra mostrar
  46. 1 ponto
    Skullzx

    PokéBar/MoveBar/Sound para OLD Client

    Venho através desse POST, disponibilizar para vocês duas DLL's, uma de poke e move bar, e a outra consiste em um sistema de som, para old client! (POKETIBIA) 1º Baixe as Dll's aqui -> Download scan: aqui 2º Baixe o Stude_PE aqui -> Download scan: aqui (OBS: OS SCANS REGISTRAM IRREGULARIDADES, PORÉM FALANDO DE UM PROGRAMA QUE FAÇA INJEÇÃO E MODIFICAÇÕES EM EXE, E DLL'S, É SEMPRE DIFÍCIL VER ALGO 100% LIMPO OU SEJA SÃO AMEAÇAS INOFENSIVAS) 3º Siga o Tutorial, para fazer a instalação. OBS: Pode ser que não funcione em todos devido às config. de sua Base! Créditos: Eu - Por Fazer o Tutorial e disponibilizar Nest Silva - Dono do Server, o qual eu encontrei as DLL's(PokeIlusion) Não encontrei o Responsável, por essas DLL's, porém à ele pertence os Créditos
  47. 1 ponto
    Refe

    TalkColor - RedMoon

    Para esse tutorial você precisa de: --> Sources OTCLIENT --> Cores (Parte 2 Tutorial) Parte 1, Sources OTC Parte 2: Cores Esse sistema eu desenvolvi para o RedMoon: a Real RPG Server Página do facebook: RedMoon
  48. 1 ponto
    Crypter

    [0.3.6-0.4] Explosive mine

    Sistema simples que ao pisar em "X" item com a action id ele explode // Em data/lib Crie um arquivo chamado Mine.lua function setItemAid(uid, value)return doItemSetAttribute(uid, 'aid', value)endfunction removeBomba(pos, id)local item = getTileItemById(pos, id) if item.uid > 0 then doRemoveItem(item.uid) endreturn trueend Em data/movements/scripts Crie um arquivo chamado Mine.lua local config = {effect1 = 4, -- efeito ao pisareffect2 = 5, -- efeito ao explodirmsg = "Você foi acertado pela bomba.", -- msg que manda pra quem for acertadomindmg = 100, -- dmg minimo que tira (nao é necessariamente o dano que vai sair do cara pois precisa desconsiderar as defesas dele antes)maxdmg = 300, -- dmg maximo que tira (nao é o dano que vai sair do cara)self = true -- true/false pra ativar/desativar dano no cara que colocou a bomba caso ele mesmo passe na bomba.}local arr = {{0, 1, 0},{1, 3, 1}, -- area que vai acertar ao explodir a bomba{0, 1, 0},}local area = createCombatArea(arr)function onStepIn(cid, item, position) local player = getPlayerByNameWildcard(getItemAttribute(item.uid, 'ref')) doSendMagicEffect(position, config.effect1) if isCreature(player) then doAreaCombatHealth(player, COMBAT_FIREDAMAGE, position, area, -config.mindmg, -config.maxdmg, config.effect2) end if ((cid == player and config.self) or (not isPlayer(cid)) or (not isCreature(player))) then doCreatureAddHealth(cid, -1 * math.random(config.mindmg, config.maxdmg)) doSendMagicEffect(position, config.effect2) end if isPlayer(cid) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.msg) end doRemoveItem(item.uid)return trueend Em movements.xml <movevent type="StepIn" actionid="13245" event="script" value="Mine.lua"/> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Caso voce queira rodar esse movements em uma spell data/spells/scripts: Crie um arquivo chamado mine.lua local config = {itemid = 2180, -- Id do item que ira explodir duration = 10, -- duração para ser removidaactionid = 13245, --Nao mechaeffect = 1, -- efeitomsg = "Planted explosive mine!" -- mensagemcooldown = 120, --- tempo entre um uso e outro em segundo}function onCastSpell(cid, var) if os.time() - getPlayerStorageValue(cid, 55695) >= config.cooldown then setPlayerStorageValue(cid, 55695, os.time()) local position = getCreaturePosition(cid) local item = doCreateItem(config.itemid, 1, position) setItemAid(item, config.actionid) doItemSetAttribute(item, 'ref', getCreatureName(cid)) doCreatureSay(cid, config.msg, 20) doSendMagicEffect(position, config.effect) addEvent(removeBomba, config.duration * 1000, position, config.itemid) elsedoPlayerSendCancel(cid, "Aguarde "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, 55695))).." segundos para plantar outra bomba!") endreturn trueend Em Spells.xml <instant name="Explosive Mine" words="Explosive Mine" lvl="1" mana="1" prem="0" aggressive="1" exhaustion="1000" needlearn="0" event="script" value="mine.lua"> <vocation id="1"/></instant> Se Voce Gostou da script da um REP+ e me Segui .!
  49. 1 ponto
    OLá galera, Trazendo de outro fórum, vou ajudar vocês a deixar a página inicial do modern acc assim. [Testado Modern Acc v3 Avuenja] É simples, basta ir em \injections\home e criar uma nova pasta chamada Aleh-Table agora pegue esse código e salve dentro dessa pasta com o nome de injection.php Por fim, edite aqui <script> $(document).ready(function() {$('#serverStats').fadeIn(7000)}); </script> o tempo que vai levar para aparecer. no meu deixei em 3000 Fim Créditos. Aleh < da otland Eu < por traduzir e trazer até aqui o/
  50. 1 ponto
    gristony

    Perfect nick system 100%

    sim, serve para player também. int32_t LuaScriptInterface::luaDoCreatureSetNick(lua_State* L) { //doCreatureSetNick(cid, nick) ScriptEnviroment* env = getEnv(); std::string nick = popString(L); Creature* creature = env->getCreatureByUID(popNumber(L)); if(creature) { Player* player; creature->nick = nick; player->sendCreatureNick(creature); }else{ lua_pushnil(L); } return 1; } edit topic corrigido em protocolgame procure por void ProtocolGame::AddCreature(NetworkMessage_ptr msg, const Creature* creature, bool known, uint32_t remove) { if(!known) { em baixo de msg->put<uint32_t>(creature->getID()); adicione std::string nick = creature->getName(); if (creature->nick != "") nick = creature->nick; substitua msg->putString(creature->getHideName() ? "" : creature->getName()); por msg->putString(creature->getHideName() ? "" : nick);
Líderes está configurado para São Paulo/GMT-03:00
×
×
  • Criar Novo...