Ir para conteúdo

Featured Replies

Postado

Rev. 3777 TFS 0.4 8.60

Tenho tentado usar esse sistema de Elo. Ele funciona e atribui o ranking e bonus skill, mas ao tentar usar o comando "!kage" que deveria atribuir uma newtype para o kage ele não faz nada só manda a mensagem "Apenas kage pode usar esse comando!".
https://prnt.sc/w4alwf   << imagem demonstrando q o personagem já é kage.

Lib.lua

Spoiler

if not GRADUATION then
    GRADUATION = {}
    GRADUATION.conditions = {}
    GRADUATION.minKagePoints = 500
    GRADUATION.eloPointsStorage = 176602
    GRADUATION.kages = {}
end

GRADUATION.RANKS = {


    {
    
        name = "Shinobi",
        minPoints = 0,
        skillBonus = 0,
    
    },
    
    {
    
        name = "Genin",
        minPoints = 50,
        skillBonus = 5,
    
    },
    
    {
    
        name = "Chunin",
        minPoints = 100,
        skillBonus = 8,
    
    },
	
	{
    
        name = "Jounin",
        minPoints = 200,
        skillBonus = 10,
    
    },
				
	{
    
        name = "Sennin",
        minPoints = 400,
        skillBonus = 15,
		skillAtribute = 15,
		
    
    },
				
	[50] = {
        name = "Kage",
		
        minPoints = -1,
        skillBonus = 20,
		skillAtribute = 20,
		skillHp = 20000
    },

}


for _, rk in pairs (GRADUATION.RANKS) do
    local cond = createConditionObject(CONDITION_ATTRIBUTES)
    setConditionParam(cond, CONDITION_PARAM_SUBID, 910)
    setConditionParam(cond, CONDITION_PARAM_TICKS, -1)
    setConditionParam(cond, CONDITION_PARAM_STAT_MAGICLEVEL, rk.skillBonus)
    setConditionParam(cond, CONDITION_PARAM_SKILL_FIST, rk.skillAtribute)
    setConditionParam(cond, CONDITION_PARAM_SKILL_CLUB, rk.skillAtribute)
    setConditionParam(cond, CONDITION_PARAM_SKILL_SWORD, rk.skillAtribute)
    setConditionParam(cond, CONDITION_PARAM_SKILL_DISTANCE, rk.skillAtribute)
	setConditionParam(cond, CONDITION_PARAM_STAT_MAXHEALTH, rk.skillHp)	
    GRADUATION.conditions[_] = cond
end


GRADUATION.setEloPoints = function(cid, value)
    setPlayerStorageValue(cid, GRADUATION.eloPointsStorage, value)
    updateRankBonus(cid)
end

GRADUATION.getEloPoints = function(cid)
    local points = getPlayerStorageValue(cid, GRADUATION.eloPointsStorage)
    if points == -1 then points = 0 end
    return points
end

GRADUATION.addEloPoints = function(cid, add)
    GRADUATION.setEloPoints(cid, GRADUATION.getEloPoints(cid) + add)
    return GRADUATION.getEloPoints(cid)
end

GRADUATION.getPlayerElo = function(cid)
    local playerRank = nil
    local eloPoints = GRADUATION.getEloPoints(cid)
    if #GRADUATION.kages == 0 then inputKages() end
    for _, kage in pairs(GRADUATION.kages) do
        if kage.guid == getPlayerGUID(cid) then
            playerRank = GRADUATION.RANKS[50]
            playerRank.rankId = 50
            return playerRank
        end
    end
    local town = getPlayerTown(cid)
    for _, rank in pairs(GRADUATION.RANKS) do
        if (GRADUATION.kages[town] and rank.pointsBasedOnKage and eloPoints >= (rank.minPoints/100 * GRADUATION.kages[town].eloPoints)) or (rank.minPoints >= 0 and eloPoints >= rank.minPoints and not rank.pointsBasedOnKage) then
            playerRank = rank
            playerRank.rankId = _
        end
    end
    return playerRank
end


function updateRankBonus(cid)

    local rank = GRADUATION.getPlayerElo(cid)
	doAddCondition(cid, GRADUATION.conditions[rank.rankId])

end

GAME_TOWNS = {
    {id=1, name="Small City", kage={id=5, name="Hokage"}, outfitId = 904},
    {id=2, name="Rookgard", kage={id=4, name="Kazekage"}, outfitId = 905},
    {id=3, name="City Center", kage={id=3, name="Mizukage"}, outfitId = 906},
    {id=4, name="Ice City", kage={id=2, name="Tsuchikage"}, outfitId = 903},
    {id=5, name="Cidade Perdida", kage={id=1, name="Raikage"}, outfitId = 902},
}

function refreshTowns()
    print("Updating towns kage...")
    GRADUATION.kages = {}
    db.query("DELETE FROM `player_storage` WHERE `key` = 11151;")
    for _, town in pairs(GAME_TOWNS) do
        local result = db.getResult("SELECT `p`.`name`, `p`.`town_id`, `st`.`player_id`, CONVERT(`st`.`value`, UNSIGNED INTEGER) AS `sto_value` FROM `player_storage` AS `st`, `players` AS `p` WHERE `p`.id = `st`.`player_id` and `st`.`key` = 176602 AND `p`.`town_id` = "..tonumber(town.id).." ORDER BY `sto_value` DESC LIMIT 1;")
        if(result:getID() ~= -1) then
            if (result:getDataInt('sto_value') >= GRADUATION.minKagePoints) then
                db.query("INSERT INTO `player_storage` VALUES ("..tonumber(result:getDataInt('player_id'))..",11151,"..tostring(town.kage.id)..");");
                print(town.kage.name.." from ".. town.name.." is ".. result:getDataString('name') ..".")
                GRADUATION.kages[town.id] = {id = town.kage.id, guid = result:getDataInt('player_id'), eloPoints = result:getDataInt('sto_value')}
            end
            result:free()
        end
    end
end

function inputKages()
    for _, town in pairs(GAME_TOWNS) do
        local result = db.getResult("SELECT `p`.`name`, `p`.`town_id`, `st`.`player_id`, CONVERT(`st`.`value`, UNSIGNED INTEGER) AS `sto_value` FROM `player_storage` AS `st`, `players` AS `p` WHERE `p`.id = `st`.`player_id` and `st`.`key` = 176602 AND `p`.`town_id` = "..tonumber(town.id).." ORDER BY `sto_value` DESC LIMIT 1;")
        if(result:getID() ~= -1) then
            if (result:getDataInt('sto_value') >= GRADUATION.minKagePoints) then
                GRADUATION.kages[town.id] = {id = town.kage.id, guid = result:getDataInt('player_id'), eloPoints = result:getDataInt('sto_value')}
            end
            result:free()
        end
    end
end


function getPlayerTownInfo(cid)
    local townId = getPlayerTown(cid)
    for _, town in pairs(GAME_TOWNS) do
        if town.id == townId then
            return town
        end
    end
    return nil
end

 

 

Talkactions:
 

Spoiler

function onSay(cid, words, param)

local playerTownData = GAME_TOWNS[getPlayerTown(cid)]
	local playerTownData = getPlayerTownInfo(cid)
		if playerTownData and getPlayerStorageValue(cid, 11151) and playerTownData.kage.id == tonumber(getPlayerStorageValue(cid, 11151)) then
			doCreatureChangeOutfit(cid, {lookType=playerTownData.outfitId})
		else
			doPlayerSendCancel(cid, "Apenas kage pode usar esse comando!.")
		end
	return true
end

 

 

  • Respostas 6
  • Visualizações 1.3k
  • Created
  • Última resposta

Top Posters In This Topic

Postado
  • Autor

ele não usa outfit.xml pq ele seta a newtype pelo comando = doCreatureChangeOutfit(cid, {lookType=playerTownData.outfitId})

1 hora atrás, elielder disse:

GAME_TOWNS = { {id=1, name="Small City", kage={id=5, name="Hokage"}, outfitId = 904}, {id=2, name="Rookgard", kage={id=4, name="Kazekage"}, outfitId = 905}, {id=3, name="City Center", kage={id=3, name="Mizukage"}, outfitId = 906}, {id=4, name="Ice City", kage={id=2, name="Tsuchikage"}, outfitId = 903}, {id=5, name="Cidade Perdida", kage={id=1, name="Raikage"}, outfitId = 902}, }

a outfit de cada kage esta setada no lib

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