Líderes
-
xWhiteWolf
HéroiPontos3605Total de itens -
-
NickFuCked
MembroPontos121Total de itens -
Conteúdo Popular
Exibindo conteúdo com a maior reputação em 07/01/15 em todas áreas
-
Volatile Spiderling
Volatile Spiderling
Claudio Marcio e 2 outros reagiu a xWhiteWolf por uma resposta no tópico
3 pontosFala galera do TK, hoje eu venho mais uma vez trazer uma das magias mais incríveis que eu já vi até hoje (sério). A magia original foi feita em outro fórum mas para a versão 10.1... como eu vi que ninguém conseguiu adaptar pra versões inferiores eu decidi criar a minha própria volatile spiderling. Confesso que no começo eu tive muita dificuldade em achar as funções certas mas depois de tentar ajudar o membro @234567890z no suporte eu tive uma epifania. Sem mais delongas eu vou explicar oque o script faz e em seguida ensinar a colocá-lo no seu server. • Explicação: A magia foi feita baseada na personagem Elise do jogo League of Legends: você faz uma cria que anda até os oponentes e se explodem causando dano em area e deixando eles envenenados. Aqui tem um gif da magia funcionando obs: note que esse gif não fui eu que fiz mas ele demonstra exatamente como a magia funciona. • Instalação: Pra instalá-lo no seu servidor vai ser um pouco complicado pois ele requer diversas modificações... antes de mais nada, coloque essas linhas no seu spells.xml: <instant name="Volatile Spiderling" words="utevo res tera" lvl="40" mana="20" prem="1" selftarget="1" exhaustion="2000" groups="1,2000" icon="88" needlearn="0" event="script" value="especiais/spiderling.lua"> <vocation id="3"/> <vocation id="7"/> </instant> <instant name="poison explosion" words="poison explosion" lvl="0" mana="0" prem="0" aggressive="1" exhaustion="3000" needlearn="1" event="script" value="especiais/newspider.lua"> </instant> Agora você vai ter que criar os dois arquivos na pasta spells\scripts\especiais. Em newspider.lua coloque o seguinte: agora em spiderling.lua coloque o seguinte: Agora feito isso vc vai precisar criar o monstro que usará essa spell.. vá em monster\monsters.xml e adicione a seguinte linha: <monster name="Clone Spider" file="arachnids/newspider.xml"/> agora crie o arquivo data\monsters\arachnids\newspider.xml e adicione o seguinte nele: local poisonpowder = createConditionObject(CONDITION_POISON) setConditionParam(poisonpowder, CONDITION_PARAM_DELAYED, 1) local damageTable = { {4, -3}, {9, -2}, {20, -1} } for i = 1, #damageTable do local t = damageTable[i] addDamageCondition(poisonpowder, t[1], 4000, t[2]) end local arr = { {0, 1, 0}, {1, 3, 1}, {0, 1, 0} } local area = createCombatArea(arr) function onPrepareDeath(cid, deathList) if isMonster(cid) and getCreatureName(cid):lower() == 'clone spider' then doAreaCombatHealth(cid, 1, getThingPos(cid), area, -1, -30, 20) doAreaCombatCondition(cid, getThingPos(cid), area, poisonpowder, 255) doSendMagicEffect(getThingPos(cid), 16) end return true end Agora eu vou ensinar vocês a editarem... não tem muito oque mudar, apenas se vc quiser alterar os danos da spell vá em newspider.lua e será possível editar os danos do poison e da explosão: local damageTable = { {4, -3}, {9, -2}, {20, -1} } aqui você muda quantos danos serão e quanto cada um tirará.. no caso serão 4 hits de -3, depois 9 hits de -2 e por fim 20 hits de -1 até o poison parar. Lembrando que esses danos saem de 4 em 4 segundos. Se você quiser que eles sejam mais rápidos é só editar aqui: addDamageCondition(poisonpowder, t[1], 4000, t[2]) (4000 significa 4 segundos). Feito isso será possível editar também a area e o dano da explosão respectivamente em: Area: Dano: doAreaCombatHealth(cid, 1, getThingPos(cid), area, -1, -30, 20) Em vermelho temos o dano mínimo, analogamente, em azul, temos o dano máximo. Em verde é possível editar o efeito da explosão Só lembrando que as edições que forem feitas no newspider.lua devem ser feitas no spider.lua para que a magia tenha graça.. se não o dano da explosão/poison ao explodir será diferente caso ela morrer antes. Em spiderling.lua vc pode editar a quantidade máxima de crias que um player pode ter... o normal está setado para 2 mas vc pode sentir-se livre pra colocar quantas queira. local maxsummon = 2 (Só lembre-se que ao explodir uma aranha pode acertar outra então não é muito bom deixar um numero maior que 3); Se você for daqueles bem chatinhos com a magia você ainda pode editar algumas coisas importantes tais como: O efeito que sai quando ela explode por morte ou pela spell: doSendMagicEffect(getThingPos(cid), 16) O tempo em que ela executa a spell, a chance da spell sair naquele tempo e quantos sqm de distancia a criatura alvo deve estar pra aranha se explodir: <attack name="poison explosion" interval="1000" range="1" chance="50"/> interval = de quantos em quantos segundos ela executa a spell range = distancia em sqm que o alvo deve estar pra que ela execute a spell chance = chance de executar a spell a cada interval (nesse caso a cada 1 segundo tem 50% de chance dela soltar a magia) Você ainda pode editar aqui em vermelho: o tempo que leva pra criatura executar a magia.. Por padrão eu deixei 2 segundos, ou seja... eu sumono a aranha, ela vai até o alvo e a cada segundo q ela passa grudada no alvo (1 sqm de distancia) ela tem 50% de chance de ativar a spell e ficar parada no lugar durante 2 segundos até explodir. Se você quiser que ela leve menos tempo pra explodir é só baixar o 2000 (em milisegundos).. Se você quiser aumentar o dano e deixar ela parada por mais tempo até explodir pode editar a vontade aumentando os 2000. • Bom, isso é tudo que dava pra eu explicar... é óbvio que dá pra editar muito mais coisa mas se você não é scripter e não tem muita idéia de como editar eu dei uma ensinada básica doque você está autorizado a mexer. Espero que vocês curtam a spell e deem aquele REP+ pra fortalecer kkkk Eu não pretendia liberar essa spell visto que ela é extremamente complexa e nenhum servidor tem ela, mas, acho que seria muito babaca da minha parte ficar guardando um script tão bonito hahaha. Qualquer erro ou dúvida postem nos comentários que eu tento ajudar. ah, mais uma coisa: Os créditos são 90% meus visto que eu fiz praticamente tudo.. 9% é pro cara que fez a magia original (se vcs derem uma procurada vcs vão ver que não tem quase nada a ver com a minha mas os créditos dele são por ele ter me dado a idéia) e 1% pro cara no suporte que me pediu ajuda numa spell do mesmo gênero e me fez correr atrás de uma forma de fazer essa magia pra versões inferiores a TFS 1.03 pontos -
Remere's Map Editor (7.6 à 10.79)
Remere's Map Editor (7.6 à 10.79)
premii e um outro reagiu a Tricoder por uma resposta no tópico
2 pontosIntrodução Versão: 7.6 à 10.79. Utilize o tibia.dat e tibia.spr originais. Você poderá baixar versões do Tibia neste link. items.otb oficiais. ATENÇÃO Para todos aqueles que usam mapas RL, antes de fazer quaisquer alterações ao item.otb e items.xml do RME, é recomendável arrumar seu mapa, porque os mapas disponibilizados em alguns fóruns, dependendo de sua versão, podem trazer futuros problemas por terem sido modificados em outros map editor. Requisitos Microsoft Visual C++ 2010: Windows 32B | Windows 64B Microsoft Visual C++ 2011/12: Windows 32B & 64B Microsoft Visual C++ 2013: Windows 32 & 64B Versão antiga 10.76 do items.otb RME items.otb oficial 10.78/10.79 Download | Scan | Sources Créditos hjnilsson - Sources Kruger Developers - items.otb + actualização ricker75 - Disponibilização Larissa Azhaurn - Tópico e Scan.2 pontos -
[TFS 0.4][8.54]Pokemon Dash Advanced (PDA) + Sources
Nova Atualização Pokemon Online (2015) • Menu: ├ Informações Gerais; ├ Erros; ├ Prints; ├ Download; ├ Download Ultilitarios; ├ Scans; └ Creditos; • Informações Gerais; • ERROS; • BUGS GERAIS; • PRINTS; • DOWNLOADS; • DOWNLOAD Ultilitarios; • Scans; • CREDITOS;1 ponto
-
[MOD] Top Button
1 pontoEai pessoal, beleza? Trago pra vcs um mod para otclient... Um simples botão que aparece no topo do client, clique e aparecerá uma lista de opções, cada uma com a função de executar uma talkaction [Tudo configurado por você] Vamos lá, para instalar é simples 1. Baixe o arquivo; 2. Extraia para a pasta de seu client; 3. Edite oque quiser; Bom, segue onde editar No arquivo mods/mod_topbutton/mod_topbutton.lualocal config = { id = 'modTopButton', --Não pode conter espaços name = 'Top Button', --Nome que aparecerá quando passar o mouse por cima do botão img = 'button', --ícone do botão [no caso, pega a imagem button.png localizada na pasta do mod] options = { --opções que aparecem ao clicar no botão --[texto] = comando, ['Opcao 1'] = '!comando 1', ['Opcao 2'] = '!comando 2', }} Um exemplo de uso é o Checkpoint System v1.1 DOWNLOAD SCAN1 ponto
-
[Pokemon Kpdo] Pokemon kpdo exaioros By Cater
[Pokemon Kpdo] Pokemon kpdo exaioros By Cater
Bruno Maciell reagiu a kpdo por uma resposta no tópico
1 pontoOlá caros amigos do forum estou aqui postando o pack completo do pokemon kpdo que atualmente se econtra online a 3 anos, eu sou o administrador do atual servidor pokemon kpdo, irei primeiramente falar o motivo de eu estar postando. Um dos meus EX-staffs roubou os arquivos que eu passei e resolveu vender a terceiros o que eu achei muito anti-ético então resolvi postar open source, pois o que o mesmo fez comigo foi muito errado então não restou a nao deixar gratuito para que o mesmo não lucre nas minha costa. Download: Client+Servidor: Mega Scan: O scan pega o client como um falso positivo por ter injeção de dll injection da barra do meu cliente porém vale lembrar que não tem virus, assim como o pack é um falso positivo. Link do Scan: VirusTotal Os sistemas que o jogo tem são: Sistema de som Cool down e poke bar. Duel System Tv Cam System Sistema de torneio Sistema de Duelos com aposta Pokemons da 1 até a 5 geração e seus devidos shinys. Sistema de shinys Muitas quests TM system etc. Creditos: Renan(Admin) Equipe staff kpdo atual e EX staffs; www.exaioros.com1 ponto -
[Show-OFF] Ultimo projeto para download?
[Show-OFF] Ultimo projeto para download?
Ajuka2 reagiu a Gabrieltxu por uma resposta no tópico
1 pontoEai galera beleza? então já vem um tempo que venho falando que vou fazer um ultimo projeto para download para a galera e tals , esses dias pensei bem se iria fazer mesmo e começei a fazer essa minha ultima contribuição , criei esse tópico para um Show Off do meu ultimo trabalho , nome dele vai ser Pokémon Opal . --//Pokémon Opal / Inicio do projeto 15/12/2014/ \\-- Caracteristicas do Servidor até Agora : Modificações que não vai ter nesse server que contem no PDA (Por enquanto , essa lista vai mudar ao decorrer do projeto ): - Gender System - Shinys Aleatorios Prints do avanço: Créditos (Pode mudar de acordo com o avanço do projeto): -Eu -Aberos (por me ajudar) -ZerefSoares (por me ajudar) -Slicer e brun123 (pelos sistemas do pda) -Erondino (pelo distro + sources) - OrochiElf (Por ajudar nas sources) é isso Galera vou indo fazendo com o tempo , não me cobre , tenho vida social tambem , não é todo o dia que vou mecher no servidor , mas é isso nada de novo , mas apenas outro distro totalmente diferente + sources , creio que vai ajudar muitas pessoas que curte o pda, Lembrando que ele não vai ser livre de bugs , pesso ajuda tambem para a galera que queira ajudar no projeto me enviar uma PM com contato do facebook para eu adicionar para conversarmos melhor. Se gostou do projeto da um rep+ ai e vlw flw ! Bjao do Tiu GabrielTxu! :*1 ponto -
setCreatureName(cid, name, description)
setCreatureName(cid, name, description)
FeeTads reagiu a luanluciano93 por uma resposta no tópico
1 pontoOlá pessoal, eu estava ajudando um amigo em um script de Tibia Naruto, e me deparei com a necessidade de usar uma função para trocar o nome de um summon, mas isso teria que ser inGame, e depois de procurar um pouco achei a função setCreatureName, que faz exatamente o que eu precisava. O que ela faz? Como eu expliquei acima, ela muda o nome da Creature inGame, podendo ser bastante útil (dependendo da sua criatividade). Como instalar? A instalação é feita inteiramente nas sources, então vamos lá .. 1 - No arquivo monster.h encontre esse trecho: class Monster : public Creature { private: Monster(MonsterType* _mType); public: E adicione isso abaixo de public:: std::string name, nameDescription; 2 - Ainda em monster.h procure por: virtual const std::string& getName() const {return mType->name;} E substitua por isso: virtual const std::string& getName() const {return name;} 3 - Ainda em monster.h procure por: virtual const std::string& getNameDescription() const {return mType->nameDescription;} E substitua por isso: virtual const std::string& getNameDescription() const {return nameDescription;} 4 - Ainda em monster.h procure por: virtual std::string getDescription(int32_t) const {return mType->nameDescription + ".";} E substitua por isso: virtual std::string getDescription(int32_t) const {return nameDescription + ".";} 5 - Agora em monster.cpp procure por: Monster::Monster(MonsterType* _mType): Nas linhas abaixo tem a linha: raid = NULL; , adicione isso logo abaixo: name = _mType->name; nameDescription = _mType->nameDescription; 6 - Agora em luascript.h adicione isso perto das linhas semelhantes: static int32_t luaSetCreatureName(lua_State* L); 7 - Agora em luascript.cpp adicione isso perto das linhas semelhantes: //setCreatureName(cid, name, description) lua_register(m_luaState, "setCreatureName", LuaInterface::luaSetCreatureName); 8 - Ainda em luascript.cpp adicione isso perto das linhas semelhantes: int32_t LuaInterface::luaSetCreatureName(lua_State* L) { // setCreatureName(cid, newName, newDescription) std::string newDesc = popString(L); std::string newName = popString(L); ScriptEnviroment* env = getEnv(); Creature* creature; if (creature = env->getCreatureByUID(popNumber(L))) { Monster* monster = (Monster*)creature; monster->name = newName; monster->nameDescription = newDesc; lua_pushboolean(L, true); } else { errorEx(getError(LUA_ERROR_CREATURE_NOT_FOUND)); lua_pushboolean(L, false); } return 1; } Pelo fato de algumas diferenças no modo de escrever a função entre as TFS, pode ocorrer erros, e então substitua as seguintes linhas dos 2 passos anteriores: Créditos: Scarlet Ayeid É isso pessoal ... um exemplo de uso dentro de alguma função é assim basicamente: local pos = {x = 10, y = 10, z = 7} local Teste = doCreateMonster("Rat", pos) setCreatureName(Teste, ""..getCreatureName(cid).."", "a "..getCreatureName(cid).."") Espero ter ajudado pessoal, até mais.1 ponto -
New Library v. 1.2
New Library v. 1.2
Underewar reagiu a xWhiteWolf por uma resposta no tópico
1 pontoFala galera, hoje vim trazer pra vocês uma nova biblioteca de funções que eu venho desenvolvendo, pretendo ir atualizando esse tópico constantemente sempre adicionando funções novas e explicando a utilização delas. Algumas funções que eu coloquei aqui estão presentes na OTAL também, porém algumas eu fiz pequenas correções de forma que essa lib poderia facilmente substituir a OTAL sem grandes problemas (pelo menos se você utilizava apenas as funções básicas da otal) Todas as funções que não tem -- nome do autor do lado dela foram feitas por mim, xWhiteWolf ou Night Wolf (NW). O restante delas são créditos dos devidos autores, apenas coloquei pois considero funções vitais no server de cada um. Crie um arquivo em data/lib chamado 075 - White Wolf Functions.lua e coloque o seguinte código dentro: Agora eu vou explicar oque cada função faz porque de nada adianta lançar uma lib e não explicar oque ela faz não é mesmo? hahaha Obs inicial: quando uma função tiver em seus parametros um [] significa que oque está dentro do colchetes não é um parâmetro obrigatório. Como usar: doShowTimeByPos(cid, getCreaturePosition(cid), 20, 20) Irá fazer uma contagem regressiva na posição que o player se encontra começando de 20 e mandando a mensagem na mesma cor da fala dos monstros. Essa função é bem útil em actions/spells para fazer contagem de tempo em runas como a magic wall e ver quanto tempo falta pra magic wall sumir) Obs: Espero que ajude bastante pessoas a entender sobre funções, eu utilizei cid como o principal uid das funções nos exemplos mas você pode muito bem utilizar outros uids, fica a critério seu. Qualquer dúvida comentem abaixo que eu vou tentar ajudar da melhor maneira. Ahhh, isso daí foi testado em 8.54 mas deve funcionar em quase todas as versões que tenham as funções básicas do TFS. EDIT: Pessoal, agora é sério, essa lib tem fácil umas 600 linhas, das quais umas 500 eu devo ter codado sozinho (na mão, linha por linha). Eu tive todo o trabalho de testar cada uma delas e oque eu peço é o mínimo de gratidão e respeito. Se eu te ajudei clique em Gostei, se você tiver alguma dúvida eu to me colocando a disposição de responder qualquer coisa relacionada ao tópico, mesmo que você não saiba nem oque é uma lib apenas venha aqui e escreva sua dúvida. EDIT 2: Duas novas funções adicionas, espero que gostem! EDIT 3: Três novas funções adicionadas juntamente com suas respectivas explicações.1 ponto -
[OTC] Manager Window
1 pontoTestado: Otclient 0.6.7, TFS 0.4 Versão: 1.0 Descrição: Um mod que adiciona um botão, ao lado esquerdo do seu painel, quando clicar irá aparecer uma janela, com comandos. Autor: Snowsz Imagem: Bom, só coloquei os comandos que mais uso, acho que ele seja auto explicativo, mas, vou explicar um pouco... Em name coloque o nome do player, marque uma caixinha do que será adicionado, e em count coloque o valor que o player deverá ganhar desse determinado skill, após isso, clique em Addskill. Os dois "X" são para limpar a caixa, assim como o botão, clear, para limpar as caixas dos outros comandos. Quando clicar em reload, vai aparecer uma lista de opções, clique na que quiser dar reload. No botão commands, quando clicar, irá aparecer a lista de comandos. Ele só funciona com players que possuam cargo GM, CM e GOD. Coloque isto no seu login.lua(para quem não sabe, no seu servidor não no CLIENT!): if getPlayerAccess(cid) > 3 then doPlayerSendCancel(cid, "$@$Administrador") doPlayerSendCancel(cid, " ") end Download V2: Link: https://www.dropbox.com/s/axmop6e80mvlfi7/managerwindow.rar?dl=0 (coloque o arquivo na pasta mods) Scan: https://www.virustotal.com/pt/file/8fbe8b00e272f623bd2ac70c5fa1c39855d5e9c8469efcaae841db2e9eec138a/analysis/1422324181/ Atualizado para versão 2, removido todos os bugs que encontrei e adicionado novos botões, para adicionar mais comandos basta abrir o arquivo lua do mod, procurar por "local uses" e adicionar mais. (obs: esses comandos do "uses", não podem precisar de parâmetro, ex: /r 10) -->Change log v2 -Retirado alguns bugs -Código diminuído e melhor identado -Adicionado novas funcionalidades -Adicionado compatibilidade do comando addskill para "skills", como distance, shield e sword, entre o restante.1 ponto
-
Pack para RME 9.6!
1 pontoBom galera esse é um Pack para quem ta querendo editar seus mapas 9.60, com ele você poderá fazer isso com um pouco mais de facilidade. Lembrando todos créditos a: Alvanea e quem for postar em outro logar por os devidos créditos ao altor do tópico original! More pictures 1, 2, 3. 1. Primeiro de tudo instalar o RME 2.2 para tibia 9.6(download) e Tibia 9.6. 2. Abra o RME, em: file/preferences/Client Version onde ta Version 9.60 Search Patch mude para o client 9.60, baixe-o aqui: Click 3. Desmarque a opção "Check File Signatures" de ok e feche o rme. 4. Baixe o Pack, link esta no logo abaixo. 5. Em seu Computador axe a pasta AppData/Roaming dentro da pasta Roaming delete a pasta extensions (se ela não estiver la não tem portância não delete nada). 6. Copie a pasta "extensions" que ta no pack e bote na pasta Roaming 7. Axe a pasta do seu rme entre na pasta data e dentro dela delete a pasta 960. 8. Agora copie a pasta 9.60 que esta no Pack (link logo abaixo) e bote dentro da pasta data do seu rme. 9. Abra o RME 10. Aproveite seu rme! Version: v1 Download Speedyshare: Click Download Uploading.com: Click Version: v1.1 Download Speedyshare: Click Scan: Click Espero que façam bom uso. Todos os créditos a: Alvanea Eu só trouce o conteúdo pro Tibia King, fiz scan e traduzi algumas coisas.1 ponto
-
Poke zot editado por factur v2.0
1 pontoATENÇÃO O Tópico ainda pode ser atualizado. Em breve versão v2.2 !! Eae galera tudo beleza? venho trazendo pra vocês Um novo server PokeZot! Eu editei ele bastante!, Vou mostrar algumas coisas que eu editei, algumas coisas que adicionei E algumas que eu resolvi... ------------------ // ------------------ [~] Bugs ------------------ // ------------------ [~] Quest's Modificadas/Adicionadas. ------------------ // ------------------ [~] Resto que foi Editado/Adicionado/Removido ------------------ // ------------------ [~] Prints ------------------ // ------------------ [~] Download ------------------ // ------------------ [~] Créditos Pelo jogo = Wolf Admin Por Editar = Factur Flw galera! Factur ~ ------------------ // ------------------1 ponto
-
Criando Quest pelo Rme 2.1
Criando Quest pelo Rme 2.1
DarkRed reagiu a Leonardo Simonetto por uma resposta no tópico
1 ponto°Como Fazer Quest° Olá Pessoal do TibiaKing, Hoje Irei Encinar a Criar Quest Pelo Rme. Antes Disso Leia: Eu sei que existe varios tutoriais,video-aulas,etc... Estou Fazendo Por Minha Vontade o Tutorial ;P Comentem se Tiverem Duvidas ou Sugestões. Tutorial é Composto Por Imagens para Facilitar... Vamos ao Que Interessa! 1° Explicação: Após ter feito a Quest Inteira finalize ela com seus Baús, ou Crie um Lugar para First Items. (no meu caso) 2° Explicação: Para Achar o Baú Siga a Imagem. 3° Explicação: Para achar o Baú Siga a Imagem. 4° Explicação: Clique sobre o Baú e Coloque onde Quiser. 5° Explicação: Em Action ID: 2000 ---- Unique ID: de 1 a 599. Porque de 1 a 5999? Porque o Server Possui um Numero de Unique ID: Que significa Unico, os Numeros não podem se repetir. Apenas os Actons ID, podem se repetir. 6° Explicação: Depois de Colocar os ID's Clique Sobre o Quadrado Preto onde diz: Contents e Digite o ID ou Nome do item a ser ganho na quest. 7° Explicação: (Pausa para o lanche,cansei de fazer aqui...) Depois de escolher o item e dar Ok. Ficará assim a Imagem, (no lugar do Crystal Coin ficará seu item que você escolheu). 8° Explicação: Ali em Count: Coloque Quantidade que o Player Irá Ganhar. No meu caso eu coloquei Crystal Coin e ali em Count 3, ou seja o player irá ganhar 3 Crystal... Feito Tudo Isso, de Ok em tudo,Salve (CTRL+S) e Reinicie/Inicie seu Server. Atenção: O ADM não consegue abrir as quests, por isso Pegue um Player para testar de preferencia um Maker... Creditos: Leonardo Simonetto Gostou? #Rep_+1 ponto -
Erondino v17.1 By {ABEROS} BPO Open Source
Erondino v17.1 By {ABEROS} BPO Open Source
Danielcrf reagiu a Valakinhas por uma resposta no tópico
1 pontoV17.1 *Informações +Edições Spoiler Foi adicionado o mapa novamente +Print's Spoiler http://prntscr.com/757ioo http://prntscr.com/757kja +Erros/Bug's +Creditos +Download + Scan Server: Link OTC: Link Scan Server: Link Dat e spr desbloqueado: Link QUALQUER ERRO E BUG, COMENTAR NESSE TÓPICO Desculpa pelos erros ortográficos. ah antes que me esqueça ID da vara de pesca 25801 ponto -
Sprites de Mega Pokemons [WIP]
1 pontoOlá! Eu recentemente recomecei a mexer com Poketibia, e dessa vez, resolvi brincar com alguns sprites Como disse, sou novo nisso, e ainda não terminei esses. No entando, caso o feedback seja positivo, ou alguém tenha interesse de usar esses sprites, eu posso terminá-los com prazer . Aqui, uma prévia do que eu estou fazendo: Mewtwo Metagross Pinsir Kangaskhan Altaria Camerupt Beedril Heracross Obrigado pela atenção, deixei sua opinião, elogio ou crítica, todos são bem vindos!1 ponto
-
TV System por caotic
1 pontoOlá estou trazendo esse tutorial pra galera que anda querendo os códigos da tv system , o autor não sou eu apenas estou trazendo pra galera que está precisando como me pediram por MP e em tópicos (créditos no final do tópico) Venho disponibilizar o famoso sistema de televisão poketibiano completo o sistema foi feito para ambos os clients tibianos. O sistema permite você assistir outro players jogando assim você fica sem usar itens,falar(so pm), se movimentar e etc... Vamos la: Vá em luascript.cpp e procure: E coloque embaixo: Continuando em luascript.cpp procure: //doCreatureSay(uid, text[, type = SPEAK_SAY[, ghost = false[, cid = 0[, pos]]]]) lua_register(m_luaState, "doCreatureSay", LuaScriptInterface::luaDoCreatureSay); Coloque embaixo: Em luascript.h procure: static int32_t luaGetPlayerParty(lua_State* L); Coloque embaixo: static int32_t luaGetAllsTvs(lua_State* L); static int32_t luaSetPlayerTv(lua_State* L); static int32_t luaDoSendChannelsTv(lua_State* L); static int32_t luaDoRemovePlayerTv(lua_State* L); Vamos agora em game.cpp: Procure: bool Game::playerSay(uint32_t playerId, uint16_t channelId, SpeakClasses type, const std::string& receiver, const std::string& text) E substitua função por esta nova função: Continuando em game.cpp procure a função: ReturnValue Game::internalMoveCreature(Creature* creature, Direction direction, uint32_t flags/* = 0*/) E substitua por esta função: Procure a função: bool Game::playerRequestChannels(uint32_t playerId) Substitua a função por: bool Game::playerRequestChannels(uint32_t playerId) { Player* player = getPlayerByID(playerId); if(!player || player->isRemoved()) return false; player->sendChannelsDialog(false); return true; } Agora vamos a protocolgame.cpp e procure a função; void ProtocolGame::sendChannelsDialog(bool tv) E substitua por esta função: Procure em protocolgame.h a seguinta declaração: void sendChannelsDialog(); Substitua por: void sendChannelsDialog(bool tv); Agora vamos em player.h e procure: void sendChannelsDialog() {if(client) client->sendChannelsDialog();} E substitua por: void sendChannelsDialog(bool tv) {if(client) client->sendChannelsDialog(tv);} Procure denovo em player.h: typedef std::list<Party*> PartyList; E adicione embaixo: typedef std::list<uint32_t> Tvlist; Continuando em player.h procure: AttackedSet attackedSet; Coloque embaixo: Tvlist tv; Vamos denovo a protocolgame.cpp e procure: Coloque embaixo: Seguidamente vá em creatureevent.cpp e procure: else if(tmpStr == "preparedeath") m_type = CREATURE_EVENT_PREPAREDEATH; Coloque embaixo: else if(tmpStr == "selecttv") m_type = CREATURE_EVENT_SELECTTV; Procure depois: case CREATURE_EVENT_PREPAREDEATH: return "onPrepareDeath"; Coloque embaixo: case CREATURE_EVENT_SELECTTV: return "onSelectTv"; Procure: case CREATURE_EVENT_PREPAREDEATH: return "cid, deathList"; Coloque embaixo: case CREATURE_EVENT_SELECTTV: return "cid, id"; Procure: Coloque embaixo: Vá em creatureevent.h e procure: CREATURE_EVENT_ATTACK, Coloque embaixo: CREATURE_EVENT_SELECTTV Procure continuando em creatureevent.h: uint32_t executeCombat(Creature* creature, Creature* target); Coloque embaixo: uint32_t executeSelectTv(Player* player, uint16_t id); Vá agora em game.cpp denovo e procure a função: bool Game::playerOpenChannel(uint32_t playerId, uint16_t channelId) Substitua a função por: Vá em data/lib e crie um novo arquivo lua chamado tv system: Agora vamos em actions e crie um arquivo lua chamado tv e coloque: function onUse(cid, item, fromPosition, itemEx, toPosition) doSendChannelsTv(cid) end Vá em actions.xml e coloque a seguinte configurando com o id da sua tv: <!-- TV --> <action itemid="1445" event="script" value="tv.lua"/> Agora vamos em talkactions e crie um novo arquivo lua chamado delete e coloque isto: function onSay(cid, words, param, channel) deleteTv(cid) return true end Agora vamos em talkactions.xml e coloque a seguinte tag: <talkaction words="/delete" event="script" value="delete.lua"/> Agora vamos a creaturescripts e crie um arquivo lua chamado createTv e coloque: function onTextEdit(cid, it:em, newText) if item.itemid == ID_ITEM_TV then createNewTv(cid, newText) return true end return true end Crie outro chamado de tv e coloque: function onSelectTv(cid, id) local tv = getTvOnlines() local idstarter = 200 for i=1, #tv do local tv = tv[i] local sub_id = i+idstarter if sub_id == id then playerWatchTv(cid, tv) end end return true end Crie outro chamado de tvlogout : function onLogout(cid) if isPlayer(cid) then deleteTv(cid) playerStopWatchTv(cid) end return true end Vá em creaturescripts.xml e coloque as seguintes as tags: <event type="textedit" name="newTv" event="script" value="createTv.lua"/> <event type="selecttv" name="selecttv" event="script" value="tv.lua"/> <event type="logout" name="tvlogout" event="script" value="tvlogout.lua"/> Vá em data/xml/group.xml e abra o arquivo e coloque o novo group: <group id="8" name="Tv" flags="3845069447162" customFlags="2097151" access="1" violationReasons="4" nameViolationFlags="2"/> Video do sistema em execução: E recomendavel NUNCA modificar as storages porques estão ligados aos codigos. Para mudar o id da camera e so mudar a variavel ID_ITEM_TV Para deletar uma tv diga o comand /delete e como prometido no começo do tópico, os créditos:1 ponto
-
Pokemon DreamRed v3.2 [Catch, Pokedex, Stones, Teleport, Fly, Ride, e+]
Sistemas Portrait [100%] Pokedex [100%] Surf [100%] Fly [100%] Ride [100%] Catch [100%] Teleport [100%] Fishing [100%] Bike [100%] Elite Stone [100%] Gerações I [100%] Gerações II [100%] Shiny Stone [100%] Boost Stone [100%] Caught [100%] Moves [100%] Go-Back [100%] E MUITO MAIS! Créditos: Dreamer Screenshot Downloads Server: MediaFire Client: MediaFire DLLs: dll TibiaKing.com.rar Senha: anti sangue-sugas tibiaking.com Scans Server: VirusTotal Client: VirusTotal Dlls: VirusTotal1 ponto
-
[Atualizado]Como adicionar addon Wayfarer full Testado em 8.60
[Atualizado]Como adicionar addon Wayfarer full Testado em 8.60
Caronte reagiu a andersonwill por uma resposta no tópico
1 pontoOla galera do tibia king, bom esse topico ja havia sido feito mais estava muito grande e confuso resolvir edita-lo para melhor compreende-lo, bom como o Titulo ja diz eu irei ensinar como adicionar Wayfarer Addon Full nas versoes 8.60. (Desculpe-me pelos erros nas acentuaçoes pois meus acentos nao esta funcionando, n~~ao). Bom vamos la. Abra a pasta DATA>NPC>SCRIPTS> e crie um arquivo chamado wayfarer.lua e coloque isso dentro local focus = 0 local talk_start = 0 function onThingMove(creature, thing, oldpos, oldstackpos) end function onCreatureAppear(creature) end function onCreatureDisappear(cid, pos) if focus == cid then selfSay('Good bye then.') focus = 0 talk_start = 0 end end function onCreatureTurn(creature) end function msgcontains(txt, str) return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)')) end function onCreatureSay(cid, type, msg) msg = string.lower(msg) if (msgcontains(msg, 'hi') and (focus == 0)) and getDistanceToCreature(cid) < 4 then selfSay('Hiho ' .. getCreatureName(cid) .. ' Eu posso lhe conceder o Yalaharian addon 1, para mais infos. diga help...') focus = cid talk_start = os.clock() elseif msgcontains(msg, 'hi') and (focus ~= cid) and getDistanceToCreature(cid) < 4 then selfSay('Sorry, ' .. getCreatureName(cid) .. '! I talk to you in a minute.') elseif focus == cid then talk_start = os.clock() if msgcontains(msg, 'help') then selfSay('Para obter o wayfarer addon full diga addon 1') elseif msgcontains(msg, 'addon 1') then if getPlayerStorageValue(cid,999999) >= 2 then selfSay('Voce ja tem esse addon.') else if getPlayerStorageValue(cid,999999) == 1 then selfSay('Pronto agora so falar yes, e tera seu addon!') addon_state = 2 else setPlayerStorageValue(cid,999999,1) selfSay('Pronto agora so falar yes, e tera seu addon!') end end elseif msgcontains(msg, 'yes') and addon_state == 2 then if doPlayerRemoveItem(cid,2160, 1) == 0 or doPlayerRemoveItem(cid,8976, 1) == 0 then selfSay('Desculpe mas voce naum os tem...') else selfSay('Obrigado, agora voce tem o novo addon da terra dos Wayfarers.') if getPlayerSex(cid) == 0 then doPlayerAddOutfit(cid, 366, 3) setPlayerStorageValue(cid,999999,3) else doPlayerAddOutfit(cid, 367, 3) setPlayerStorageValue(cid,999999,3) talk_state = 1 end end elseif msgcontains(msg, 'bye') and getDistanceToCreature(cid) < 4 then selfSay('Adeus ' .. creatureGetName(cid) .. ', Volte Sempre.') focus = 0 talk_start = 0 elseif msg ~= "" then selfSay('Como? Eu não entendi!') talk_state = 0 end end end function onCreatureChangeOutfit(creature) end function onThink() doNpcSetCreatureFocus(focus) if (os.clock() - talk_start) > 30 then if focus > 0 then selfSay('Proximo!!...') end focus = 0 talk_start = 0 end if focus ~= 0 then if getDistanceToCreature(focus) > 5 then selfSay('Good Bye') focus = 0 talk_start = 0 end end end Depois va em DATA>NPC> e crie um arquivo chamado wayfarer.xml e coloque isto dentro <?xml version="1.0"?> <npc name="Wayfarer Addon Full" script="data/npc/scripts/Wayfarer.lua" access="3" lookdir="2" walkinterval="2000"> <mana now="800" max="800"/> <health now="200" max="200"/> <look type="367" head="79" body="94" legs="114" feet="77" addons="3"/> </npc> Bom, so isso, se o seu server ja estiver online so da /reload npc e fale /n wayfarer , Se nao voces abrem o server e deem /n wayfarer para testa-lo, e para adiciona-lo no RME abra o RME e importem o npc. Bom essa script ja foi testada e os creditos foi do autor dessa script (kkk nao foi eu que criei apenas peguei uma ja feita no meu mapa e editei).1 ponto -
(Resolvido)Barco para ilhas
1 pontoModifique o post lá encima com outro npc para voltar a cidade de origem.1 ponto
-
[DÚVIDA] DISTRO COM VIRUS, COMO TROCAR?
[DÚVIDA] DISTRO COM VIRUS, COMO TROCAR?
EduardoSouza reagiu a psychonaut por uma resposta no tópico
1 pontoProvavelmente, sem muita certeza, acho que é um falso positivo, a maioria dos antivírus acusam, os distros que tenho não são de poketibia mas também dão falso positivo, coloque na lista de exceções e já era ou passa no vírus total e da uma olhada no que ele fala.1 ponto -
(Resolvido)Como Eu Deixo Meu Server de Poketibia 24:00 Horas ?
(Resolvido)Como Eu Deixo Meu Server de Poketibia 24:00 Horas ?
David Otserver reagiu a NickFuCked por uma resposta no tópico
1 pontoTem que comprar uma vps ela e igual seu pc so que fica 24 horas online todos os dias seu servidor esse site tem umas vps baratas -> http://weblara.com.br/ [para pokémon compre vps windows]1 ponto -
[PEDIDO] Background e retirar fundo
[PEDIDO] Background e retirar fundo
SilenceRoot reagiu a Kluivert por uma resposta no tópico
1 pontoImagem sem fundo; http://4.1m.yt/xlUf52Eu.png Backgrounds(Apenas redimensionei!); 1° http://4.1m.yt/1vcTLiEeE.png 2° http://4.1m.yt/WMO6zOZT0.png1 ponto -
Ajuda Para Adicionar Novas Pokebolas
Ajuda Para Adicionar Novas Pokebolas
paradoxo44 reagiu a NickFuCked por uma resposta no tópico
1 pontoOla galera, vim aki fazer um tutorial que acredito que muitos estão atras. Aki eu irei por como voce pode add novas balls no Pokemon Dash. Bem primeiro de tudo ira precisar de otitemeditor 0.3.7,map editor e conheçimento em mexer nesses arquivos citados alem de saber mexer em script.Bem Vamos la: Abra o remeres com o client que voce quer.Apos isso procure item por item Ate achar as pokebolas juntaveis acesa e apagada. Feito isso abra o otitemeditor 0.3.7 e procure os itens que voce achou no map editor Note que tera opçoes e tera uma sequencia numerica embaixo da foto do item e do lado Do CID Anote o numero e veja qual item é Apos ter feito isso com as pokebolas que irao dar catch,soltar poke,puxar o poke e a que sera Usada para reviver na nurse, va no menu tools ainda no itemeditor e add 4 novos items. Va no 1 item dai va no item em CID e ponha o numero que voce add para a pokebola que Dara catch, e marque Useable e Pickupable. Agora va no 2 item que você add ponha em CID o numero que voce anotou para pokebola acesa E marque a opção Pickupable Agora o 3 item que sera a ball apagada que puxara o poke va em CID e ponha o numero da pokebola apagada Que voce anotou e marque a opção Pickupable e Not Moveable Agora 4 e ultimo item o que sera usado na Nurse Joy Add em CID o mesmo numero que add no 3 item, mas nas opções Marque apenas Pickupable. 1 Parte Foi Feita agora 2 parte.Envolve Script agora. Va na pasta do seu server e em data\actions\scripts Abra seu catch e add o seguinte elseif item.itemid == XXX then--Id da pokebola que sera usada para capturar catchrate = 2--Chance ao usar essa pokebola oncatch = 198--Effect da pokebola rodando pra la e praca e fikando verde onfail = 197--Effect da pokebola rodando pra la e praca e falhando bolabola = 2652--pokebola que sera usada para liberar o poke ou seja a ball acesa Pronto agora salve e feche e abra o seu goback. e add isso: elseif item.itemid == AC or item.itemid == AP then--AC Pokebola Acesa, AP pokebola apagada gobackeff = 193--Effect da hora que ira puxar o poke pra fora ou pra dentro da ball Agora desca um poco ira achar essa linha if item.itemid == 2223 or item.itemid == 2221 then Antes de then add or item.itemid == XXX --XXX id da pokebola apagada Fikando Assim: if item.itemid == 2223 or item.itemid == 2221 or item.itemid == XXX then--XXX id da ball apagada Agora desca mais um poco ira ter outro do decima mais com outros ids das pokebolas acesas assim elseif item.itemid == 2222 or item.itemid == 2220 then ADD or item.itemid == XXXAntes de then fikando assim elseif item.itemid == 2222 or item.itemid == 2220 or item.itemid == XXX then--XXX id da ball acesa Pronto Salve e feche. Va na pasta do seu server\Data\Actions e abra Actions.xml E procure por goback e add o seguinte codigo depois do ultimo numero ;XXXAC;XXXAP ---XXXAC é id da ball acesa e XXXAP o id da ball apagada Agora procure por catch e add o seguinte depois do ultimo numero: ;XXXCA---XXXCA id da ball que sera para dar catch E procure por fainted e add ;XXXDE ---XXXDE o id da ball que é a que sera usada para reviver. Agora salve e feche e va na pasta do seu server data\creaturescripts\scripts E abra login.lua E procure por Spoiler if getPlayerItemCount(cid, ultrapokeout) >= 1 and getPlayerStorageValue(cid, 61207) <= 0 and getPlayerStorageValue(cid, 17001) <= 0 and getPlayerStorageValue(cid, 17000) <= 0 and getPlayerStorageValue(cid, 63215) <= 0 then local item = getPlayerItemById(cid, TRUE, ultrapokeout) doTransformItem(item.uid, ultrapokein) doItemSetAttribute(item.uid, "poke", getItemAttribute(item.uid, "poke") .. " HP = ["..getPlayerStorageValue(cid, 61205).."/"..getPlayerStorageValue(cid, 61206).."]") end E add abaixo disso isso Spoiler if getPlayerItemCount(cid, greatpokeout) >= 1 and getPlayerStorageValue(cid, 61207) <= 0 and getPlayerStorageValue(cid, 17001) <= 0 and getPlayerStorageValue(cid, 17000) <= 0 and getPlayerStorageValue(cid, 63215) <= 0 then local item = getPlayerItemById(cid, TRUE, greatpokeout) doTransformItem(item.uid, greatpokein) doItemSetAttribute(item.uid, "poke", getItemAttribute(item.uid, "poke") .. " HP = ["..getPlayerStorageValue(cid, 61205).."/"..getPlayerStorageValue(cid, 61206).."]") end Expilação Greatpokeout e Greatpokein sao nomes na lib que depois irei mostrar como add no proximo passo. Bem mude apenas o que esta em verde greatpokeout é ball apagada e greatpokein ball acesa Mude o great para outro nome por exemplo super ou great ou master ou safari ou outro qualquer. Pronto feito isso salve e feche. Agora va na pasta do seu server\data\lib e abra pokelib logo ao abrir ira apareçer isso: pokein, pokeout = 2222,2223 ultrapokein, ultrapokeout = 2220, 2221 se voce estiver usando pokemon dash com apenas duas balls Add embaixo de ultrapokein, ultrapokeout = 2220, 2221 isso NOMEpokein, NOMEpokeout = 2652, 2653---NOMEpokein é o id da ball acesa e NOMEpokeout o id da ball apagada para voce nao bugar com o pokemon para fora é necessario seguir o passo do creaturescripts ai emcima e eu disse que era pra mudar o GREAT para outro nome e bem agora no NOME voce poem o nome que escolheu no login.lua Feito isso salve e feche. Agora volte na pasta creaturescripts/scripts e abra o goback.lua Feito isso procure por if getPlayerSlotItem(owner, 8).itemid == 2220 or getPlayerSlotItem(owner, 8).itemid == 2221 then doSendMagicEffect(getCreaturePosition(cid), 191) E add embaixo Spoiler elseif getPlayerSlotItem(owner, 8).itemid == 2222 or getPlayerSlotItem(owner, 8).itemid == 2223 then doSendMagicEffect(getCreaturePosition(cid), 10) Explicação:2222 é o id da ball acesa 2223 apagada e dai no 10 é o effect do poke voltando pra pokebola.Agora desca um poco voce ira achar isso: if getPlayerSlotItem(owner, 8).itemid == 2220 or getPlayerSlotItem(owner, 8).itemid == 2221 then doTransformItem(getPlayerSlotItem(owner, 8).uid, 2227) Spoiler elseif getPlayerSlotItem(owner, 8).itemid == 2222 or getPlayerSlotItem(owner, 8).itemid == 2223 then doTransformItem(getPlayerSlotItem(owner, 8).uid, 2224) Explicação mesma coisa do de cima mas em 2224 é o id da ball que sera transformada na que sera o pokemon morto. Ultimo passo Para curar as pokebolas. Va na pasta do seu server\data\npc\script e abra o script da sua nurse joy que cura seus pokemons E logo ira apareçer local pokeballs = {'2222', '2224'} local ultraballs = {'2220', '2227'} Add embaixo local testballs = {'AC', 'RE'} ---Explicação, AC é o id da pokebola acesa e RE o id da pokebola com pokemon morto Apos feito isso procure por isso Spoiler if isInArray(pokeballs, getPlayerSlotItem(cid, CONST_SLOT_FEET).itemid) then local feet = getPlayerSlotItem(cid, CONST_SLOT_FEET) local maxh = tonumber(getItemAttribute(feet.uid, "poke"):match("/(.+)]")) doItemSetAttribute(feet.uid, "poke", getItemAttribute(feet.uid, "poke"):sub(1, findLetter(getItemAttribute(feet.uid, "poke"), "[")) .. maxh .. getItemAttribute(feet.uid, "poke"):sub(findLetter(getItemAttribute(feet.uid, "poke"), "/"))) doTransformItem(feet.uid, 2222) end Apos achar isso add embaixo Spoiler if isInArray(testballs, getPlayerSlotItem(cid, CONST_SLOT_FEET).itemid) then local feet = getPlayerSlotItem(cid, CONST_SLOT_FEET) local maxh = tonumber(getItemAttribute(feet.uid, "poke"):match("/(.+)]")) doItemSetAttribute(feet.uid, "poke", getItemAttribute(feet.uid, "poke"):sub(1, findLetter(getItemAttribute(feet.uid, "poke"), "[")) .. maxh .. getItemAttribute(feet.uid, "poke"):sub(findLetter(getItemAttribute(feet.uid, "poke"), "/"))) doTransformItem(feet.uid, XXX)---Id da ball acesa end Obs:Os ids da balls devem ser seguidos EX: Acesa:1689 Apagada:1690 Ja a que é usada para ser usada na nurse Pode variar o id:1735 Pronto salve e feche e Nao esqueça do REP+ em1 ponto -
Orc Warlord Mount
1 pontodata/XML/mounts.xml <mount id="13" clientid="2" name="Orc Warlord" speed="20" premium="yes" /> Créditos: Kudzu1 ponto
-
(Resolvido)[AJUDA] Ajuda com script bugado
(Resolvido)[AJUDA] Ajuda com script bugado
Sekk reagiu a xWhiteWolf por uma resposta no tópico
1 pontoisItemStackable(lever[item.actionid][2]) and 100 or 1 ele verifica se o item é stackável e caso seja ele dá 100, caso não seja ele adiciona 1. Se quiser que seja sempre 1 é só mudar o valor 100 ali pra 1. Ou ainda, remover toda essa parte que eu coloquei no code e deixar apenas 1 no lugar1 ponto -
[NPC] Quest por missões.
1 pontoOlá, boa noite TK, venho trazer para vocês um script que uso no meu servidor, que serve de missão. Acho maneiro, para RPGS. A função do script é uma quest, o player precisa entregar um item ao NPC, no caso um pergaminho, que lhe dará acesso a clicar na arvore, porém para chegar até a arvore voce tem que procurar uma alavanca, para aparecer uma escada. Vamos lá. Crie um arquivo npc/script/Wyat.lua e adicione. local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) -- OTServ event handling functions start 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 -- OTServ event handling functions end function doCreatureSayWithDelay(cid,text,type,delay,e) if delay<=0 then doCreatureSay(cid,text,type) else local func=function(pars) doCreatureSay(pars.cid,pars.text,pars.type) pars.e.done=TRUE end e.done=FALSE e.event=addEvent(func,delay,{cid=cid, text=text, type=type, e=e}) end end --returns how many msgs he have said already function cancelNPCTalk(events) local ret=1 for aux=1,table.getn(events) do if events[aux].done==FALSE then stopEvent(events[aux].event) else ret=ret+1 end end events=nil return(ret) end function doNPCTalkALot(msgs,interval) local e={} local ret={} if interval==nil then interval=3000 end --3 seconds is default time between messages for aux=1,table.getn(msgs) do e[aux]={} doCreatureSayWithDelay(getNpcCid(),msgs[aux],TALKTYPE_PRIVATE_NP,(aux-1)*interval,e[aux]) table.insert(ret,e[aux]) end return(ret) end function creatureSayCallback(cid, type, msg) -- Place all your code in here. Remember that hi, bye and all that stuff is already handled by the npcsystem, so you do not have to take care of that yourself. if (not npcHandler:isFocused(cid)) then return false end if msgcontains(msg, 'here') and getPlayerStorageValue(cid, 60200) == -1 then npcHandler:say('This is an old castle. Terrifying {beasts} used to live here.', cid) talk_state = 5 elseif msgcontains(msg, 'beasts') and talk_state == 5 then npcHandler:say('I can tell you more about the castle, however I will need a {favour}.', cid) talk_state = 6 elseif msgcontains(msg, 'favour') and talk_state == 6 then npcHandler:say('I heared about an {old parchment}, which contains ancient alchemists formulas.', cid) talk_state = 7 elseif msgcontains(msg, 'old parchment') and talk_state == 7 then npcHandler:say('Its the piece of paper. The legend says the necromancers from Tanami desert are keeping it in their {library}.', cid) talk_state = 8 elseif msgcontains(msg, 'library') then npcHandler:say('The library can be found to the north of Aldruhn city. I really need this paper, but I am not strong enough to defeat necromancers. Bring it to me, and I will tell you more about beasts.', cid) setPlayerStorageValue(cid, 60200, 1) talk_state = 0 elseif (msgcontains(msg, 'parchment') or msgcontains(msg, 'alchemist') or msgcontains(msg, 'here') or msgcontains(msg, 'alchemists') or msgcontains(msg, 'formulas') or msgcontains(msg, 'done') or msgcontains(msg, 'reward')) and getPlayerItemCount(cid,9733) < 1 and getPlayerStorageValue(cid, 60202) == -1 and getPlayerStorageValue(cid, 60200) == 1 then npcHandler:say('I need you to find it as fast as possible! Please be quick.', cid) elseif getPlayerStorageValue(cid, 60200) == 1 and getPlayerStorageValue(cid, 60201) == -1 and (msgcontains(msg, 'parchment') or msgcontains(msg, 'here') or msgcontains(msg, 'alchemist') or msgcontains(msg, 'alchemists') or msgcontains(msg, 'formulas') or msgcontains(msg, 'done') or msgcontains(msg, 'reward') or msgcontains(msg, 'beast')) then if getPlayerItemCount(cid,9733) >= 1 then if doPlayerRemoveItem(cid,9733,1) then local msgs={ "Okay. I really appreciate it. As I promised: The beast used to terrorize the people from villages nearby. Those were horrible years, many heroes died trying to defeat the beast, but no one survived....", "The name of the beas was Ortheus, this name scares me even to this day. Soon after, Telas came. He was a very brave hero, but not strong enough to kill her alone....", "Luckily for him, he had more luck than cleverness. It was a few seconds separating him from death, then he saw his sword nearby which ensured him victory....", "The beast was changed into a beautiful, red tree. This tree is still here. Some old lever in basement opens the way upstairs. You should start searching there. You have my blessing. Good luck, you can have glory, or die in pain." } doNPCTalkALot(msgs,9000) --if the 2750 is ommited, it uses 3000 always setPlayerStorageValue(cid, 60201, 1) setPlayerStorageValue(cid, 60202, 1) elseif msgcontains(msg, 'things') then npcHandler:say('The beast used to eat human bodies. Many people died here. Many heroes tried to defeat beast, but no one survived. Then {telas} came.', cid) talk_state = 11 elseif msgcontains(msg, 'telas') and talk_state == 11 then npcHandler:say('He was powerful, but not as strong as the beast. He was also very lucky, and this ensured him {victory}.', cid) talk_state = 12 elseif msgcontains(msg, 'victory') and talk_state == 12 then npcHandler:say('The beast was finally defeated. Telas changed her into a beautiful {tree}, but be aware, bad things happen near it.', cid) talk_state = 13 elseif msgcontains(msg, 'tree') and talk_state == 13 then npcHandler:say('The tree is still here. Some old lever in basement opens the way upstairs. You should start searching there. You got my blessing. Good luck, you can have glory, or die in pain.', cid) setPlayerSetStorageValue(cid,60201, 1) doSendMagicEffect(getCreaturePosition(cid), 14) talk_state = 0 end end end ------------------------------------------------ confirm no ------------------------------------------------ -- Place all your code in here. Remember that hi, bye and all that stuff is already handled by the npcsystem, so you do not have to take care of that yourself. return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) crie um xml, Wyat.xml <?xml version="1.0" encoding="UTF-8"?> <npc name="Wyat" script="wyat.lua" walkinterval="2000" floorchange="0"> <health now="150" max="150"/> <look type="9" corpse="6080"/> <parameters> <parameter key="message_greet" value="Hello |PLAYERNAME|. What are you looking for {here}?"/> </parameters> </npc> Vamos lá, explicar o Script. você vai falar com o npc, e ele te dará pistas de onde está o [iTEM] que ele quer que você entregue, assim que você entregar ele te dará acesso para passar. Quando ele te der o acesso, você poderá ser teleportado pela arvore. Vamos ao script dela. Actions/script e crie tree.lua e adicione function onUse(cid, item, frompos, item2, topos) if getPlayerStorageValue(cid, 60201) == -1 then doCreatureSay(cid, "You little worm! You dont have enough power to touch me.", TALKTYPE_ORANGE_2, getCreaturePosition(cid)) elseif getPlayerStorageValue(cid, 60201) == 1 then local tppos = {x=1341, y=1094, z=8} doSendMagicEffect(getCreaturePosition(cid), 17) doTeleportThing(cid,tppos) end end adicione essa tag em xml. <action uniqueid="60200" script="new/tree.lua"/> Sem a storage voce não conseguira ser teleportado, e com a storage será para a cords da config.1 ponto
-
(Resolvido)[AJUDA] Ajuda com script bugado
script antigo xD só vai vender 1 arrow de cada? ou tem itens empilháveis que vendem 100??1 ponto
-
(Resolvido)Quem tiver storage passa, se não tiver leva tp
Crie um arquivo chamado castleLogin.lua na pasta data/movements/scripts e cole isso: function onStepIn(cid, item, position, fromPosition) if getPlayerStorageValue(cid, 123123) <= 0 then doTeleportThing(cid, getPlayerMasterPos(cid)) doPlayerSendTextMessage(cid, 22, "Sua guild não domina mais o castelo por isso foi teletransportado para o templo.") end return TRUE end Agora adicione a seguinte linha no arquivo movements.xml: <movevent type="StepIn" actionid="43020" event="script" value="castleLogin.lua"/> No map editor coloque actionID do tile 43020.1 ponto
-
(Resolvido)Não consigo deixar meu ot ON
(Resolvido)Não consigo deixar meu ot ON
pokemaniacoloko reagiu a Jamespoketibasss por uma resposta no tópico
1 ponto1.- Tém que abrir os portos 7171 e 7172 em seu Internet ( Caso que nao tenha um host ), Para isso tém que procura a ip do internet(http://www.cual-es-mi-ip.net/) e tém que abrir ele no navegador no meu caso é assim! 2.- Tém que desativa o firewall da internet, para isso você vai em Panel Do Control > Red e Internet > Rede e Centro de compartilhamento de recursos depois vai para "Firewall Windows"> Activar e desativar firewall do windows, coloca em desativa em Rede Publica e Rede Privada 3- Na Pasta do seu ot, tém que edita o arquivo "config.lua", Ctrl+b ou Ctrl+f e procura "IP" e será assim> ip = "200.149.250.233", coloca sua ip EXEMPLO: ip = "189.500.214.255" e salvar. Depois testar. Se nao da entao é no cliente, no fórum tem um topico de como criar clientes com sua IP se for OLD CLIENT e se for Ot Cliente é só ir em: Pasta do Cliente>Modules>Client Entergame> Entergame.lua> Abra o arquivo Depois procura ctrl+b ou ctrl+f > EnterGame.setUniqueServer, depois de isso o cliente vai tem a ip do cliente por exemplo:> EnterGame.setUniqueServer('pokemon-dash.servegame.com', 7171, 854, 270, 210) end < Você deve editar a ip> EnterGame.setUniqueServer('IP DO SEU SERVIDOR', 7171, 854, 270, 210) end E é tudo, se ajude bom! Obs: Sou Mexicano nao é bom meu portugues!1 ponto -
GesiorACC 2019 8.60 UPDATE 29/06/2019
GesiorACC 2019 8.60 UPDATE 29/06/2019
rocineide de toni reagiu a Natanael Beckman por uma resposta no tópico
1 pontoPra quem não está conseguindo adicionar item no shop verifiquem adicione esta coluna: ALTER TABLE `z_shop_offer` ADD `pid` int(11) NOT NULL DEFAULT '0'; @moviebr Verifique se no seu config.lua ainda tem alguma descrição com -- se tiver remova todas.1 ponto -
[PEDIDO] BANNER PARA O MEU OTSERV
[PEDIDO] BANNER PARA O MEU OTSERV
lucasmacaca reagiu a Kluivert por uma resposta no tópico
1 pontoSe não gostar avise-me e complemente ao máximo possível de como você deseja seu banner! 1 ponto -
[PEDIDO] BANNER PARA O MEU OTSERV
[PEDIDO] BANNER PARA O MEU OTSERV
Skydangerous reagiu a loreal por uma resposta no tópico
1 pontobk banner1 ponto -
[PEDIDO] BANNER PARA O MEU OTSERV
[PEDIDO] BANNER PARA O MEU OTSERV
Skydangerous reagiu a NickFuCked por uma resposta no tópico
1 ponto1 ponto -
[DÚVIDA] DISTRO COM VIRUS, COMO TROCAR?
[DÚVIDA] DISTRO COM VIRUS, COMO TROCAR?
EduardoSouza reagiu a FlamesAdmin por uma resposta no tópico
1 pontoTodos executaveis de PDA possuem esse 'virus'.1 ponto -
como botar efeitos nas tranformaçoes
1 ponto
- Boss Mechanics Ideas (All Servers)
Gostaria bastante em ajudar nesse projeto incrível, mas não tenho tantos conhecimentos de .lua nem de c++ pra ajudar.. Mas algo q seria interessante seria um random, que ativasse um addevent que fizesse a aranha descer pro andar de baixo, por x segundos, onde os players conseguiriam atacar ela. Depois dos x segundos, ela voltaria pro segundo plano, e executaria as ações de puxar o player, jogar poison, etc.1 ponto- [PEDIDO] Quero um poketibia server
[PEDIDO] Quero um poketibia server
Eduardo3562 reagiu a Thayam por uma resposta no tópico
1 pontoQue tipo de servidor você prefere? Com Sources? Pda? Enfim, de qualquer jeito, de uma olhada nos seguintes: Poke Kdpo Poke Pyrus Erondino (by AEROS) Erondino (v15) DarkxPoke Algum destes deve te ajudar Espero que encontre o que procura!1 ponto- [Show-OFF] Ultimo projeto para download?
[Show-OFF] Ultimo projeto para download?
felipecarlos reagiu a Gabrieltxu por uma resposta no tópico
1 pontovlw galerinha , irei fazendo com calma , tem muita coisa ainda pela frente , mas valeu pelo o apoio1 ponto- (Resolvido)Como eu faço o Sistema Training igual ao NTO BR
(Resolvido)Como eu faço o Sistema Training igual ao NTO BR
TioItachi reagiu a xWhiteWolf por uma resposta no tópico
1 pontovelho olha a imagem e olha oque tu me falou.. Não tem nada a ver, óbvio que deu erro, eu fiz o script pra um mapa que não é o teu. Tá vendo porque não dá certo? Agora eu to puto da vida e você vai ficar sem o sistema, não era muito mais fácil vc ter passado as drogas das posições de inicio? Você me falou que era uma cabana de trainer a cada 11 sqms pra > e 12 pra /\, o script foi feito pra trainers em uma linha e não pra duas linhas. Caramba cara. O erro no script foi que eu esqueci uma virgula, agora se vc quiser usar esse sistema vai ter que refazer o mapa pra uma linha só de trainers e colocar rangey = 0.1 ponto- (Resolvido)Como eu faço o Sistema Training igual ao NTO BR
(Resolvido)Como eu faço o Sistema Training igual ao NTO BR
xTats reagiu a xWhiteWolf por uma resposta no tópico
1 pontolocal config = { number = 130, --- numero de salas firstPos = {x = 160, y = 54, z = 7}, --- pos da primeira sala (coloque a pos de onde o player irá ficar ao entrar) rangex = 11, --- distancia em X entre cada uma das pos de cada sala rangey = 12 --- distancia em Y entre cada uma das pos de cada sala } function onStepIn(cid, item, position, fromPosition) local room = nil for i = 0, (config.number - 1) do pos = {x = config.firstPos.x + (i * config.rangex), y = config.firstPos.y + (i * config.rangey), z = config.firstPos.z} if isWalkable(pos, true, true, true) then room = pos break end end if room ~= nil then doTeleportThing(cid, room) else doPlayerSendCancel(cid, "All rooms are full") doTeleportThing(cid, fromPosition) doSendMagicEffect(fromPosition, 2) end return true end coloca em movements por actionid/uniqueid e coloca esse action/unique no teleporte. Abraço1 ponto- (Resolvido)[Ajuda] Adicionando variáveis?
(Resolvido)[Ajuda] Adicionando variáveis?
brenner44 reagiu a xWhiteWolf por uma resposta no tópico
1 pontolocal arr1 = { {1, 1, 1}, {1, 2, 1}, {1, 1, 1} } local area1 = createCombatArea(arr1) local arr2 = { {1, 1, 1}, {1, 2, 1}, {1, 1, 1} } local area2 = createCombatArea(arr2) function onCastSpell(cid, var) local maglevel, level, mana = getPlayerMagLevel(cid), getPlayerLevel(cid), getCreatureMana(cid) local axe, sword, club, distance = getPlayerSkillLevel(cid, 3), getPlayerSkillLevel(cid, 2), getPlayerSkillLevel(cid, 1), getPlayerSkillLevel(cid, 4) local shield, health = getPlayerSkillLevel(cid, 5), getCreatureHealth(cid) local formula = { min = (level + maglevel + axe + sword + club + shield + mana), max = (level + maglevel + axe + sword + club + shield + mana + health) } addEvent(function() if isCreature(cid) then doAreaCombatHealth(cid, 1, getCreaturePosition(cid), area1, -formula.min, -formula.max, 9) end end, 100) addEvent(function() if isCreature(cid) then doAreaCombatHealth(cid, 1, getCreaturePosition(cid), area1, -formula.min, -formula.max, 0) end end, 500) return true end só configura na formula os valores minimos e máximos que vc quer. Ali em cima é a area Aqui vc tem a primeira spell: e aqui tem a segunda 1 ali é o tipo de dano, 1 significa dano físico mas vc pode alterar seguindo essa tabela: COMBAT_NONE = 0 COMBAT_PHYSICALDAMAGE = 1 COMBAT_ENERGYDAMAGE = 2 COMBAT_EARTHDAMAGE = 4 COMBAT_POISONDAMAGE = 4 COMBAT_FIREDAMAGE = 8 COMBAT_UNDEFINEDDAMAGE = 16 COMBAT_LIFEDRAIN = 32 COMBAT_MANADRAIN = 64 COMBAT_HEALING = 128 COMBAT_DROWNDAMAGE = 256 COMBAT_ICEDAMAGE = 512 COMBAT_HOLYDAMAGE = 1024 COMBAT_DEATHDAMAGE = 2048 area1 e 2 são as areas lá em cima do script e as formulas vc edita da forma que quiser. O 9 e o 0 são os efeitos que saem; abaixo dos combats vc vai ter isso daqui: esse 100 e o outro 500 lá representam o tempo em milisegundos até o combat sair, se vc quiser aumentar o tempo entre as duas spells é só aumentar esse valor (lembrando que é em milisegundos [1 segundo = 1000 milisegundos]. Da forma que está colocado a primeira spell sai em 0,1 segundo e a segunda sai em 0,4 segundos dps da primeira.. as duas spells acabam dps de meio segundo. Espero que tenha entendido1 ponto- [DOWNLOAD] Poke Zot Atualizado + WebSite
Download sem website http://adf.ly/trbnq Senha 789/789 Baixa o serve sem website que é mais facil pra vc Download sem website http://adf.ly/trbnq Abra config.lua procure por ip = "127.0.0.1" coloque seu ip Pra saber seu IP abra o cmd e digite ipconfig coloque IPv4 Abra pasta do client /modules/client_entergame abra entergame.lua Procure por EnterGame.setUniqueServer('Coloque seu indereço IPv4', 7171, 854, 270, 210) Pronto é so abri o jogo senha 789/789 Pra muda a senha abra EDITAR CONTAS.exe que ta na pasta do OTSERVE _____________________________________________________________ Com site é bem rapido fazer pra quem saber Baixa o wampserve que é bem atualizado e seguro. http://www.wampserver.com/en/ instalar o wampserver. Digite no navegado localhost/phpmyadmin click em Databases coloque o nome da Database depois clicka em creat. Na database que vc criou click em Import e coloque mysql.sql que ta na pasta WEBSITE. Apaga os arquivos do wampserve na pasta www e coloca os arquivos do site. Wampserve vem configuração padrão não aceita acessos externos não precisa coloca senha phpmyadmin se vc quiser pode coloca a senha. abra config.lua procure por sqlUser = "root" sqlPass = "senha" SE TIVER sqlDatabase = "NOME DA DATABASE QUE VC CRIOU" Precisa abrir as porta 80,7171 e 7172 do seu Modem e firewall. Se for VPS ou dedicado não precisa. Tem algmas merda de Modem que não aceita port 80 por exemplo D-LINK DSL 500B e varios outros. Alguns provedores de internet bloqueia a port 80 pra alegria dos cliente. DSLAM do seu provedor de internete bloqueia a porta 80 Pode reclama com provedor falar pra eles que vai corta os fio do poste na rua se não abri a porta 80 kkkkkk todo mundo vai fica sem NET Eles vão abri rapidinho Depois faço um video criando serve com site.1 ponto- Poke zot editado por factur v2.0
Poke zot editado por factur v2.0
Francisco tibia reagiu a Factur por uma resposta no tópico
1 pontoTópico atualizado , Versão v2.0!1 ponto- como mudar a cor de fundo do gesior?
como mudar a cor de fundo do gesior?
dhiol reagiu a luanluciano93 por uma resposta no tópico
1 pontoResolvido? Se sim clique na Melhor Resposta!1 pontoLíderes está configurado para São Paulo/GMT-03:00 - Boss Mechanics Ideas (All Servers)
Informação Importante
Confirmação de Termo