Ir para conteúdo

Featured Replies

Postado
  • Autor

Ta assim na minha lib:

 

 

},

    toPos = {x = 1885, y = 1707, z = 10},               --Coordenadas da posição superior esquerda da arena.
    fromPos = {x = 1945, y = 1775, z = 10},             --Coordenadas da posição inferior direita da arena.
    delay = 10,                                  --Segundos para o boss aparecer.
level = 100,
}

Eu te Ajudei? Então solta aquele REP+ !!

Meus Tutoriais [Tutorial] Bug "Temple position is wrong" (MySql)

Outros:    [Meu Show OFF | Mapa próprio 8.6] 

  • Respostas 99
  • Visualizações 3.7k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • OK. Eu fiz bem rapidamente o sistema aqui, talvez haja algum(s) erro(s). data/lib, crie um arquivo com extensão .lua e coloque o seguinte conteúdo: ARENA = {     WAVES = {         [1] = {"monster_n

  • Ah, isso explica. Você configurou errado. toPos nunca terá valores menores que fromPos.  Provavelmente você inverteu fromPos e toPos. E também deve ser por isso que algumas funções que usei anteriorm

  • OK. Refiz a parte que checa se a wave foi ou não completa. Tanto a maneira antiga quanto a nova funcionaram aqui. Espero que o mesmo aconteça no seu servidor. Troque sua lib por essa: ARENA = {    

Postado

Ah, isso explica. Você configurou errado. toPos nunca terá valores menores que fromPos. 

Provavelmente você inverteu fromPos e toPos. E também deve ser por isso que algumas funções que usei anteriormente não funcionaram com você.

 

@glacialot

Pronto, terminei o que você pediu.

Deixei 3 waves configuradas como exemplo. Para adicionar mais waves, siga o modelo das já existentes.

Substitua sua lib por essa:

ARENA = {
    WAVES = {
        [1] = {
            monsters = {
                {"monster_name", {x = x, y = y, z = z}},     --{nome_do_monstro, {posição_que_vai_nascer}},
                {"monster_name", {x = x, y = y, z = z}},
                {"monster_name", {x = x, y = y, z = z}},
            },
            prize = {
                cash = 500000,                              --Coloque false se não for receber cash nessa wave.
                items = false,                              --Coloque false se não for receber item(s) nessa wave.
            },
        },
        [2] = {
            monsters = {
                {"monster_name", {x = x, y = y, z = z}},     --{nome_do_monstro, {posição_que_vai_nascer}},
                {"monster_name", {x = x, y = y, z = z}},
                {"monster_name", {x = x, y = y, z = z}},
            },
            prize = {
                cash = 1000000,                           
                items = false,                               
            },
        },
        [3] = {
            monsters = {
                {"monster_name", {x = x, y = y, z = z}},     --{nome_do_monstro, {posição_que_vai_nascer}},
                {"monster_name", {x = x, y = y, z = z}},
                {"monster_name", {x = x, y = y, z = z}},
            },
            prize = {
                cash = 1000000,                             
                items = {
                    {item_id, count},                        --{ID do item, quantidade},                  
                    {item_id, count},
                },
            },
        },
    },
    NPC = {
        price = 2000,                                --Preço para entrar na arena.
        position = {x = x, y = y, z = z},            --Para onde o jogador será teleportado ao falar com o NPC.
    },
    TELEPORT = {
        tpId = 1387,                                 --ID do teleporte.
        tpPos = {x = x, y = y, z = z},         --Onde o teleporte será criado, ao matar o último boss.
        tpToPos = {x = x, y = y, z = z},       --Para onde o teleporte levará.
        aid = 1307,
    },
    STORAGES = {
        storage = 90190,
        wave_sto = 90191,
    },
    toPos = {x = x, y = y, z = z},               --Coordenadas da posição superior esquerda da arena.
    fromPos = {x = x, y = y, z = z},             --Coordenadas da posição inferior direita da arena.
    delay = 15,                                  --Segundos para o boss aparecer.
    level = 100,                                 --Level mínimo.
}
function doWave(cid, wave)
    if not isPlayer(cid) then
        return true
    elseif not ARENA.WAVES[wave] then
        return true
    elseif getPlayerStorageValue(cid, ARENA.STORAGES.storage) > -1 then
        return true
    end
    local monster = ARENA.WAVES[wave]
    local m = monster.monsters
    doPlayerSendTextMessage(cid, 27, "In "..ARENA.delay.." seconds, monsters will spawn. [Wave: "..wave.."]")
    addEvent(function()
        for i = 1, #m do
            doCreateMonster(m[i][1], m[i][2])
        end
    end, ARENA.delay * 1000)
end
function clearArena()
    for x = ARENA.fromPos.x, ARENA.toPos.x do
        for y = ARENA.fromPos.y, ARENA.toPos.y do
            for z = ARENA.fromPos.z, ARENA.toPos.z do
                local area = {x = x, y = y, z = z}
                local creature = getTopCreature(area).uid
                if isCreature(creature) then   
                    doRemoveCreature(creature)
                end
            end
        end
    end
end
function newWave()
    for x = ARENA.fromPos.x, ARENA.toPos.x do
        for y = ARENA.fromPos.y, ARENA.toPos.y do
            for z = ARENA.fromPos.z, ARENA.toPos.z do
                local area = {x = x, y = y, z = z}
                local creature = getTopCreature(area).uid
                if isCreature(creature) and isMonster(creature) then   
                    return false
                end
            end
        end
    end
    return true
end
Substitua seu creaturescript (killboss.lua) por esse:
function onKill(cid, target)
    if isPlayer(cid) and getPlayerStorageValue(cid, ARENA.STORAGES.wave_sto) > -1 then
        local new_wave = getPlayerStorageValue(cid, ARENA.STORAGES.wave_sto) + 1
        if newWave() then
            local reward = ARENA.WAVES[getPlayerStorageValue(cid, ARENA.STORAGES.wave_sto)].prize
            local str = "You won:"
            if reward.cash then
                doPlayerAddMoney(cid, reward.cash)
                str = str.."\n"..reward.cash.."$"
            end
            if reward.items then
                for i = 1, #reward.items do
                    local item = reward.items[i][1]
                    local count = reward.items[i][2]
                    if not isItemStackable(item) and count > 1 then
                        for i = 1, count do
                            doPlayerAddItem(cid, item, 1)
                        end
                    else
                        doPlayerAddItem(cid, item, count)
                    end
                    str = str.."\nItem - "..count.."x "..getItemNameById(item)
                end
            end
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, str)
            if ARENA.WAVES[new_wave] then
                setPlayerStorageValue(cid, ARENA.STORAGES.wave_sto, new_wave)
                doWave(cid, new_wave)
            else
                local tp = doCreateTeleport(ARENA.TELEPORT.tpId, ARENA.TELEPORT.tpToPos, ARENA.TELEPORT.tpPos)
                doItemSetAttribute(tp, "aid", ARENA.TELEPORT.aid)
            end
        end
    end
    return true
end
function onLogout(cid)
    if getTileInfo(getThingPos(cid)).protection and getPlayerStorageValue(cid, ARENA.STORAGES.wave_sto) > -1 then
        return setPlayerStorageValue(cid, ARENA.STORAGES.wave_sto, -1) 
    end
    if getPlayerStorageValue(cid, ARENA.STORAGES.wave_sto) > -1 then
        doPlayerSendCancel(cid, "You can't logout now.") 
        return false
    end
    return true
end
function onPrepareDeath(cid)
    if getPlayerStorageValue(cid, ARENA.STORAGES.wave_sto) > -1  then
        setPlayerStorageValue(cid, ARENA.STORAGES.wave_sto, -1)
        setGlobalStorageValue(1000, -1)
        clearArena()
    end
    return true
end

Novamente: o sistema de ranking se encontra na página 4.

Editado por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

Postado
  • Autor

@zipter98

 

Desculpa minha noobise nesse erro >.<. Agora que inverti os Pos. A Arena deu Reset :)!. Porém, assim que o player morre. Aparece esse erro na Distro:

 

 

5b4c5z.png

 

E o engraçado, que assim que ele morre. Não aparece aquela janelinha "you are dead", ja vai direto para o painel da conta. E assim que entro nele, ele aparece no mesmo local que morreu (na arena,encima do corpo morto dele), não perdeu nenhuma xp nem nada. e ainda tá com batlle ligado, mesmo depois de ter morrido. Como se não tivesse morrido mesmo.

Eu te Ajudei? Então solta aquele REP+ !!

Meus Tutoriais [Tutorial] Bug "Temple position is wrong" (MySql)

Outros:    [Meu Show OFF | Mapa próprio 8.6] 

Postado

Tira isso do creaturescript:

if getTileInfo(getThingPos(cid)).protection and getPlayerStorageValue(cid, ARENA.STORAGES.wave_sto) > -1 then
        return setPlayerStorageValue(cid, ARENA.STORAGES.wave_sto, -1)
    end

Essa proteção já é inútil mesmo.

E sem problemas sobre ter errado a fromPos e toPos. No começo elas confundem mesmo xD

Editado por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

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.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo