Ir para conteúdo

apollo333

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Curtir
    apollo333 recebeu reputação de .Smile em [Tutorial] Mudar Versão do seu Mapa   
    Olá a todos trago hoje em vídeo, um tutorial de como mudara a versão do mapa de seu Otserv.
     
     
  2. Curtir
    apollo333 recebeu reputação de Cat em [Tutorial] Mudar Versão do seu Mapa   
    Olá a todos trago hoje em vídeo, um tutorial de como mudara a versão do mapa de seu Otserv.
     
     
  3. Curtir
    apollo333 recebeu reputação de Werner em [Tutorial] Mudar Versão do seu Mapa   
    Olá a todos trago hoje em vídeo, um tutorial de como mudara a versão do mapa de seu Otserv.
     
     
  4. Curtir
    apollo333 deu reputação a Dyego em Zenfia Online Mapping   
    Update
    faça parte da equipe
    Programador OTC
    Spriter
    Scripter
     

     

  5. Curtir
    apollo333 deu reputação a Dyego em Zenfia Online Mapping   
    Haha tá ficando bom kkk.
     
    Update
    Nova parede de madeira feita por mim xD
    Nova Montanha de Caça com Orcs
    Participe da Equipe, Vagas Abertas
     

  6. Curtir
    apollo333 deu reputação a Cat em [DOWNLOAD] Spells 8.60   
    Spells 8.60 (8 pastas)
     
    Créditos: Otland (imagens: Daaniel)
     
    Quote
     
     
    Imagem:
     

     

     
     
     
  7. Curtir
    apollo333 deu reputação a grafit em erro ao iniciar servidor   
    apt-get install libmysqlclient-dev Se mesmo assim não for, tente:
     
    install mysql-server -y  
  8. Obrigado
    apollo333 deu reputação a marcot em (Resolvido)[ Pedido ] tem que lança magia   
    @apollo333, @Samu DS
    Desculpem nao ter respondido, estava maratonando uma série ontem.
    Aqui a versão upando ML e com exausted:
    local config = { requiredLevel = 100, -- Level necessario usingMana = 200, -- Mana que sera gasta storageID = 40001, -- Mude se ja estiver em uso timeExausted = 1, -- Tempo de exausted global } local errorMsg = { level = "Not enough level.", exausted = "You are exausted.", mana = "Not enough mana.", } local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 49) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.5, -30, -1.1, 0) local arr = { {0, 0, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 2, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 0, 0} } local area = createCombatArea(arr) setCombatArea(combat, area) function onUse(cid, item, frompos, item2, topos) if getPlayerLevel(cid) > config.requiredLevel then if getPlayerStorageValue (cid, config.storageID) < os.time() then if getPlayerMana(cid) > config.usingMana then doPlayerAddMana(cid, -config.usingMana) doPlayerAddSpentMana(cid, config.usingMana, true) setPlayerStorageValue(cid, config.storageID, os.time() + config.timeExausted) return doCombat(cid, combat, numberToVariant(cid)) else doPlayerSendCancel(cid, errorMsg.mana) doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, errorMsg.exausted) doSendMagicEffect(getCreaturePosition(cid), 2) end else doPlayerSendCancel(cid, errorMsg.level) end return TRUE end  
  9. Obrigado
    apollo333 deu reputação a marcot em (Resolvido)[ Pedido ] tem que lança magia   
    Você vai fazer o seguinte: copia tudo que está na magia e cola no action, depois procura essa parte:
     
    function onCastSpell(cid, var) return doCombat(cid, combat, var) end e substitua por:
    function onUse(cid, item, frompos, item2, topos) return doCombat(cid, combat, numberToVariant(cid)) end  
  10. Obrigado
    apollo333 deu reputação a marcot em (Resolvido)[ Pedido ] tem que lança magia   
    Vou tentar explicar dando um exemplo.
    Quero fazer um item que solte "Exevo Mas San", o script equivalente no meu servidor é o holy light.lua. A princípio temos:
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 49) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.5, -30, -1.1, 0) local arr = { {0, 0, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 3, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 0, 0} } local area = createCombatArea(arr) setCombatArea(combat, area) function onCastSpell(cid, var) return doCombat(cid, combat, var) end Quando você usa uma skill o que você chamou na verdade é a parte do script:
    function onCastSpell(cid, var) return doCombat(cid, combat, var) end E a parte responsável por soltar uma magia é o "doCombat(cid, combat, var)". Botando os parâmetros "cid" e "var" de lado, quem é "combat"? A parte a seguir não é necessária para compreender totalmente como fazer para o item usar uma skill mas vamos lá:
     
    Vamos voltar ao começo do script para entender quem é combat:
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 49) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.5, -30, -1.1, 0) local arr = { {0, 0, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 3, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 0, 0} } local area = createCombatArea(arr) setCombatArea(combat, area) Na primeira linha criamos a variável "combat" e usamos uma espécie de construtor dessa variável. Depois disso definimos cada parte do script.
    Na segunda linha definimos o "COMBAT_PARAM_TYPE", que é o tipo de dano.
    Na terceira linha, definimos "COMBAT_PARAM_EFFECT", que é o efeito (49).
    Na quarta linha, definimos "COMBAT_FORMULA_LEVELMAGIC" que vai ser a quantidade de dano.
    Depois disso definimos a área, criamos a variável arr que é uma matriz definindo a área da skill,  facilitando a vida de pessoas que vão fazer skills.  E depois simplesmente "linkamos" essa matriz ao combat.
     
    Enfim, quando usamos uma magia temos a função onCastSpell e quando usamos um action temos a função onUse, logo, não podemos simplesmente dar ctrl+c e ctrl+v para fazê-lo. Então vamos fazer o que está sendo feito dentro do onCastSpell dentro do onUse. O que temos dentro do onCastSpell que queremos no onUse?
    function onCastSpell(cid, var) return doCombat(cid, combat, var) end E o que temos no action?
    function onUse(cid, item, frompos, item2, topos) <codigo> end Note que no doCombat(cid, combat, var)  temos uma variável que não temos no onUse, então vamos colocar numberToVariant(cid) no lugar, ficando assim:
    function onUse(cid, item, frompos, item2, topos) return doCombat(cid, combat, numberToVariant(cid)) end No final das contas, o script do exevo mas san por item ficaria assim:
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 49) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.5, -30, -1.1, 0) local arr = { {0, 0, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 3, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 0, 0} } local area = createCombatArea(arr) setCombatArea(combat, area) function onUse(cid, item, frompos, item2, topos) return doCombat(cid, combat, numberToVariant(cid)) end  
    [EDIT]:
    Tinha me esquecido desse detalhe. Já edito e mando o exemplo acima gastando mana.
    [EDIT2]:
    local config = { requiredLevel = 100, usingMana = 200 } local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 49) setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.5, -30, -1.1, 0) local arr = { {0, 0, 1, 1, 1, 0, 0}, {0, 1, 1, 1, 1, 1, 0}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 3, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1, 0}, {0, 0, 1, 1, 1, 0, 0} } local area = createCombatArea(arr) setCombatArea(combat, area) function onUse(cid, item, frompos, item2, topos) if getPlayerLevel(cid) > config.requiredLevel then if getPlayerMana(cid) > config.usingMana then doPlayerAddMana(cid, -config.usingMana) return doCombat(cid, combat, numberToVariant(cid)) else doPlayerSendCancel(cid, "Not enough mana.") end else doPlayerSendCancel(cid, "Not enough level.") end return TRUE end  
  11. Curtir
    apollo333 deu reputação a marcot em (Resolvido)[ Pedido ] tem que lança magia   
    Essa ultima script que você mandou está com vários erros.
    Tem um erro de sintaxe de um if sem then, e a função RunPart está sendo chamada sem todos seus 5 parâmetros, onde 2 deles não foram definidos no código (dirList e dirEmitPos)
  12. Obrigado
    apollo333 deu reputação a marcot em (Resolvido)[ Pedido ] tem que lança magia   
    Um action não vai funcionar se tiver o function onCastSpell (cid, var). Então você troca para function onUse(cid, item, frompos, item2, topos) e para o action chamar a skill você deve ter o doCombat(cid, combat, var), mas você não tem var numa action, então você troca para doCombat(cid, combat, numberToVariant(cid)). 
     
    Se você preferir faz assim:
    Pega o spell que você quer que seja o item e copie numa nova action.
    Adicione ao começo 
    local config = { requiredLevel = 100, usingMana = 200 } E substitua o
    function onCastSpell(cid, var) return doCombat(cid, combat, var) end Por
    function onUse(cid, item, frompos, item2, topos) if getPlayerLevel(cid) > config.requiredLevel then if getPlayerMana(cid) > config.usingMana then doPlayerAddMana(cid, -config.usingMana) return doCombat(cid, combat, numberToVariant(cid)) else doPlayerSendCancel(cid, "Not enough mana.") end else doPlayerSendCancel(cid, "Not enough level.") end return TRUE end  
  13. Obrigado
    apollo333 deu reputação a marcot em (Resolvido)[ Pedido ] tem que lança magia   
    Você pode fazer assim no caso da exura, cria o arquivo item_skill.lua em data/actions/scripts:
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE) setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, 1) setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0) setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE) function onGetFormulaValues(cid, level, maglevel) min = (level * 2 + maglevel * 3) * 0.5 - 30 max = (level * 2 + maglevel * 3) * 0.6 if min < 25 then min = 25 end return min, max end setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues") function onUse(cid, item, frompos, item2, topos) return doCombat(cid, combat, numberToVariant(cid)) end E adicionar em actions.xml a tag:
    <action itemid="2195" script="item_skill.lua" /> Isso no OTServ SVN Version 0.6.0.
    Basicamente, qual a diferença? Um action você teria que ter a função "onUse". Dentro dela você chama o "doCombat" e como não temos o parâmetro "var" vamos usar o "numberToVariant(cid)".

Informação Importante

Confirmação de Termo