Ir para conteúdo

aq snuff

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    aq snuff deu reputação a Caronte em Lib 000-Const   
    Olá pessoal, venho mais uma vez trazer um tutorial simples, e tentar explicar tudo claramente, esse tutorial pode ficar grande dependendo do desenrolar dele, pois é um pack de tutoriais, então vou usar spoilers para ajudar na formatação do tópico.
     

     
     
     
    Nota: as informações usadas abaixo, podem ser tanto usadas com o nome, quanto com o número, e podem ser encontradas na pasta lib no arquivo 000-const
    https://pastebin.com/0FfPcg7y
     
    line4
     

     
    Coordenadas:
     
     

    Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas.

     
     
    Explicando:
    doMoveCreature(cid, direction): Serve para mover tanto o player quanto o monstro.
     
     
     
     
    Combate:
     
     

    Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas.
     
    Parâmetros de condição:
     
     
    Condições:
     
     
    Slots:
     
     

     
    Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas.
    Participação: xWhiteWolf
     
    Const_ani e Const_me:
     
     

     
    Tutorial feito e formatado por Caronte o + gato do fórum, avaliações do perfil são bem-vindas.


     
    Talktypes and message types:
     

    [title][/title]
     
    Tutoriais concluídos por ordem de formatação (podem ser alterados assim mesmo):
    Coordenadas, e suas direções. Combat (ainda há coisas a serem adicionadas). Slots. CONST_ME and CONST_ANI  
     
    Os assuntos do tópico poderão se diminuídos ou aumentados de acordo com o desenrolar do tempo,
    gostaria de apoio, e não me incomodaria se alguém se propusesse fazer algum tutorial, eles serão supervisionados por mim e formatados por mim, para serem postados neste tópico.
     
     
     
     
    Esse tópico demorou e vai demorar muito para fazer
    cada tutorial, então eu não me importo com um obrigado e REP+,
    OBS.: Um obrigado vale bem mais do que um REP+
  2. Gostei
    aq snuff deu reputação a xWhiteWolf em (Resolvido)[PEDIDO]Função onAttack e onCombat   
    cara não entendi nada doque vc falou/fez, ele não vira na diagonal pq não dá e não é bug porque se vc estiver com um player normal o bixo vai se movimentar ao seu redor e fazer você virar. Quando eu falei em usar a function  getDistanceBetween(fromPosition, toPosition) não era dessa forma.

    Era assim:
    function onAttack(cid, target)     if isCreature(cid) and isCreature(target) then         dir = getDirectionTo(getCreaturePosition(cid), getCreaturePosition(target))         doCreatureSetLookDirection(cid, dir) if getPlayerVocation(cid) == 4 or getPlayerVocation(cid) == 8 then     if getDistanceBetween(getCreaturePosition(cid), getCreaturePosition(target)) then         doSendMagicEffect(getCreaturePosition(cid), 10)     end end     end return true end
  3. Gostei
    aq snuff deu reputação a Orochi Elf em [PEDIDO]Mudar outifit quando pegar battle.   
    É necessário criar um novo "CreatureEvent", que envie pro servidor quando o character ganhar ou perder uma condição, para depois sim fazer esse script.
    Vou dar uma lida, e vou ver se programo algo aqui.
  4. Gostei
    aq snuff deu reputação a xWhiteWolf em (Resolvido)Script de Passiva para Players   
    cara, eu consegui aqui fazer dar um exori a cada % após tomar danos maiores que um valor determinado.. mas isso taria mais pra um counter attack doque pruma passiva.. me fala quais tipos de passiva vc quer que eu faço pra ti, porque cada uma vai ser muito diferente da outra.

    assim foi como ficou pra dar exori:
    -------------- area da magia --- local area = createCombatArea{  {1, 1, 1}, {1, 3, 1}, {1, 1, 1} } ------- local config = { percent = 20,  -- porcentagem de sair a magia (50 = 50% de chance) valorvida = 100 --quanto deve ser o valor minimo de vida a perder para executar o script  } function onStatsChange(cid, attacker, type, combat, value) if type == STATSCHANGE_HEALTHLOSS and value >= config.valorvida then if math.random (1,100) <= config.percent then local pos = getCreaturePosition(cid) local level, magic = getPlayerLevel(cid), getPlayerMagLevel(cid) local min, max = -(magic * 1.5 + level), -(magic * 2.5 + level) doAreaCombatHealth(cid, COMBAT_PHYSICALDAMAGE, pos, area, min, max, CONST_ME_HITAREA) end end return true end
  5. Gostei
    aq snuff deu reputação a xWhiteWolf em (Resolvido)Alterar outfit ao andar depois de usar spell   
    local config = { tempo = 10, -- tempo de uso da spell, é a duração que ela vai ter storage = 32710, -- storage em que vai ser salvo o tempo outfit = 137, --- lookType da outfit que irá ser modificada ao andar cooldown = 12 -- tempo entre 1 uso e outro (sempre deixar maior que tempo de uso da spell) } local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo * 1000) setConditionParam(condition, CONDITION_PARAM_SKILL_MELEEPERCENT, 135) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELDPERCENT, -100) setConditionParam(condition, CONDITION_PARAM_BUFF, true) setCombatCondition(combat, condition) function outfit(uid, key, id, tempo, lastPos) if getPlayerStorageValue(uid, key) - os.time() >= 0 then lastPos = lastPos or getCreaturePosition(uid) if getCreaturePosition(uid).x ~= lastPos.x or getCreaturePosition(uid).y ~= lastPos.y or getCreaturePosition(uid).z ~= lastPos.z  then lastPos = getCreaturePosition(uid) local atual = getCreatureOutfit(uid) atual.lookType = id doSetCreatureOutfit(uid, atual, tempo) end addEvent(function() if isCreature(uid) then outfit(uid, key, id, tempo, lastPos) end end, tempo) end end function onCastSpell(cid, var) if getPlayerStorageValue(cid, config.storage) - os.time() < (config.tempo - config.cooldown) then doCombat(cid, combat, var) setPlayerStorageValue(cid, config.storage, os.time() + config.tempo) outfit(cid, config.storage, config.outfit, 150, nil) else doPlayerSendCancel(cid, "Your spell is in cooldown") end return true end só substituir o script por esse, pra configurar é só alterar as coisas lá em cima lembrando que o exhaust da magia de agr em diante vai ser cooldown - o tempo pra usar ela. Logo nesse exemplo ai são 2 segundos de exhaust. Você usa uma vez, ela dura 10 segundos e dai vc tem que esperar 2 segundos pra poder usar ela novamente e ter mais 10 segundos de duração dela. Espero que tenha gostado ;]
  6. Gostei
    aq snuff deu reputação a Wise em (Resolvido)[PEDIDO]Função onAttack e onCombat   
    Adicione à lib do seu servidor:
    function jumpBehindTarget(cid, target)     local player = Player(cid)     local target = Creature(target)     local targetPos = target:getPosition()     local targetPositions = {         north = Position(targetPos.x, targetPos.y-1, targetPos.z),         east = Position(targetPos.x+1, targetPos.y, targetPos.z),         west = Position(targetPos.x-1, targetPos.y, targetPos.z),         south = Position(targetPos.x, targetPos.y+1, targetPos.z)     }     local targetDir = target:getDirection()     if targetDir == NORTH then         dir = targetPositions.south     elseif targetDir == EAST then         dir = targetPositions.west     elseif targetDir == WEST then         dir = targetPositions.east     elseif targetDir == SOUTH then         dir = targetPositions.north     end     return dir end  



    Creature event attack:
    function onAttack(cid, target)     local vocs = {4, 8}     if isCreature(cid) and isCreature(target) and isInArray(vocs, getPlayerVocation(cid)) then         jumpBehindTarget(cid, target)     end     return true end não se esqueça de registrá-lo em login.lua
  7. Gostei
    aq snuff deu reputação a xWhiteWolf em New Library v. 1.2   
    Fala 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.
  8. Gostei
    aq snuff deu reputação a xWhiteWolf em Alchemist Potions.   
    Fala galera, hoje vim trazer um script que fiz com dois intuitos:
    O primeiro foi de criar umas poções diferentes pra uma classe do meu servidor que seria uma espécie de químico.
    O segundo foi de brincar com as conditions e ver oque dava pra fazer de bom usando elas;

    O resulto foi isso daqui, um sistema de potions totalmente diferenciadas pra você poder brincar no servidor. (Sugiro clonar um item com a aparencia das potions no seu item editor pra não conflitar com as potions já existentes)

    Explicando: São 8 poções diferentes com efeitos totalmente diferentes.
    1- dá manashield pra quem não tem e tira de quem tem.
    2- explode quando tacada no chão
    3- transforma os inimigos em uma galinha!!
    4- derrama um ácido no inimigo tirando vida dele
    5- te dá 3 segundos de teleport (cliport), aonde vc clicar no mapa vc vai parar (com excessão de casas e lugares inalcançáveis)
    6- te deixa totalmente invisivel por 5 segundos (ninguém vai poder te ver, apenas gm's e você mesmo) é semelhante ao invisible do warlord
    Edit: Essa função não funciona em players, apenas em monstros. Você fica invisivel pros monstros mas os outros players ainda te veem
    7- Pacificação (impede o inimigo de dar ataques básicos por 5 segundos).. extremamente útil quando enfrentando knights.
    8- exhaust (deixa o inimigo com exhaust nas magias de ataque por 5 segundos), muito útil contra sorceres.

    Se vocês ainda estão lendo significa que vocês se interessaram então pra instalar e brincar com essas belezinhas vc só vai ter que criar um arquivo no actions/scripts chamado attackpot.lua e colocar isso daqui dentro dele:




    Feito isso apenas adicione no seu actions.xml:
    <action itemid="2006" script="attackpot.lua" allowfaruse="1"/> E agora as imagens:
    1)
    Aplicando e tirando manashield:




    2)
    Explodindo a poção no chão (use with)




    3) Transformando em galinha




    4) Tacando ácido no amiguinho




    5, 6, 7, 8 não dá pra mostrar.. tem que colocar no server e ver.

    Como todas as potions partilham o mesmo id (id do vial: 2006) pra criar essas variações você vai usar o type/count. Ou seja, pra criar as poções você vai digitar no god:
    /i 2006, 1  ​/i 2006, 2 ​/i 2006, 3 . . . ​/i 2006, 6 ​/i 2006, 9 ​/i 2006, 12 As 8 poções são {1,2,3,4,5,6,9,12}. Espero que tenham gostado e façam bom proveito do script!
  9. Gostei
    Bom galera, tem uma coisa bem simples que nem o tibia global fez e que eu to trazendo aqui pra vocês. Trata-se de um pequeno sistema que fará você sempre virar pra direção do seu target ao atacar.
    Testado em TFS 0.3.6 Cliente 8.54.

    Imagem auto explicativa:




    Chega de atacar de costas! 

    Agora pra instalar é bem tranquilo. Abra um arquivo .lua em data\creaturescripts\scripts chamado target e coloque o seguinte conteudo dentro dele:




    Feito isso adicione essa linha no creaturescripts.xml:
    <event type="attack" name="targetCreature" script="target.lua"/> E para finalizar adicione a seguinte tag em creaturescripts\scripts\login.lua:
    registerCreatureEvent(cid, "targetCreature") Espero que vcs tenham curtido, é algo bem simples mas ninguém havia pensado nisso antes (nem o próprio Tibia), é uma coisa bem básica e que torna o jogo bem mais importante e sério. 


    EDIT:: Usem essa versão que está mais completa, na anterior se o target estivesse na diagonal ele não virava.



  10. Gostei
    wow such reps auhieuhiau, não imaginei q ia fazer sucesso assim.. realmente é algo bem simples mas q vai fazer seu server ter um diferencial forte
  11. Gostei
    aq snuff deu reputação a xWhiteWolf em Quake   
    Vou deixar aqui uma spell que eu fiz pra brincar com funções da New Library, se você quiser adicionar essa spell no seu server você deve primeiro instalar a New Library: http://www.tibiaking.com/forum/topic/46015-new-library-v-10/

    Testada em 8.54
    A magia que vou apresentar hoje foi baseada nos dobradores de terra do desenho Avatar. Você controla uma vibração na terra que anda na direção que você está olhando e ao atingir um oponente roda ele em 540º.
    Aqui tem um pequeno gif do funcionamento da spell:




    Bom, sem mais delongas vamos ao script:
     
    local config = { jumps = 15, walktime = 500 } local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, true) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1, -10, -1, -15, 5, 5, 1.8, 3, -20, -40) function onCastSpell(cid, var) function moveice(cid, pos, counter) local counter = counter or 0 if (counter < config.jumps) then if (isCreature(cid)) then local pos = pos or getCreaturePosition(cid) local dir = getCreatureLookDirection(cid) local newPosition = getPosByDir(pos, dir) if ((getTopCreature(newPosition).uid == 0) and doTileQueryAdd(cid, newPosition) ~= 1) then return false end doCombat(cid, combat, { pos = newPosition, type = 2 }) doSendMagicEffect(newPosition, 34) if getTopCreature(newPosition).uid ~= 0 then doSendMagicEffect(newPosition, 54) spinRotate(getTopCreature(newPosition).uid, 2.5, 100) return false end addEvent(moveice, config.walktime, cid, newPosition, counter + 1) end end end moveice(cid) return true end e em spells.xml:
    <instant name="TK" words="toph sense" lvl="8" mana="35" prem="0" exhaustion="1500" needlearn="0" event="script" value="especiais/quake.lua"> </instant> Espero que tenham gostado e façam bom proveito. Abraços!
  12. Gostei
    aq snuff recebeu reputação de xWhiteWolf em (Resolvido)[PEDIDO]Função onAttack e onCombat   
    Ok, brigado.. Acho que da pra por se o player tiver em x sqm de distancia executar o scrpit todo, se nao, soh a mensagem de not possible ou simplesmente nada(que eh melhor melhor). De qualquer forma agradeço desde já!!! 
    https://www.youtube.com/watch?v=Xzo4PBkKYa8&feature=youtu.be
    Fiz um video explicativo curto pra vc entender xWhiteWolf, se puder olhar é bem curto, vai explicar o que eu quis dizer..
    :C
    ..
  13. Gostei
    aq snuff deu reputação a xWhiteWolf em (Resolvido)Dúvida na função   
    realmente ja existe mas saca só uma coisa:




    Tá lendo o lua-made ali em cima? Essas são as funções que não existem na source e foram criadas em alguma lib do server, isso implica que não é todo server que vai ter ela, além do mais desconhecemos o propósito do player ou a versão do servidor que ele está utilizando (funções do tipo lua made surgiram por volta de 8.1+) então acho que é mais apropriado mostrar pra ele onde ele errou doque apresentar algo novo que talvez não vá ser utilizável. Mas em todo caso foi muito bem lembrado falar dessas funções.

Informação Importante

Confirmação de Termo