• TibiaFace

    Tibiaface | Una comunidad Open Tibia donde encontras : mapas, scripts, Otserver, npc y amigos etc ...

    .
    demo menumenu

    Afiliados



    Votar:

    Zombie Event

    Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje (Página 1 de 1.)

    1default Zombie Event el Vie Mar 29, 2013 3:29 pm

    Parte de la información al respecto en primer lugar,
    Cuando el evento se inicia tendrá algunos minutos a que introduzca el teleport antes de que desaparezca.
    Cuando el teleport desaparesca un zombie, incluso se generan después de 20 segundos.
    Un zombi se genera cada segundo 20 (por defecto) y que aparecerán al azar en el campo de batalla.
    Las personas que mueren en el evento serán transportados al templo.
    El ganador obtendrá algunos premios y una copa de oro con su nombre.

    Debe ser zona no-pvp más que un jugador puede llamar a algo para que otros jugadores pierden!

    Puse comentarios después de casi todo en la configuración, así que creo que no tiene que explicar nada al respecto ..
    Aquí vamos.

    Globalevents / scripts / zombieevent / globalevent.lua (La nueva carpeta existe en el caso de algunos cambios que podrían ocurrir. En realidad, no es necesario)

    Código:
    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 = 1135, y = 1077, z = 3, stackpos = 1}, -- Where the teleport will be created
        teleportToPosition = {x = 1190, y = 1076, z = 7}, -- Where the teleport will take you
        teleportId = 1387, -- Id of the teleport
        timeToStartEvent = 5, -- Minutes, after these minutes the teleport will be removed and the event will be declared started
        timeBetweenSpawns = 20, -- Seconds between each spawn of zombie
        zombieName = "event zombie", -- Name of the zombie that should be summoned
        playersNeededToStartEvent = 5, -- 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 = 1186, y = 1072, z = 7}, -- top left cornor of the playground
        toPosition = {x = 1195, y = 1081, z = 7}, -- bottom right cornor of the playground
        }

    function onTime()
        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/scripts/zombieevent/movement.lua

    Código:
    local config = {
        playerCount = 2001, -- Global storage for counting the players in the event
        maxPlayers = 15, -- 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

    Creaturescripts/scripts/zombieevent/creaturescript.lua

    Código:
    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 = {2195, 2152, 2160}, -- You will get this +  a gold goblet with your name on.
        --        {moneyId, count, using? 1 for using moneyReward, 0 for not using.}
        moneyReward = {2160, 10, 1}, -- second collumn(count) 0 if you don't want money to be used. or a stackable item you want more than 1 of.
       
        -- Should be same as in the globalevent!
        -- The zombies will spawn randomly inside this area
        fromPosition = {x = 1186, y = 1072, z = 7}, -- top left cornor of the playground
        toPosition = {x = 1195, y = 1081, 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

    Añadimos esto en Creaturescripts/scripts/login.lua

    Código:
    registerCreatureEvent(cid, "zombieevent")

    Pegamos esto en Globalevents.xml

    Código:
    <globalevent name="zombieevent" time="15:00" event="script" value="zombie event/globalevent.lua"/>

    Pegamos esto en Movements.xml

    Código:
    <movevent type="StepIn" actionid="2000" event="script" value="zombie event/movement.lua"/>

    Pegamos esto en Creaturescripts.xml

    Código:
    <event type="statschange" name="zombieevent" event="script" value="zombie event/creaturescript.lua"/>

    Y el Monster "Zoombie"
    Código:
    <?xml version="1.0" encoding="UTF-8"?>
    <monster name="Event Zombie" nameDescription="an event zombie" race="undead" experience="280" speed="100" manacost="0">
        <health now="500" max="500"/>
        <look type="311" corpse="9875"/>
        <targetchange interval="5000" chance="50"/>
        <strategy attack="100" defense="0"/>
        <flags>
            <flag summonable="0"/>
            <flag attackable="1"/>
            <flag hostile="1"/>
            <flag illusionable="0"/>
            <flag convinceable="0"/>
            <flag pushable="0"/>
            <flag canpushitems="1"/>
            <flag canpushcreatures="1"/>
            <flag targetdistance="1"/>
            <flag staticattack="90"/>
            <flag runonhealth="0"/>
        </flags>
        <attacks>
            <attack name="melee" interval="2000" min="-350" max="-350"/>
        </attacks>
        <defenses armor="15" defense="10"/>
        <immunities>
            <immunity death="1"/>
            <immunity energy="1"/>
            <immunity ice="1"/>
            <immunity earth="1"/>
            <immunity fire="1"/>
            <immunity holy="1"/>
            <immunity physical="1"/>
            <immunity lifedrain="1"/>
            <immunity paralyze="1"/>
        </immunities>
        <voices interval="5000" chance="10">
            <voice sentence="You wont last long!"/>
            <voice sentence="Mmmmh.. braains!"/>
        </voices>
        <loot>
            <item id="2148" countmax="1" chance="100000"/><!-- gold coin -->
        </loot>
    </monster>

    No tengo imagenes Sorry
    Creditos: 99% Gatupojk
    1% yo por traerlo

    [Tienes que estar registrado y conectado para ver este vínculo]

    Ver perfil de usuario

    2default Zombie Event el Vie Mar 29, 2013 3:30 pm

    Bum

    Ver perfil de usuario

    3default Re: Zombie Event el Miér Oct 05, 2016 1:38 pm

    z3oden

    avatar
    Miembro
    Miembro
    amigo donde coloco la hora de inicio del evento
    o sea si quiero que empiece a las 18:00 horas de mi pais
    o a tal hora x
    donde se coloca amigazo?

    Ver perfil de usuario

    Contenido patrocinado


    Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje (Página 1 de 1.)

    Permisos de este foro:
    No puedes responder a temas en este foro.