4shredddddddddd 0 Postado Março 19, 2017 Share Postado Março 19, 2017 Bom, eu tenho esse script que é de um last man standing, porem ele é por interval... modifiquei para onTime para acontecer tal hora...porém acho que era preciso o onthink pro script ficar verificando quem é a ultima pessoa da sala determinada por {x,y,z} {x,y,z}, mas eu queria por onTime... porque onthink é muito bbagunçado, depende muito da hora que abre o servidor, acredito eu.resumindo o problema: como fazer para que o script verifique a quantidade de players da sala a todo momento e mesmo assim poder realizer o onTime para eu determinar o horario do evento?... vale lembrar que existe outro script onde cria teleport e manda para a sala... mas nao tem nada de necessario nele. Spoiler local t = { tmp = { {x = 1165, y = 1336, z = 7}, -- esquerda nort sala de espera {x = 1177, y = 1348, z = 7} -- sul direita sala de espera }, arena = { {x = 1145, y = 1278, z = 7}, -- North west Corner of Arena {x = 1197, y = 1330, z = 7}, -- South East corner of Arena {x = 1171, y = 1304, z = 7} -- Center of Arena }, from = {x = 1145, y = 1278, z = 7}, -- Top left cornor of the playground (random players teleportation) to = {x = 1197, y = 1330, z = 7}, -- Bottom right cornor of the playground (random players teleportation) minPlayers = 2, -- min players required to start the battle noPlayers = 1, -- Leave it as it is prize = {6527} -- Reward that player recives } local kick = 0 function onTime() local arenaPlayers = {} for x = t.arena[1].x, t.arena[2].x do for y = t.arena[1].y, t.arena[2].y do for z = t.arena[1].z, t.arena[2].z do local pos = {x = x, y = y, z = z} local n = getTileInfo(pos).creatures if n ~= 0 then pos.stackpos = 1 local c = getThingfromPos(pos) while c.uid ~= 0 do if c.itemid == 1 and c.type == 1 then table.insert(arenaPlayers, c.uid) if #arenaPlayers == n thenbreak end end pos.stackpos = pos.stackpos + 1 c = getThingfromPos(pos) end end end end end if #arenaPlayers == 1 thenlocal p = getPlayerMasterPos(arenaPlayers[1]) doTeleportThing(arenaPlayers[1], p) doSendMagicEffect(p, CONST_ME_TELEPORT) doPlayerSendTextMessage(arenaPlayers[1], MESSAGE_STATUS_CONSOLE_BLUE, "You have won the event and received your reward.") doBroadcastMessage(getCreatureName(arenaPlayers[1]) .." won a Last Man Standing Event.") doPlayerAddItem(arenaPlayers[1], t.prize[math.random(#t.prize)], 10)kick = 0 elseif #arenaPlayers > 1 thenif kick == 0 then kick = os.time() else if os.time() - kick >= 840 then kick = 0 for i = 1, #arenaPlayers dodoTeleportThing(arenaPlayers, {x=160, y=54, z=7}) doPlayerSendTextMessage(arenaPlayers, MESSAGE_STATUS_WARNING, "Too even, try harder next time.") end end end elseif #arenaPlayers == 0 thenkick = 0 local players = {} for x = t.tmp[1].x, t.tmp[2].x do for y = t.tmp[1].y, t.tmp[2].y do for z = t.tmp[1].z, t.tmp[2].z do local c = getTopCreature({x = x, y = y, z = z}) if c.type == 1 then table.insert(players, c.uid) end end end end if #players >= t.minPlayers thenfor i = 1, #players dolocal p = {x = math.random(t.from.x, t.to.x), y = math.random(t.from.y, t.to.y), z = math.random(t.from.z, t.to.z)} doTeleportThing(players, p) doSendMagicEffect(p, CONST_ME_TELEPORT) doPlayerSendTextMessage(players, MESSAGE_STATUS_WARNING, "The battle begins. Survive for glory!") endelse for i = 1, #players dodoTeleportThing(players, {x=160, y=54, z=7}) doPlayerSendTextMessage(players, MESSAGE_STATUS_WARNING, "The event didn't start because there isn't enough players in area!") end end end return true end Link para o comentário Compartilhar em outros sites More sharing options...
Stigal 584 Postado Novembro 29, 2017 Share Postado Novembro 29, 2017 A questão neste tópico de suporte foi encerrada por falta de resposta. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados