Postado Dezembro 8, 2020 4 anos Spoiler -- NORMAL ATTACK local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0) -- PASSIVE ATK local function weaponType(cid) local weapons = {[1] = 24, [2] = 26, [3] = 25} return weapons[getItemWeaponType(getPlayerWeapon(cid).uid)] end local function choose(...) local arg = {...} return arg[math.random(1,#arg)] end local function check_pos(fromPos, toPos) x = fromPos.x - toPos.x y = fromPos.y - toPos.y if (x == -1) and (y == -1) then return choose({-1, -1}, {-1, 0}, {0, -1}) elseif (x == 0) and (y == -1) then return choose({-1, -1}, {0, -1}, {1, -1}) elseif (x == 1) and (y == -1) then return choose({0, -1}, {1, -1}, {1, 0}) elseif (x == -1) and (y == 0) then return choose({-1, -1}, {-1, 0}, {-1, 1}) elseif (x == 1) and (y == 0) then return choose({1, -1}, {1, 0}, {1, 1}) elseif (x == -1) and (y == 1) then return choose({-1, 0}, {-1, 1}, {0, 1}) elseif (x == 0) and (y == 1) then return choose({-1, 1}, {0, 1}, {1, 1}) elseif (x == 1) and (y == 1) then return choose({0, 1}, {1, 0}, {1, 1}) else return choose({-1, -1}, {-1, 0}, {0, -1}, {-1, -1}, {0, -1}, {1, -1}, {0, -1}, {1, -1}, {1, 0}, {-1, -1}, {-1, 0}, {-1, 1}, {1, -1}, {1, 0}, {1, 1}, {-1, 0}, {-1, 1}, {0, 1}, {-1, 1}, {0, 1}, {1, 1}, {0, 1}, {1, 0}, {1, 1}) end end local function distEffect(cid) player_pos = getCreaturePosition(cid) target_pos = getCreaturePosition(getCreatureTarget(cid)) var = check_pos(player_pos, target_pos) start_pos = {x = player_pos.x+var[1], y = player_pos.y+var[2], z = player_pos.z} final_pos = {x = target_pos.x+(var[1]*-1), y = target_pos.y+(var[2]*-1), z = target_pos.z} doSendDistanceShoot(start_pos, final_pos, weaponType(cid)) end local combat_passive = createCombatObject() setCombatParam(combat_passive, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) function onGetFormulaValues(cid, level, skill, attack, element, factor) local levelTotal = level / 5 local skillTotal = skill * attack local min = levelTotal + (skillTotal * 0.01) local max = levelTotal + (skillTotal * 0.03) distEffect(cid) return -math.ceil(min), -math.ceil(max), -math.random(levelTotal + (element * skill * 0.01), levelTotal + (element * skill * 0.01)) end setCombatCallback(combat_passive, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onUseWeapon(cid, var) doCombat(cid, combat, var) if isPlayer(getCreatureTarget(cid)) then addEvent(doCombat, choose(100, 200, 300), cid, combat_passive, var) end return true end Spoiler [8/12/2020 17:36:28] [Error - Weapon Interface] [8/12/2020 17:36:28] In a callback: data/weapons/scripts/LV600/Melee.lua:onGetFormulaValues [8/12/2020 17:36:28] (Unknown script file) [8/12/2020 17:36:28] Description: [8/12/2020 17:36:28] (LuaInterface::luaGetThingPosition) Thing not found [8/12/2020 17:36:29] [Error - Weapon Interface] [8/12/2020 17:36:29] In a callback: data/weapons/scripts/LV600/Melee.lua:onGetFormulaValues [8/12/2020 17:36:29] (Unknown script file) [8/12/2020 17:36:29] Description: [8/12/2020 17:36:29] data/weapons/scripts/LV600/Melee.lua:23: attempt to index local 'toPos' (a boolean value) Eu fiz esse script e ele fuciona como esperado, porem tem algumas situações que da esse erro no addevent Essa é a maneira correta de fazer esse script? Editado Dezembro 8, 2020 4 anos por iTzBrHue3 (veja o histórico de edições)
Postado Dezembro 8, 2020 4 anos @iTzBrHue3 o que era para ser isso um código pronto para uso, pedido/suporte para corrigir algo no código qual o intuito desse tópico?
Postado Dezembro 10, 2020 4 anos A função onGetFormulaValues(cid, level, skill, attack, element, factor) não aceita cid como valido, o certo seria thing, ao menos o que eu li é isso. O outro erro, [8/12/2020 17:36:29] data/weapons/scripts/LV600/Melee.lua:23: attempt to index local 'toPos' (a boolean value) Diz que o valor toPos não é boolean, ou seja, ele não é numérico.
Postado Dezembro 10, 2020 4 anos Autor 1 hora atrás, FlameArcixt disse: A função onGetFormulaValues(cid, level, skill, attack, element, factor) não aceita cid como valido, o certo seria thing, ao menos o que eu li é isso. O outro erro, [8/12/2020 17:36:29] data/weapons/scripts/LV600/Melee.lua:23: attempt to index local 'toPos' (a boolean value) Diz que o valor toPos não é boolean, ou seja, ele não é numérico. me liguei nisso tbm, só que esse erro acontece quando o player que ataca perde o target(quando sobe escada, morre), quando eu tiro o addEvent esse erro para de acontecer, eu queria saber como deixa com o addEvent pq esse delay dele deixa o negocio saindo mais bonito
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.