Postado Março 1, 2015 10 anos Autor O piso arrumei apenas removi a linha doCreateItem(460, 1, newPos) ai não cria o sqm tag no movements <movevent type="StepOut" itemid="460" event="script" value="catapulta.lua"/> A modificação é tipo assim tem varias catapultas exemplo 1\/ 2> <3 4/\ @Edit isso mesmo uma direção para cada Editado Março 1, 2015 10 anos por Komic (veja o histórico de edições)
Postado Março 1, 2015 10 anos Você quer uma direção para cada catapulta? É isso? Sobre o erro, já vi o que é. Logo edito meu comentário com a correção. Mude o movement para este: local area = createCombatArea{ {1, 1, 1}, {1, 2, 1}, {1, 1, 1}, } function onStepIn(cid, item, position, fromPosition) doAreaCombatHealth(cid, 3080, getThingPos(cid), area, 0, 0, 255) return true end function onStepOut(cid, item, position, fromPosition) local oldtpos = fromPosition oldtpos.stackpos = STACKPOS_GROUND if getTileThingByPos(oldtpos).itemid >= 1 then doRemoveItem(getTileThingByPos(oldtpos).uid, 1) end return true end Tags: <movevent type="StepOut" itemid="460" event="script" value="nome_do_arquivo.lua"/> <movevent type="StepIn" itemid="460" event="script" value="nome_do_arquivo.lua"/> Action com múltiplas catapultas: local config = { catapults = { --[actionid] = "direção", [6801] = "sul", [6802] = "norte", }, distance = 6, --Quantas posições o jogador vai "pular" (só funciona com números pares). Distância máxima: 14. directions = { ["norte"] = 0, ["leste"] = 1, ["sul"] = 2, ["oeste"] = 3, }, } function onUse(cid, item, fromPosition, itemEx, toPosition) if config.distance % 2 ~= 0 then return doPlayerSendCancel(cid, "Sorry, the catapult isn't available right now.") and print("Trade catapult distance for a odd number.") elseif not config.catapults[item.actionid] then return doPlayerSendCancel(cid, "Sorry, this catapult isn't available right now.") and print("Catapult without actionid or it isn't configured in table.") end local direction = config.directions[config.catapults[item.actionid]] for i = 1, config.distance do addEvent(function() if getPlayerLookDir(cid) ~= direction then doCreatureSetLookDirection(cid, direction) end local newPos = getPosByDir(i ~= 1 and getThingPos(cid) or toPosition, direction) newPos.z = i <= config.distance / 2 and newPos.z - 1 or newPos.z + 1 if i < config.distance then doAreaCombatHealth(0, 0, newPos, 0, 0, 0, 255) doCreateItem(460, 1, newPos) end doTeleportThing(cid, newPos) end, i * 120) end return true end PS: Não se esqueça de registrar os action IDs na tag. Ex.: <action actionid="6801;6802" event="script" value="nome_do_arquivo.lua"/> Editado Março 1, 2015 10 anos por zipter98 (veja o histórico de edições) não respondo pms solicitando suporte em programação/scripting
Postado Março 1, 2015 10 anos Autor Está certo o script mas elas não está mandando para cada direção apontada @Edit A catapulta agora joga o player para cima e cai no mesmo lugar Editado Março 1, 2015 10 anos por Komic (veja o histórico de edições)
Postado Março 1, 2015 10 anos Solução Falta de atenção minha... Agora sim eu testei. Se não funcionar, bem, você configurou algo errado. local config = { catapults = { --[actionid] = "direção", [6801] = "sul", [6802] = "norte", }, distance = 6, --Quantas posições o jogador vai "pular" (só funciona com números pares). Distância máxima: 14. directions = { ["norte"] = 0, ["leste"] = 1, ["sul"] = 2, ["oeste"] = 3, }, } function onUse(cid, item, fromPosition, itemEx, toPosition) if config.distance % 2 ~= 0 then return doPlayerSendCancel(cid, "Sorry, the catapult isn't available right now.") and print("Trade catapult distance for a odd number.") elseif not config.catapults[item.actionid] then return doPlayerSendCancel(cid, "Sorry, this catapult isn't available right now.") and print("Catapult without actionid or it isn't configured in table.") end local direction = config.directions[config.catapults[item.actionid]] for i = 1, config.distance do addEvent(function() if getPlayerLookDir(cid) ~= direction then doCreatureSetLookDirection(cid, direction) end local newPos = getPosByDir(i ~= 1 and getThingPos(cid) or toPosition, direction) newPos.z = i <= config.distance / 2 and newPos.z - 1 or newPos.z + 1 if i < config.distance then doAreaCombatHealth(0, 0, newPos, 0, 0, 0, 255) doCreateItem(460, 1, newPos) end doTeleportThing(cid, newPos) end, i * 120) end return true end EDIT: Vi acima que você comentou ter removido a linha que cria o void. NÃO remova-a, por favor. doCreateItem(460, 1, newPos) Editado Março 1, 2015 10 anos por zipter98 (veja o histórico de edições) não respondo pms solicitando suporte em programação/scripting
Postado Março 1, 2015 10 anos Autor Funcionou tudo certo !! já dei seu rep + pode fechar o tópico obg.
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.