Ir para conteúdo

574747

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    574747 recebeu reputação de Galako em Items iniciais   
    ihurygyn, as vezes o script first items fica na pasta inicial do seu ot em mods, da uma olhadinha la.
  2. Gostei
    574747 deu reputação a xWhiteWolf em Magia que Empurra   
    Bom galera, a um tempo atrás um amigo pediu uma magia que empurrasse e minha primeira iniciativa foi dar uma procura por aí. A maioria dos scripts que eu achei não funcionava, o resto funcionava cheio dos mais variados bugs então eu decidi pegar um desses scripts como base e fazer a magia que empurra.   
    Testado e funcionando em TFS 0.3.6 (Crying Damson).

    Não lembro de onde eu peguei e nem quem fez porque o autor não colocou créditos no script mas quero deixar bem claro de que 
    80% dos créditos vão pra esse pessoa, visto que eu apenas me baseei na metodologia dele pra fazer o script funcionar sem bugs
    Sem mais delongas, vamos ao script:




    OBS: Ele está 200% funcional, não empurra pra dentro de pz e nem buga de nenhuma forma.   

    Agora no spells.xml adicione: 
    <instant name="Get off here" words="exani grav" lvl="160"  mana="500" prem="1" direction="1" exhaustion="2000" needlearn="0" event="script" value="empurrar.lua"> <vocation id="6"/> <vocation id="7"/> <vocation id="5"/> </instant> Faça bom proveito!! 


    EDIT: Algumas imagens pra vocês


     

     
    PS: Dano adicionado pelo membro @Emersonssss ;]
  3. Gostei
    574747 deu reputação a xWhiteWolf em Tanker Method   
    Fala galera do TibiaKing, vim trazer pra vocês uma magia bem simpleszinha mas que vai ajudar muita gente com aquelas dúvidas de funções que mudam outfit.
    Testado e funcionando em TFS 0.3.6 (8.54)

    Explicação: É uma spell que ao usar muda seu outfit para o de um warmaster (acho q é isso o nome), aumentando seu escudo e sua vida pelo preço de toda a sua mana. É uma spell excelente para servers com bastante RPG pois dá praticamente uma segunda vida ao player e permite que Knights virem exímios blockers nas quests da vida. Coloquei no meu server e graças a essa spell a galera conseguiu fazer a POI depois de quase 6 meses de server. Vale ressaltar que o player não ganha vida, apenas dobra a quantidade máxima e ele tem que healar a quantidade a mais que ele ganhou.

    spells\scripts\tanker.lua


    setConditionParam(condition, CONDITION_PARAM_TICKS, 60000) e doSetCreatureOutfit(cid, mtanker, 60000) e doSetCreatureOutfit(cid, ftanker, 60000) da mesma forma que você pode alterar a quantidade de shield e de vida que você ganha ao utilizá-la mas eu tenho razões pra acreditar que a forma atual dela é a ideal.

    Aqui no meu server ela tá definida para apenas Knights mas vocês podem editar isso a gosto.
    spells.xml
    <instant name="tanker" words="uteta gran vita" lvl="220" mana="300" prem="1" aggressive="0" selftarget="1" exhaustion="2000" needlearn="0" event="script" value="tanker.lua"> <vocation id="8"/> </instant> EDIT: Algumas imagens de como a magia funciona: 





  4. Gostei
    574747 deu reputação a xWhiteWolf em Glacier Set dando conditions em área   
    Eai galera, esse script eu fiz para um membro aqui do TibiaKing no suporte e achei que ficou bem legal então decidi postar.

    Explicação: Ao tomar um dano maior que 300, se o player tiver usando a glacier robe, uma área em volta dele vai ser congelada e todos dentro dessa área ficarão com slow. Caso o player estiver com o full glacier set, além do paralyze, as pessoas dentro da área receberão dano de freezing

    crie um arquivo em creaturescripts\scripts chamado glacierrobe.lua e adicione isso daqui dentro dele


    agora vá em creaturescripts\scripts e procure um arquivo chamado login.lua.
    dentro dele coloque isso (de preferencia embaixo dos outros registerCreatureEvent):
    registerCreatureEvent(cid, "glacierrobe") Lembre-se que se vc quiser repetir isso pra outros set's você tem que repetir todo o processo, tanto no creaturescripts.xml quanto no login.lua


    no meu server além do set glacier eu uso os outros 3 set's elementais, ficando assim:


    EDIT:: Algumas imagens pra vocês verem como o script funciona:







     
  5. Gostei
    574747 deu reputação a xWhiteWolf em Precisa estar perto de agua   
    Fala galera do TibiaKing, pra quem não me conhece eu sou o White Wolf, antigo Night Wolf.. eu venho trazer pra vocês um script que eu to desenvolvendo nas minhas horas vagas e que vai trazer bastante RPG pro server de vocês.

    Servidor testado: The Forgotten Server  0.3.6 (Crying Damson)
    Versão do Cliente: 8.45

    Explicação: Pra quem já jogou AvaOT/Korelin, deve ter notado que algumas magias da tribo da água necessitam estar perto de água para poderem ser usadas, e foi me baseando nisso que eu criei esse script.
    É uma magia que ataca os inimigos se estiver com a target e se não estiver com target ela adiciona vida à você, mas precisa estar perto da água para ser usada!!

    Sem mais delongas, vamos ao script:
    crie um arquivo chamado waterneeded.lua e coloque em spells\scripts\
    --[[ Credits: 30% to Molinero because I used his telekinesis script as base  60% to me (Night Wolf) for doing the rest of the script 10% to the owner of AvaOT for giving me the idea of such thing ~~~FEEL FREE TO EDIT AS YOU WISH, THIS IS JUST A SIMPLE SCRIPT                                          BUT DON'T REMOVE THE CREDITS.~~~ ]] local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, TRUE)    function onCastSpell(cid, var) local water = {490, 491, 492, 493, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625} local spot = getPlayerPosition(cid)     local nxp = spot.x - 3     local pxp = spot.x + 3     local nyp = spot.y - 3     local pyp = spot.y + 3 local k = 1     local target = getCreatureTarget(cid)     for absice = nxp, pxp do         for coordinate = nyp, pyp do             local pos = {x = absice, y = coordinate, z = spot.z, stackpos = 0}             local thing = getThingfromPos(pos)            if thing.itemid > 0 then    if isInArray(water, thing.itemid) == TRUE then k = k+1 if target == 0 then local CreatureHealth = getCreatureMaxHealth(cid)   local lifedraw = math.floor(CreatureHealth /(20*k)) doCreatureAddHealth(cid, lifedraw, 1)  doSendAnimatedText(spot, "+"..lifedraw, 18)    doSendMagicEffect(pos, 1)                     doSendMagicEffect(spot, 12) else local tgtpos = getCreaturePosition(target) local life = math.random (200,1000) doCreatureAddHealth(target, -life, COMBAT_LIFEDRAIN) doSendAnimatedText(tgtpos, "-"..life, 89) doSendDistanceShoot(pos, tgtpos, 36)                     doSendMagicEffect(tgtpos, 53) doSendMagicEffect(pos, 1)                     return doCombat(cid, combat, var)   end end             end         end     end if k ~= nil and k < 2 then doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) doPlayerSendCancel(cid, "You need to be around water to cast this spell..") end     return doCombat(cid, combat, var) end OBS1: Perceba que tá bem rudimentar esse script, até porque essa é a primeira versão dele, pretendo melhorar o script com o tempo 

    OBS2: Se você quiser que o script ataque mais de uma vez pra cada water que tiver no mapa substitua na linha 42:
    return doCombat(cid, combat, var) por 
    doCombat(cid, combat, var) E NÃO ESQUEÇA DE DIMINUIR DO DANO local life = math.random (200,1000) e no spells.xml adicione: ​<instant name="Water Need" words="utura grav vita" lvl="150" mana="300" prem="1" range="4" casterTargetOrDirection="1" blockwalls="1" exhaustion="3000" needlearn="0" event="script" value="waterneeded.lua"> <vocation id="5"/> <vocation id="6"/> <vocation id="7"/> <vocation id="8"/> </instant> Se você curtiu, não remova os créditos.. Sinta-se livre pra melhorar a magia do jeito que você quiser (uma primeira alteração que eu sugiro é mudar o dano e colocar como sendo um math.random do level do player x magicLevel dele, pra magia ter um dano que aumenta com o tempo, e não algo totalmente aleatório).   

    Gostaria de salientar também que essa é a primeira versão de tal script, tem muita coisa pra melhorar e dá pra diminuir esse script consideravelmente, ficaria super feliz se vocês me ajudassem a melhorar isso e remover coisas desnecessárias    

    EDIT: Trouxe algumas imagens pessoal:






  6. Gostei
    574747 deu reputação a xWhiteWolf em Darkness Pact Quest   
    Hoje vou ensinar vocês a fazer uma quest com bastante RPG (e com um pouquinho de esforço talvez o melhor sistema já visto num OTSERV!!)
    É uma quest que você tem um determinado tempo pra matar um monstro e entrar num teleporte ou a passagem será bloqueada
    "tá, mas oque difere essa quest de qualquer script de arena que tenha aí pelo fórum?"
    na verdade nada, mas no meu server eu coloquei um tempo bem ridículo (8 segundos) e é tecnicamente impossível chegar do outro lado.
    "então você fez uma quest que não dá pra fazer, é isso mesmo?"
    não meu caro amigo, é uma quest que foi feita pra ser pensada. Um dos players entra na quest e termina ela, daí outro player ativa a alavanca e ele passa.. fazendo com que o pessoal só consiga passar com a ajuda de um amigo.  Se você conseguir trabalhar em equipe em prol de um prêmio a sua recompensa é a oportunidade de fazer um pacto com as trevas.
    "masoque??"   
    isso mesmo que você entendeu, você ganha a chance de abrir mão da sua vida (literalmente) pra receber uma spell nova.

    ~~ Hoje eu vou ensinar a reproduzirem esse sistema caralhudo no server de vocês:


    Tudo começa no map editor quando você vai fazer uma área + ou - igual a essa e colocar os seguintes actions/unique ids








    Agora vamos aos scripts:
    actions\scripts\newquest.lua


    Feito isso você vai precisar preparar uma sala aonde o player será teleportado caso ele consiga passar e coloque uma alavanca nessa sala.
    Na alavanca você deve colocar o actionid 6102 e uma plaquinha explicando sobre o pacto
    daí você adiciona isso no actions.xml
    <action actionid="6102" script="alavanca de magia.lua"/> e crie o script 'alavanca de magia.lua' que deverá conter o seguinte:


    Feito tudo isso agora só falta criar a magia Target Spell que no caso é essa daqui: 



    e colocar no spells.xml:
    <instant name="Target Spell" words="exevo res" lvl="120" maglv="10" mana="500" exhaustion="3000" prem="0" needlearn="1" script="especiais/seguidor.lua">   <vocation id="6"/> <vocation id="7"/> <vocation id="5"/> <vocation id="8"/> </instant> FIM.

    Agora você só precisa editar as actions pra rodarem de acordo com as posições do seu server então vamos às explicações:
    SCRIPT1:
    local tempo = 8000 ---- tempo até a porta fechar 
    local wall1 = {x=612, y=345, z=7, stackpos=1} -- local da primeira pedra
    local pos1 = getThingfromPos(wall1)
    local wall2 = {x=653, y=345, z=7, stackpos=1} --- local da segunda pedra
    local pos2 = getThingfromPos(wall2)
    local monster1 = {x=615, y=345, z=7, stackpos=1} --- local que cria o monstro, no caso eu uso o Juggernaut mas vc pode editar dentro do script
    local posmonster1 = getThingfromPos(monster1)
    local monster3 = {x=654, y=345, z=7, stackpos=1} --- Ultima posição antes do teleporte, serve pra remover o monstro 
    local idparede = 9788 --- id do obstáculo q será criado
    local alavanca = {x=610, y=344, z=7, stackpos=1} -- POSIÇÃO DA ALAVANCA 
    local alavancapos = getThingfromPos(alavanca)  SCRIPT2:
    local topos = {x=609, y=345, z=7, stackpos=1} -- posição que vai ser teleportado caso clique na alavanca de 'FAIL QUEST'

    Espero que vocês tenham curtido   
    Aqui tem mais duas imagens pra vocês 
    Alavanca:



    Magia:




    EXPLICANDO A MAGIA: Os morcegos seguem a direção que você tá olhando, se vc tiver um target eles seguem o target.
  7. Gostei
    bota na pasta data/lib/functions.lua



     
    e tenta o sleep denovo.
     
    @edit
     
    Se mesmo assim nao funcionar tenta isso



  8. Gostei
    574747 recebeu reputação de xandeloko em Que muro é esse?   
    8.6 id do item e 10436
  9. Gostei
    Ja foi resolvido
  10. Gostei
    574747 deu reputação a Snowsz em (Resolvido)como reverter um distance effect?   
    function onThink(interval, lastExecution) for _, name in ipairs(getOnlinePlayers()) do local cid = getPlayerByName(name) if getPlayerStorageValue(cid, 9899) >= 1 then doSendAnimatedText(getPlayerPosition(cid), "[VIP]", 29) local spot = getThingPosition(cid) doSendDistanceShoot({x = spot.x + 1, y = spot.x + 1, z = spot.z}, spot, 37) doSendDistanceShoot({x = spot.x - 1, y = spot.y - 1, z = spot.z}, spot, 37) doSendDistanceShoot({x = spot.x + 1, y = spot.y - 1, z = spot.z}, spot, 37) doSendDistanceShoot({x = spot.x - 1, y = spot.y + 1, z = spot.z}, spot, 37) end end return true end
  11. Gostei
    574747 deu reputação a zipter98 em (Resolvido)Doble xp a x guild.   
    Desculpe, não entendi qual é seu outro problema. É relacionado ao sistema que fiz?
  12. Gostei
    574747 deu reputação a zipter98 em (Resolvido)Doble xp a x guild.   
    Não testei, mas w/e.
    Em algum arquivo da lib, coloque essas funções:
    function setGuildExperience(guildId, exp)     for _, pid in pairs(getPlayersOnline()) do         if getPlayerGuildId(pid) == guildId then             doPlayerSetExperienceRate(pid, exp)         end     end end function getGuildExpRate(guildId)     for _, pid in pairs(getPlayersOnline()) do         local playerRate = getPlayerRates(pid)[8]         if getPlayerGuildId(pid) == guildId and playerRate > 1 then             return playerRate         end     end     return 1.0 end data/actions/scripts: local config = {     exp_rate = 2.0,          --Rate de experiência (2x).     time = 60,               --Tempo, em minutos, para a double experience da guild acabar (em minutos).     g_storage = 4790,     guild_events = {} }   function onUse(cid)     local owner_guild, player_guild = getGlobalStorageValue(config.g_storage), getPlayerGuildId(cid)     if player_guild < 1 then         return doPlayerSendCancel(cid, "You do not have a guild.")     elseif player_guild == owner_guild then         return doPlayerSendCancel(cid, "Your guild is already owner of this lever.")     end     broadcastMessage("The guild "..getPlayerGuildName(cid).." is now owner of the lever and has "..config.exp_rate.."x experience rate for "..config.time.." minutes!")     setGuildExperience(player_guild, config.exp_rate)     setGlobalStorageValue(config.g_storage, player_guild)     if owner_guild ~= -1 then         setGuildExperience(owner_guild, 1.0)         stopEvent(config.guild_events[owner_guild])     end     config.guild_events[player_guild] = addEvent(function()         setGuildExperience(player_guild, 1.0)         setGlobalStorageValue(config.g_storage, -1)     end, config.time * 60 * 1000)     return true end data/creaturescripts/scripts: function onLogin(cid)     if getPlayerGuildId(cid) < 1 then return true end     local guild_exp = getGuildExpRate(getPlayerGuildId(cid))     if guild_exp > 1 then         doPlayerSetExperienceRate(cid, guild_exp)     end     return true end Logicamente, não precisa registrar nada em login.lua.
  13. Gostei
    574747 deu reputação a Vodkart em [EVENTO] Castle 24H "Diferente"   
    Se ele moveu é porque seu tópico foi aprovado e movido para área correta... meu deus.
  14. Gostei
    574747 deu reputação a Vodkart em (Resolvido)AJUDA EM SCRIPT GUILDS   
    executa no seu banco de dados:
     

    ALTER TABLE `guilds` ADD `frags` INT(11) NOT NULL DEFAULT 0; ALTER TABLE `guilds` ADD `acesstime` INT(15) NOT NULL DEFAULT 0;
  15. Gostei
    574747 deu reputação a xWhiteWolf em (Resolvido)setConditionParam   
    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!
  16. Gostei
    574747 recebeu reputação de 77mateus77 em Heal com cores diferentes   
    alanmtd1. nao sei se voce ja sabe onde estao os numeros da cores, elas podem se encontradas na sua lib, no arquivo 000-constant
  17. Gostei
    574747 recebeu reputação de 77mateus77 em Heal com cores diferentes   
    bhelliip, onde esta TEXTCOLOR_GREEN); TEXTCOLOR_DARKPURPLE);  coloca COLOR_GREEN);  COLOR_DARKPURPLE);
  18. Gostei
    574747 recebeu reputação de poko360 em (Resolvido)Ajuda Item para ir ao templo   
    Apenas em PZ
     
    local t = {     delay = 5, -- Tempo em segundos para usar novamente.     storage = 45555 -- Storage para utilizar. }   config = { prot="yes", -- os jogadores precisam estar na zona de PZ para ir ao templo?? ("yes" or "no"). }   function onUse(cid, item, fromPosition, itemEx, toPosition) if(config.prot == "yes") and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "você precisa ficar em PZ para usar o item..") return TRUE end     if getPlayerStorageValue(cid, t.storage) < os.time() then        doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))        setPlayerStorageValue(cid, t.storage, t.delay + os.time())        doRemoveItem(item.uid)        doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)        doSendMagicEffect(fromPosition, CONST_ME_TELEPORT)     else        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce precisa aguardar ".. getPlayerStorageValue(cid, t.storage) - os.time() .." segundo(s) para usar novamente.")     end    return true end
  19. Gostei
    574747 deu reputação a Wakon em Apos equipa x item.   
    Em "Data/movements/scripts", copie e cole um arquivo.lua e renomeie para equipstor.lua, apague tudo e cole:
    local storage = {50010, 1, 0} -- Storage, valor após equipar, valor após retirar. function onEquip(cid) return setPlayerStorageValue(cid, storage[1], storage[2]) end function onDeEquip(cid) return setPlayerStorageValue(cid, storage[1], storage[3]) end Em "Data/movements", abra o arquivo movements.xml e adicione as tags:
    <movevent type="Equip" itemid="item_id" slot="slot_type" event="script" value="equipstor.lua"/> <movevent type="DeEquip" itemid="item_id" slot="slot_type" event="script" value="equipstor.lua"/> Em itemid você coloca o id do item que deve ser equipado para ganhar storage e no slot você coloca em qual parte deve ser equipado.
    Slots:



  20. Gostei
    574747 deu reputação a psychonaut em (Resolvido)So x vocaçao pode usa x item   
    Tenta isso
    local IDHEAD = 2343 local IDARMOR = 2503 local IDLEGS = 2504 local IDFEET = 2646 local IDSHIELD = 8905 local THETEXT = "Chain" local look = 309 -- Coloque o ID do outfit local condition = createConditionObject(CONDITION_ATTRIBUTES) setConditionParam(condition, CONDITION_PARAM_TICKS, -1) setConditionParam(condition, CONDITION_PARAM_HEALTHGAIN, 5000000) setConditionParam(condition, CONDITION_PARAM_HEALTHTICKS, 500) setConditionParam(condition, CONDITION_PARAM_MANAGAIN, 5000000) setConditionParam(condition, CONDITION_PARAM_MANATICKS, 500) setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCE, 150) setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELD, 150) setConditionParam(condition, CONDITION_PARAM_STAT_MAGICLEVELPERCENT,575) setConditionParam(condition, CONDITION_PARAM_ABSORBPERCENTALL, 575) function onDeEquip(cid, item, slot) doRemoveCondition(cid, CONDITION_OUTFIT) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have just lost the bonus for wearing a full set of equipment. please equipped the item you remove to get the bonus again.") doRemoveCondition(cid, CONDITION_ATTRIBUTES) end function onEquip(cid, item, slot) local vocation = getPlayerVocation(cid) if vocation = 3 then if getPlayerSlotItem(cid, CONST_SLOT_HEAD).itemid == IDHEAD and getPlayerSlotItem(cid, CONST_SLOT_ARMOR).itemid == IDARMOR and getPlayerSlotItem(cid, CONST_SLOT_LEGS).itemid == IDLEGS and getPlayerSlotItem(cid, CONST_SLOT_FEET).itemid == IDFEET and getPlayerSlotItem(cid, CONST_SLOT_RIGHT).itemid == IDSHIELD then doSendAnimatedText(getCreaturePosition(cid), THETEXT, 210) doSetCreatureOutfit(cid, {lookType = look}, -1) doAddCondition(cid, condition) local spot = getThingPosition(cid) doSendDistanceShoot(spot, {x = spot.x + 3, y = spot.y + 3, z = spot.z}, CONST_ANI_HOLY) doSendDistanceShoot(spot, {x = spot.x - 3, y = spot.y - 3, z = spot.z}, CONST_ANI_HOLY) doSendDistanceShoot(spot, {x = spot.x + 3, y = spot.y - 3, z = spot.z}, CONST_ANI_HOLY) doSendDistanceShoot(spot, {x = spot.x - 3, y = spot.y + 3, z = spot.z}, CONST_ANI_HOLY) end else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este item e apenas para paladins.") end return true end
  21. Gostei
    574747 deu reputação a psychonaut em (Resolvido)So x vocaçao pode usa x item   
    Altera a linha
    if vocation = 3 then
     
    Pra 
    if vocation == 3 then
      Erro meu, é que to mexendo com VB, ai confundi.
  22. Gostei
    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.
  23. Gostei
    574747 recebeu reputação de croshark em [Pedido]Arma com dano em área   
    abra o a pastar do seu ot va em weapons.xml e ponha isto \/  
    no xxxx coloca o id da arma e no xxxx coloque o nome que voce ira cria na pasta xml e na pasta xxxx coloque:
     
    [spoiler*]<melee id="xxxx" level="1" unproperly="1" event="script" value="xxxx.lua">
    <vocation name="Knight"/> <vocation id="8" showInDescription="0"/> </melee>[spoiler*]   [spoiler*]local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WHIRLWINDSWORD) setCombatFormula(combat, COMBAT_FORMULA_SKILL, 5, 0, 5, 0)   local area = createCombatArea( { {1, 1, 1}, {1, 3, 1}, {1, 1, 1} } ) setCombatArea(combat, area)   function onUseWeapon(cid, var) return doCombat(cid, combat, var) end[spoiler*]   Explicando algumas coisa acima Onde esta escrito em verde sera o tipo do dano Onde esta escrito em rosa sera o efeito do atk Onde esta escrito em verde escuro sera o efeito do atk tipo uma wand de longe. Onde esta escrito em azul sera o dano da arma em base de skill Onde esta escrito em ouro e o tamanho do atk tipo o burst arrow   Para sabe mais sobre oque foi danos ou efeitos va na pastar do seu ot em Libs e abra o 000-constant   Espero te ajudado. 
  24. Gostei
    local t = { delay = 5, -- Tempo em segundos para usar novamente. storage = 45555 -- Storage para utilizar. } function onUse(cid, item, fromPosition, itemEx, toPosition) if not getTileInfo(getThingPos(cid)).protection then return doPlayerSendCancel(cid, "This item works only in PZ") and doSendMagicEffect(getThingPos(cid), CONST_ME_POFF) and false end if getPlayerStorageValue(cid, t.storage) < os.time() then doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) setPlayerStorageValue(cid, t.storage, t.delay + os.time()) doRemoveItem(item.uid) doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT) doSendMagicEffect(fromPosition, CONST_ME_TELEPORT) else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você precisa aguardar ".. getPlayerStorageValue(cid, t.storage) - os.time() .." segundo(s) para usar novamente.") end return true end
  25. Gostei
    574747 recebeu reputação de poko360 em (Resolvido)[Pedido] Arma atacando com numero exato   
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 0) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 0) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 49) setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, 30)     function onGetFormulaValues(cid, level, distance) min = -(distance*55) + -(level*0.15) max = -(distance*55) + -(level*0.15) return min, max end     setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues")     function onUseWeapon(cid, var) local ret = doCombat(cid, combat, var) if(ret == LUA_ERROR) then return LUA_ERROR end return true end

Informação Importante

Confirmação de Termo