Ir para conteúdo

Featured Replies

Postado

Estou com um problema no Event Zombie, pra começa não da nenhum erro nem nada, o que esta acontecendo é que o Teleport que abre para ir para Zombie Event, ele não fecha ae quando os players morre eles acaba voltando porque o teleport não fecha.

Aparece a mensagem na tela que o teleport sumiu e que o evento vai começa, mais o o evento começa e o teleport não some, alguem me ajuda?

Vou ja adiantando aqui os meus scripts, vou postar so os .lua, acho que são os necessarios, Obrigado, Rep + !

 

creaturescripts

local config = {
        playerCount = 2001, -- Global storage for counting the players left/entered in the event
        
        goblet = 5805, -- id of the gold goblet you'll get when finishing the event.
        rewards = {8857}, -- You will get this +  a gold goblet with your name on.
        --              {moneyId, count, using? 1 for using moneyReward, 0 for not using.}
        moneyReward = {2160, 100, 3},
        
        -- Should be same as in the globalevent!
        -- The zombies will spawn randomly inside this area
        fromPosition = {x = 806, y = 38, z = 7}, -- top left cornor of the playground
        toPosition = {x = 868, y = 85, z = 7}, -- bottom right cornor of the playground
        }
 
function onStatsChange(cid, attacker, type, combat, value)
        if isPlayer(cid) and isMonster(attacker) then
                if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then
                        if getGlobalStorageValue(config.playerCount) >= 2 then
                                doBroadcastMessage(getPlayerName(cid) .. " have been eated by Zombies!", MESSAGE_STATUS_CONSOLE_RED)
                                local corpse = doCreateItem(3058, 1, getPlayerPosition(cid))
                                doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".")
                                doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
                                doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)
                                doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)
                                setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)-1)
                        elseif getGlobalStorageValue(config.playerCount) == 1 then
                                if isInArea(getPlayerPosition(cid), config.fromPosition, config.toPosition) then
                                        doBroadcastMessage(getPlayerName(cid) .. " won the Zombie event! Congratulations!", MESSAGE_STATUS_WARNING)
                                        local goblet = doPlayerAddItem(cid, config.goblet, 1)
                                        doItemSetAttribute(goblet, "description", "Awarded to " .. getPlayerName(cid) .. " for winning the Zombie event.")
                                        local corpse = doCreateItem(3058, 1, getPlayerPosition(cid))
                                        doItemSetAttribute(corpse, "description", "You recognize " .. getCreatureName(cid) .. ". He was killed by "..(isMonster(attacker) and "a "..string.lower(getCreatureName(attacker)) or isCreature(attacker) and getCreatureName(attacker) or "a field item")..".")
                                        doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
                                        doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)
                                        doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)
                                        for _,items in ipairs(config.rewards) do
                                                doPlayerAddItem(cid, items, 1)
                                        end
                                        if config.moneyReward[3] == 1 then
                                                doPlayerAddItem(cid, config.moneyReward[1], config.moneyReward[2])
                                        end
                                end
                                                
                                for x = config.fromPosition.x, config.toPosition.x do
                                        for y = config.fromPosition.y, config.toPosition.y do
                                                for z = config.fromPosition.z, config.toPosition.z do
                                                        areapos = {x = x, y = y, z = z, stackpos = 253}
                                                        getMonsters = getThingfromPos(areapos)
                                                        if isMonster(getMonsters.uid) then
                                                                doRemoveCreature(getMonsters.uid)
                                                        end
                                                end
                                        end
                                end
                        end
                        return false
                end
        end
return true
end

 

globalevents

local config = {
        playerCount = 2001, -- Global storage for counting the players left/entered in the event
        zombieCount = 2002, -- Global storage for counting the zombies in the event
        teleportActionId = 2000, -- Action id of the teleport needed for the movement script
        teleportPosition = {x = 152, y = 50, z = 7, stackpos = 1}, -- Where the teleport will be created
        teleportToPosition = {x = 838, y = 61, z = 7}, -- Where the teleport will take you
        teleportId = 1387, -- Id of the teleport
        timeToStartEvent = 1, -- Minutes, after these minutes the teleport will be removed and the event will be declared started
        timeBetweenSpawns = 10, -- Seconds between each spawn of zombie
        zombieName = "event zombie", -- Name of the zombie that should be summoned
        playersNeededToStartEvent = 3, -- Players needed before the zombies can spawn.
        
        -- Should be the same as in the creaturescript!
        -- The zombies will spawn randomly inside this area
fromPosition = {x = 806, y = 38, z = 7}, -- top left cornor of the playground
        toPosition = {x = 868, y = 85, z = 7}, -- bottom right cornor of the playground
        }
 
function onTimer()
        local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportPosition)
        doItemSetAttribute(tp, "aid", config.teleportActionId)
        doBroadcastMessage("Zombie event starting in " .. config.timeToStartEvent .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING)
        setGlobalStorageValue(config.playerCount, 0)
        setGlobalStorageValue(config.zombieCount, 0)
        addEvent(startEvent, config.timeToStartEvent * 1000 * 60)
        print(getGlobalStorageValue(2001))
end
 
function startEvent()
        local get = getThingfromPos(config.teleportPosition)
        if get.itemid == config.teleportId then
                doRemoveItem(get.uid, 1)
        end
        
        local fromp, top = config.fromPosition, config.toPosition
 
        if getGlobalStorageValue(config.playerCount) >= config.playersNeededToStartEvent then
                addEvent(spawnZombie, config.timeBetweenSpawns * 1000)
                doBroadcastMessage("Good luck in the zombie event people! The teleport has closed!", MESSAGE_STATUS_WARNING)
                
                for x = fromp.x, top.x do
                        for y = fromp.y, top.y do
                                for z = fromp.z, top.z do
                                        areapos = {x = x, y = y, z = z, stackpos = 253}
                                        getPlayers = getThingfromPos(areapos)
                                        if isPlayer(getPlayers.uid) then
                                                doPlayerSendTextMessage(getPlayers.uid, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. config.timeBetweenSpawns .. " seconds! Good luck!")
                                        end
                                end
                        end
                end
        else
                doBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. config.playersNeededToStartEvent .. " players is needed!", MESSAGE_STATUS_WARNING)
                for x = fromp.x, top.x do
                        for y = fromp.y, top.y do
                                for z = fromp.z, top.z do
                                        areapos = {x = x, y = y, z = z, stackpos = 253}
                                        getPlayers = getThingfromPos(areapos)
                                        if isPlayer(getPlayers.uid) then
                                                doTeleportThing(getPlayers.uid, getTownTemplePosition(getPlayerTown(getPlayers.uid)), false)
                                                doSendMagicEffect(getPlayerPosition(getPlayers.uid), CONST_ME_TELEPORT)
                                        end
                                end
                        end
                end
        end
end
 
function spawnZombie()
        if getGlobalStorageValue(config.playerCount) >= 2 then
                pos = {x = math.random(config.fromPosition.x, config.toPosition.x), y = math.random(config.fromPosition.y, config.toPosition.y), z = math.random(config.fromPosition.z, config.toPosition.z)}
                doSummonCreature(config.zombieName, pos)
                doSendMagicEffect(pos, CONST_ME_MORTAREA)
                setGlobalStorageValue(config.zombieCount, getGlobalStorageValue(config.zombieCount)+1)
                doBroadcastMessage("A zombie has spawned! There is currently " .. getGlobalStorageValue(config.zombieCount) .. " zombies in the zombie event!", MESSAGE_STATUS_CONSOLE_RED)
                addEvent(spawnZombie, config.timeBetweenSpawns * 1000)
        end
end

 

movements

local config = {
        playerCount = 2001, -- Global storage for counting the players in the event
        maxPlayers = 20, -- Max players who can participate
        
        }
        
function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor)
        if getGlobalStorageValue(config.playerCount) < config.maxPlayers then
                setGlobalStorageValue(config.playerCount, getGlobalStorageValue(config.playerCount)+1)
                if getGlobalStorageValue(config.playerCount) == config.maxPlayers then
                        doBroadcastMessage("The Zombie event is now full [" .. getGlobalStorageValue(config.playerCount) .. " players]! The event will soon start.")
                else    
                        doBroadcastMessage(getPlayerName(cid) .. " entered the Zombie event! Currently " .. getGlobalStorageValue(config.playerCount) .. " players have joined!", MESSAGE_STATUS_CONSOLE_RED)
                end     
        else
                addEvent(tpBack, 1000, cid, fromPosition)
                doPlayerSendCancel(cid, "The event is full. There is already " .. config.maxPlayers .. " players participating in the quest.")
                return false
        end
        print(getStorage(config.playerCount) .. " Players in the zombie event.")
        return true
end
 
function tpBack(cid, fromPosition)
        doTeleportThing(cid, fromPosition, true)
        doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)
end

 

 

 

                                                           

55f6tc.gif                     

  • Respostas 11
  • Visualizações 1.7k
  • Created
  • Última resposta

Top Posters In This Topic

Postado

globalevents

local config = {
        playerCount = 2001, -- Global storage for counting the players left/entered in the event
        zombieCount = 2002, -- Global storage for counting the zombies in the event
        teleportPosition = {x = 152, y = 50, z = 7, stackpos = 1}, -- Where the teleport will be created
        teleportToPosition = {x = 838, y = 61, z = 7}, -- Where the teleport will take you
        teleportId = 1387, -- Id of the teleport
        timeToStartEvent = 1, -- Minutes, after these minutes the teleport will be removed and the event will be declared started
        timeBetweenSpawns = 10, -- Seconds between each spawn of zombie
        zombieName = "event zombie", -- Name of the zombie that should be summoned
        playersNeededToStartEvent = 3, -- Players needed before the zombies can spawn.
        
        -- Should be the same as in the creaturescript!
        -- The zombies will spawn randomly inside this area
fromPosition = {x = 806, y = 38, z = 7}, -- top left cornor of the playground
        toPosition = {x = 868, y = 85, z = 7}, -- bottom right cornor of the playground
        }


function onTimer()
        local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportPosition)
        doBroadcastMessage("Zombie event starting in " .. config.timeToStartEvent .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING)
        setGlobalStorageValue(config.playerCount, 0)
        setGlobalStorageValue(config.zombieCount, 0)
        addEvent(startEvent, config.timeToStartEvent * 1000 * 60)
        print(getGlobalStorageValue(2001))
end


function startEvent()
        local get = getThingfromPos(config.teleportPosition)
        if get.itemid == config.teleportId then
                doRemoveItem(get.uid, 1)
        end
        
        local fromp, top = config.fromPosition, config.toPosition


        if getGlobalStorageValue(config.playerCount) >= config.playersNeededToStartEvent then
                addEvent(spawnZombie, config.timeBetweenSpawns * 1000)
                doBroadcastMessage("Good luck in the zombie event people! The teleport has closed!", MESSAGE_STATUS_WARNING)
                
                for x = fromp.x, top.x do
                        for y = fromp.y, top.y do
                                for z = fromp.z, top.z do
                                        areapos = {x = x, y = y, z = z, stackpos = 253}
                                        getPlayers = getThingfromPos(areapos)
                                        if isPlayer(getPlayers.uid) then
                                                doPlayerSendTextMessage(getPlayers.uid, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. config.timeBetweenSpawns .. " seconds! Good luck!")
                                        end
                                end
                        end
                end
        else
                doBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. config.playersNeededToStartEvent .. " players is needed!", MESSAGE_STATUS_WARNING)
                for x = fromp.x, top.x do
                        for y = fromp.y, top.y do
                                for z = fromp.z, top.z do
                                        areapos = {x = x, y = y, z = z, stackpos = 253}
                                        getPlayers = getThingfromPos(areapos)
                                        if isPlayer(getPlayers.uid) then
                                                doTeleportThing(getPlayers.uid, getTownTemplePosition(getPlayerTown(getPlayers.uid)), false)
                                                doSendMagicEffect(getPlayerPosition(getPlayers.uid), CONST_ME_TELEPORT)
                                        end
                                end
                        end
                end
        end
end


function spawnZombie()
        if getGlobalStorageValue(config.playerCount) >= 2 then
                pos = {x = math.random(config.fromPosition.x, config.toPosition.x), y = math.random(config.fromPosition.y, config.toPosition.y), z = math.random(config.fromPosition.z, config.toPosition.z)}
                doSummonCreature(config.zombieName, pos)
                doSendMagicEffect(pos, CONST_ME_MORTAREA)
                setGlobalStorageValue(config.zombieCount, getGlobalStorageValue(config.zombieCount)+1)
                doBroadcastMessage("A zombie has spawned! There is currently " .. getGlobalStorageValue(config.zombieCount) .. " zombies in the zombie event!", MESSAGE_STATUS_CONSOLE_RED)
                addEvent(spawnZombie, config.timeBetweenSpawns * 1000)
        end
end

não fiz nenhuma alteração drástica e nem testei mas não tem motivo para não funcionar. 

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Postado
  • Autor

 

globalevents

local config = {
        playerCount = 2001, -- Global storage for counting the players left/entered in the event
        zombieCount = 2002, -- Global storage for counting the zombies in the event
        teleportPosition = {x = 152, y = 50, z = 7, stackpos = 1}, -- Where the teleport will be created
        teleportToPosition = {x = 838, y = 61, z = 7}, -- Where the teleport will take you
        teleportId = 1387, -- Id of the teleport
        timeToStartEvent = 1, -- Minutes, after these minutes the teleport will be removed and the event will be declared started
        timeBetweenSpawns = 10, -- Seconds between each spawn of zombie
        zombieName = "event zombie", -- Name of the zombie that should be summoned
        playersNeededToStartEvent = 3, -- Players needed before the zombies can spawn.
        
        -- Should be the same as in the creaturescript!
        -- The zombies will spawn randomly inside this area
fromPosition = {x = 806, y = 38, z = 7}, -- top left cornor of the playground
        toPosition = {x = 868, y = 85, z = 7}, -- bottom right cornor of the playground
        }


function onTimer()
        local tp = doCreateTeleport(config.teleportId, config.teleportToPosition, config.teleportPosition)
        doBroadcastMessage("Zombie event starting in " .. config.timeToStartEvent .. " minutes! The teleport will be closed when the event start!", MESSAGE_STATUS_WARNING)
        setGlobalStorageValue(config.playerCount, 0)
        setGlobalStorageValue(config.zombieCount, 0)
        addEvent(startEvent, config.timeToStartEvent * 1000 * 60)
        print(getGlobalStorageValue(2001))
end


function startEvent()
        local get = getThingfromPos(config.teleportPosition)
        if get.itemid == config.teleportId then
                doRemoveItem(get.uid, 1)
        end
        
        local fromp, top = config.fromPosition, config.toPosition


        if getGlobalStorageValue(config.playerCount) >= config.playersNeededToStartEvent then
                addEvent(spawnZombie, config.timeBetweenSpawns * 1000)
                doBroadcastMessage("Good luck in the zombie event people! The teleport has closed!", MESSAGE_STATUS_WARNING)
                
                for x = fromp.x, top.x do
                        for y = fromp.y, top.y do
                                for z = fromp.z, top.z do
                                        areapos = {x = x, y = y, z = z, stackpos = 253}
                                        getPlayers = getThingfromPos(areapos)
                                        if isPlayer(getPlayers.uid) then
                                                doPlayerSendTextMessage(getPlayers.uid, MESSAGE_EVENT_ADVANCE, "The first zombie will spawn in " .. config.timeBetweenSpawns .. " seconds! Good luck!")
                                        end
                                end
                        end
                end
        else
                doBroadcastMessage("The Zombie event could not start because of to few players participating.\n At least " .. config.playersNeededToStartEvent .. " players is needed!", MESSAGE_STATUS_WARNING)
                for x = fromp.x, top.x do
                        for y = fromp.y, top.y do
                                for z = fromp.z, top.z do
                                        areapos = {x = x, y = y, z = z, stackpos = 253}
                                        getPlayers = getThingfromPos(areapos)
                                        if isPlayer(getPlayers.uid) then
                                                doTeleportThing(getPlayers.uid, getTownTemplePosition(getPlayerTown(getPlayers.uid)), false)
                                                doSendMagicEffect(getPlayerPosition(getPlayers.uid), CONST_ME_TELEPORT)
                                        end
                                end
                        end
                end
        end
end


function spawnZombie()
        if getGlobalStorageValue(config.playerCount) >= 2 then
                pos = {x = math.random(config.fromPosition.x, config.toPosition.x), y = math.random(config.fromPosition.y, config.toPosition.y), z = math.random(config.fromPosition.z, config.toPosition.z)}
                doSummonCreature(config.zombieName, pos)
                doSendMagicEffect(pos, CONST_ME_MORTAREA)
                setGlobalStorageValue(config.zombieCount, getGlobalStorageValue(config.zombieCount)+1)
                doBroadcastMessage("A zombie has spawned! There is currently " .. getGlobalStorageValue(config.zombieCount) .. " zombies in the zombie event!", MESSAGE_STATUS_CONSOLE_RED)
                addEvent(spawnZombie, config.timeBetweenSpawns * 1000)
        end
end

não fiz nenhuma alteração drástica e nem testei mas não tem motivo para não funcionar. 

 

Ja que voce não fez nenhuma alteração devo testar com o que voce colocou ai?

Obrigado, eu uso o Distro 3.6.0 e eu peguei este script de um Outros Ots que eu tenho aqui, e no qual eu peguei o Distro é 4.0 e no que eu coloquei aqui agora é 3.6.0 sera que é por esse motivo que não remove o tele?

Uncica coisa que não esta fazendo é remover o teleport depois que o evento começa.

 

                                                           

55f6tc.gif                     

Postado

eu tirei a parte de colocar actionid no teleporte porque pode ser isso o problema.. testou dps que eu mudei?

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Postado
  • Autor

eu tirei a parte de colocar actionid no teleporte porque pode ser isso o problema.. testou dps que eu mudei?

Teste sim, ele cria o teleport mais não fecha  :fuu:  porque que ele cria mais não pode fechar um simples teleport?

Alguem pode me ajudar por favor, Obrigado REP+.

 

                                                           

55f6tc.gif                     

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo