Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Olá, em data/events/scripts/creature.lua (implemente o código substituindo a função onChangeOufit, e verifique se ela esta definida como 1 em events.xml) 

function createBonusCondition(id, params)
    local condition = Condition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT)
    condition:setParameter(CONDITION_PARAM_TICKS, -1)
    condition:setParameter(CONDITION_PARAM_SUBID, id)
    for i = 1, #params do
        local param = params[i].param
        local value = params[i].value
        condition:setParameter(param, value)
    end
    return condition
end

outfitBonus = {
    -- [{male outfit id, female outfit id}] = createBonusCondition(ID, parameters & values)
	[{128, 136}] = createBonusCondition(1, {
            {param = CONDITION_PARAM_STAT_MAGICPOINTS, value = 10},
            {param = CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, value = 110}
        }
    ),
    [{129, 137}] = createBonusCondition(2, {
            {param = CONDITION_PARAM_STAT_MAXMANAPOINTSPERCENT, value = 200}
        }
    )
}

function getBonusCondition(outfit)
    for outfits, bonus in pairs(outfitBonus) do
        if table.contains(outfits, outfit) then
            return bonus
        end
    end
    return nil
end

function Creature:onChangeOutfit(outfit)
    if not self:isPlayer() then
        return true
    end
    local previousBonusCondition = getBonusCondition(self:getOutfit().lookType)
    local newBonusCondition = getBonusCondition(outfit.lookType)
    if previousBonusCondition then
        self:removeCondition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT, previousBonusCondition:getSubId())
    end
    if newBonusCondition then
        self:addCondition(newBonusCondition)
    end
    return true
end

Em data/creaturescript/scripts/login.lua (dentro da função onLogin implemente o código a seguir) 

    -- Outfit bonus
    local bonusCondition = getBonusCondition(player:getOutfit().lookType)
    if bonusCondition then
        player:addCondition(bonusCondition)
    end

Para configurar usa o exemplo a seguir: 

outfitBonuses = {
    [{male outfit id, female outfit id}] = createBonusCondition(ID, parameters & values)
}

O ID deve ser diferente para cada bônus, de modo que o script pode identificar entre as condições.

Os parâmetros devem estar dentro de uma tabela: {param = alguma_condição_parâmetro, value = valor_para_mudar}

 

Aqui estão os parâmetro disponíveis no TFS 1.3: 

CONDITION_PARAM_OWNER
CONDITION_PARAM_TICKS
CONDITION_PARAM_HEALTHGAIN
CONDITION_PARAM_HEALTHTICKS
CONDITION_PARAM_MANAGAIN
CONDITION_PARAM_MANATICKS
CONDITION_PARAM_DELAYED
CONDITION_PARAM_SPEED
CONDITION_PARAM_LIGHT_LEVEL
CONDITION_PARAM_LIGHT_COLOR
CONDITION_PARAM_SOULGAIN
CONDITION_PARAM_SOULTICKS
CONDITION_PARAM_MINVALUE
CONDITION_PARAM_MAXVALUE
CONDITION_PARAM_STARTVALUE
CONDITION_PARAM_TICKINTERVAL
CONDITION_PARAM_FORCEUPDATE
CONDITION_PARAM_SKILL_MELEE
CONDITION_PARAM_SKILL_FIST
CONDITION_PARAM_SKILL_CLUB
CONDITION_PARAM_SKILL_SWORD
CONDITION_PARAM_SKILL_AXE
CONDITION_PARAM_SKILL_DISTANCE
CONDITION_PARAM_SKILL_SHIELD
CONDITION_PARAM_SKILL_FISHING
CONDITION_PARAM_STAT_MAXHITPOINTS
CONDITION_PARAM_STAT_MAXMANAPOINTS
CONDITION_PARAM_STAT_SOULPOINTS
CONDITION_PARAM_STAT_MAGICPOINTS
CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT
CONDITION_PARAM_STAT_MAXMANAPOINTSPERCENT
CONDITION_PARAM_STAT_SOULPOINTSPERCENT
CONDITION_PARAM_STAT_MAGICPOINTSPERCENT
CONDITION_PARAM_PERIODICDAMAGE
CONDITION_PARAM_SKILL_MELEEPERCENT
CONDITION_PARAM_SKILL_FISTPERCENT
CONDITION_PARAM_SKILL_CLUBPERCENT
CONDITION_PARAM_SKILL_SWORDPERCENT
CONDITION_PARAM_SKILL_AXEPERCENT
CONDITION_PARAM_SKILL_DISTANCEPERCENT
CONDITION_PARAM_SKILL_SHIELDPERCENT
CONDITION_PARAM_SKILL_FISHINGPERCENT
CONDITION_PARAM_BUFF_SPELL
CONDITION_PARAM_SUBID
CONDITION_PARAM_FIELD
CONDITION_PARAM_DISABLE_DEFENSE
CONDITION_PARAM_SPECIALSKILL_CRITICALHITCHANCE
CONDITION_PARAM_SPECIALSKILL_CRITICALHITAMOUNT
CONDITION_PARAM_SPECIALSKILL_LIFELEECHCHANCE
CONDITION_PARAM_SPECIALSKILL_LIFELEECHAMOUNT
CONDITION_PARAM_SPECIALSKILL_MANALEECHCHANCE
CONDITION_PARAM_SPECIALSKILL_MANALEECHAMOUNT
CONDITION_PARAM_AGGRESSIVE

Créditos: INFERNUM (OTLAND)

  • 1 month later...
Postado

La idea es que el bonus se aplique cuando el outfit tenga los addones completos, sin tener el addon 1 y 2 el bonus se aplica igual, como podria agregar para que se aplique al tener el addon full?. saludos

Postado
  • Autor
2 horas atrás, wizinx disse:

La idea es que el bonus se aplique cuando el outfit tenga los addones completos, sin tener el addon 1 y 2 el bonus se aplica igual, como podria agregar para que se aplique al tener el addon full?. saludos

Altere essa função: 

function Creature:onChangeOutfit(outfit)
    if not self:isPlayer() then
        return true
    end
    local previousBonusCondition = getBonusCondition(self:getOutfit().lookType)
    local newBonusCondition = getBonusCondition(outfit.lookType)
    if previousBonusCondition then
        self:removeCondition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT, previousBonusCondition:getSubId())
    end
    if newBonusCondition then
        self:addCondition(newBonusCondition)
    end
    return true
end

Deixando ela assim: 

function Creature:onChangeOutfit(outfit)
    if not self:isPlayer() then
        return true
    end
    if self:hasOutfit(self:getOutfit().lookType, 3) then
		local previousBonusCondition = getBonusCondition(self:getOutfit().lookType)
		local newBonusCondition = getBonusCondition(outfit.lookType)
		if previousBonusCondition then
			self:removeCondition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT, previousBonusCondition:getSubId())
		end
		if newBonusCondition then
			self:addCondition(newBonusCondition)
		end
	end
    return true
end

 

Postado
3 horas atrás, luanluciano93 disse:

Altere essa função: 


function Creature:onChangeOutfit(outfit)
    if not self:isPlayer() then
        return true
    end
    local previousBonusCondition = getBonusCondition(self:getOutfit().lookType)
    local newBonusCondition = getBonusCondition(outfit.lookType)
    if previousBonusCondition then
        self:removeCondition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT, previousBonusCondition:getSubId())
    end
    if newBonusCondition then
        self:addCondition(newBonusCondition)
    end
    return true
end

Deixando ela assim: 


function Creature:onChangeOutfit(outfit)
    if not self:isPlayer() then
        return true
    end
    if self:hasOutfit(self:getOutfit().lookType, 3) then
		local previousBonusCondition = getBonusCondition(self:getOutfit().lookType)
		local newBonusCondition = getBonusCondition(outfit.lookType)
		if previousBonusCondition then
			self:removeCondition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT, previousBonusCondition:getSubId())
		end
		if newBonusCondition then
			self:addCondition(newBonusCondition)
		end
	end
    return true
end

 

Amigo, lo coloqué como usted me dijo, aun el bono se da con solo tener la outfit sin los addones, si no es mucha la molestia de verificar, le agradezco por su tiempo.

Postado
  • Autor

@wizinx além da alteração que citei acima, mude também isso: 

    -- Outfit bonus
    local bonusCondition = getBonusCondition(player:getOutfit().lookType)
    if bonusCondition then
        player:addCondition(bonusCondition)
    end

Por isso: 

    -- Outfit bonus
    if player:hasOutfit(player:getOutfit().lookType, 3) then
		local bonusCondition = getBonusCondition(player:getOutfit().lookType)
		if bonusCondition then
			player:addCondition(bonusCondition)
		end
	end

 

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