damiaotorres 0 Postado Maio 12, 2020 Share Postado Maio 12, 2020 Boa noite, Eu tenho um scripts porém ele não tá funcionando, vou explicar o que ele faz ou é para fazer. -Ao click no item que tá a actions ele vai teleportado para um lugar x. -Para poder usar a alavanca (mencionado acima) ele tem que ter level 150 a 200. -Quando o player entra na quest começa a contar um tempo em cima da alavanca, caso ele não consiga terminar ele é teleportado. -Caso ele consiga efetuar a quest ele fique com a storage (14424) por 12 horas, para poder fazer a quest novamente só quando a storage sair. -Essa quest ele pode ser feita solo ou até 5 player. (como se fosse um sistema de checagem nas position informada). OBS: Irei postar meu script que tenho, porém não tá funcionando, ao clicar na alavanca ela diz que já tem gente fazendo a quest, porém não tem. Link para o comentário Compartilhar em outros sites More sharing options...
0 KaboFlow 54 Postado Maio 12, 2020 Share Postado Maio 12, 2020 33 minutos atrás, damiaotorres disse: Versão do Servidor: Tipo de Script: actions Código: Ocultar conteúdo function isOnSameFloor(fromPos, toPos) return fromPos.z == toPos.z and true or false end function isEven(arg) return arg % 2 == 0 and true or false end function getMiddlePos(fromPos, toPos) if not isOnSameFloor(fromPos, toPos) then return false end local middle = {x = 0, y = 0, z = 0} middle.x = isEven(fromPos.x + toPos.x) and (fromPos.x + toPos.x)/2 or math.floor((fromPos.x + toPos.x)/2) + 1 middle.y = isEven(fromPos.y + toPos.y) and (fromPos.y + toPos.y)/2 or math.floor((fromPos.y + toPos.y)/2) + 1 middle.z = fromPos.z or toPos.z return middle end function getDistanceRadius(fromPos, toPos) if not isOnSameFloor(fromPos, toPos) then return false end local distance = getDistanceBetween(fromPos, toPos) return isEven(distance) and (distance/2) or math.floor(distance/2) + 1 end function cleareArea1(middlePos, rangex, rangey) local final = {x=1030, y=1085, z=7} -- Posição onde será teleportado quando acabar o tempo for i = -rangex, rangex do for j = -rangey, rangey do pos = {x = middlePos.x + i, y = middlePos.y + j, z = middlePos.z} creature = getTopCreature(pos).uid if isMonster(creature) then doSendMagicEffect(getThingPos(creature), 14) doRemoveCreature(creature) elseif isPlayer(creature) then doSendMagicEffect(getThingPos(creature), 10) doTeleportThing(creature, final) end end end setGlobalStorageValue(sto, -123) return true end local t = { lvl = 150, lvl2 = 201, entrada = { {x = 1067, y = 1067, z = 9}, -- pos players {x = 1067, y = 1068, z = 9}, -- pos players {x = 1067, y = 1069, z = 9}, -- pos players {x = 1067, y = 1070, z = 9}, -- pos players {x = 1067, y = 1071, z = 9}, -- pos players }, saida = { {x = 717, y = 1013, z = 9}, -- pos para onde eles irão {x = 717, y = 1013, z = 9}, -- pos para onde eles irão {x = 717, y = 1013, z = 9}, -- pos para onde eles irão {x = 717, y = 1013, z = 9}, -- pos para onde eles irão {x = 717, y = 1013, z = 9}, -- pos para onde eles irão }, } function onUse(cid, item, fromPosition, itemEx, toPosition) local configure = { fromPos = {x=702, y=988, z=9}, -- posição superior esquerda do mapa, da area em que esta mapeado a area. toPos = {x=811, y=1025, z=9}, -- posição inferior direita do mapa, da area em que esta mapeado a area. } local config = { position = {x=1067, y=1066, z=9}, -- Contagem fromPosition = {x=1022, y=1024, z=9}, toPosition = {x=1139, y=1134, z=9}, id = 1498, time = 1 } local time = 300 local check = {} for _, k in ipairs(t.entrada) do local x = getTopCreature(k).uid if getPlayerLevel(cid) <= 149 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você precisa estar entre os níveis 150 á 200 para poder entrar.") return true end for _, k in ipairs(t.entrada) do local x = getTopCreature(k).uid if getPlayerLevel(cid) >= 201 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você precisa estar entre os níveis 150 á 200 para poder entrar.") return true end if getGlobalStorageValue(sto) == 123 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde até que a sala seja liberada.") return true end table.insert(check, x) end for i, tid in ipairs(check) do doTeleportThing(tid, t.saida[i], false) doSendMagicEffect(t.saida[i], 10) doTransformItem(item.uid, item.itemid == 1810 and 1810 or 1810) end for i = 1,time do formula = time - 1*i addEvent(doSendAnimatedText, i*1000, config.position, formula, TEXTCOLOR_GREY) end setGlobalStorageValue(sto, 123) local rx = getDistanceRadius(configure.fromPos, configure.toPos) addEvent(cleareArea1, config.time * 1800 * 1000, getMiddlePos(configure.fromPos, configure.toPos), rx, rx) return true end end Boa noite, Eu tenho um scripts porém ele não tá funcionando, vou explicar o que ele faz ou é para fazer. -Ao click no item que tá a actions ele vai teleportado para um lugar x. -Para poder usar a alavanca (mencionado acima) ele tem que ter level 150 a 200. -Quando o player entra na quest começa a contar um tempo em cima da alavanca, caso ele não consiga terminar ele é teleportado. -Caso ele consiga efetuar a quest ele fique com a storage (14424) por 12 horas, para poder fazer a quest novamente só quando a storage sair. -Essa quest ele pode ser feita solo ou até 5 player. (como se fosse um sistema de checagem nas position informada). OBS: Irei postar meu script que tenho, porém não tá funcionando, ao clicar na alavanca ela diz que já tem gente fazendo a quest, porém não tem. acho ? como arrumbar o error? Link para o comentário Compartilhar em outros sites More sharing options...
0 damiaotorres 0 Postado Maio 12, 2020 Autor Share Postado Maio 12, 2020 14 horas atrás, KaboFlow disse: acho ? como arrumbar o error? ??? Link para o comentário Compartilhar em outros sites More sharing options...
0 KaboFlow 54 Postado Maio 13, 2020 Share Postado Maio 13, 2020 11 horas atrás, damiaotorres disse: ??? A scripts ta funcionando? Link para o comentário Compartilhar em outros sites More sharing options...
0 damiaotorres 0 Postado Maio 13, 2020 Autor Share Postado Maio 13, 2020 6 horas atrás, KaboFlow disse: A scripts ta funcionando? Não parceiro. Link para o comentário Compartilhar em outros sites More sharing options...
0 Marshmello 270 Postado Maio 22, 2020 Share Postado Maio 22, 2020 Teste local sto = 44487 function isOnSameFloor(fromPos, toPos) return fromPos.z == toPos.z and true or false end function isEven(arg) return arg % 2 == 0 and true or false end function getMiddlePos(fromPos, toPos) if not isOnSameFloor(fromPos, toPos) then return false end local middle = {x = 0, y = 0, z = 0} middle.x = isEven(fromPos.x + toPos.x) and (fromPos.x + toPos.x)/2 or math.floor((fromPos.x + toPos.x)/2) + 1 middle.y = isEven(fromPos.y + toPos.y) and (fromPos.y + toPos.y)/2 or math.floor((fromPos.y + toPos.y)/2) + 1 middle.z = fromPos.z or toPos.z return middle end function getDistanceRadius(fromPos, toPos) if not isOnSameFloor(fromPos, toPos) then return false end local distance = getDistanceBetween(fromPos, toPos) return isEven(distance) and (distance/2) or math.floor(distance/2) + 1 end function cleareArea1(middlePos, rangex, rangey) local final = {x=1030, y=1085, z=7} -- Posição onde será teleportado quando acabar o tempo for i = -rangex, rangex do for j = -rangey, rangey do pos = {x = middlePos.x + i, y = middlePos.y + j, z = middlePos.z} creature = getTopCreature(pos).uid if isMonster(creature) then doSendMagicEffect(getThingPos(creature), 14) doRemoveCreature(creature) elseif isPlayer(creature) then doSendMagicEffect(getThingPos(creature), 10) doTeleportThing(creature, final) end end end setGlobalStorageValue(sto, -1) return true end local t = { lvl = 150, lvl2 = 201, entrada = { {x = 1067, y = 1067, z = 9}, -- pos players {x = 1067, y = 1068, z = 9}, -- pos players {x = 1067, y = 1069, z = 9}, -- pos players {x = 1067, y = 1070, z = 9}, -- pos players {x = 1067, y = 1071, z = 9}, -- pos players }, saida = { {x = 717, y = 1013, z = 9}, -- pos para onde eles irão {x = 717, y = 1013, z = 9}, -- pos para onde eles irão {x = 717, y = 1013, z = 9}, -- pos para onde eles irão {x = 717, y = 1013, z = 9}, -- pos para onde eles irão {x = 717, y = 1013, z = 9}, -- pos para onde eles irão }, } function onUse(cid, item, fromPosition, itemEx, toPosition) local configure = { fromPos = {x=702, y=988, z=9}, -- posição superior esquerda do mapa, da area em que esta mapeado a area. toPos = {x=811, y=1025, z=9}, -- posição inferior direita do mapa, da area em que esta mapeado a area. } local config = { position = {x=1067, y=1066, z=9}, -- Contagem fromPosition = {x=1022, y=1024, z=9}, toPosition = {x=1139, y=1134, z=9}, id = 1498, time = 1 } local time = 300 local check = {} for _, k in ipairs(t.entrada) do local x = getTopCreature(k).uid if getPlayerLevel(cid) <= 149 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você precisa estar entre os níveis 150 á 200 para poder entrar.") return true end for _, k in ipairs(t.entrada) do local x = getTopCreature(k).uid if getPlayerLevel(cid) >= 201 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você precisa estar entre os níveis 150 á 200 para poder entrar.") return true end if getGlobalStorageValue(sto) == 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde até que a sala seja liberada.") return true end table.insert(check, x) end for i, tid in ipairs(check) do doTeleportThing(tid, t.saida[i], false) doSendMagicEffect(t.saida[i], 10) doTransformItem(item.uid, item.itemid == 1810 and 1810 or 1810) end for i = 1,time do formula = time - 1*i addEvent(doSendAnimatedText, i*1000, config.position, formula, TEXTCOLOR_GREY) end setGlobalStorageValue(sto, 1) local rx = getDistanceRadius(configure.fromPos, configure.toPos) addEvent(cleareArea1, config.time * 1800 * 1000, getMiddlePos(configure.fromPos, configure.toPos), rx, rx) return true end end Link para o comentário Compartilhar em outros sites More sharing options...
0 damiaotorres 0 Postado Maio 23, 2020 Autor Share Postado Maio 23, 2020 (editado) 2 horas atrás, Marshmello disse: Teste local sto = 44487 function isOnSameFloor(fromPos, toPos) return fromPos.z == toPos.z and true or false end function isEven(arg) return arg % 2 == 0 and true or false end function getMiddlePos(fromPos, toPos) if not isOnSameFloor(fromPos, toPos) then return false end local middle = {x = 0, y = 0, z = 0} middle.x = isEven(fromPos.x + toPos.x) and (fromPos.x + toPos.x)/2 or math.floor((fromPos.x + toPos.x)/2) + 1 middle.y = isEven(fromPos.y + toPos.y) and (fromPos.y + toPos.y)/2 or math.floor((fromPos.y + toPos.y)/2) + 1 middle.z = fromPos.z or toPos.z return middle end function getDistanceRadius(fromPos, toPos) if not isOnSameFloor(fromPos, toPos) then return false end local distance = getDistanceBetween(fromPos, toPos) return isEven(distance) and (distance/2) or math.floor(distance/2) + 1 end function cleareArea1(middlePos, rangex, rangey) local final = {x=1030, y=1085, z=7} -- Posição onde será teleportado quando acabar o tempo for i = -rangex, rangex do for j = -rangey, rangey do pos = {x = middlePos.x + i, y = middlePos.y + j, z = middlePos.z} creature = getTopCreature(pos).uid if isMonster(creature) then doSendMagicEffect(getThingPos(creature), 14) doRemoveCreature(creature) elseif isPlayer(creature) then doSendMagicEffect(getThingPos(creature), 10) doTeleportThing(creature, final) end end end setGlobalStorageValue(sto, -1) return true end local t = { lvl = 150, lvl2 = 201, entrada = { {x = 1067, y = 1067, z = 9}, -- pos players {x = 1067, y = 1068, z = 9}, -- pos players {x = 1067, y = 1069, z = 9}, -- pos players {x = 1067, y = 1070, z = 9}, -- pos players {x = 1067, y = 1071, z = 9}, -- pos players }, saida = { {x = 717, y = 1013, z = 9}, -- pos para onde eles irão {x = 717, y = 1013, z = 9}, -- pos para onde eles irão {x = 717, y = 1013, z = 9}, -- pos para onde eles irão {x = 717, y = 1013, z = 9}, -- pos para onde eles irão {x = 717, y = 1013, z = 9}, -- pos para onde eles irão }, } function onUse(cid, item, fromPosition, itemEx, toPosition) local configure = { fromPos = {x=702, y=988, z=9}, -- posição superior esquerda do mapa, da area em que esta mapeado a area. toPos = {x=811, y=1025, z=9}, -- posição inferior direita do mapa, da area em que esta mapeado a area. } local config = { position = {x=1067, y=1066, z=9}, -- Contagem fromPosition = {x=1022, y=1024, z=9}, toPosition = {x=1139, y=1134, z=9}, id = 1498, time = 1 } local time = 300 local check = {} for _, k in ipairs(t.entrada) do local x = getTopCreature(k).uid if getPlayerLevel(cid) <= 149 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você precisa estar entre os níveis 150 á 200 para poder entrar.") return true end for _, k in ipairs(t.entrada) do local x = getTopCreature(k).uid if getPlayerLevel(cid) >= 201 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você precisa estar entre os níveis 150 á 200 para poder entrar.") return true end if getGlobalStorageValue(sto) == 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde até que a sala seja liberada.") return true end table.insert(check, x) end for i, tid in ipairs(check) do doTeleportThing(tid, t.saida[i], false) doSendMagicEffect(t.saida[i], 10) doTransformItem(item.uid, item.itemid == 1810 and 1810 or 1810) end for i = 1,time do formula = time - 1*i addEvent(doSendAnimatedText, i*1000, config.position, formula, TEXTCOLOR_GREY) end setGlobalStorageValue(sto, 1) local rx = getDistanceRadius(configure.fromPos, configure.toPos) addEvent(cleareArea1, config.time * 1800 * 1000, getMiddlePos(configure.fromPos, configure.toPos), rx, rx) return true end end Deu certo, mas apareceu esse erro na distro. E outra, se o ot cair ou fechar antes do tempo acabar da quest, ao iniciar novamente o ot e vocÊ vai tentar fazer a quest ela buga, diz que ta em uso já. Spoiler [22/05/2020 22:39:59] [Error - Action Interface] [22/05/2020 22:39:59] data/actions/scripts/one/dungeons/dungeon150-200.lua:onUse [22/05/2020 22:39:59] Description: [22/05/2020 22:39:59] (luaDoTeleportThing) Thing not found Editado Maio 23, 2020 por damiaotorres Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
damiaotorres 0
Boa noite, Eu tenho um scripts porém ele não tá funcionando, vou explicar o que ele faz ou é para fazer.
-Ao click no item que tá a actions ele vai teleportado para um lugar x.
-Para poder usar a alavanca (mencionado acima) ele tem que ter level 150 a 200.
-Quando o player entra na quest começa a contar um tempo em cima da alavanca, caso ele não consiga terminar ele é teleportado.
-Caso ele consiga efetuar a quest ele fique com a storage (14424) por 12 horas, para poder fazer a quest novamente só quando a storage sair.
-Essa quest ele pode ser feita solo ou até 5 player. (como se fosse um sistema de checagem nas position informada).
OBS: Irei postar meu script que tenho, porém não tá funcionando, ao clicar na alavanca ela diz que já tem gente fazendo a quest, porém não tem.
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados