Ir para conteúdo

xWhiteWolf

Héroi
  • Registro em

  • Última visita

Solutions

  1. xWhiteWolf's post in (Resolvido)[PEDIDO]/addskill was marked as the answer   
    se é nas sources, a forma de adicionar seria pegar uma source nova da sua versão, fazer as modificações e compilar ela dnv. (O executável que abre o server não passa das sources compiladas) então é muito mais fácil pegar algo já pronto q funcione e trocar.
  2. xWhiteWolf's post in (Resolvido)Duvida Sobre Script was marked as the answer   
    Primeiro vc cria a vocação no seu vocations.xml, feito isso vc pode ir atrás do npc aqui no fórum mesmo.. tem um monte desse estilo. A função principal é ele checar sua vocação, se vc não for troll então ele seta sua vocação como troll
  3. xWhiteWolf's post in (Resolvido)Monster falar uma mensagem e depois de 3 segundos dar HS was marked as the answer   
    ae galera, fiz certinho aqui:
     
    local arr = { {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0}, {0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0} } local area = createCombatArea(arr) function onCastSpell(cid, var) doCreatureSay(cid, "I WILL UNLEASH THE FURY OF HELL!", 20) addEvent(function()                if isCreature(cid) then doAreaCombatHealth(cid, 1, getThingPos(cid), area, -1000, -3000, CONST_ME_MORTAREA)                end           end, 5000) return true end em arr vcs editam a area que vcs quiserem.
    doAreaCombatHealth(cid, 1, getThingPos(cid), area, -1000, -3000, CONST_ME_MORTAREA) aqui vcs editam o resto:
    1 é o tipo de combat, os possiveis são:
    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 -1000 e -3000 são os danos minimos e máximos e const_me_mortarea é o efeito.

      Daí no monstro é só adicionar
    <attack name="delayed" interval="1000" chance="15"/> sendo interval o tempo q ele vai tentar usar a magia e chance é a chance de ela sair. Nesse caso a cada 1 segundo ele faz um número aleatorio entre 1 e 100, se esse número for menor que 15 então ele solta a magia.
  4. xWhiteWolf's post in (Resolvido)Sistema de Mineração was marked as the answer   
    exatamente como vc pediu... 
     
     terra = {351,352,353,354,355}  levels = { [-1] = 2229, ---- skull [0] = 1294, --- small stone [1] = 3976, --- worm [10] = 2149, -- Small Emerald [12] = 2146, -- Small Sapphire [15] = 2145, -- Small Diamond  [17] = 2150, -- Small Amethyst [20] = 2147, -- Small Ruby [25] = 2144, -- Black Pearls  [27] = 2143, -- White Pearls [30] = 2157, -- Gold Nuggets [35] = 2156, --- red gem [36] = 2158, -- blue gem  [37] = 2155, -- green gem  [38] = 2153, -- violet gem [39] = 2154, -- yellow gem [40] = 2157, -- small enchanted emerald  [42] = 2157, -- Small Enchanted Sapphiire [45] = 2158, -- Small Enchanted Amethyst [50] = 2161, -- Small Enchanted Ruby [70] = 2162  -- Life Crystal } local config = { storage = 19333, chance = 40, --- chance de achar um item ou não k = 2, --- constante de level.. quanto maior, mais fácil é upar. (a fórmula é level ao quadrado dividido pela constante) experience = 19334 } function onUse(cid, item, fromPosition, itemEx, toPosition) local drops = {} function getDrops(cid) for i= -1,getPlayerStorageValue(cid, config.storage) do if levels[i] then table.insert(drops, levels[i]) end end return true end if isInArray(terra, itemEx.itemid) then getDrops(cid) doPlayerSetStorageValue(cid, config.experience, getPlayerStorageValue(cid, config.experience)+1) local experience = getPlayerStorageValue(cid, config.experience) if experience >= (getPlayerStorageValue(cid, config.storage)^2)/config.k then doPlayerSetStorageValue(cid, config.storage, getPlayerStorageValue(cid, config.storage)+1) doPlayerSendTextMessage(cid, 27, "Congratulations, you have leveled! Your currect level is "..getPlayerStorageValue(cid, config.storage) ..".") if getPlayerStorageValue(cid, config.storage) == 50 then doPlayerSendTextMessage(cid, 20, "For reaching level "..getPlayerStorageValue(cid, config.storage) .." you have been awarded with Mining Helmet.") doPlayerAddItem(cid, 7497, 1, true) end end if config.chance >= math.random(1,100) then if #drops >= 1 then local item = drops[math.random(1,#drops)] doPlayerSendTextMessage(cid, 27, "You have found a "..getItemNameById(item)..".") doPlayerAddItem(cid, item, 1, true) end doSendMagicEffect(toPosition, 3) else doSendMagicEffect(toPosition, 2) return TRUE end elseif itemEx.itemid == item.itemid then doPlayerSendTextMessage(cid, 27, "You're currenctly level "..getPlayerStorageValue(cid, config.storage)..".") else return FALSE end return true end agora é só ir no creaturescripts\scripts\login.lua e colocar antes do ultimo return true:
     
    if getPlayerStorageValue(cid, 19333) == -1 then         setPlayerStorageValue(cid, 19333, 0)  elseif getPlayerStorageValue(cid, 19334) == -1 then setPlayerStorageValue(cid, 19334, 0)      end obs: a fórmula pro level da skill tá assim:
    level atual x level atual / k
    dá pra mudar mas eu prefiri fazer assim pq a função quadrática é crescente então a cada level ia precisar de mais experiencia doque o level anterior, mas fica a seu critério mudar. Pode parecer que tá bem fácil upar no começo, mas lembre-se doque eu falei.

    Fazendo uma continha simples você descobre que se precisa de somente 50 mineiradas pra pegar level 10, mas a mesma conta nos diz que é necessário 1250 mineiradas pra se chegar no 50. Então cuidado com oque faz na fórmula auheuhauheuh


    Também tomei a liberdade de editar o formato inicial das recompensas.. fiz a cada 2 leveis pra facilitar e não complicar o script ainda mais, mas ainda assim está dentro daquilo que vc falou anteriormente. Espero que vc tenha gostado porque leveu quase 4 horas pra fazer isso aí auhuhauhauh  
  5. xWhiteWolf's post in (Resolvido){Pedido} Npc Police was marked as the answer   
    o primeiro tem que ser um npc mesmo?

    achei esse script aqui http://www.tibiaking.com/forum/topic/11649-npc-guard-ataca-players-com-skulls/
  6. xWhiteWolf's post in (Resolvido){Pedido} Modificações em Scripts was marked as the answer   
    1) doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você não possui dardos.")
    return false
    end

    muda o return false pra return true.

    2) 
    -- CONFIGURAÇÕESporcentagem = 40 -- chance de curar em cada volta da aura, em porcentagem quantheal = 10 -- porcentagem do hp máximo que cada cura irá curar. (No caso, irá curar 10% do hp máximo cada cura) tempo = 1180 -- tempo para dar uma volta no player (este tempo foi o que achei mais agradável visualmente, é recomendável não mudar) efeitocura = 49 -- número do efeito quando a cura chega ao player (efeito de posição fixa, pode ser identificado com /z no jogo) -- Função que chama a aura function efeitosAura(i,tm,cid) tipoaura = math.random(30,33) -- número do efeito da aura (efeito normal, /z do jogo) if(isCreature(cid)) then         local atual = getCreaturePosition(cid) local chances = math.random(100) if(chances<=porcentagem/8 and getCreatureHealth(cid)<getCreatureMaxHealth(cid)) then doCreatureAddHealth(cid, getCreatureMaxHealth(cid)/quantheal) if(i<=8 and i>1) then doSendMagicEffect(atual, tipoaura) else doSendMagicEffect(atual, tipoaura) end doSendMagicEffect(atual, efeitocura) end if(i==8) then doSendMagicEffect(atual, tipoaura) elseif(i<8) then doSendMagicEffect(atual, tipoaura) end if(i<=8) then i = i+1 tm = tempo/8 return addEvent(efeitosAura,tm,i,tm,cid) else return efeitosAura(1,0,cid) end else return TRUE end end --Função principal function onLogin(cid) return efeitosAura(1,tempo/8,cid) end /\ cura a vida e solta os efeitos 30 a 33

     
    -- CONFIGURAÇÕES porcentagem = 40 -- chance de curar em cada volta da aura, em porcentagem quantmana = 10 -- porcentagem da mana máxima que cada cura irá curar. (No caso, irá curar 10% da mana máxima cada cura) tempo = 1180 -- tempo para dar uma volta no player (este tempo foi o que achei mais agradável visualmente, é recomendável não mudar) efeitocura = 49 -- número do efeito quando a cura chega ao player (efeito de posição fixa, pode ser identificado com /z no jogo) -- Função que chama a aura function efeitosAura(i,tm,cid) tipoaura = math.random(30,33) -- número do efeito da aura (efeito normal, /z do jogo) if(isCreature(cid)) then         local atual = getCreaturePosition(cid) local chances = math.random(100) if(chances<=porcentagem/8 and getCreatureMana(cid)<getCreatureMaxMana(cid)) then doCreatureAddMana(cid, getCreatureMaxMana(cid)/quantmana) if(i<=8 and i>1) then doSendMagicEffect(atual, tipoaura) else doSendMagicEffect(atual, tipoaura) end doSendMagicEffect(atual, efeitocura) end if(i==8) then doSendMagicEffect(atual, tipoaura) elseif(i<8) then doSendMagicEffect(atual, tipoaura) end if(i<=8) then i = i+1 tm = tempo/8 return addEvent(efeitosAura,tm,i,tm,cid) else return efeitosAura(1,0,cid) end else return TRUE end end --Função principal function onLogin(cid) return efeitosAura(1,tempo/8,cid) end /\ cura mana e solta os efeitos 30 a 33 (se quiser muda no math.random
     
    -- CONFIGURAÇÕES porcentagem = 40 -- chance de dar haste em cada volta da aura, em porcentagem tempo = 1180 -- tempo para dar uma volta no player (este tempo foi o que achei mais agradável visualmente, é recomendável não mudar) efeitocura = 49 -- número do efeito quando der haste (efeito de posição fixa, pode ser identificado com /z no jogo)     duration = 10 -- segundos que vai durar o haste da aura. (coloque um tempo baixo porque ela vai ficar se repetindo. local condition = createConditionObject(CONDITION_HASTE) setConditionParam(condition, CONDITION_PARAM_TICKS, duration*1000) setConditionFormula(condition, 1.7, -36, 1.7, -36) -- Função que chama a aura function efeitosAura(i,tm,cid) tipoaura = math.random(12,14) -- número do efeito da aura (efeito normal, /z do jogo) if(isCreature(cid)) then         local atual = getCreaturePosition(cid) local chances = math.random(100) if(chances<=porcentagem/8 and getCreatureCondition(cid, condition) == false) then doAddCondition(cid, condition) if(i<=8 and i>1) then doSendMagicEffect(atual, tipoaura) else doSendMagicEffect(atual, tipoaura) end doSendMagicEffect(atual, efeitocura) end if(i==8) then doSendMagicEffect(atual, tipoaura) elseif(i<8) then doSendMagicEffect(atual, tipoaura) end if(i<=8) then i = i+1 tm = tempo/8 return addEvent(efeitosAura,tm,i,tm,cid) else return efeitosAura(1,0,cid) end else return TRUE end end --Função principal function onLogin(cid) return efeitosAura(1,tempo/8,cid) end /\ da velocidade a cada rodada de aura por 10 segundos.. os efeitos são um math.random de 12 até 14 (12, 13, 14)
  7. xWhiteWolf's post in (Resolvido)[PEDIDO] Tile que Passa só se tiver GUILD was marked as the answer   
    function onStepIn(cid, item, position, fromPosition) if getPlayerGuildId(cid) > 0 then doPlayerSendTextMessage(cid, 27, "Voce entrou, sua guild é a "..getPlayerGuildName(cid)..".") return true else doPlayerSendTextMessage(cid, 27, "Voce não possue guild, portanto não pode entrar nessa zona.") doTeleportThing(cid, fromPosition) return false end end
  8. xWhiteWolf's post in (Resolvido)Erro no Script was marked as the answer   
    local storage_quest = 90000 function onStepIn(cid, item, position, fromPosition) if getPlayerStorageValue(cid, storage_quest) < 1 then doTeleportThing(cid, fromPosition) doPlayerSendCancel(cid, "Você não completou a Cyber quest!") doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) end doPlayerSendTextMessage(cid, 27, "Você não completou a Cyber quest! .") return true end deleta esse arquivo que vc tem, cria um novo, adiciona esse daqui nele e salva como .lua
  9. xWhiteWolf's post in (Resolvido)problemas com runas (item) was marked as the answer   
    aparentemente você migrou de server e os items.xml estavam configurados para a versão antiga.

    [25/05/2014 18:54:28] [Warning - Items::loadFromXml] Unknown type rune
    [25/05/2014 18:54:29] [Warning - Items::loadFromXml] Unknown key value fieldAbsorbPercentFire

    dá CTRL+F no items.xml e muda todos os items que tiverem type = rune
    e procura fieldAbsorbPercentFire << isso tá errado, dá ctlr F em PercentFire e você vai achar qual é o jeito certo de se colocar e muda nesse daí q tá errado.
  10. xWhiteWolf's post in (Resolvido)[PEDIDO]Script Aviso de Invasores Castle 24 Horas LEIA! was marked as the answer   
    function onStepIn(cid, item, position, fromPosition) local castle_one_name = "Ratim Bum"  -- Nome do castelo 1 local storages = {154154,54321,123123}   -- Storages ( se vc eh iniciante, deixe como est&#225;...) local sto_ativ = getGlobalStorageValue(storages[2]) position = getCreaturePosition(cid)    if isPlayerGuild(cid) == TRUE then  if sto_ativ == 1 or sto_ativ == -1 then guildname = getPlayerGuildName(cid) guild = getPlayerGuildId(cid) guild_sto = getGlobalStorageValue(storages[3]) if guild ~= guild_sto then   doBroadcastMessage("O(a) "..getCreatureName(cid).." estest&#225; tentando invadir o castelo "..castle_one_name.." para a guild \""..guildname..".", 22)   doSendMagicEffect(position, 39)   else  doPlayerSendCancel(cid,"Este castelo ja foi conquistado pela sua guild!")  doSendMagicEffect(position, 2) end  else  doPlayerSendCancel(cid,"O sistema est&#225; desativado")  end    else    doPlayerSendCancel(cid,"&#201; nescessario ter guild para dominar o castelo!")    doSendMagicEffect(position, 2)    end    return true end function isPlayerGuild(cid) if getPlayerGuildName(cid) ~= "" then return TRUE else return FALSE end end
  11. xWhiteWolf's post in (Resolvido)Attack msm q no bixo was marked as the answer   
    você que tem que colocar como resolvido, para isso clique em "Melhor Resposta" na resposta que eu te dei e o tópico ficará como [RESOLVIDO]
  12. xWhiteWolf's post in (Resolvido)[Erro] Alguém pode me dizer oque tem de errado nesse script? was marked as the answer   
    deleta a primeira linha e escreve ela de novo (sério) isso deve resolver. Caso o problema persista muda o nome da table e altera nos lugares que ela tá sendo chamada tb
  13. xWhiteWolf's post in (Resolvido)Dois pedidos! was marked as the answer   
    danih, vc só colocar as coisas fora da function principal quando elas não variam com o tempo. a pos do player tem que ser pega quando ele clicar na alavanca e não quando liga o server.

    o certo seria:
    function onUse(cid, item, fromPosition, itemEx, toPosition) local pos = getPlayerPosition(cid) local up = {x= pos.x, y = pos.y, z= pos.z+1} -- aumenta um andar local down = {x= pos.x, y = pos.y, z= pos.z-1} -- diminui um andar. if (item.itemid == 1946) then doTeleportThing(cid, up) elseif (item.itemid == 1945) then doTeleportThing(cid, down) end return true end função ao Usar:
    pega a posição do Player
    calcula up e down
    se o itemid que é clicado tiver valor igual a 1946 então
    teleportar pra up
    senão, se o itemid que é clicado tiver valor igual a 1945 então
    teleportar pra cima
    fim do se
    retornar verdadeiro para a função (nesse caso ele checa a função e permite ou não a clicagem, se tivesse return false ele não permitira que vc clicasse e seria como se n tivesse usado (é util pra scripts que utilizem doRemoveItem) )
    fim da função

    ___________________________________________


    Vale lembrar que não irá bugar porque nesse script ele não muda o id da alavanca ao clicar;
  14. xWhiteWolf's post in (Resolvido)Diferença entre scripts was marked as the answer   
    bom, a galera tá usando mais loops [for, while] (digamos que tá na moda) e tão preferindo fazer funções. O script novo é basicamente isso, e sem contar tb que ele é pro TFS novo (1.0) nessa nova versão você pode inserir uma função dentro de outra usando ":" como nesse exemplo aqui
     for i = 1,4 do             Player(cid[5-i]):teleportTo(new_player_pos[i]) para i = 1,4 fazer:
    Player(cid[5-i]): teleportar para (NovaPosiçãoDePlayer)
    Ele vai começar com i = 1, daí teremos
    Player de numero 4 vai ser teleportado para a posição de numero 1 da table de new_player_pos
    dps o player de numero 3 vai ser teleportado pra pos de numero 2... e assim até i = 4.
    O resto é meio q entendível percebendo essa lógica das tables.. #Table retorna o numero de elementos que essa Table possui;
    No caso local players_area é uma table de 2 elementos.
     
    local players_area = {     {x = 33225, y = 31671, z = 13}, --- PRIMEIRO ELEMENTO     {x = 33222, y = 31671, z = 13} ---- SEGUNDO } já a new _player_pos possui 4 elementos, um pra cada player
     
    local new_player_pos = {     {x = 33222, y = 31659, z = 13},     {x = 33221, y = 31659, z = 13},     {x = 33220, y = 31659, z = 13},     {x = 33219, y = 31659, z = 13} }
  15. xWhiteWolf's post in (Resolvido)Remover o Critical was marked as the answer   
    config.lua.. procura algo parecido com isso:
     
    criticalHitChance = 10 criticalHitMultiplier = 1.1 displayCriticalHitNotify = true

    o primeiro é a chance de dar ataque critico, o segundo é o quanto o ataque critico vai ser melhor que o ataque normal e o terceiro é pra sair a animaçãozinha do "CRITICAL!!" em cima do player qnd ele der critical
  16. xWhiteWolf's post in (Resolvido)Script de Passiva para Players was marked as the answer   
    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
  17. xWhiteWolf's post in (Resolvido)Magia de Buff para :Life, Skill, e mana was marked as the answer   
    utevosio:
    --Spell Method by Night Wolf local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 39) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local config = { tempo = 15, --- tempo que vai ficar recuperando mana (tempo total) mana = 15, -- quanto de mana ganha a cada intervalo intervalo = 1  --- intervalo que leva pra recuperar X de mana,  } local condition = createConditionObject(CONDITION_FOOD) setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000) setConditionParam(condition, CONDITION_PARAM_BUFF, true) setConditionParam(condition, CONDITION_PARAM_MANAGAIN, config.mana) setConditionParam(condition, CONDITION_PARAM_MANATICKS, config.intervalo*1000) setCombatCondition(combat, condition) function onCastSpell(cid, var) return doCombat(cid, combat, var) end   exorisio
    --Spell Method by Night Wolf local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 39) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local config = { tempo = 60, --- tempo que vai durar a spell percent = 20 -- quanto % vai aumentar } local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000) setConditionParam(condition, CONDITION_PARAM_BUFF, true) setConditionParam(condition, CONDITION_PARAM_SKILL_CLUBPERCENT, 100+config.percent) setConditionParam(condition, CONDITION_PARAM_SKILL_SWORDPERCENT, 100+config.percent) setConditionParam(condition, CONDITION_PARAM_SKILL_AXEPERCENT, 100+config.percent) setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCEPERCENT, 100+config.percent) setCombatCondition(combat, condition) function onCastSpell(cid, var) return doCombat(cid, combat, var) end utamogransio
     
    --Spell Method by Night Wolf local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 39) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local config = { tempo = 60, --- tempo que vai durar a spell percent = 25 -- quanto % vai aumentar } local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000) setConditionParam(condition, CONDITION_PARAM_BUFF, true) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELDPERCENT, 100+config.percent) setCombatCondition(combat, condition) function onCastSpell(cid, var) return doCombat(cid, combat, var) end vitagransio
     
    --Spell Method by Night Wolf local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 39) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false) local config = { tempo = 60, --- tempo que vai durar a spell percent = 25 -- quanto % vai aumentar } local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000) setConditionParam(condition, CONDITION_PARAM_BUFF, true) setConditionParam(condition, CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 100+config.percent) setCombatCondition(combat, condition) function onCastSpell(cid, var) return doCombat(cid, combat, var) end e no spells.xml
     
    <instant name="Buff Mana" words="utevo sio" lvl="40" mana="100" maglv="90" prem="1" aggressive="0" needtarget="1" params="1" exhaustion="1500" needlearn="0" event="script" value="especiais/utevosio.lua"> </instant> <instant name="Buff Skills" words="exori sio" lvl="40" mana="100" maglv="90" prem="1" aggressive="0" needtarget="1" params="1" exhaustion="1500" needlearn="0" event="script" value="especiais/exorisio.lua"> </instant> <instant name="Buff Shield" words="utamo gran sio" lvl="40" mana="100" maglv="120" prem="1" aggressive="0" needtarget="1" params="1" exhaustion="1500" needlearn="0" event="script" value="especiais/utamogransio.lua"> </instant> <instant name="Buff Hit Points" words="vita gran sio" lvl="40" mana="100" maglv="120" prem="1" aggressive="0" needtarget="1" params="1" exhaustion="1500" needlearn="0" event="script" value="especiais/vitagransio.lua"> com base nisso vc cria as outras.. espero ter ajudado.
  18. xWhiteWolf's post in (Resolvido)Como criar storage de exp? was marked as the answer   
    só colocar no movements com algum action ou unique id e colocar esse mesmo action/unique id no chão da porta e no teleporte... esse script possui bugs que tendem ao infinito mas to confiando em você pra pensar numa solução e postar o script completo.
    Dica: um dos bugs é caso o player entre na quest e saia, a exp vai ficar pra sempre com ele kkk o outro é se ele entrar, pisar no tile e vai ganhar exp, ele sai do tile pra frente, volta pra trás pra perder a exp e vai pra frente em direção a quest.. daí ele termina tudo e quando sair no teleporte ele vai ganhar a exp a mais e ficar com ela pra sempre auhauhauh se vc n conseguir eu resolvo pra ti dps
    local storage = 77788 local value = 1.25 -- 1x exp normal +25% function onStepIn(cid, item, position, fromPosition) if (getPlayerStorageValue(cid, storage) < 1) then         setPlayerStorageValue(cid, storage, 1)         doPlayerSetExtraExpRate(cid, value)         doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "Now you're with "..value.."x of experience!") elseif (getPlayerStorageValue(cid, storage) == 1) then         doPlayerSetExtraExpRate(cid, -value)         setPlayerStorageValue(cid, storage, 0) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, "You're no longer with "..value.."x experience!") end         return true end
  19. xWhiteWolf's post in (Resolvido)Como faço pra tirar essa placa? was marked as the answer   
    ela aparece qnd vc loga ou qnd vc pisa no templo? Se for qnd loga deve ser um creaturescripts e se não tiver nada no creaturescripts.xml tá dentro do login.lua (que é um arquivo dentro de creaturescripts\scripts)
  20. xWhiteWolf's post in (Resolvido)Dúvida parameters de Movement was marked as the answer   
    pior q nem é um problema sem lógica uhauhauh eu coloquei pra toda vez que desequipar uma determinada arma da mão, ela fosse removida.. só que quando o player passa de uma mão pra outra ele remove ela e já conta como se tivesse equipado, ao remover ela pela função doRemoveItem é como se tivesse desequipado (da outra mão agora) e ele vai remover algo que já foi removido, por isso dá erro na distro. Eu pensei em um monte de formas mas a maioria delas inclui repetir o id do item pra outro movement onEquip (oque vai dar erro no console), eu consegui resolver certinho de uma maneira meio escrota e pras minhas necessidades acabou dando certo.... mas a idéia era fazer um scrip 100% funcional pra que outros pudessem mudar à vontade pra postar aqui. Enfim né, até amanhã vou postar o script da forma que tá e te convido pra dar uma olhada e ver se vc pensa em alguma outra forma de resolver o problema. Abração Max.
  21. xWhiteWolf's post in (Resolvido)BUG 0 DE LIFE 0 DE MANA was marked as the answer   
    onpreparedeath não pode ser, o return false de onpreparedeath faz com que não apareça o corpo mas o player morre de qqc jeito. É algum onKill ou onDeath
  22. xWhiteWolf's post in (Resolvido)Pedido scripter revert was marked as the answer   
    adicionou
    <talkaction words="!revert;/revert" event="script" value="reverter.lua"/> ??

    editei o script ali em cima, testa agora.
  23. xWhiteWolf's post in (Resolvido)Demon Oak Quest - Bugada was marked as the answer   
    faça um quadrado mentalmente cuja as diagonais sejam as posições abaixo
    local areaPosition = {         {x=32705, y=32342, z=7, stackpos = 255},         {x=32726, y=32358, z=7, stackpos = 255} } a arvore não pode estar dentro desse quadrado. Então ou vc diminui o quadrado ou vc coloca a arvore pra fora dele.
  24. xWhiteWolf's post in (Resolvido)[Pedido] Script monster .. was marked as the answer   
    abra o xml do monster em questão e procure por isso:
      <flag attackable="1"/> mude pra 
      <flag attackable="0"/>
  25. xWhiteWolf's post in (Resolvido)Abrir Ostra e Ganhar Giant Shimmering Pearl was marked as the answer   
    pronto
    --[[Script made 100% by Night Wolf                               for lagoa at tibiaking ~~~ enjoy it]] function onUse(cid, item, frompos, item2, topos) local config = { idconcha = XXXX, -- id da concha que vai abrir storaged = 45798, -- storage que será utilizado idperola = 2143, -- id da perola que ganha tempo = 20*60*60, --definido para 20 horas (20 HORAS * 60 MINUTOS * 60 SEGUNDOS) pos = getPlayerPosition (cid), --não mexa chance = 20 -- quanto % tem de chance de abrir a ostra e ganhar pérola } time = os.time() + config.tempo if item.itemid == config.idconcha then if os.time() - getCreatureStorage(cid, config.storaged) >= config.tempo then setPlayerStorageValue(cid, config.storaged, time) doTransformItem(item.uid,7553) if config.chance > math.random(1,100) then doPlayerAddItem(cid, config.idperola) doSendMagicEffect(config.pos,math.random(28,30)) --aqui é a parte do efeito, coloquei um random entre o efeito 28~30 que são os fogos de artificio doPlayerSendTextMessage(cid, 19, "You are real lucky, a "..getItemNameById(config.idperola).."!")   else doPlayerSendTextMessage(cid, 19, "The oyster was empty. Better luck next time!")   end else  doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You must wait "..config.tempo/3600 .." hours to open another oyster. Next available will be at: " ..os.date("%c", getPlayerStorageValue(cid, config.storaged)).. " (Mes/Dia/Ano e horario).") end end return true end

Informação Importante

Confirmação de Termo