Ir para conteúdo
  • 0

Points System Level com npc


soltore

Pergunta

Fala Galerinha estou precisando de um sitemas onde o player ao upar ganha X pontos e estes pontos ele pode trocar por LIFE ou MANA em um npc

 

 

estilo TIBIA GTA

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Bom fiz o seguinte Criei um char lvl 1

upei ate o lvl 2

- ganhei 5 pontos e fui trocar

# trocou normalmente

 

entao upei o lvl 3 e o lvl 4 para testar se acumulou

 

fui trocar os pontos so troco 5 e depois falou q nao tinha mais pontos

 

segue o dialogo do npc

16:19 Dumbledore: Ola Mago. Troco seus pontos por life e mana diga points.
16:19 Mago [1]: points
16:19 Dumbledore: Posso dar-lhe um pouco mais de HP e mana em troca de alguns pontos. O que você acha? Você aceita a minha oferta ? sim ou nao
16:19 Mago [1]: sim
16:19 Dumbledore: Bem, eu posso dar-lhe 100 extra HP por 5 points, e 100 extra mana por 5 points.
16:19 Dumbledore: Gostaria de mais hp ou mais mana ?
16:19 Mago [1]: hp
16:19 Dumbledore: Você não tem pontos suficientes para trocar.
16:19 Dumbledore: Ate logo entao...
16:20 Mago [2]: hi
16:20 Dumbledore: Ola Mago. Troco seus pontos por life e mana diga points.
16:20 Mago [2]: points
16:20 Dumbledore: Posso dar-lhe um pouco mais de HP e mana em troca de alguns pontos. O que você acha? Você aceita a minha oferta ? sim ou nao
16:21 Mago [2]: sim
16:21 Dumbledore: Bem, eu posso dar-lhe 100 extra HP por 5 points, e 100 extra mana por 5 points.
16:21 Dumbledore: Gostaria de mais hp ou mais mana ?
16:21 Mago [2]: hp
16:21 Dumbledore: Você tem: 100 mais hp for 5 points.
16:21 Mago [2]: hp
16:21 Mago [2]: points
16:21 Dumbledore: Posso dar-lhe um pouco mais de HP e mana em troca de alguns pontos. O que você acha? Você aceita a minha oferta ? sim ou nao
16:21 Mago [2]: sim
16:21 Dumbledore: Bem, eu posso dar-lhe 100 extra HP por 5 points, e 100 extra mana por 5 points.
16:21 Dumbledore: Gostaria de mais hp ou mais mana ?
16:21 Mago [2]: hp
16:21 Dumbledore: Você não tem pontos suficientes para trocar.
16:21 Dumbledore: Ate logo entao...
16:22 Mago [4]: hi
16:22 Dumbledore: Ola Mago. Troco seus pontos por life e mana diga points.
16:22 Mago [4]: points
16:22 Dumbledore: Posso dar-lhe um pouco mais de HP e mana em troca de alguns pontos. O que você acha? Você aceita a minha oferta ? sim ou nao
16:22 Mago [4]: sim
16:22 Dumbledore: Bem, eu posso dar-lhe 100 extra HP por 5 points, e 100 extra mana por 5 points.
16:22 Dumbledore: Gostaria de mais hp ou mais mana ?
16:22 Mago [4]: hp
16:22 Dumbledore: Você tem: 200 mais hp for 10 points.
16:22 Mago [4]: points
16:22 Dumbledore: Posso dar-lhe um pouco mais de HP e mana em troca de alguns pontos. O que você acha? Você aceita a minha oferta ? sim ou nao
16:22 Mago [4]: sim
16:22 Dumbledore: Bem, eu posso dar-lhe 100 extra HP por 5 points, e 100 extra mana por 5 points.
16:22 Dumbledore: Gostaria de mais hp ou mais mana ?
16:22 Mago [4]: hp
16:22 Dumbledore: Você não tem pontos suficientes para trocar.
16:23 Dumbledore: Adeus.

agora segue o console (Distro)

 

Sem_t%C3%ADtulo.png?1444332340

 

aguardo....


up


bom resolvi meu problema amigo editei um systema antigo e reformulei a lib e o sql funcionou aqui mas pela sua atençao broder lhe deixo meu REP+ obrigado..

 

podem fechar o topico Duvida SANADA REsolvido

Link para o comentário
Compartilhar em outros sites

  • 0

Creatureevent:

local points_per_level = xxx                     --Quantos pontos por nível o jogador irá ganhar.
 
function onAdvance(cid, skill, oldLevel, newLevel)
    local level_difference, points_gain, points_count = newLevel - oldLevel, points_per_level, getPlayerStorageValue(cid, 3920) < 0 and 0 or getPlayerStorageValue(cid, 3920)
    
    if newLevel <= getPlayerStorageValue(cid, 3919) or skill ~= SKILL__LEVEL then
        return true
    elseif level_difference > 1 then
        points_gain = points_gain * level_difference
    end
    
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You received "..points_gain.."x point(s) to trade in a NPC for more HP and mana. You have now <"..(points_count + points_gain).."> point(s).")
    setPlayerStorageValue(cid, 3919, newLevel)
    setPlayerStorageValue(cid, 3920, points_count + points_gain)
    return true
end
Não se esqueça de registrá-lo em login.lua.
NPC:

local config = {
    health = {points = xxx, amount = xxx},           --{points = quantidade_de_pontos, amount = quantidade_de_HP_ganha},
    mana = {points = xxx, amount = xxx}              --{points = quantidade_de_pontos, amount = quantidade_de_mana_ganha}
}
 
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end
function creatureSayCallback(cid, type, msg)
    msg = msg:lower()
    
    if not npcHandler:isFocused(cid) then
        return false
    end
 
    local talkUser, player_points = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid, getPlayerStorageValue(cid, 3920)
    
    if msgcontains(msg, "points") or msgcontains(msg, "trade") then
        selfSay("I can give you a little more HP and mana in exchange for some points. What do you think? Do you accept my offer?", cid)
        talkState[talkUser] = 1
    elseif msgcontains(msg, "yes") and talkState[talkUser] == 1 then
        selfSay("Well, I can give you {"..config.health.amount.." extra HP} for {"..config.health.points.." points}, and {"..config.mana.amount.." extra mana} for {"..config.mana.points.." points}.", cid)
        selfSay("Would you like more {hp} or more {mana}?", cid)
        talkState[talkUser] = 2
    elseif msgcontains(msg, "no") and talkState[talkUser] == 1 then
        selfSay("No problem, sir.", cid)
        talkState[talkUser] = 0
    elseif talkState[talkUser] == 2 then
        local info_table = {
            ["hp"] = {setCreatureMaxHealth, getCreatureMaxHealth, doCreatureAddHealth, config.health.points, config.health.amount},
            ["mana"] = {setCreatureMaxMana, getCreatureMaxMana, doCreatureAddMana, config.mana.points, config.mana.amount}
        }
        
        local func = info_table[msg]   
        
        if not func then
            selfSay("I told you to tell me if you'd like more {hp} or more {mana}.", cid)
        elseif player_points < func[4] then
            selfSay("You do not have enough points to exchange.", cid)
        else
            if player_points >= func[4] * 2 then
                local multiplier = math.floor(player_points / func[4])
                
                func[4] = func[4] * multiplier
                func[5] = func[5] * multiplier
            end
            
            selfSay("Here you are: "..func[5].." more "..msg.." for "..func[4].." points.", cid)
            setPlayerStorageValue(cid, 3920, player_points - func[4])
            func[1](cid, func[2](cid) + func[5])
            func[3](cid, func[2](cid))
            talkState[talkUser] = 0
        end
    end
    return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())            

Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

ok amigo irei testar aqui ja posto o resultado obrigado!


Ok amigo testado porem nao é acomulativo se o player upa 1 level e nao vai trocar os pontos qndo ele upa outro lvl ele perde os pontos anteriores... teria como fazer pra acomular ?


up

Link para o comentário
Compartilhar em outros sites

  • 0

Hm, deveras estranho. Abaixo de:

local level_difference, points_gain, points_count = newLevel - oldLevel, points_per_level, getPlayerStorageValue(cid, 3920) < 0 and 0 or getPlayerStorageValue(cid, 3920)

coloque:

print("Pontos no momento: "..points_count)

Depois, para baixo de:

setPlayerStorageValue(cid, 3919, newLevel)

coloque:

print("Ganhando: "..(points_count + points_gain).." pontos.")

Agora, abaixo de:

setPlayerStorageValue(cid, 3920, points_count + points_gain)

coloque:

print("Agora, "..getPlayerStorageValue(cid, 3920).." pontos.")

Informe tudo o que for imprimido no console.

Editado por zipter98
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...