Postado Maio 14, 2017 8 anos Bom pessoal estou precisando de uma script no qual 3 jogadores ficam em determinados Sqms e um puxa a alavanca e eles vão para um lugar também se for possível nesse mesmo script queria cooldown para poder outros jogadores esperarem um tempo pra puxar a alavanca novamente !! Deste já Obrigado . + REP
Postado Maio 15, 2017 8 anos procura script de anihilator, que é bem o que você pede (pelo menos a parte do teleport) existem vários no forum Scriptszinhos: Spoiler [CREATURESCRIPT] Auto TP depois de matar boss [ACTION] Clean Area [TALKACTION] !FelizAnoNovo [ACTION + MOVEMENT] Cartas ao GOD [CREATURESCRIPT] Always Emblem System [ACTION] Anihi simples [TALKACTIONS] Urinar / fazer xixi Não abandone seu tópico, quando você tiver a dúvida resolvida sozinho tente ensinar aos outros como resolve-la (você pode não ser o único com o problema) e quando ela for resolvida por outra pessoa não se esqueça de marcar como melhor resposta e deixar o gostei.
Postado Maio 15, 2017 8 anos @leozincorsair Tenta esse... Spoiler 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=1072, y=1164, z=6} -- 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 = 0, entrada = { {x = 0000, y = 0000, z = 0}, -- pos players {x = 0000, y = 0000, z = 0}, -- pos players {x = 0000, y = 0000, z = 0}, -- pos players }, saida = { {x = 0000, y = 0000, z = 0}, -- pos para onde eles irão {x = 0000, y = 0000, z = 0}, -- pos para onde eles irão {x = 0000, y = 0000, z = 0}, -- pos para onde eles irão }, monstros = { {{x = 1122, y = 1153, z = 8}, "Annihilion"}, -- defina pos dos montros e nomes {{x = 1121, y = 1151, z = 8}, "Annihilion"}, -- defina pos dos montros e nomes {{x = 1121, y = 1155, z = 8}, "Annihilion"}, -- defina pos dos montros e nomes {{x = 1128, y = 1153, z = 8}, "Annihilion"}, -- defina pos dos montros e nomes {{x = 1129, y = 1151, z = 8}, "Annihilion"}, -- defina pos dos montros e nomes {{x = 1129, y = 1155, z = 8}, "Annihilion"}, -- defina pos dos montros e nomes } } function onUse(cid, item, fromPosition, itemEx, toPosition) local configure = { fromPos = {x=1121, y=1150, z=8}, -- posição superior esquerda do mapa, da area em que esta mapeado a area. toPos = {x=1129, y=1156, z=8}, -- posição inferior direita do mapa, da area em que esta mapeado a area. boss = "Annihilion" -- Aqui você bota o nome do monstro que você quer remover } local config = { position = {x=1126, y=1152, z=7}, -- Contagem position1 = {x=1121, y=1150, z=8}, -- Contagem position2 = {x=1121, y=1156, z=8}, -- Contagem position3 = {x=1129, y=1150, z=8}, -- Contagem position4 = {x=1129, y=1156, z=8}, -- Contagem fromPosition = {x=1121, y=1150, z=8}, toPosition = {x=1129, y=1156, z=8}, id = 1498, time = 1 } local time = 120 local check = {} for _, k in ipairs(t.entrada) do local x = getTopCreature(k).uid if(x == 0 or not isCreature(x) or (isPlayer(x) and getPlayerLevel(x) < t.lvl)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você precisa de 5 jogadores para entrar na quest.") return true end if getGlobalStorageValue(sto) == 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde até que a quest seja liberada.") 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, false) doSendMagicEffect(t.saida, 10) doTransformItem(item.uid, item.itemid == ID DA ALAVANCA and ID DA ALAVANCA or ID DA ALAVANCA) end for i = 1,time do formula = time - 1*i addEvent(doSendAnimatedText, i*1000, config.position, formula, TEXTCOLOR_RED) addEvent(doSendAnimatedText, i*1000, config.position1, formula, TEXTCOLOR_RED) addEvent(doSendAnimatedText, i*1000, config.position2, formula, TEXTCOLOR_RED) addEvent(doSendAnimatedText, i*1000, config.position3, formula, TEXTCOLOR_RED) addEvent(doSendAnimatedText, i*1000, config.position4, formula, TEXTCOLOR_RED) end setGlobalStorageValue(sto, 1) local rx = getDistanceRadius(configure.fromPos, configure.toPos) addEvent(clearArea, config.time * 120 * 1000, getMiddlePos(configure.fromPos, configure.toPos), rx, rx) return trueend Esta com 2 minutos Para usar a alavanca novamente... não sei pra qual situação vc vai usar mais pode ser configurado. data/actions.xml Spoiler <action actionid="ID DA ALAVANCA" event="script" value="teste.lua"/> Editado Maio 15, 2017 8 anos por Tchuka (veja o histórico de edições)
Postado Maio 15, 2017 8 anos Autor 4 horas atrás, Tchuka disse: @leozincorsair Tenta esse... 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 clearArea(middlePos, rangex, rangey) local final = {x=1072, y=1164, z=6} -- 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 = 0, entrada = { {x = 0000, y = 0000, z = 0}, -- pos players {x = 0000, y = 0000, z = 0}, -- pos players {x = 0000, y = 0000, z = 0}, -- pos players }, saida = { {x = 0000, y = 0000, z = 0}, -- pos para onde eles irão {x = 0000, y = 0000, z = 0}, -- pos para onde eles irão {x = 0000, y = 0000, z = 0}, -- pos para onde eles irão }, monstros = { {{x = 1122, y = 1153, z = 8}, "Annihilion"}, -- defina pos dos montros e nomes {{x = 1121, y = 1151, z = 8}, "Annihilion"}, -- defina pos dos montros e nomes {{x = 1121, y = 1155, z = 8}, "Annihilion"}, -- defina pos dos montros e nomes {{x = 1128, y = 1153, z = 8}, "Annihilion"}, -- defina pos dos montros e nomes {{x = 1129, y = 1151, z = 8}, "Annihilion"}, -- defina pos dos montros e nomes {{x = 1129, y = 1155, z = 8}, "Annihilion"}, -- defina pos dos montros e nomes } } function onUse(cid, item, fromPosition, itemEx, toPosition) local configure = { fromPos = {x=1121, y=1150, z=8}, -- posição superior esquerda do mapa, da area em que esta mapeado a area. toPos = {x=1129, y=1156, z=8}, -- posição inferior direita do mapa, da area em que esta mapeado a area. boss = "Annihilion" -- Aqui você bota o nome do monstro que você quer remover } local config = { position = {x=1126, y=1152, z=7}, -- Contagem position1 = {x=1121, y=1150, z=8}, -- Contagem position2 = {x=1121, y=1156, z=8}, -- Contagem position3 = {x=1129, y=1150, z=8}, -- Contagem position4 = {x=1129, y=1156, z=8}, -- Contagem fromPosition = {x=1121, y=1150, z=8}, toPosition = {x=1129, y=1156, z=8}, id = 1498, time = 1 } local time = 120 local check = {} for _, k in ipairs(t.entrada) do local x = getTopCreature(k).uid if(x == 0 or not isCreature(x) or (isPlayer(x) and getPlayerLevel(x) < t.lvl)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Você precisa de 5 jogadores para entrar na quest.") return true end if getGlobalStorageValue(sto) == 1 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Aguarde até que a quest seja liberada.") 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, false) doSendMagicEffect(t.saida, 10) doTransformItem(item.uid, item.itemid == ID DA ALAVANCA and ID DA ALAVANCA or ID DA ALAVANCA) end for i = 1,time do formula = time - 1*i addEvent(doSendAnimatedText, i*1000, config.position, formula, TEXTCOLOR_RED) addEvent(doSendAnimatedText, i*1000, config.position1, formula, TEXTCOLOR_RED) addEvent(doSendAnimatedText, i*1000, config.position2, formula, TEXTCOLOR_RED) addEvent(doSendAnimatedText, i*1000, config.position3, formula, TEXTCOLOR_RED) addEvent(doSendAnimatedText, i*1000, config.position4, formula, TEXTCOLOR_RED) end setGlobalStorageValue(sto, 1) local rx = getDistanceRadius(configure.fromPos, configure.toPos) addEvent(clearArea, config.time * 120 * 1000, getMiddlePos(configure.fromPos, configure.toPos), rx, rx) return trueend Esta com 2 minutos Para usar a alavanca novamente... não sei pra qual situação vc vai usar mais pode ser configurado. data/actions.xml Ocultar conteúdo <action actionid="ID DA ALAVANCA" event="script" value="teste.lua"/> Amigo na parte da contagem eu não intendi pode explicar como funciona ?
Postado Maio 16, 2017 8 anos O tempo é configurado nessas parte addEvent(clearArea, config.time * 120 * 1000, getMiddlePos(configure.fromPos, configure.toPos), rx, rx) O time multiplicando nessa formula = 1*120*1000 = 2 minutos... para alterar é so mudar o 120 para os segundos que corresponde ao tempo que vc quer. No caso desse script o tempo vale pra contagem dos players depois que teleportados dentro de uma sala, e também para o cooldown, ou seja os player teleportados tem um tempo para completar o que esta por vir na sala em 2 minutos vencendo o tempo são teleportados para este lugar... function clearArea(middlePos, rangex, rangey) local final = {x=0000, y=0000, z=0} -- Posição onde será teleportado quando acabar o tempo O mesmo para a ALAVANCA quando vencer o mesmo tempo.
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.