Ir para conteúdo

xWhiteWolf

Héroi
  • Registro em

  • Última visita

Solutions

  1. xWhiteWolf's post in (Resolvido)[PEDIDO] Spell que gira em sua volta was marked as the answer   
    agr vai



  2. xWhiteWolf's post in (Resolvido)duvida absorver elementos was marked as the answer   
    Olá amigo, primeiramente queria dizer que fico feliz de saber que meus scripts estão sendo úteis. Pro seu problema de healar apenas para danos de fogo: no callback onStatsChange nós temos alguns parametros que nos permite manipular que tipo de dano estamos recebendo:
    function onStatsChange(cid, attacker, type, combat, value) cid - uid do player que tem os stats alterados
    attacker - uid do player que implica essa mudança de stats
    type - tipo de mudança de stats que está ocorrendo
    combat - o tipo de combat que está sendo utilizado para fazer a alteração de stats
    value - valor da mudança de stats

    vide> http://www.tibiaking.com/forum/topic/34420-callbacks-de-creaturescripts/

    Como você quer dar heal somente em danos de fogo, estamos procurando um combat do tipo 
    COMBAT_FIREDAMAGE Apenas faça um if combat == COMBAT_FIREDAMAGE ou if combat == 8 (no lugar desse 8 você bota no numero que aparece lá em data/lib/constant.lua 
    O meu está COMBAT_FIREDAMAGE = 8 então eu posso usar tanto 8 quanto COMBAT_FIREDAMAGE e aí você aplica o heal dentro dessa condição. Espero ter ajudado em algo
  3. xWhiteWolf's post in (Resolvido)Tentativa frustrante de corrigir corpses was marked as the answer   
    você tem que garantir que tá assim pra todos os corpses que o monstro pode assumir.

    Rat tem corpse 2813 mas ele vai decaindo pra vários tipos de corpses, tem que fazer pra todos. Porque a outra solução que você tá pensando vai ficar realmente pesada, ainda mais se seu server tiver vários players, imagina, várias checagens pra cada morte de monstro.. algo que acontece a todo instante.
  4. xWhiteWolf's post in (Resolvido)[PEDIDO] Sistema de reset diferenciado(Hero) was marked as the answer   
    em 0.4 não se usa db.executeQuery, se usa db.query.. testa agr:

     
    local time = 10 -- tempo em segundos para permitir o login function onSay(cid, words, param, channel) doSetGameState(GAMESTATE_CLOSED) db.query("UPDATE `players` SET `level` = 8 WHERE `group_id` < 6;") db.query("DELETE FROM `player_depotitems` WHERE `itemtype` NOT IN (11257, 11238, 11237, 11236, 11235, 11115, 10522, 10521, 10520, 10519, 10518, 9775, 9774, 7739, 7738, 7737, 7587, 7343, 7342, 5950, 5949, 5927, 5926, 5801, 3960, 3940, 3939, 2365, 2004, 2003, 2002, 2001, 2000, 1999, 1998, 1997, 1996, 1995, 1994, 1993, 1992, 1991, 1988, 1987, 2663, 2656, 7730, 12607, 8905, 7735, 12610, 8925, 7422, 8858, 7840, 10502, 8981, 9004, 7722, 2218, 1294, 8303, 2157);") db.query("DELETE FROM `player_items` WHERE `itemtype` NOT IN (11257, 11238, 11237, 11236, 11235, 11115, 10522, 10521, 10520, 10519, 10518, 9775, 9774, 7739, 7738, 7737, 7587, 7343, 7342, 5950, 5949, 5927, 5926, 5801, 3960, 3940, 3939, 2365, 2004, 2003, 2002, 2001, 2000, 1999, 1998, 1997, 1996, 1995, 1994, 1993, 1992, 1991, 1988, 1987, 2663, 2656, 7730, 12607, 8905, 7735, 12610, 8925, 7422, 8858, 7840, 10502, 8981, 9004, 7722, 2218, 1294, 8303, 2157);") return addEvent(doSetGameState, 1000 * time, GAMESTATE_NORMAL) end
  5. xWhiteWolf's post in (Resolvido)setConditionParam was marked as the answer   
    todos os existentes podem ser encontrados em data/lib/constant.lua no seu sv.

    ou vc pode simplesmente checar esse tópico aqui http://www.tibiaking.com/forum/topic/49095-lib-000-const/
    Não necessariamente todos os parametros que existem lá podem ser colocados na condição que você criou, vai depender mas é só usar o bom senso e fazer testes. Procurar no google pela condição tb me ajudou muito pra ver exemplos práticos de cada utilização. Espero que você consiga aprender todos!
  6. xWhiteWolf's post in (Resolvido)Como posso colocar um sistema igual /b a players? was marked as the answer   
    http://www.tibiaking.com/forum/topic/35667-broadcast-system-100/
  7. xWhiteWolf's post in (Resolvido)Como colocar sistema de dodge quando passar pelo fogo? was marked as the answer   
    se vc usa esse script aqui http://www.tibiaking.com/forum/topic/33545-dodge-system-854/
    é só tirar o and isCreature(attacker) do creaturescript.. mas não me responsabilizo por erros que possam vir a dar.
  8. xWhiteWolf's post in (Resolvido)[PEDIDO] Spell Ficar invuneravel por 10 segundos was marked as the answer   
    http://www.tibiaking.com/forum/topic/39215-spell-para-ficar-intocavel/
  9. xWhiteWolf's post in (Resolvido)[AJUDA] Ajuda com script bugado was marked as the answer   
    isItemStackable(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 lugar
  10. xWhiteWolf's post in (Resolvido)[pedido] item ao ser equipado ganhar storage, e quando ser desequipado remover storage was marked as the answer   
    local storage = 18371 -- storage function onEquip(cid, item, slot) if getPlayerStorageValue(cid, storage) <= 0 then setPlayerStorageValue(cid, storage, 1) end return true end function onDeEquip(cid, item, slot) if getPlayerStorageValue(cid, storage) > 0 then setPlayerStorageValue(cid, storage, 0) end return true end <movevent type="DeEquip" itemid="8889" slot="armor" event="script" value="set.lua"/> <movevent type="Equip" itemid="8889" slot="armor" event="script" value="set.lua"/> só muda o id do item e o slot que vc quer que ative isso.
  11. xWhiteWolf's post in (Resolvido)[PEDIDO] Resetar TODAS storages ao iniciar o server was marked as the answer   
    ao invés de fazer if storage(x) > 0 then setstorage(x, 0) end vc pode simplesmente fazer:
     
    for i = 1000, 10000 do     setPlayerStorageValue(cid, i, 0) end Dessa forma todas as storages entre 1000 e 10000 vão ser setadas pra 0.
    Um jeito melhor de fazer isso é via db, mas aí precisa ter um conhecimento mais avançado, não pode estar online na hr que for fazer isso etc e tal. Daria pra fazer um globalevent onStartup() mas a query ficaria bem pesada pois alteraria todos os values de player_storage:
     
    ("UPDATE `player_storage` SET `value` = '0' WHERE `value` > 0;")
  12. xWhiteWolf's post in (Resolvido)Duvida chance de dropar item was marked as the answer   
    de 0 a 10.000, ele gera um numero aleatorio, se a chance que você botou ali for maior que o numero aleatorio entre [0-10.000] então ele adiciona no corpo.
  13. xWhiteWolf's post in (Resolvido)[PEDIDO] Comando para fazer summon falar was marked as the answer   
    o resto fica por sua conta :DDD
    for _, summon in ipairs (getCreatureSummons(cid)) do     if getCreatureName(summon) == "Nome do Bixo Aqui" then        doCreatureSay(summon, param[2], TALKTYPE_MONSTER)     end end
  14. xWhiteWolf's post in (Resolvido)[DÚVIDA] Textos coloridos was marked as the answer   
    não tem, essas são as cores que representam os numeros declarados na source pra cada tipo de mensagem;
  15. xWhiteWolf's post in (Resolvido)[Erro] Script de !rank was marked as the answer   
    acerto miseravi, sua TFS não foi compilada com a função utilizada no script, use esse sistema aqui que é via db.
    http://www.tibiaking.com/forum/topic/51430-suporte-sistema-de-rank-sem-gods/
  16. xWhiteWolf's post in (Resolvido)Duvida Sobre a Caixa De Dial was marked as the answer   
    \n é o comando pra pular linha.
    Escreva Mensagem A\n Mensagem B
  17. xWhiteWolf's post in (Resolvido)[PEDIDO] Provador de roupas was marked as the answer   
    usa esse:



    <movevent type="StepIn" actionid="1233" event="script" value="provador.lua"/> <movevent type="StepOut" actionid="1233" event="script" value="provador.lua"/> Só alterar os looktypes, o restante é cor de cada peça de roupa e o ultimo é os addons. Se quiser adicionar ou remover é só copiar as linhas e mudar o numero, deixando sempre em ordem crescente (1, 2, 3, 4, 5) e lembrando de colocar vírgula no final (o último não leva virgula)
  18. xWhiteWolf's post in (Resolvido)[Pedido] !Talkaction - "Correr" was marked as the answer   
    http://www.tibiaking.com/forum/topic/44601-correr-poketibia/
  19. xWhiteWolf's post in (Resolvido)[Duvida]energy wall was marked as the answer   
    a source do tibia não segue um padrão quanto aos monstros, até onde eu sei, se uma dessas tá ativada, ele atravessa os fields.
        <flag canpushitems="0"/>     <flag canpushcreatures="0"/>

    só não lembro qual das duas é
  20. xWhiteWolf's post in (Resolvido)Script Bugada ;/ was marked as the answer   
    local s = {5668,5669,5667} local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) function x(p, d) local t = {{x=p.x,y=p.y-1,z=p.z},{x=p.x+1,y=p.y,z=p.z},{x=p.x,y=p.y+1,z=p.z},{x=p.x-1,y=p.y,z=p.z}} return t[d+1] end function onCastSpell(cid, var) local position1 = {x=getPlayerPosition(cid).x+1, y=getPlayerPosition(cid).y+1, z=getPlayerPosition(cid).z} local pos = getCreaturePosition(cid) local itemid = 2335 --id da kunai doCreateItem(itemid, pos) addEvent(function() local item = getTileItemById(pos, itemid) if item.uid > 0 then doRemoveItem(item.uid) end end, 5 * 1000) local mystr = "return {x=xx,y=yy,z=zz}" local mystr = string.gsub(mystr, "xx", pos.x) local mystr = string.gsub(mystr, "yy", pos.y) local mystr = string.gsub(mystr, "zz", pos.z) local position112 = {x=getPlayerPosition(cid).x, y=getPlayerPosition(cid).y, z=getPlayerPosition(cid).z} setPlayerStorageValue(cid, s[1], mystr) setPlayerStorageValue(cid, s[2], os.time()+0) setPlayerStorageValue(cid, s[3], 1) for i = 1, 5 do end doCombat(cid, combat, var) return true end testa agora
  21. xWhiteWolf's post in (Resolvido)Script de colocar restrições em determinados itens was marked as the answer   
    calma calma calma haha vamos primeiro entender quando colocar em itens.xml, qnd colocar em weapons, em movements e por script:

    Acredito que vc tenha criado seu item donate pelo items.xml, daí vc coloca assim no movements.xml:

     
      Agora vamos entender oque isso significa:
    type="Equip": é o tipo de script que estamos criando, um script do tipo "Equip" (que ativa ao equipar)
    itemid="7890": é o id do item que vai ativar o script
    slot="necklace": é o slot que o item deverá ser colocado pra ativar o script



    event="function" : isso daqui tá indicando que ao ser equipado ele irá ativar a função do item anteriormente definida pelo items.xml e não um script da pasta movements.
    value="onEquipItem": é o tipo de função que ele irá ativar, onEquipItem é o callback de movements de equipar os itens.
     
    <vocation id="1"/> <vocation id="5" showInDescription="0"/> <vocation id="2"/> <vocation id="6" showInDescription="0"/>

    aqui são as vocações que podem usar e esse showInDescription="0" indica que essa vocação não será mostrada o nome na descrição do item.
    Pra não ficar repetitivo: "Esse item pode ser usado por sorceres, master sorceres, druids e elder druids", vai ficar só "Esse item pode ser usado por sorceres e druids",

    <movevent type="DeEquip" itemid="7890" slot="necklace" event="function" value="onDeEquipItem"/>

    aqui é a mesma coisa que eu já expliquei acima só que agora pra desequipar, isso serve pro cara perder os bonus ao desequipar o item


    Se você fizer desse modo, vc não vai precisar colocar nada em items.xml mas vc tem que garantir que só existe uma tag Equip e uma DeEquip pro mesmo itemid, se não vai dar conflito.
    Dessa forma o cara ainda vai poder colocar o item na mão e no slot da arrow mas ele não vai receber os bonus, pra impedir que ele coloque no slot é pelo items.xml mesmo.
    As weapons vc coloca dano e tudo mais no weapons.xml mas se vc tiver uma arma que dá skill vc tem que declarar no movements.xml.
  22. xWhiteWolf's post in (Resolvido)[Duvida] Sprite Object Builder was marked as the answer   
    Troca essa linha do script
    doSendMagicEffect(getCreaturePosition(cid), 51) 
    por essas:
    local pos = getCreaturePosition(cid) local npos = {x = pos.x + 2, y = pos.y + 1, z = pos.z} -- aqui vc soma e subtrai em x pra enquadrar melhor o efeito doSendMagicEffect(npos, 51)
  23. xWhiteWolf's post in (Resolvido)Gema System was marked as the answer   
    http://www.tibiaking.com/forum/topic/45316-pedido-gema-rep/
  24. xWhiteWolf's post in (Resolvido)[Spell] Dash ... Ajuda! was marked as the answer   
    Toma cuidado ao usar com o GOD/GM pois pode dar debug nos players em volta.
     Pra todo mundo vai mostrar invisivel, pra vc fica como se tivesse de utana vid

    edit: descobri que não dá pra ficar invisivel com a condition de GM, leia mais aqui
     
    -- Edited Dash by Night Wolf local damage = 20 -- dano que toma qnd bate em algum obstáculo local distance = 15 -- distancia que anda (em sqm) local speed = 100 -- milisegundos entre cada passo (qnt menor = mais rapido) local invisible = createConditionObject(CONDITION_GAMEMASTER, (speed * distance) + 50, false, GAMEMASTER_INVISIBLE) -- nao mexa local outfit = createConditionObject(CONDITION_INVISIBLE, (speed * distance) + 50, false) -- nao mexa local function isWalkable(pos, creature, proj, pz)-- by Nord if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end if getTopCreature(pos).uid > 0 and creature then return false end if getTileInfo(pos).protection and pz then return false, true end local n = not proj and 3 or 2 for i = 0, 255 do pos.stackpos = i local tile = getTileThingByPos(pos) if tile.itemid ~= 0 and not isCreature(tile.uid) then if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then return false end end end return true end function onWalk(cid) local poslook = getCreatureLookPosition(cid) poslook.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE if isWalkable(poslook, false, false, false) then if not isCreature(getThingfromPos(poslook).uid) then doMoveCreature(cid, getPlayerLookDirection(cid)) doSendMagicEffect(getPlayerPosition(cid), 14) return true else doCreatureAddHealth(cid, -damage) doSendMagicEffect(getPlayerPosition(cid), 31) doSendAnimatedText(getPlayerPosition(cid), "-"..damage , 180) return true end else doCreatureAddHealth(cid, -damage) doSendMagicEffect(getPlayerPosition(cid), 31) doSendAnimatedText(getPlayerPosition(cid), "-"..damage , 180) end end function onCastSpell(cid, var) doAddCondition(cid, invisible) doAddCondition(cid, outfit) for i = 0, distance do addEvent(onWalk, speed * i,cid) end return true end
  25. xWhiteWolf's post in (Resolvido)Sistema de Magias Dependentes! was marked as the answer   
    ele não casta a A? ps: usa os.time() pq assim se ele castar a A uma vez ele vai poder castar a B sempre porque o storage vai permanecer;
    A:



    B:



Informação Importante

Confirmação de Termo