função createBonusCondition(id, params)
condição local = Condição (CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT)
condição:setParameter(CONDITION_PARAM_TICKS, -1)
condição:setParameter(CONDITION_PARAM_SUBID, id)
para i = 1, #params fazem
parâmetro local = params[i].param
valor local = params[i].valor
condição:setParameter(parâmetro, valor)
fim
condição de devolução
fim
outfitBonuses = {
[{128, 136}] = criarBonusCondition(1, {
{parâmetro = CONDITION_PARAM_STAT_MAGICPOINTS, valor = 10},
{parâmetro = CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, valor = 110}
}
),
[{129, 137}] = criarBonusCondition(2, {
{parâmetro = CONDITION_PARAM_STAT_MAXMANAPOINTSPERCENT, valor = 200}
}
)
}
função getBonusCondition(roupa)
para roupas, bônus em pares(outfitBonuses) faça
se tabela.contains(roupas, roupa) então
bônus de retorno
fim
fim
retorno nulo
fim
função Criatura:onChangeOutfit(outfit)
se não for self:isPlayer() então
retornar verdadeiro
fim
local anteriorBonusCondition = getBonusCondition(self:getOutfit().lookType)
local newBonusCondition = getBonusCondition(outfit.lookType)
se anteriorBonusCondition então
self:removeCondition(CONDITION_ATTRIBUTES, CONDITIONID_DEFAULT, previousBonusCondition:getSubId())
fim
se novaBonusCondition então
self:addCondition(newBonusCondition)
fim
retornar verdadeiro
fim[/código]
dentro de data/creaturescripts/scripts/login.lua (dentro da função onLogin)
[code=lua]
- Bônus de roupa
bônusCondição local = getBonusCondition(player:getOutfit().lookType)
se bônusCondição então
player:addCondition(bonusCondition)
fim[/código]
como configurar: (já criei dois bônus para trajes de cidadão e caçador como exemplo)
[code=lua]outfitBonuses = {
[{id de roupa masculina, id de roupa feminina}] = createBonusCondition(ID, parâmetros e valores)
}[/código]
o ID deve ser diferente para cada bônus, para que o script possa identificar entre as condições
no meu exemplo comecei com 1 para bônus de cidadão e usei 2 para caçador, se você continuasse iria 3, 4, 5, etc.
os parâmetros devem estar dentro de uma tabela, {param = some_condition_param, value = value_to_set}
aqui estão os parâmetros de condição disponíveis para tfs 1.2:
[código]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[/código]
[/QUOTE]
Seria possível converter a versão canário para revscript?