Postado Janeiro 14, 2021 4 anos .Qual servidor ou website você utiliza como base? OTX 2.8 Qual o motivo deste tópico? aparece esse erro quando retira a arma no meio da magia Está surgindo algum erro? Se sim coloque-o aqui. Citar [13/1/2021 21:13:2] [Error - Spell Interface] [13/1/2021 21:13:2] In a timer event called from: [13/1/2021 21:13:2] data/spells/scripts/special/Shattering blades.lua:onCastSpell [13/1/2021 21:13:3] Description: [13/1/2021 21:13:3] (LuaInterface::luaGetThing) Thing not found Você tem o código disponível? Se tiver publique-o aqui: local combat = createCombatObject() setCombatParam(combat, 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.005) local max = levelTotal + (skillTotal * 0.015) return -math.ceil(min), -math.ceil(max) end setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") combat_arr = { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, } local combat_area = createCombatArea(combat_arr) setCombatArea(combat, combat_area) 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 areaEffect(param) if isCreature(param.cid) and not getTilePzInfo(getCreaturePosition(param.cid)) then for i = 1, 3 do start_pos_1 = {x = getCreaturePosition(param.cid).x+choose(-8, 8), y = getCreaturePosition(param.cid).y+math.random(-6, 6), z = getCreaturePosition(param.cid).z} start_pos_2 = {x = getCreaturePosition(param.cid).x+math.random(-8, 8), y = getCreaturePosition(param.cid).y+choose(-6, 6), z = getCreaturePosition(param.cid).z} final_pos_1 = {x = getCreaturePosition(param.cid).x+(choose(-8, 8)*-1), y = getCreaturePosition(param.cid).y+(math.random(-6, 6)*-1), z = getCreaturePosition(param.cid).z} final_pos_2 = {x = getCreaturePosition(param.cid).x+(math.random(-8, 8)*-1), y = getCreaturePosition(param.cid).y+(choose(-6, 6)*-1), z = getCreaturePosition(param.cid).z} doSendDistanceShoot(start_pos_1, final_pos_1, weaponType(param.cid)) doSendDistanceShoot(start_pos_2, final_pos_2, weaponType(param.cid)) end return doCombat(param.cid, combat, param.var) end end function onCastSpell(cid, var) local parameters = {cid=cid, var=var} for i = 1, 40 do addEvent(areaEffect, i * 250, parameters) end return true end Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui.
Postado Janeiro 15, 2021 4 anos Solução Pelo que entendi da sua magia, já que não tive como testar, primeiro é recomendável que você adicione na tag da magia no spells.xml o seguinte: needweapon="1" Para que não dê mais erros, deixe a magia assim: Spoiler local combat = createCombatObject() setCombatParam(combat, 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.005) local max = levelTotal + (skillTotal * 0.015) return -math.ceil(min), -math.ceil(max) end setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") combat_arr = { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,}, } local combat_area = createCombatArea(combat_arr) setCombatArea(combat, combat_area) local weapons = {[1] = 24, [2] = 26, [3] = 25} local function weaponType(cid) local playerWeapon = getPlayerWeapon(cid).uid if playerWeapon > 0 then return weapons[getItemWeaponType(playerWeapon)] end return false end local function choose(...) local arg = {...} return arg[math.random(1,#arg)] end local function areaEffect(param) local p = getCreaturePosition(param.cid) if isCreature(param.cid) and not getTilePzInfo(p) then local playerWeapon = getPlayerWeapon(param.cid).uid if playerWeapon > 0 then local ret = weaponType(param.cid) if ret and ret == param.weaponType then for i = 1, 3 do start_pos_1 = {x = p.x+choose(-8, 8), y = p.y+math.random(-6, 6), z = p.z} start_pos_2 = {x = p.x+math.random(-8, 8), y = p.y+choose(-6, 6), z = p.z} final_pos_1 = {x = p.x+(choose(-8, 8)*-1), y = p.y+(math.random(-6, 6)*-1), z = p.z} final_pos_2 = {x = p.x+(math.random(-8, 8)*-1), y = p.y+(choose(-6, 6)*-1), z = p.z} doSendDistanceShoot(start_pos_1, final_pos_1, ret) doSendDistanceShoot(start_pos_2, final_pos_2, ret) end return doCombat(param.cid, combat, param.var) end end end return true end function onCastSpell(cid, var) local playerWeaponType = getItemWeaponType(getPlayerWeapon(cid).uid) local parameters = {cid=cid, var=var, weaponType = weapons[playerWeaponType]} for i = 1, 40 do addEvent(areaEffect, i * 250, parameters) end return true end Dessa maneira, caso o player desequipe a arma ou troque o tipo de arma em relação ao tipo que estava equipado quando soltou a magia (ex.: solta com sword e depois equipa um axe), a magia vai parar. Lembrando que do jeito que sua magia está, ele ainda vai poder desequipar a arma e caso volte a equipá-la dentro do tempo de duração da magia, a magia voltará a atacar. Não sei se isso foi proposital, se é pra funcionar assim mesmo... Ajuste o tempo de duração da magia com o cooldown para soltar novamente e vai funcionar corretamente. Contato: Email: [email protected] Discord: Dwarfer#2715
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.