Pesquisar na Comunidade
Mostrando resultados para as tags ''Mod TFS 0.X''.
Encontrado 15 registros
-
Advanced Pet System By Races
Advanced Pet System By Races Nome: Advanced Pet System By R.aces Versão: Bom eu testei no meu 8.60. Descrição: Bom eu procurei esse systema por muito tempo nunca achei um que funcionase perfeito, porem com muito esforço retirando de muitos servidores consegui fazer que ele funcionase com todos os script sem erro ao logar o char e nem deslogar os npc funcionando perfeitamente, Esse Pet pelo que eu saiba foi feito pelo josejunior. Como eu sempre vivi pedindo ajuda para comunidade, hoje eu resolvi trazer esse sistema para ajudar também muitos que precisa... E bom você ser ajudado e lembrar de ajudar também. Um pelo outro. Comandos: Pet-trainer.xml (em data/npc) Pet-trainer.lua (em npc/scripts) Va na pasta data/lib crie e nomeie para APS_lib.lua Agora e so baixar o resto dos arquivos e jogar dentro da pasta do seu Ot principal. E ser feliz... Não dou suporte para algum tipo de erro pois não sou Scripter kk apenas um Fuçado kkk. Ah: Caso der erro quando você for logar no servidor e de erro nos arquivos do PET, Pode ter algo em conflito com ele, ou Você tera que mudar algo do seu login.lua, Qual quer coisa eu passo o meu que ta muito fuçado porem sem erro em nada kkkk. Por Enquanto... CREDITOS: josejunior Advanced Pet System By Races.rar
-
[OTX] New Auto Loot Unlimited Edition 2.0
[ + ] Descrição: Autoloot refeito para VERSÃO OTX e adicionado algumas outras funções que estarei explicando ao decorrer do tópico. [ + ] Se você quer o Autoloot ara Versão TFS clica neste Link: AUTOLOOT TFS [ + ] Imagem do comando: [ + ] Features: [ - ] Você pode ativar ou desativar o autoloot a hora que achar necessário. [ - ] Também existe um comando para ativar ou desativar mensagens do loot que o autoloot coleta! [ - ] Você pode escolher a cor do texto em que irá aparecer a coleta do loot! [ - ] O autoloot informará para você se estiver com pouco slots na sua backpack, e o jogador poderá escolher se quer habilitar ou não está função no autloot. [ - ] Versão ilimitada de itens(não ficam armazenadas em storages. [ - ] O jogador poderá optar por depositar direto no banco os golds que forem dropados. [ + ] Instalação: Primeiramente CRIE uma PASTA VAZIA chamanda "autoloot" em DATA/LOGS, ficando assim: Depois instale o MODS normalmente na pasta MODS do seu servidor. new_perfect_autoloot_otx.xml Link: https://pastebin.com/raw/CW6jgerg [ + ] Configuração: Dentro do mods tem essa tabela info = { directory = "data/logs/autoloot", -- não mexer Warn_Bp_Slots = 5, -- quando tiver 5 ou menos slots na BP vai avisar o jogador Talkaction_delay = 5, -- em segundos // delay para remover e adicionar item BlockMonsters = {}, -- Lista de monstros que o autoloot nao vai funcionar BlockItemsList = {2123,2515}, -- Lista de itens que o autoloot nao coleta Money_ids = {2148, 2152, 2160}, -- id das moedas do ot Max_Slots = {free = 3, premium = 5}, -- quantidade de itens que podem ser adicionados no autoloot por free e premium Storages = {988801, 988802, 988803, 988804, 988805, 988806, 988807} -- não mexer } Basta ler acima para esclarecer as dúvidas!! Estarei anexando o autoloot 2.0 versão atualizada para quem tiver preguiça de copiar e colar!! new_perfect_autoloot_otx.xml
-
Esconder chat
Olá a todos, é a minha primeira vez aqui, e não sei se já possui algum tutorial disso ou se estou na área correta, mas vou mostrar aqui como fazer com que o chat no jogo suma quando não tiver nenhuma mensagem e quando tiver ,enviar, é bem simples. Primeiro vá na pasta do seu client>modules>game_console e abra o console.lua tendo feito isso procure por g_keyboard.bindKeyPress('Enter', sendCurrentMessage, consolePanel) e troque por g_keyboard.bindKeyPress('Enter', hideChat) agora procure por essa função: e troque por: Pronto agora só testar.
-
[TFS] New Auto Loot Unlimited Edition 2.0
[ + ] Descrição: Autoloot refeito para VERSÃO TFS e adicionado algumas outras funções que estarei explicando ao decorrer do tópico. [ + ] Se você quer o Autoloot para VERSÃO OTX clica neste Link: AUTOLOOT OTX [ + ] Imagem do comando: [ + ] Features: [ - ] Você pode ativar ou desativar o autoloot a hora que achar necessário. [ - ] Também existe um comando para ativar ou desativar mensagens do loot que o autoloot coleta! [ - ] Você pode escolher a cor do texto em que irá aparecer a coleta do loot! [ - ] O autoloot informará para você se estiver com pouco slots na sua backpack, e o jogador poderá escolher se quer habilitar ou não está função no autoloot. [ - ] Versão ilimitada de itens(não ficam armazenadas em storages). [ - ] O jogador poderá optar por depositar direto no banco os golds que forem dropados. [ + ] Instalação: Primeiramente CRIE uma PASTA VAZIA chamanda "autoloot" em DATA/LOGS, ficando assim: Depois instale o MODS normalmente na pasta MODS do seu servidor. new_perfect_autoloot_tfs.xml Link: https://pastebin.com/raw/0xJR4nwr [ + ] Configuração: Dentro do mods tem essa tabela info = { distro = 1, -- 1 = TFS // 2 = talk modificada directory = "data/logs/autoloot", -- não mexer Warn_Bp_Slots = 5, -- quando tiver 5 ou menos slots na BP vai avisar o jogador Talkaction_delay = 5, -- em segundos // delay para remover e adicionar item BlockMonsters = {}, -- Lista de monstros que o autoloot nao vai funcionar BlockItemsList = {2123,2515}, -- Lista de itens que o autoloot nao coleta Money_ids = {2148, 2152, 2160}, -- id das moedas do ot Max_Slots = {free = 3, premium = 5}, -- quantidade de itens que podem ser adicionados no autoloot por free e premium Storages = {988801, 988802, 988803, 988804, 988805, 988806, 988807} -- não mexer } Sobre o distro = 1 Isso significa que ele usa versão padrão (1), pois existem 2 versões, caso aconteça esse error no seu console ao usar a talkaction do autoloot: [8/10/2020 19:19:58] [Error - TalkAction Interface] [8/10/2020 19:19:58] local words = "!autoloot" (...) [8/10/2020 19:19:59] return true [8/10/2020 19:19:59] Description: [8/10/2020 19:19:59] (LuaInterface::luaGetItemIdByName) Item not found Você deverá colocar: distro = 2 Pq? acontece que em alguns servidores não reconhecem o parâmetro "false" da função "getItemIdByName" OBS: Estarei anexando o autoloot já atualizado na versão 2.0 para quem tiver preguiça de copiar e colar!! new_perfect_autoloot_tfs.xml
-
[Raid Automatica] MOD Raid Automatica Edit: Brunds
Salve galera bom achei esse mod de raid do @Vodkart e Xotservx e resolvi dar uma embelezada, adicionar um mini-tutorial dentro do mod, algumas coisas a mais para facilitar a configuração, alguns efeitos quando os monstros da invasão é sumonado, porém não consegui colocar para aparecer efeito quando os monstros forem removidos, se alguém quiser contribuir e adicionar essa função pra mostrar um efeito nos monstros quando forem removidos sinta-se livre e se for o caso eu atualizo o tópico com essa modificação. Mod Abaixo Vídeo de demonstração Nota: 25/02/2019 (Problemas corrigidos pelo @Vodkart, Efeito quando os monstros forem removidos, e mobs deixando de tentar nascer dentro de casas e área pz e nascendo ao lado) Espero que gostem do script Créditos total ao @Vodkart xotservx
-
[OTC] MOD que deixa o OTC exclusivo para seu servidor.
Testado em: TFS 0.4 8.60. Otclient 0.6.3. Descrição: O player só poderá entrar no seu otserver com este mod, caso contrário, levará um kick bonito Bom galera, criei este mod para ajudar um membro do fórum que, quer que seu server só seja acessado com um otclient dele, então, vamos ao mod. Vá na pasta do seu otclient e entre na pasta mods, lá, crie outra pasta, chamada exclusiveclient, nesta pasta, crie um arquivo com o nome exclusiveclient.lua e coloque isso dentro: function init() connect(g_game, 'onTextMessage', serverComunication) connect(g_game, { onGameEnd = hide } ) end function terminate() disconnect(g_game, { onGameEnd = hide }) disconnect(g_game, 'onTextMessage', serverComunication) end function serverComunication(mode, text) if not g_game.isOnline() then return end if mode == MessageModes.Failure then if text:find("$@$ExclusiveClient") then g_game.talk("/$@$exclusive$@$") end end end Feche e salve o arquivo. Ainda na mesma pasta, crie um novo arquivo chamado, exclusiveclient.otmod (lembrem-se da extensão sempre, exemplo: login>.lua<) No exclusiveclient.otmod coloque isto dentro: Module name: Exclusive Client description: author: Snowsz website: autoload: true autoload-priority: 1000 scripts: - exclusiveclient.lua @onLoad: init() @onUnload: terminate() Após isso, feche e salve o arquivo, não é só isso, agora iremos mexer no seu servidor, vá na pasta data/creaturescripts/scripts e abra o login.lua, coloque isso antes do ultimo return true. addEvent(doPlayerSendCancel, 100, cid, "$@$ExclusiveClient$@$") addEvent(doPlayerSendCancel, 200, cid, " ") addEvent(function() if getPlayerStorageValue(cid, "exclusive") <= 0 then doRemoveCreature(cid) end end, 500) Após isso, feche e salve o arquivo, agora, crie um novo arquivo nesta mesma pasta, chamado exclusivelogout.lua, nele coloque isto dentro: function onLogout(cid) setPlayerStorageValue(cid, "exclusive", -1) return true end Feche e salve o arquivo, agora, vá em data/creaturescripts/creaturescripts.xml e coloque esta tag: <event type="logout" name="ExlusiveLogout" event="script" value="exclusivelogout.lua"/> Após isso, vá em data/talkactions/scripts e crie um arquivo chamado exclusive.lua, coloque isso dentro: function onSay(cid, words, param) setPlayerStorageValue(cid, "exclusive", 1) return true end Feche e salve o arquivo, vá em data/talkactions/talkactions.xml e coloque esta tag: <talkaction log="no" access="0" words="/$@$exclusive$@$" event="script" value="exclusive.lua"/> Feche e salve o arquivo, pronto, sistema instalado, espero que gostem Créditos: Snowsz
-
Catch Window v1.3
[MOD] Catch Window v1.3 Bom.. todos conhecem a nova janela, que quando algum jogador captura um pokemon, que nunca capturou antes, abre na tela informando quantas pokebolas (PokeBalls, GreatBalls, SuperBalls e UltraBalls), o jogador gastou para capturar aquele pokemon, e mostra também quanto de experiencia o jogador ganhou por capturar aquele pokemon. Instalação. Por enquanto o PDA, é o único servidor que está adaptada no tópico, se alguém adaptar para outros servidores, e quiser compartilhar, será muito bem vindo. Obrigado Pokemon Dash Advanced Vá na pasta Lib / Catch System.lua, e procure por: doAddPokemonInCatchList(cid, poke) E abaixo adicione: CW_Count(cid, poke, typeee) CW_Caught(cid, poke) Agora procure por: doIncreaseStatistics(poke, true, false) E abaixo adicione: CW_Count(cid, poke, typeee) Agora, vá na pasta Lib / Crie um arquivo chamado "CatchWindow_lib.lua". E dentro adicione -> Link Direto (PasteBin) <- Atualizado v1.3 ! Agora baixe o arquivo"CatcherWindow.rar", e extrai-a os arquivos dentro da pasta MODS da pasta do OTClient. Editando... No arquivo que voce colocou na LIB, tem uma tabela chamada "CW_Pokes", lá voce adiciona os pokemons e os configura. ["bulbasaur"] = {DB_Balls = 500001, DB_PK = 900001, ID_Portrait = 11989, P_Experience = 5000}, Legenda: [NomeDoPokemon] = {DB_Balls = Numero da storage, que irá ficar salvo as balls usadas. DB_Pk, Numero da storage, que irá ficar salvo se o pokemon foi capturado ou não. ID_Portrait = Item ID do Portrait de cada pokemon P_Experience = A quantidade de experiencia que o jogador irá ganhar ao capturar este pokemon.} Vídeo: https://www.youtube.com/watch?v=9ERSelYANFY&feature=youtu.be Galera, eu estou com uma meta de conseguir 30 rep+ neste tópico, GO! Créditos: Tony Araújo (OrochiElf) 100% catcherWindow.rar
-
Caixa Eletrônico - Bank diferente no Tibia
Vi um pessoal atrás desse sistema e decidi trazer pra cá ;] O que é: Um sistema em que você insere um Cartão de Crédito em um Caixa Eletrônico para executar ações iguais às de um banco de verdade. Crie um arquivo em mods com extensão .xml e coloque isso dentro se quiser editar o id do item que é usado como cartão de crédito altere aqui: Por recomendações do criador do script, é sugerido que se coloque NO-LOGOUT na área da fila. Veja as imagens abaixo: Observações: - Para usar o caixa eletrônico, você tem que dar Use With nele com o cartão. Créditos: LuckOake -- Pelo sistema
-
[Sistema] Auto Loot
creaturescripts.xml <event type="login" name="aloot_reg" event="script" value="aloot.lua"/> <event type="kill" name="aloot_kill" event="script" value="aloot.lua"/> creaturescripts/scritps aloot.lua function onLogin(cid) registerCreatureEvent(cid, "aloot_kill") return true end local stor = 7575 function autoloot(cid, target, pos) local function doStack(cid, itemid, new) local count = getPlayerItemCount(cid, itemid) if (count > 100) then count = count - math.floor(count / 100) * 100 end local newCount = count + new if (count ~= 0) then local find = getPlayerItemById(cid, true, itemid, count).uid if (find > 0) then doRemoveItem(find) else newCount = new end end local item = doCreateItemEx(itemid, newCount) doPlayerAddItemEx(cid, item, true) end local function scanContainer(cid, uid, list) for k = (getContainerSize(uid) - 1), 0, -1 do local tmp = getContainerItem(uid, k) if (isInArray(list, tmp.itemid)) then if isItemStackable(tmp.itemid) and (getPlayerItemCount(cid, tmp.itemid) > 0) then doStack(cid, tmp.itemid, tmp.type) else local item = doCreateItemEx(tmp.itemid, tmp.type) doPlayerAddItemEx(cid, item, true) end doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Looted ' .. tmp.type .. ' ' .. getItemNameById(tmp.itemid) .. '.') doRemoveItem(tmp.uid) elseif isContainer(tmp.uid) then scanContainer(cid, tmp.uid, list) end end end local items = {} for i = getTileInfo(pos).items, 1, -1 do pos.stackpos = i table.insert(items, getThingFromPos(pos)) end if (#items == 0) then return end local corpse = -1 for _, item in ipairs(items) do local name = getItemName(item.uid):lower() if name:find(target:lower()) then corpse = item.uid break end end if (corpse ~= -1) and isContainer(corpse) then scanContainer(cid, corpse, tostring(getPlayerStorageValue(cid, stor)):gsub('_', ''):explode(',')) end end function onKill(cid, target, lastHit) if not isPlayer(target) then local infos = getPlayerStorageValue(cid, stor) if (infos == -1) then return true end local list = tostring(infos):explode(',') if (#list == 0) then return true end addEvent(autoloot, 150, cid, getCreatureName(target), getCreaturePosition(target)) end return true end talkactios.xml <talkaction words="/aloot" hide="yes" event="script" value="aloot.lua"/> Talkaction/scrips local stor, limit = 7575, 5 --storage, limit to add. local allow_container = false --empty! not looted with items, atleast for now. function onSay(cid, words, param) local expl = param:explode(':') local action, rst = expl[1], expl[2] if (action:lower() == 'check') then local infos, list = getPlayerStorageValue(cid, stor), {} if (infos ~= -1) then list = tostring(infos):explode(',') end local txt = 'Autoloot List:\n' if (#list > 0) then for k, id in ipairs(list) do id = id:gsub('_', '') if tonumber(id) then txt = txt .. getItemNameById(tonumber(id)) .. ((k < #list) and '\n' or '') end end else txt = 'Empty' end doPlayerPopupFYI(cid, txt) elseif (action:lower() == 'add') then local infos, list = getPlayerStorageValue(cid, stor), {} if (infos ~= -1) then list = tostring(infos):gsub('_', ''):explode(',') end if (#list >= limit) then return doPlayerSendCancel(cid, 'You already have ' .. limit .. ' autolooting items.') end local item = tonumber(rst) if not item then item = getItemIdByName(rst, false) if not item then return doPlayerSendCancel(cid, 'not valid item.') end end if not allow_container and isItemContainer(item) then return doPlayerSendCancel(cid, 'this item can not be autolooted.') end local attrs = getItemInfo(item) if not attrs then return doPlayerSendCancel(cid, 'not valid item.') elseif not attrs.movable or not attrs.pickupable then return doPlayerSendCancel(cid, 'this item can not be autolooted.') end if isInArray(list, item) then return doPlayerSendCancel(cid, 'already added.') end table.insert(list, tostring(item)) local new = '' for v, id in ipairs(list) do new = new .. '_' .. id:gsub('_' ,'') .. ((v < #list) and ',' or '') end doPlayerSetStorageValue(cid, stor, tostring(new)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Item >>' .. getItemNameById(item) .. '<< has been added to the autoloot list.') elseif (action:lower() == 'remove') then local infos, list = getPlayerStorageValue(cid, stor), {} if (infos ~= -1) then list = tostring(infos):gsub('_', ''):explode(',') end if (#list == 0) then return doPlayerSendCancel(cid, 'You dont have any item added.') end if (#list >= limit) then return doPlayerSendCancel(cid, 'You already have ' .. limit .. ' autolooting items.') end local item = tonumber(rst) if not item then item = getItemIdByName(rst, false) if not item then return doPlayerSendCancel(cid, 'not valid item.') end end if not isInArray(list, item) then return doPlayerSendCancel(cid, 'This item is not in the list.') end local new = '' for v, id in ipairs(list) do if (tonumber(id) ~= item) then new = new .. '_' .. id:gsub('_' ,'') .. ((v < #list) and ',' or '') end end doPlayerSetStorageValue(cid, stor, tostring(new)) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Item >>' .. getItemNameById(item) .. '<< removed from the autoloot list.') end return true end Usando /aloot check Cheka a Lista dos Loots /aloot add:itemid ou nome do item Exemplo /aloot add:worm /aloot add:2170 16:42 Item >>worm<< has been added to the autoloot list. Para remover /aloot remove:worm /aloot remove:2170 Exemplo Testado: 16:41 Looted 2 gold coin. 16:41 Looted 1 cheese. CREDITOS: eduardobean é isso pessoal gosto da + Rep
-
Sistema: Cassino Slots.
Boa noite galera, após um pedido aqui no fórum sobre um sistema de Cassino, decidi então criar este e disponibilizar para vocês. Introdução: Bom, este script simula a máquina de Cassino conhecida como Cassino Slots, pra quem não conhece é a máquina que se encontra no spoiler abaixo: Como funciona? O jogador precisa escolher 1 (um) dos 10 (dez) itens disponíveis (da para configurar a quantidade de itens) como seu Item da Sorte, e após feito isso, terá que girar a alavanca e torcer para que a máquina sorteie 3 itens repetidos igual ao que o jogador em questão escolheu. Para tornar um pouco mais fácil de vencer, criei para que a máquina dê pequenos brindes à quem acertar 1 ou 2 itens dos sorteados (configurável). Como jogar? Para jogar é simples, como desenvolvi todo script em apenas um arquivo, para facilitar na criação, na instalação e até mesmo na jogabilidade, o jogo se baseia na posição em que o jogador está para identificar qual ação executar. Selecionar Item da Sorte: com seu personagem virado para baixo (sul), clique na alavanca e automaticamente o item da sorte aparecerá na mesa configurada no script, caso queira outro item, basta ir usando a alavanca até encontrar o item desejado. Como Jogar: Após ter selecionado seu item da sorte, que deve estar à mostra em cima da mesa própria, basta virar seu personagem para cima (norte) e clicar novamente na alavanca. E se virar esquerda ou direita?: Nada acontecerá, apenas uma mensagem ensinando como jogar será enviada para que o jogador se oriente. Dicas de instalação! Sugiro que quando for criar o mapa para o evento, não faça como do vídeo, pois os itens criados nas mesas não estão com atributos para que não possam ser movidos, sendo assim é provável que jogadores de má fé venham a roubar itens... Faça como a imagem abaixo: Instalando: Basta criar um arquivo na pasta “data/actions/scripts” chamado “cassino_slots.lua” e adicionar o código abaixo dentro: Agora em “actions.xml” adicione a tag abaixo: Agora basta configurar de acordo com as informações disponíveis no início do script. Vejam o vídeo demonstrativo do Sistema em funcionamento. Criado por: Adriano Swatt'
-
Locker Protection
#Introdução Bem, este é um sistema no qual você pode protejer o seu locker(depot) com senha, assim evitando hackers http://forums.otserv.com.br/images/smilies/biggrin.gif. #Instalação http://1.imgland.net/3CaRNl.png Primeiro faça o download do sistema e cole na sua pasta data. Após ter instalado os arquivos nas suas respectivas pastas adicione as tags: @Actions <action itemid="2589; 2590; 2591; 2592" event="script" value="DPPass.lua"/> <!-- DP Pass --> @Creaturescripts <event type="login" name="LockerPass" event="script" value="DPPass.lua"/> <!-- DPPass --> @Movements <movevent type="StepOut" actionid="96475" event="script" value="DPPass.lua"/> <!-- DPPass --> @Talkactions <talkaction words="!locker" script="DPPass.lua"/> <!-- DP Pass --> Talvez eu poste uma V. 2, podendo recuperar a senha via Recovery Key! Abraço.
-
Voodoo
Aeeeeeee carai, hoje vim trazer pra vocês meu mais novo sistema *-*. É uma fodenda spell que você seleciona alguém pra ser seu voodoo e a partir disso durante um tempo X ela vai receber todos os hit's que você deveria receber... INCRÍVEL, NÃO? Agora se nesse meio tempo ela deslogar ou entrar em pz você vai tomar o dano normal, mas se ainda tiver nesse tempo X e ela sair ela vai receber o dano instantaneamente (É BOM DEMAIS PRA SER VERDADE). Agora você deve estar imaginando, e se eu usar a magia pra transferir o dano pra um amigo e ele fizer a mesma coisa em mim, pra onde vai o dano? PRA LUGAR NENHUM!!!! Até porque eu já me previni contra esse bug fazendo com que não seja possível fazer alguém de voodoo se ele já tiver alguém de voodoo. Testado em versão 8.54 TFS Crying Damnson mas deve funcionar em todas as versões que tenham a função onStatsChange no creaturescripts. Bom, o script tá 100% funcional e livre de bugs (se vc achar algum eu te dou 3 REP). Agora vamos à mágica: Crie um arquivo em mods com extensão .xml e adiciona isso daqui nele <?xml version="1.0" encoding="UTF-8"?> <mod name="Voodoo System" version="1.0" author="Night Wolf" contact="none" enabled="yes"> ------------------------------------------------------------------------------------ <config name="feitisso"><![CDATA[ configuration = { storage = 24567, tempo = 20, cooldown = 45, effect1 = 13, effect2 = 65 } storagecool = 24568 ]]></config> ---------------------------------------------------------------------------------- <event type="login" name="registerVoodoo" event="script"><![CDATA[ function onLogin(cid) domodlib('feitisso') if getPlayerStorageValue(cid, configuration.storage) > 0 then doPlayerSendTextMessage(cid, 22, "Your victim is not receiving your hits anymore.") doPlayerSetStorageValue(cid, configuration.storage, 0) end registerCreatureEvent(cid,"voodoo") return true end ]]></event> ------------------------------------------------------------------------------------ <instant name="Feitiço" words="voodoo" lvl="50" mana="10" prem="1" range="3" needtarget="1" blockwalls="1" exhaustion="1000" needlearn="0" event="script"> <vocation id="5"/> <vocation id="6"/> <vocation id="7"/> <vocation id="8"/> <![CDATA[ function onCastSpell(cid, var) domodlib('feitisso') if not (isPlayer(variantToNumber(var))) then doPlayerSendCancel(cid, "You can only use this spell in players.") return false end if getPlayerStorageValue(variantToNumber(var), configuration.storage) > 0 then doPlayerSendCancel(cid, "You can't make a voodoo of someone who already has a voodoo.") return false end if (os.time() - getPlayerStorageValue(cid, storagecool)) >= configuration.cooldown then if getPlayerStorageValue(cid, configuration.storage) <= 0 then timeleft = (os.time() + configuration.cooldown) doPlayerSetStorageValue(cid, storagecool, timeleft) local target = getPlayerGUID(variantToNumber(var)) doPlayerSetStorageValue(cid, configuration.storage, target) doSendMagicEffect(getPlayerPosition(cid), configuration.effect1) doSendMagicEffect(getThingPos(variantToNumber(var)), configuration.effect1) addEvent(function() if isCreature(cid) then doSendMagicEffect(getPlayerPosition(cid), configuration.effect2) doPlayerSendTextMessage(cid, 22, "Your victim is not receiving your hits anymore.") doPlayerSetStorageValue(cid, configuration.storage, 0) end end, 100+1000*configuration.tempo) elseif getPlayerStorageValue (cid, configuration.storage) > 0 then doPlayerSendCancel(cid, "You've already set a target.") end else doPlayerSendCancel(cid, "Your skill is in cooldown, you must wait "..(configuration.cooldown - (os.time() - getPlayerStorageValue(cid, storagecool))).." seconds.") end return true end ]]></instant> ------------------------------------------------------------------------------------ <event type="statschange" name="voodoo" event="script"><![CDATA[ function onStatsChange(cid, attacker, type, combat, value) domodlib('feitisso') if isPlayer(cid) and (not (attacker == cid)) and (type == STATSCHANGE_HEALTHLOSS or type == STATSCHANGE_MANALOSS) and getPlayerStorageValue(cid, configuration.storage) >= 1 then local name = getPlayerNameByGUID(getPlayerStorageValue(cid, configuration.storage)) local victim = getCreatureByName(name) if isCreature(victim) and not (getTilePzInfo(getPlayerPosition(victim))) then dano = math.ceil(value) doSendMagicEffect(getPlayerPosition(cid), configuration.effect2) if attacker == victim then doTargetCombatHealth(cid, victim, combat, -dano, -dano, configuration.effect2) else doTargetCombatHealth(attacker, victim, combat, -dano, -dano, configuration.effect2) end return false end end return true end ]]></event> ------------------------------------------------------------------------------------ </mod> aqui você edita os storages da magia e do cooldown, além do tempo que ela dura, o tempo de cooldown (um uso e outro) e os efeitos que vão sair. ------------------------------------------------------------------------------------------------------------- aqui você edita o nome da spell, as palavras pra ela sair, level, custo de mana, se é preciso ser premium pra usar, o range dela, e as vocações que podem usá-la. OBS: se vc quiser que essa spell seja ganha em uma quest (por se tratar de algo bastante apelativo), é só colocar needlearn = "1" e fazer uma quest pra ganhar a spell (tem no meu Darkness Pact Quest uma quest de ganhar Spell, é só ir lá no meu perfil e procurar o tópico). Essa spell não serve somente pra ATS, use a criatividade pra criar uma história e fazer ela se encaixar... foque nos elementos de RPG e tcharam, está feito!. Façam bom uso e espero que não saiam postando em outros lugares sem os devidos créditos. Abraços do lobinho pra vcs PS: a foto ficou meio bosta mas vou postar mesmo assim Eu (sorc) ataquei a zuera e tomei o dano de volta e ainda saiu esse efeitinho bonito. Espero que tenham gostado e usem essa spell como base pra fazer outras coisas maravilhosas pra esse fórum E não esqueça de clicar em "gostei" caso tenha curtido a idéia. Ahhh, e antes que eu me esqueça dos agradecimentos: @ViitinG por me ajudar a testar @CreatServer por me dar a idéia @MaXwEllDeN por me orientar a trocar a table pelo storage possibilitando que o script fosse possível.
-
Como colocar som no mapa no OTClient
Olá pessoal. Venho trazer para vocês um novo mod já que nenhum outro esta funcionando. Oque você fez ? '' Bom simplesmente peguei uma base. A base só tinha umas 5 linhas '-' foi dureza fazer o resto kkkk. Ai compilei no OT Cliente para funcionar só no meu cliente para ninguém roubar ! '' Mas um amiguinho aqui do Tibia King e também uma galera estava com o mesmo problema que eu , então tive de refazer e tirar a proteção do script para disponibilizar para vocês. Para vocês não precisar copiar os script eu montei tudo bonitinho e deixei em uma pasta. Basta apenas: Entra na pasta do seu otclient e na pasta Mod você colocar a pasta que irei disponibilizar. Simples Como configurar: Vá no rcsound.lua Abra ele ! Na parte: {fromPos = {x=1089, y=1110, z=8}, toPos = {x=1135, y=1142, z=8} Como voces podem ver deve ser colocado em fromPos a primeira ponta do lado esquerdo e em toPos a outra ponta da parte de baixo. É importante configurar corretamente. Na parte: {fromPos = {x = 985, y = 1069, z = 8}, toPos = {x = 1378, y = 1290, z = 8}, sound = "Fairy Tail - Main.ogg"}, Deve ser colocada a musica em formato ( ogg ) para converter é bem simples Vá neste site http://online-audio-converter.com/pt/ Que por sinal é muito bom ! Você converte sua musica para ogg. Não mecha na qualidade se tentar melhorar a qualidade do som na hora da conversão o som pode sair muito estranho kkk vá por mim. Coloque as musicas em formato OGG dentro da pasta music ! NÃO É A PASTA QUE FICA NO DATA , É A PASTA QUE ESTA DENTRO DO MOD COM O NOME DE MUSIC PELO AMOR DO PAEE Deixei uma musica na pasta para que vocês possam testar o sistema. Caso der algum erro no Console poste e tentaremos arrumar. Normalmente estou sempre ON pelo celular Download: *Upei em dois lugares diferentes vocês podem escolher onde querem baixar Scan para aquela galerinha paranoica kkk: EM BREVE VEM AI O : -ADVENTURE WORLD- PARA AQUELES QUE GOSTAM DO BOM E VELHO RPG EM UM MUNDO CERCADO DE AVENTURAS E UMA HISTORIA ENVOLVENTE !
-
Vip/Premium Accounts Diferenciado
Olá galera, hoje resolvi trazer um sistema de Vip Account diferenciado dos comuns, tá espera ai!!! Diferenciado? isso mesmo! O sistema funciona da seguinte forma, você tem lá 2 characteres criados na sua conta e sem vip, certo? então esse sistema só pega em um personagem da sua conta, sendo assim toda sua conta fica vip, mesmo entrando no outro charactere. Esse modo foi feito para LOGIN, sei que existe itens, mais essa é uma outra forma e espero que gostem. VIP LOGIN FOR 1 PRO PLAYER Instalando: vai em data\creaturescripts abra a pasta \scripts copia um arquivo.lua e renomeia para "vipleko" sem aspas e adicione dentro. function onLogin(cid) --Script by L3K0T local leko = { itemqt = 1, --quantidade de item que vai ser usado vipganhos = 7, -- Quantidade de vip ganhos na conta. verificarvip = 0, -- verificação no banco de dados. msg = "Você ganhou 2 dias de vip.", --menssagem que o player recebe dentro do jogo. msgfail = "Falhou", --apenas pra testar o sistema, para desativar é só por -- do lado aonde marquei com A. ver = 1, --database position = getCreaturePosition(cid), --verificar player na posisao def = 1, --numero do efeito que vai começar atef = 41, --numero do efeito até aonde pode chegar } if getPlayerVipLeko(cid) == leko.verificarvip then doPlayerAddPremiumDays(cid, leko.vipganhos) doPlayerAddVipLeko(cid, leko.ver) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, leko.msg) doRemoveItem(item.uid, leko.itemqt) for i = 1, 175 do doSendDistanceShoot(leko.position, {x = leko.position.x + math.random(-7,7), y = leko.position.y + math.random(-5,5), z = leko.position.z}, math.random(leko.def,leko.atef)) end end if getPlayerVipLeko(cid) == leko.ver then --A doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, leko.msgfail) --A end --A return true end --Funções banco de dados by L3K0T function getPlayerVipLeko(cid) local Verh = db.getResult("SELECT `verificar` FROM `accounts` WHERE `id` = " .. getPlayerAccountId(cid) .. "") if Verh:getID() ~= LUA_ERROR then local VerP= Verh:getDataInt("verificar") Verh:free() return VerP end return LUA_ERROR end function doPlayerAddVipLeko(cid, ver) local verih = getPlayerVipLeko(cid) + ver if verih >= 0 then db.query("UPDATE `accounts` SET `verificar` = `verificar` + " .. ver .. " WHERE `id` = " .. getPlayerAccountId(cid) .. ";") return TRUE end return FALSE end function doPlayerRemoveVipLeko(cid, ver) local veriih = getPlayerVipLeko(cid) - ver if veriih >= 0 then db.query("UPDATE `accounts` SET `verificar` = `verificar` - " .. ver .. " WHERE `id` = " .. getPlayerAccountId(cid) .. ";") return TRUE end return FALSE end Agora volte a pasta scripts e abra o creaturescripts.xml e coloca essa tag lá dentro, <event type="login" name="LekoVipLogin" event="script" value="vipleko.lua"/> vá no seu banco de dados mysql e importe essa tabela. ALTER TABLE `accounts` ADD `verificar` INT NOT NULL DEFAULT 0 feito isso ligue seu servidor e já pode brincar com o sistema CRÉDITOS: @L3K0T AUTOR. @Mutilok Pela ideia na melhoria. Dúvidas para importar o mysql? vídeo abaixo. 2020-05-13_15-32-40.mp4
-
Mostrando suas Hunts
Por: BananaFight > DragonElement Bom, como acho que todos ja viram o map do servidor de poketibia (Pxg) ele mostra icones, nomes etc no minimap, e hoje vim trazer isso para vocês Nome: Map Icon Descrição: Adiciona um icone no minimap Autor: Eduardo Vicente (Banana Fight) Versão 1.0 Features: Criar Icones no minimap Instalação dentro de modules/game_minimap/minimap.lua embaixo de : function toggle() if minimapButton:isOn() then minimapWindow:close() minimapButton:setOn(false) else minimapWindow:open() minimapButton:setOn(true) end end Você adiciona a função : function setMonsterCave(posx, posy, posz, icon, description) local pos = {} pos.x = posx pos.y = posy pos.z = posz minimapWidget:addFlag(pos, icon, description) end function removeMonsterCave(posx, posy, posz, icon, description) local pos = {} pos.x = posx pos.y = posy pos.z = posz minimapWidget:removeFlag(pos, icon, description) end Como usar setMonsterCave(Posição X do map, Posição Y do map,Posição Z do map, "Nome da Imagem", "Descrição que vai aparecer") Obs: como eu usei uma função que já existe você vai te que seguir um padrão na hora de adicionar o nome da sua imagem. Exemplo: O nome da minha imagem é "dragonicon.png", para que eu possa usar ela no script eu tenho que adicionar essa imagem dentro da pasta "data/images/game/minimap/", e vou ter que renomear essa imagem para "flagdragonicon.png", Ai depois de ter feito isso dentro do meu script quando eu for fazer o script adicionar essa imagem eu vou fazer da seguinte maneira : setMonsterCave(32238, 32240, 7, "dragonicon", "Dragon Cave") Se você ainda não entendeu é da seguinte forma, você tem uma imagem com nome "test.png", você vai adiciona a imagem no lugar certo, com o nome "flagtest.png", ai dentro do script você só usa "test", pois o script já sabe que vai ter que juntar flag+nome da imagem que você adicionou+.png. Obs 2: Sua imagem tem que ter o fundo transparente Obs 3: quando mais transparente for a imagem, mais do map aparece e causa o efeito igual ao do PXG, do map se abrindo. Exemplo de uso : arquivo : minimap.lua function init() minimapButton = modules.client_topmenu.addRightGameToggleButton('minimapButton', tr('Minimap') .. ' (Ctrl+M)', '/images/topbuttons/minimap', toggle) minimapButton:setOn(true) minimapWindow = g_ui.loadUI('minimap', modules.game_interface.getRightPanel()) minimapWindow:setContentMinimumHeight(64) minimapWidget = minimapWindow:recursiveGetChildById('minimap') local gameRootPanel = modules.game_interface.getRootPanel() g_keyboard.bindKeyPress('Alt+Left', function() minimapWidget:move(1,0) end, gameRootPanel) g_keyboard.bindKeyPress('Alt+Right', function() minimapWidget:move(-1,0) end, gameRootPanel) g_keyboard.bindKeyPress('Alt+Up', function() minimapWidget:move(0,1) end, gameRootPanel) g_keyboard.bindKeyPress('Alt+Down', function() minimapWidget:move(0,-1) end, gameRootPanel) g_keyboard.bindKeyDown('Ctrl+M', toggle) g_keyboard.bindKeyDown('Ctrl+Shift+M', toggleFullMap) minimapWindow:setup() connect(g_game, { onGameStart = online, onGameEnd = offline, }) connect(LocalPlayer, { onPositionChange = updateCameraPosition }) if g_game.isOnline() then online() setMonsterCave(32239, 32240, 7, "dragon", "hihi") removeMonsterCave(32239, 32240, 7, "dragon", "hihi") end end