Histórico de Curtidas
- 		
			
				 jcfd.joao deu reputação a Zanrix em [RPG] Curse Tibia Server - Procurando por feedbackAgora que o projeto está mais completo, vou começar a explicar melhor os sistemas de tempo em tempo aqui! jcfd.joao deu reputação a Zanrix em [RPG] Curse Tibia Server - Procurando por feedbackAgora 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.
 
- 		
			
				 jcfd.joao deu reputação a Zanrix em [RPG] Curse Tibia Server - Procurando por feedbackFala aí pessoal! jcfd.joao deu reputação a Zanrix em [RPG] Curse Tibia Server - Procurando por feedbackFala 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! (:
 
 
- 		
			
				 jcfd.joao deu reputação a L3K0T em (Resolvido)Controle de kills e remoção de kills por tempo (script quase pronto)Era pra ajudar ja vo fechar jcfd.joao deu reputação a L3K0T em (Resolvido)Controle de kills e remoção de kills por tempo (script quase pronto)Era pra ajudar ja vo fechar
 
- 		
			
				 jcfd.joao deu reputação a L3K0T em (Resolvido)Controle de kills e remoção de kills por tempo (script quase pronto)Pensei nisso complexo jcfd.joao deu reputação a L3K0T em (Resolvido)Controle de kills e remoção de kills por tempo (script quase pronto)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"/>
 
 
- 		
			
				 jcfd.joao recebeu reputação de L3K0T em (Resolvido)Controle de kills e remoção de kills por tempo (script quase pronto)Vou fazer um resumo pq precisaria criar um tutorial ou post pois envolve varias modificações; jcfd.joao recebeu reputação de L3K0T em (Resolvido)Controle de kills e remoção de kills por tempo (script quase pronto)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!
 
- 		
			
				 jcfd.joao deu reputação a Mateus Robeerto em (Resolvido)Controle de kills e remoção de kills por tempo (script quase pronto)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 jcfd.joao deu reputação a Mateus Robeerto em (Resolvido)Controle de kills e remoção de kills por tempo (script quase pronto)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
 
- 		
			
				 jcfd.joao deu reputação a doda4ever em Procuro Mapper EmpenhadoEstou com um servidor 8.60 em estágio avançando e preciso da parceria de alguém que gosta de editar mapa. jcfd.joao deu reputação a doda4ever em Procuro Mapper EmpenhadoEstou 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.
 
 
     
     
     
     
			
				 
				