Ir para conteúdo

jcfd.joao

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    jcfd.joao deu reputação a Zanrix em [RPG] Curse Tibia Server - Procurando por feedback   
    Agora que o projeto está mais completo, vou começar a explicar melhor os sistemas de tempo em tempo aqui!
     
    Sobre o sistema de atributos
     
    Mudança na tela
    Antes:

    Agora:

     
    Os atributos são:
    - Strength (Força): Aumenta todo dano físico causado, tanto em ataques básicos como em magias.
    - Vitality (Vitalidade): Aumenta seus pontos de vida.
    - Intelligence (Inteligência): Aumenta todo dano mágico causado.
    - Energy (Energia): Aumenta seus pontos de mana.
    - Agility (Agilidade): Aumenta sua velocidade de ataque.
    - Luck (Sorte): Aumenta a chance de causar um ataque crítico.
     
    Algumas interações com o mapa exigem certo atributo. Alguns exemplos:
    - Existem algumas alavancas emperradas que exigem diversos níveis diferentes de força.
    - Existem livros escondidos que requerem inteligência para ler.
    - Ao procurar itens em objetos aleatórios do mapa, a sorte melhora a chance de achar algum item.
     
    Alguns itens precisam de atributos para serem equipados. Além disso, algumas magias também precisam de atributos para aprender/usar. Alguns exemplos:
    - Knight Armor exige que você tenha 15 pontos em Strength (Força) para a equipar.
    - Magic Shield (Utamo Vita) exige que você tenha 20 pontos em Energy (Energia) para poder conjura-la.
  2. Gostei
    jcfd.joao deu reputação a Zanrix em [RPG] Curse Tibia Server - Procurando por feedback   
    Fala aí pessoal!
     
    Curse Tibia Server é um servidor para amantes de RPG, de rates baixas e onde a exploração é muito bem recompensada.
    Além disso, temos como foco fazer patchs frequentemente, sempre adicionando novos conteúdos e proporcionando novos desafios aos jogadores.
     

    Informações Gerais
    - A experiência é stagiada em torno de 5x até 1.5x.
    - O mapa é uma mistura de áreas e modificações próprias + global + partes de servidores que nunca foram lançados.
    - O servidor tem base na versão 9.6, mas adicionamos algumas criaturas e alguns itens de versões posteriores.
     

    Principais Mudanças
    - Em vez de poções recuperarem vida/mana instantaneamente, elas recuperam ao longo de 3 segundos.
    - O server tem Training Monk, porém, você só pode ficar neles durante 1 hora, para regenerar esse tempo é preciso caçar bastante.
    - Andar de barco é uma tarefa um pouco mais complexa, com um custo bastante elevado e algumas passagens precisando de uma pequena quest ou alguns itens.
     

    Vocações
    - 5 novas classes, além das existentes terem sido reformuladas.
    - Uma promoção a mais para cada classe.
    - Todas classes ganharam várias magias novas.
    - Uma das classes novas é o famoso Necromancer:

     

    Atributos
    Atributos são pontos escolhidos pelo jogador para melhorar o desempenho de seus personagens e desenvolvê-los de uma maneira pessoal. Eles também servem para poder conjurar algumas magias e fazer algumas interações com o mapa (Puxar uma alavanca emperrada exige força, por exemplo).

     

    Árvore de Skills
    A árvore de skills te permite distribuir pontos para liberar novas magias e personificar ainda mais seu personagem o deixando mais versátil de acordo com sua preferência.
    - Cada classe tem dois caminhos na árvore, cada um deles é voltado para uma jogabilidade diferente.
    - Quase todas magias são liberadas pela árvore.
    Prévia do Necromancer:
    Caminho da morte

    Caminho de summons

     

    Sistema de Raridade
    Todos equipamentos tem uma pequena chance de serem dropados como um item raro, épico ou lendário.
    - Quanto melhor a qualidade do item, melhor será os bônus, porém será mais difícil de encontrá-lo.

     

     
    Existem ainda alguns outros sistemas e as telas são mais um protótipo, mas acho que da pra ter uma ideia do objetivo do servidor.
    O que acham? Jogariam?
    Gostaria muito de ouvir críticas e opiniões! (:
     
  3. Gostei
    Era pra ajudar ja vo fechar
  4. Gostei
    Pensei nisso complexo
     
    local function getPlayerKills(player)
        local killsStorage = 1000 -- StorageValue para armazenar as mortes do jogador
        return player:getStorageValue(killsStorage)
    end
    local function setPlayerKills(player, kills)
        local killsStorage = 1000 -- StorageValue para armazenar as mortes do jogador
        player:setStorageValue(killsStorage, kills)
    end
    function onGainExp(player, exp, fromPlayer)
        local maxKills = 10 -- Número máximo de kills permitidas antes de zerar a experiência
        local expStorage = 2000 -- StorageValue para armazenar a experiência do jogador
        local fragid = 3000 -- StorageValue para armazenar o contador de frags
        local timeFrag = 4000 -- StorageValue para armazenar o tempo do último frag
        local requiredFrags = 3 -- Número mínimo de frags necessários para ativar o evento
        
        -- Verifica se o jogador possui frags suficientes e se a experiência é maior que zero
        if player:getStorageValue(fragid) >= requiredFrags and exp > 0 then
            local currentExp = player:getStorageValue(expStorage)
            local currentKills = getPlayerKills(player)
            
            -- Verifica se o jogador atingiu o limite de kills
            if currentKills >= maxKills then
                return 0 -- Retorna 0 para zerar a experiência ganha
            else
                -- Atualiza o número de kills e a experiência do jogador
                setPlayerKills(player, currentKills + 1)
                player:setStorageValue(expStorage, currentExp + exp)
            end
        end
        return exp -- Retorna a experiência atualizada
    end
    function onLogin(player)
        local resetInterval = 4 * 60 * 60 -- Intervalo de reset em segundos (4 horas)
        local lastResetStorage = 3000 -- StorageValue para armazenar o último reset
        local fragid = 3000 -- StorageValue para armazenar o contador de frags
        local timeFrag = 4000 -- StorageValue para armazenar o tempo do último frag
        local timeThreshold = 2 * 60 * 60 -- Tempo em segundos para reiniciar o contador de frags
        local requiredFrags = 3 -- Número mínimo de frags necessários para ativar o evento
        
        -- Verifica se já passou o intervalo de reset desde o último login
        local lastReset = player:getStorageValue(lastResetStorage)
        local currentTime = os.time()
        if lastReset ~= nil and currentTime - lastReset >= resetInterval then
            -- Realiza o reset do número de kills e a experiência do jogador
            setPlayerKills(player, 0)
            player:setStorageValue(expStorage, 0)
            player:setStorageValue(lastResetStorage, currentTime)
        end
        
        -- Verifica se já passaram 2 horas desde o último frag
        local lastFrag = player:getStorageValue(timeFrag)
        if lastFrag ~= nil and currentTime - lastFrag >= timeThreshold then
            player:setStorageValue(fragid, 0) -- Reinicia o contador de frags
        end
        
        -- Verifica se o jogador possui frags suficientes ao fazer o login
        if player:getStorageValue(fragid) < requiredFrags then
            player:setStorageValue(fragid, 0) -- Zera o contador de frags
        end
    end
    -- Registra os eventos
    registerCreatureEvent(cid, "onGainExp")
    registerCreatureEvent(cid, "onLogin")
     
     
    <event type="gainExperience" name="onGainExp" event="script" value="scripts/gainexp.lua"/>
    <event type="login" name="onLogin" event="script" value="scripts/login.lua"/>
     
  5. Obrigado
    Vou fazer um resumo pq precisaria criar um tutorial ou post pois envolve varias modificações;
    Basicamente é necessário criar um script com a função "onGainExp", que esse script tera a condição se a xp vier de players
    nesse mesmo script setar o storage value para cada morte baseado na ID (getGuid) do player.
    dai vem a condição de controlar a quantidade de kills assim que ele ganhe exp de players (a cada ganho de xp um storage value).
    logo se acontecer de chegar o limite configurada, exp = 0

    No caso do "reset" eu peguei o proprio "autoSave" e coloquei a função em SQL para setar = 0 o storageValue que estiver no range (BEETWEEN X AND Y).
    e colocar o intervalo de 4 horas, por exemplo.
    PS¹: é necessario habilitar no config.lua "expfromplayers" e colocar um rage elevado (ex: 200) e depois no script "onGainExp" que será feitas as modificações das condições para ganhar exp.
     PS²: desisti de tentar criar com a função "onkill" pq se houvessem mais de 1 ou varios players batendo a exp era apenas para quem "ganhava a kill".

    Em breve poderei postar,

    Talvez eu poste minhas configs e modificações num server completo, caso alguém queria deixar ele online.

    Abraço!
  6. Curtir
    function onPlayerKill(player, creature, lastHit) if not creature:isPlayer() then return true end for cid, damage in pairs(creature:getDamageMap()) do local fragid = 20000000 + creature:getId() local timefrag = 30000000 + creature:getId() local participant = Player(cid) if participant and participant:isPlayer() then local difer = creature:getLevel() - player:getLevel() local difer2 = player:getLevel() - creature:getLevel() local ExpLow = math.ceil(creature:getExperience() * 0.05 / (difer2 + 1)) local ExpHigh = math.ceil(creature:getExperience() * 0.01 * ((difer * 0.5) + 1)) if creature:getLevel() <= participant:getLevel() and participant:getStorageValue(fragid) <= 3 then participant:addItem(2152, 10) --participant:addExperience(ExpLow, true) participant:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You gained ' .. ExpLow .. ' experience points.') participant:setStorageValue(fragid, participant:getStorageValue(fragid) + 1) participant:setStorageValue(timefrag, os.time() + 60) elseif participant:getStorageValue(fragid) >= 3 then participant:sendTextMessage(MESSAGE_STATUS_WARNING, 'This player cannot give experience to you.') end if difer >= 1 and participant:getStorageValue(fragid) <= 3 then participant:addItem(2152, (difer * 5) + 10) --participant:addExperience(ExpHigh, true) participant:sendTextMessage(MESSAGE_EVENT_ADVANCE, 'You gained ' .. ExpHigh .. ' experience points.') participant:setStorageValue(fragid, participant:getStorageValue(fragid)) participant:setStorageValue(timefrag, participant:getStorageValue(timefrag)) elseif participant:getStorageValue(fragid) >= 3 then player:sendTextMessage(MESSAGE_STATUS_WARNING, 'This player cannot give experience to you.') end end end return true end function registerPlayerOnKill() addEvent(onPlayerKill) end registerPlayerOnKill() testa ai e me fala aqui se deu erro no console
  7. Curtir
    jcfd.joao deu reputação a doda4ever em Procuro Mapper Empenhado   
    Estou com um servidor 8.60 em estágio avançando e preciso da parceria de alguém que gosta de editar mapa.

    Requisitos do Mapper:
    Gostar de editar, criar áreas novas ou editar as baseadas no global.
    Ter disponibilidade de pelo menos 2, 3 horas por dia pra se dedicado ao desenvolvimento.
    Saber administrar um servidor, conversar com os jogadores, ouvir feedback, etc.

Informação Importante

Confirmação de Termo