Ir para conteúdo

Vinicius Caetano

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    Vinicius Caetano deu reputação a Vodkart em Walking Effect On Outfit   
    Créditos: AnneMotta & Vodkart
    Descrição: Ao andar com o full addon de algumas outfits irá sair um efeito.
    Em creaturescript/script crie um arquivo.lua e renomeie para:
    outfiteffect.lua
      function onLogin(cid) registerCreatureEvent(cid, "EffectOutLogin") registerCreatureEvent(cid, "OutfitEffects") return doCreatureChangeOutfit(cid,{lookType = getCreatureOutfit(cid).lookType, lookHead = getCreatureOutfit(cid).lookHead, lookBody = getCreatureOutfit(cid).lookBody, lookLegs = getCreatureOutfit(cid).lookLegs, lookFeet = getCreatureOutfit(cid).lookFeet, lookAddons = getCreatureOutfit(cid).lookAddons}) end local events = {} function onOutfit(cid, old, current) local effect = { [136] = 3, [128] = 3, -- citizen [270] = 27,[273] = 27, -- jester [156] = 61,[152] = 61, -- assassin [147] = 44,[143] = 44, -- barbarian [148] = 45,[144] = 45, -- druid [157] = 68,[153] = 68, -- beggar [149] = 36,[145] = 36, -- wizard [279] = 17,[278] = 17, -- brotherwood [137] = 39,[129] = 39, -- hunter [141] = 66,[133] = 66, -- summoner [142] = 34,[134] = 34, -- warrior [155] = 31,[151] = 31, -- pirate [158] = 46,[154] = 46, -- shaman [288] = 6,[289] = 6 -- demonhunter } local o,c= effect[old.lookType],effect[current.lookType] if getPlayerAccess(cid) > 2 then return true elseif (not o or not c or old.lookAddons == 3 and o) then stopEvent(events[getPlayerGUID(cid)]) end if current.lookAddons == 3 and c then function WalkEffect(cid, c, pos) if not isCreature(cid) then return LUA_ERROR end if c then frompos = getThingPos(cid) if frompos.x ~= pos.x or frompos.y ~= pos.y or frompos.z ~= pos.z then doSendMagicEffect(frompos, c) end events[getPlayerGUID(cid)] = addEvent(WalkEffect, 100, cid, c, frompos) end return true end WalkEffect(cid, c, {x=0, y=0, z=0}) end return true end em creaturescript.xml adicione as tags:
      <event type="login" name="EffectOutLogin" event="script" value="outfiteffect.lua"/> <event type="outfit" name="OutfitEffects" event="script" value="outfiteffect.lua"/> Como configurar:
    [iD DA OUTFIT] = N° DO EFEITO
  2. Gostei
    Vinicius Caetano deu reputação a Vodkart em [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
  3. Gostei
    Vinicius Caetano deu reputação a L3K0T em Saiba todas as funções do seu TFS   
    Como diz o titulo? você pode gerar suas funções do seu tfs em um arquivo texto, para fazer isso é só ir na lib 050 e adicionar isso no final, depois é só ligar o seu servidor e assim todas funções do seu server vai aparecer no arquivo txt. "Isso é bom pra resolver problemas de scripts e trabalhar de forma melhor, com a manipulação do mesmo."
     
    function getLuaFunctions() local str = "" for f,k in pairs(_G) do if type(k) == 'function' then str = str..f..',' elseif type(k) == 'table' then for d,o in pairs(k) do if type(o) == 'function' then if f ~= '_G' and d ~= "_G" and f ~= 'package' then str = str..f.."."..d..',' end elseif type(o) == 'table' then for m,n in pairs(o) do if type(n) == 'function' then if d == "_M" and m ~= "_M" and f ~= "_G" and f ~= 'package' then str = str..f.."."..m.."," elseif f ~= '_G' and m ~= "_G" and d ~= "_G" and f ~= 'package' then str = str..f.."."..d..'.'..m..',' end elseif type(n) == 'table' then for x,p in pairs(n) do if type(p) == 'function' then if m == "_M" and d ~= "_M" and f ~= "_G" and f ~= 'package' then str = str..f.."."..d..'.'..x..',' elseif m == "_M" and d == "_M" and f ~= "_G" and f ~= 'package' then str = str..f.."."..x..',' elseif m ~= "_M" and d == "_M" and f ~= "_G" and f ~= 'package' then str = str..f..'.'..m..'.'..x..',' elseif f ~= '_G' and m ~= "_G" and d ~= "_G" and f ~= 'package' then str = str..f.."."..d..'.'..m..'.'..x..',' end end end end end end end end end return string.explode(str,',') end local k = getLuaFunctions() local file__ = io.open('funcoes do seu servidor.txt','w') table.sort(k) for i=1,#k do if k[i] ~= "" then file__:write((i-1)..' - '..k[i]..'\n') end end file__:close() Créditos: Mock
  4. Gostei
    Vinicius Caetano deu reputação a Kimoszin em Problema /attr position x y z   
    Cria um teleport embaixo de você.

    newteleport.lua

    function onSay(cid, words, param, channel) local s = string.explode(param, ",") local topos = {x=s[1], y=s[2], z=s[3]} doCreateTeleport(1387, topos, getCreaturePosition(cid)) return TRUE end talkactions.xml <talkaction words="/newteleport" access="5" event="script" value="newteleport.lua"/> /newteleport 1017, 1027, 7
  5. Gostei
    Vinicius Caetano deu reputação a Skydangerous em [Resolvido] [AJUDA] Sql   
    esse aqui:


    ALTER TABLE `accounts` ADD `p_points` INTEGER NOT NULL DEFAULT 0
  6. Gostei
    Vinicius Caetano deu reputação a DdJs em Warlocks Hunt | 8.60   
    Cave hunt - Warlocks Cave.
     
    Download: Here
     
    Scan: Here

    Imagens:
     

     

     

  7. Gostei
    Vinicius Caetano deu reputação a DdJs em Demons Dungeon | Cave Hunt | 8.60   
    Cave hunt - Demons Dungeon.
     
    Download: Here
     
    Scan: Here

    Imagens:
     

     

     

     

     

     

     

     

     

     

  8. Gostei
    Vinicius Caetano deu reputação a DdJs em Forbidden Village | 8.60   
    Cave hunt - Forbidden Village.
     
    Download: Here
     
    Scan: Here

    Imagens:
     

     

     

     

     

     

     

     

     

     

     

     
     
  9. Curtir
    Vinicius Caetano deu reputação a VitorSubhi em [Sistema] Advanced Trade Points v1.0   
    Desculpe pela demora, realmente havia me esquecido de colocar a lua_register no tópico, referente ao arquivo luascript.cpp. Basta adicioná-lo que seu problema será resolvido.
     
     
  10. Gostei
    Vinicius Caetano deu reputação a xWhiteWolf em 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.
  11. Gostei
    Vinicius Caetano deu reputação a xWhiteWolf em (Resolvido)Spell para ficar intocavel   
    ahaauhauhauh eu ainda não curto essas idéias de ter que pagar por script.. faço as coisas na boa vontade e espero uma resposta em troca pelo menos do cara falar que gostou ou me contar como ele utilizou no server. Infelizmente muita gente acha que só porque sou suporter é minha obrigação ajudar e pega o script usa no server e nem responde mais nada
  12. Gostei
    Vinicius Caetano deu reputação a xWhiteWolf em (Resolvido)Spell para ficar intocavel   
    remove essa linha:
    doAddCondition(cid, outfit)
  13. Gostei
    Vinicius Caetano deu reputação a xWhiteWolf em (Resolvido)Spell para ficar intocavel   
    só muda a spell e tira a condition invisible:
     
    local config = {  storage = 3482101, cooldown = 30,  --- tempo entre um uso e outro duration = 5, --- duração effect1 = 29 -- efeito que sai ao falar a spell }  function onCastSpell(cid, var)      if os.time() - getPlayerStorageValue(cid, 55695) >= config.cooldown then setPlayerStorageValue(cid, 55695, os.time()) doSendMagicEffect(getCreaturePosition(cid), config.effect1) setPlayerStorageValue(cid, config.storage, os.time() + config.duration) doCreatureSay(cid,"UNTOUCHABLE!!!", 19) doPlayerSendTextMessage(cid, 27, "You have now ".. config.duration .." seconds of invulnerability.") else doPlayerSendCancel(cid, "Your skill is in cooldown, you must wait "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, 55695))).." seconds.") return false end       return true end
  14. Gostei
    Vinicius Caetano deu reputação a MaXwEllDeN em [Aula 1] Introdução   
    Introdução
    Aula 1
    O que é scripting?
    Do modo mais simples possível: scripting é o ato de programar. O nome scripting vem do nome "script".
    O que é um script?
    De um modo geral, um script é um bloco de código escrito em uma linguagem de programação interpretada, ou seja, ele precisa que alguma coisa leia ele e possa "traduzir" seu conteúdo. Lembre-se de que "script" não é um termo específico de Open Tibia Servers.
    O que é uma linguagem de programação interpretada?
    Os brasileiros falam português, ingleses falam inglês e chineses falam mandarim, e com isso o mundo é composto por várias línguas.
    No mundo da programação não é diferente. Existem várias línguas que podem ser usadas, cada uma com uma característica e modo de escrever diferente (Assim como o português é diferente do inglês).
    Entre estas linguagens, existem 2 tipos: as linguagens interpretadas e as linguagens compiladas (Não-interpretadas). Podemos fazer uma comparação tosca com a vida real: o português seria uma linguagem interpretada (Nosso cérebro precisa "traduzir" a mensagem), e os desenhos seriam a língua compilada (Nosso cérebro reconhece automaticamente a "mensagem" do desenho).
    As linguagens compiladas são aquelas que não precisam ser lidas por nenhum programa, pois "conversam" diretamente com o computador, enquando a linguagem interpretada não consegue se comunicar com o computador, então a linguagem compilada recebe a mensagem do codigo interpretado e traduz numa linguagem que o computador entenda, dai a linguagem interpretada pode conversar com o computador (Desde que alguém traduza suas mensagens).
    Voltando para a parte de Open Tibia Servers, a linguagem compilada é a linguagem usada no seu servidor: o .exe no Windows, por exemplo, e a linguagem interpretada são os scripts .lua. O seu servidor compilado vai ler os scripts .lua e traduzir o conteúdo deles para que o computador possa executar o que o script manda.
    Se os scripts são escritos em linguagens interpretadas, qual é a linguagem dos script usados nos Open Tibia Servers?
    Os Open Tibia Servers usam uma linguagem de programação (Interpretada) chamada Lua, que foi feita aqui no Brasil mesmo.
    Características da linguagem de programação Lua:
    Linguagem de Programação Interpretada Linguagem de Programação Imperativa ou Programação Procedural Linguagem de Scripts ou Linguagem de Extensão Pequena, Fácil, Leve e Eficiente " Lua foi criada por um time de desenvolvedores do Tecgraf da PUC-Rio, a princípio, para ser usada em um projeto da Petrobras. Devido à sua eficiência, clareza e facilidade de aprendizado, passou a ser usada em diversos ramos da programação, como no desenvolvimento de jogos (a LucasArts, por exemplo, usou a linguagem no jogo Escape from Monkey Island), controle de robôs, processamento de texto, etc. Também é freqüentemente usada como uma linguagem de propósito geral. "
    Wikipédia - Lua (Linguagem de Programação)
    O que eu preciso para aprender Lua e começar a produzir meus scripts?
    Paciência (Embora seja de fácil aprendizado, você vai levar algum tempo para aprender a linguagem)
      Humildade (Nunca se sinta o melhor, nem ridicularize aqueles que tiverem um conhecimento menor que o seu)
      Vontade (Não adianta fazer as coisas sem o menor interesse, você não chegará a lugar nenhum sem vontade)
      Criatividade (O principal para produzir um script é ter a idéia do que você vai fazer)
      Conhecer a Lógica da Programação (Não se preocupe, eu vou ensinar a Lógica da Programação nas próximas aulas.)
      Interpretador Lua (Para testar seus scripts, claro. Você pode usar o seu OTServer para testar, e ainda usar um interpretador Lua para testar seus scripts simples fora do OTServer)
      Editor Lua (Não é realmente necessário, uma vez que você pode usar um editor de textos qualquer, como o bloco de notas, mas ter um Editor Lua vai ajudar muito, e alguns até vêm com um Interpretador Lua junto!)
      Pagar uma taxa de R$ 700,00, afinal, não estou escrevendo estas aulas de graça! (OK, não precisa pagar nada, mas no mínimo poste seus scripts aqui e ajude a seção a crescer ) Onde posso encontrar um Interpretador e/ou Editor Lua?
    Como interpretador (No caso de produzir scripts para Open Tibia Servers) você deve usar um servidor próprio, pessoal somente para testar os scripts que você fez, e pode usar também um Interpretador Lua geral, para testar seus scripts fora dos OTServers.
    Como Editor Lua você pode usar qualquer editor de textos, mas eu recomendo usar um editor que seja próprio para a linguagem Lua. Existem dois editores que já vem com um Interpretador Lua "embutido". São eles: OTScript Live! [Download] e SciTE (Scintilla) [Download].
    Exercício-Tarefa:
    Pesquise mais na internet sobre a linguagem Lua, Scripts, etc...
    Somente dúvidas serão aceitas aqui! Comentários que não forem dúvidas serão apagados e os autores serão reportados!
    Essa aula foi escrita por uma raposa levada Skyen Hasus, todos os créditos são dele.
    Aula 2 - Lógica da programação >> Script Live By colex.rar
  15. Gostei
    Vinicius Caetano deu reputação a Wise em (Resolvido)[PEDIDO] Modificando o Exiva   
    Já na source, em game.cpp:


    Procure por:
            switch(direction)         {             case DIR_N:                 ss << "north";                 break;             case DIR_S:                 ss << "south";                 break;             case DIR_E:                 ss << "east";                 break;             case DIR_W:                 ss << "west";                 break;             case DIR_NE:                 ss << "north-east";                 break;             case DIR_NW:                 ss << "north-west";                 break;             case DIR_SE:                 ss << "south-east";                 break;             case DIR_SW:                 ss << "south-west";                 break;             default:                 break;         }


    Substitua por:
            switch(direction)         {             case DIR_N:                 ss << "north [/\]";                 break;             case DIR_S:                 ss << "south [\/]";                 break;             case DIR_E:                 ss << "east [>]";                 break;             case DIR_W:                 ss << "west [<]";                 break;             case DIR_NE:                 ss << "north-east [/\][>]";                 break;             case DIR_NW:                 ss << "north-west [/\][<]";                 break;             case DIR_SE:                 ss << "south-east [\/][>]";                 break;             case DIR_SW:                 ss << "south-west [\/][<]";                 break;             default:                 break;         }

Informação Importante

Confirmação de Termo