Postado Junho 4, 2014 11 anos local config = { hits = 3, -- quantos hits vai dar effect = 41, -- efeito distance_effect = 28, -- efeito de distance delay = 350, -- tempo entre os hits damage = COMBAT_PHYSICALDAMAGE -- tipo de combat } local combat = createCombatObject() local function doHitCreature(target, cid, times) if isCreature(cid) and isCreature(target) and times ~= 0 then doTargetCombatHealth(cid, target, config.damage, -getPlayerLevel(cid), -getPlayerLevel(cid), config.effect) doSendDistanceShoot(getThingPos(cid), getThingPos(target), config.distance_effect) addEvent(doHitCreature, config.delay, target, cid, times-1) end return true end function onTargetCreature(cid, target) return addEvent(doHitCreature, 1, target, cid, config.hits) end setCombatCallback(combat, CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature") function onCastSpell(cid, var) return doCombat(cid, combat,var) end
Postado Junho 4, 2014 11 anos Autor Cara funcionou sim perfeitamente, mas tipo eu tenho outras magias pra editar como exemplo 1.5 de dano por level nas outras colocar area e tal tlg? por isso to perguntando como junta aqueles 2 script pra eu ter uma noção como vou editar as outras tlg? mas se nao tiver jeito nenhum que alguem me ajude, ai eu queria te perguntar onde eu configuraria o dano nesse caso? '-' Editado Junho 4, 2014 11 anos por poko360 (veja o histórico de edições)
Postado Junho 4, 2014 11 anos o dano tá aqui: doTargetCombatHealth(cid, target, config.damage, -getPlayerLevel(cid), -getPlayerLevel(cid), config.effect) ta dando damage do cid (quem usa a magia) no target (pessoa que tá sendo atacada), o tipo de dano é o config.damage damage = COMBAT_PHYSICALDAMAGE ou seja, dano físico. e o dano minimo e máximo é - o level do player. O efeito que vai sair é o config.effect, Se vc quiser mudar o dano é só fazer doTargetCombatHealth(cid, target, config.damage, -DANO MINIMO, -DANO MÁXIMO, config.effect) lembrando sempre de colocar o - se não ele vai recuperar vida. Se vc quiser que seja 1,5x o level do player só fazer local min = math.ceil(getPlayerLevel(cid) * 1.5) doTargetCombatHealth(cid, target, config.damage, -min, -min, config.effect) ps: se vc quiser fazer em área é só mudar a função doTargetCombatHealth pra doAreaCombatHealth(cid, type, pos, area, min, max, effect) na area vc faz igual um script normal area = {0,0,0,1,0,0,0, 0,0,0,3,0,0,0, 0,0,0,1,0,0,0} e o resto tá no script acima Editado Junho 4, 2014 11 anos por xWhiteWolf (veja o histórico de edições) Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá! "Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda (obg ao @Beeny por fazer essa linda sign <3)
Postado Junho 4, 2014 11 anos Autor Whitewolf obrigado, entendi a parte de cima perfeitamente, local min = math.ceil(getPlayerLevel(cid) * 1.5)doTargetCombatHealth(cid, target, config.damage, -min, -min, config.effect) so nao entendi essa aqui \/ como eu devo montar? ta ligado? (em quais linhas devo colocar isso?) se no de cima voce colocou -min,-min, porque voce colocou esse min, max,? @xWhiteWolf, ps: se vc quiser fazer em área é só mudar a função doTargetCombatHealth pra doAreaCombatHealth(cid, type, pos, area, min, max, effect) na area vc faz igual um script normalarea = {0,0,0,1,0,0,0, 0,0,0,3,0,0,0, 0,0,0,1,0,0,0} e o resto tá no script acima EDIT: queria colocar isso nessa magia aqui: local combat1 = createCombatObject() setCombatParam(combat1, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat1, COMBAT_PARAM_EFFECT, 36) setCombatFormula(combat1, COMBAT_FORMULA_LEVELMAGIC, -1.2, -45, -1.2, 0) local combat5 = createCombatObject() setCombatParam(combat5, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat5, COMBAT_PARAM_EFFECT, 6) setCombatFormula(combat5, COMBAT_FORMULA_LEVELMAGIC, -1.2, -45, -1.2, 0) arr1 = { {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, } local area1 = createCombatArea(arr1) local area5 = createCombatArea(arr1) setCombatArea(combat1, area1) setCombatArea(combat5, area5) local function onCastSpell1(parameters) doCombat(parameters.cid, parameters.combat1, parameters.var) end local function onCastSpell5(parameters) doCombat(parameters.cid, parameters.combat5, parameters.var) end function onCastSpell(cid, var) local parameters = { cid = cid, var = var, combat1 = combat1, combat2 = combat2, combat3 = combat3, combat4 = combat4, combat5 = combat5 } addEvent(onCastSpell1, 0, parameters) addEvent(onCastSpell1, 100, parameters) addEvent(onCastSpell1, 200, parameters) addEvent(onCastSpell1, 300, parameters) addEvent(onCastSpell5, 500, parameters) return true end Editado Junho 4, 2014 11 anos por poko360 (veja o histórico de edições)
Postado Junho 5, 2014 11 anos a formula é min e max mas no caso como vc queria uma spell que hitasse o level do cara multiplicado por um fator X, o mínimo e o máximo tinham que ser iguais, certo? Por isso eu chamei de min e min. Se vc quiser editar essa spell é só apagar as coisas desnecessárias (tudo), deixa só a área e function onCastSpell.. dai vc coloca em addEvent quantas vezes vc quer que a magia se repita usando a doAreaCombat... Eu não to em casa agora, devo voltar só segunda, se ninguém te ajudar até lá eu prometo que tento fazer pra ti Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá! "Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda (obg ao @Beeny por fazer essa linda sign <3)
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.