Postado Maio 17, 2020 5 anos Bom Dia, tenho um script que ela é de uma quest que 1 player pode fazer, mas queria que o script também checasse se há gente nos 5 tiles, explicar melhor. São 5 tiles, se tiver gente só nos 2 primeiros ela teleporta, se tiver gente nos 5 ela teleporta, se tiver só em 1 ela teleporta. Se possivel gostaria que removesse esse item que precisa para fazer a quest. 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 clearArea(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, entrada = { {x = 1067, y = 1067, z = 9}, -- pos players }, saida = { {x = 717, y = 1013, z = 9}, -- pos para onde eles irão }, monstros = { {{x = 718, y = 1009, z = 9}, "Wizard"}, -- defina pos dos montros e nomes } } 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. boss = "Wizard" -- Aqui você bota o nome do monstro que você quer remover } local config = { hnitem = "Você precisa de 1 Crystal coin para entrar.", --Mensagem que o player receberá caso não tenha o item. hitem = "Você entrou na Dungeon Quest.", --Mensagem que o player receberá caso tenha o item. item = 2160, --ID do item. qnt = 1, --Quantidade. position = {x=1067, y=1066, z=9}, -- Contagem fromPosition = {x=1065, y=1066, z=9}, toPosition = {x=1085, y=1075, z=9}, id = 1498, time = 1 } local time = 1200 local check = {} for _, k in ipairs(t.entrada) do local x = getTopCreature(k).uid if(x == 0 or not isPlayer(x)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você não tem o requisito mínimo.") return true end if getPlayerLevel(cid) <= 149 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você precisa estar level 150+.") return true end if getGlobalStorageValue(sto) == 123 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde até que a Dungeon seja liberada.") return true end if getPlayerItemCount (cid, config.item) >= config.qnt then doPlayerRemoveItem(cid, config.item, config.qnt) doPlayerSendTextMessage(cid, 19, config.hitem) -- Caso não queira que receba mensagem, apague essa linha. else doPlayerSendTextMessage(cid, 19, config.hnitem) -- Caso não queira que receba mensagem, apague essa linha. return true end table.insert(check, x) end for _, summon in pairs(t.monstros) do local creature = getTopCreature(summon[1]).uid doCreateMonster(summon[2], summon[1]) 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_RED) end setGlobalStorageValue(sto, 123) local rx = getDistanceRadius(configure.fromPos, configure.toPos) addEvent(clearArea, config.time * 300 * 1000, getMiddlePos(configure.fromPos, configure.toPos), rx, rx) return true end
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.