Postado Junho 4, 2014 10 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 10 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 10 anos por poko360 (veja o histórico de edições)
Postado Junho 4, 2014 10 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 10 anos por xWhiteWolf (veja o histórico de edições)
Postado Junho 4, 2014 10 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 10 anos por poko360 (veja o histórico de edições)
Postado Junho 5, 2014 10 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
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.