Postado Março 15, 2017 8 anos Bom, eu tenho um globalevent por intervalos, e eu queria modificar para versão onTime, que executa o evento em determinada hora e dia... tentei mas nao consegui, alguem pode arrumar pra mim, isso ja serve para eu aprender, enfim... se puder modificar pra mim agradeço... e melhor ainda se explicar as modificações... lastman.lua Spoiler local createpos = {x=174,y=47,z=7} -- local onde, a cada 2 horas, o teleport irá aparecer local topos = {x=70,y=341,z=6} -- Onde o teleport irá levar os players local msg = "O Last man standing Event Teleport acabou de fechar! Ele irá reaparecer de novo a cada 2 horas! Todos os participantes, preparem-se para a batalha!" local timetoclose = 120 -- valor em segundos de quanto tempo o portal ficará aberto local function remove() local tp = getTileItemById(createpos,1387).uid if tp ~= 0 then doRemoveItem(tp) doBroadcastMessage(msg) end end function onThink(interval) doCreateTeleport(1387, topos, createpos) doBroadcastMessage("Last man standing event Teleport esta aberto!\nCatch o teleport vai fechar dentro de "..timetoclose.." segundos! O teleport esta localizado na sala de Eventos.") addEvent(remove,timetoclose*1000) return true end arena.lua Spoiler local t = { tmp = { {x = 67, y = 338, z = 6}, -- quina à noroeste (acima e à esquerda) da area onde os players devem estar para ingressar no evento {x = 73, y = 344, z = 6} -- quina à Sudeste (abaixo e à direita) }, arena = { {x = 46, y = 317, z = 7}, -- Quina de cima e à esquerda {x = 95, y = 365, z = 7}, -- quina de baixo e à direita {x = 70, y = 341, z = 7} -- Centro da Arena }, noPlayers = {x=160, y=54, z=7}, -- Para onde serão teleportados caso não haja campeão semChamps = {x=160, y=54, z=7}, -- Local para onde serão teleportados os 'players' caso passem os minutos sem campeão from = {x = 53, y = 324, z = 7}, -- quina de cima e à esquerda de onde os players serão transportados (escolha será aleatória) to = {x = 82, y = 351, z = 7}, -- quina de baixo e à direita de onde os players serão transportados (escolha será aleatória) minPlayers = 10, -- Número mínimo de players para iniciar o evento noPlayers = 1, -- Se houver este número de player na área o evento não começa prize = {6527} } -- prêmio que o vencedor vai receber local expRewChamps = 0 -- Coloque aqui a experiência que o campeão ganhará. Deixe zero se não quiser. local expRewPart = 0 -- Coloque aqui a experiência que todos os 'players' que participarão ganharão. Deixe zero se não quiser. local kick = 0 function onThink() 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 then break end end pos.stackpos = pos.stackpos + 1 c = getThingfromPos(pos) end end end end end if #arenaPlayers == 1 then local p = getPlayerMasterPos(arenaPlayers[1]) doTeleportThing(arenaPlayers[1], p) doSendMagicEffect(p, CONST_ME_TELEPORT) doPlayerSendTextMessage(arenaPlayers[1], MESSAGE_STATUS_CONSOLE_BLUE, "Voce ganhou este evento e recebeu este premio") doBroadcastMessage(getCreatureName(arenaPlayers[1]) .." venceu o Last Man Standing Event.") doPlayerAddItem(arenaPlayers[1], t.prize[math.random(#t.prize)], 10) if (expRewChamps > 0) then doPlayerAddExperience(arenaPlayers[1],expRewChamps) doSendMagicEffect(getPlayerPosition(arenaPlayers[1]), CONST_ME_MAGIC_RED) doSendAnimatedText(getPlayerPosition(arenaPlayers[1]), "Exp!", TEXTCOLOR_WHITE) end kick = 0 elseif #arenaPlayers > 1 then if kick == 0 then kick = os.time() else if os.time() - kick >= 840 then kick = 0 for i = 1, #arenaPlayers do doTeleportThing(arenaPlayers,t.semChamps) if (expRewPart > 0) then doPlayerAddExperience(arenaPlayers[1],expRewPart) end doPlayerSendTextMessage(arenaPlayers, MESSAGE_STATUS_WARNING, "Muito tarde, tente de novo mais tarde.") end end end elseif #arenaPlayers == 0 then kick = 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 then for i = 1, #players do local 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, "A batalha começou. Sobrevivam para a glória!") end else for i = 1, #players do doTeleportThing(players,t.noPlayers) doPlayerSendTextMessage(players, MESSAGE_STATUS_WARNING, "O evento não começou porque não haviam player suficientes!") end end end return true end 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 Março 15, 2017 8 anos Solução <globalevent name="EVENTNAME" time="16:20:00" script="SCRIPTNAME.lua" /> local cfg = { storage = 82342, createpos = {x = 174, y = 47, z = 7}, topos = {x = 70, y = 341, z = 6}, msg = "O Last man standing Event Teleport acabou de fechar! Ele irá reaparecer de novo a cada 2 horas! Todos os participantes, preparem-se para a batalha!", timetoclose = 120 } local function remove() local tp = getTileItemById(cfg.createpos, 1387).uid if tp ~= 0 then doRemoveItem(tp) doBroadcastMessage(cfg.msg) setGlobalStorageValue(cfg.storage, 0) end end function onTime(interval) if not getGlobalStorageValue(cfg.storage) == 1 then setGlobalStorageValue(cfg.storage, 1) doCreateTeleport(1387, cfg.topos, cfg.createpos) doBroadcastMessage("Last man standing event Teleport esta aberto!\nCatch o teleport vai fechar dentro de "..cfg.timetoclose.." segundos! O teleport esta localizado na sala de Eventos.") addEvent(remove, cfg.timetoclose * 1000) end return true end Editado Março 15, 2017 8 anos por x1zy (veja o histórico de edições)
Postado Março 15, 2017 8 anos Autor 30 minutos atrás, x1zy disse: <globalevent name="EVENTNAME" time="16:20:00" script="SCRIPTNAME.lua" /> local cfg = { storage = 82342, createpos = {x = 174, y = 47, z = 7}, topos = {x = 70, y = 341, z = 6}, msg = "O Last man standing Event Teleport acabou de fechar! Ele irá reaparecer de novo a cada 2 horas! Todos os participantes, preparem-se para a batalha!", timetoclose = 120 } local function remove() local tp = getTileItemById(cfg.createpos, 1387).uid if tp ~= 0 then doRemoveItem(tp) doBroadcastMessage(cfg.msg) setGlobalStorageValue(cfg.storage, 0) end end function onTime(interval) if not getGlobalStorageValue(cfg.storage) == 1 then setGlobalStorageValue(cfg.storage, 1) doCreateTeleport(1387, cfg.topos, cfg.createpos) doBroadcastMessage("Last man standing event Teleport esta aberto!\nCatch o teleport vai fechar dentro de "..cfg.timetoclose.." segundos! O teleport esta localizado na sala de Eventos.") addEvent(remove, cfg.timetoclose * 1000) end return true end Já tentei fazer isso. Dá event onthink not found 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 Março 15, 2017 8 anos eu editar o post, faz pelo onThink mesmo, com interval de 30seg. lembrando que eu não testei, posta se tiver erros no console. outra questão, não sei se você vai ter que usar os dias em Inglês ou Português. testa nos 2. local days = { ['Wednesday'] = "16:20:00", -- quarta ['Friday'] = "16:20:00" } local cfg = { storage = 82342, createpos = {x = 174, y = 47, z = 7}, topos = {x = 70, y = 341, z = 6}, msg = "O Last man standing Event Teleport acabou de fechar! Ele irá reaparecer de novo a cada 2 horas! Todos os participantes, preparem-se para a batalha!", timetoclose = 120 } local function remove() local tp = getTileItemById(cfg.createpos, 1387).uid if tp ~= 0 then doRemoveItem(tp) doBroadcastMessage(cfg.msg) setGlobalStorageValue(cfg.storage, 0) end end function onThink(interval) if not getGlobalStorageValue(cfg.storage) == 1 then getDay = days[os.date("%A")] if getDay and getDay == os.date("%H") then setGlobalStorageValue(cfg.storage, 1) doCreateTeleport(1387, cfg.topos, cfg.createpos) doBroadcastMessage("Last man standing event Teleport esta aberto!\nCatch o teleport vai fechar dentro de "..cfg.timetoclose.." segundos! O teleport esta localizado na sala de Eventos.") addEvent(remove, cfg.timetoclose * 1000) end end return true end
Postado Março 15, 2017 8 anos Autor @x1zy Obrigado!!! agora modifiquei com mais calma e funcionou o ontime! Editado Março 16, 2017 8 anos por pablobion (veja o histórico de edições) 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.
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.