Ir para conteúdo
  • Cadastre-se

(Resolvido)Buff é mostrado nas informações de outro script


Ir para solução Resolvido por Vodkart,

Posts Recomendados

  • Moderador

Eu gostaria de adicionar informações do BUFF feito pelo @xWhiteWolf em um script que o @Vodkart disponibilizou para a comunidade, mais ainda continuo sem saber como executar, caso alguém queria me ensinar como fazer ou me ajudar ficarei muito agradecido. As informações do BUFF só iria aparecer se você estiver com alguns dos BUFFS específicos, caso ao contrario nem iria aparecer. Obrigado desde já, rep+ para quem ajudar.

 

Exemplos:

Se você estivesse bufado pelo Utevo Sio, somente por ele iria ficar assim

Buffs:

mana up: tempo de buff

Se você foi bufado por mais de dois buffs iria ficar assim

Buffs:

vida up: tempo de buff

skill up: tempo de buff

shield up: tempo de buff

Se possível adicionar em baixo das informações que mostra quantos critical você tem. Obrigado mais uma vez

 

Script do @Vodkart

Spoiler

function getPremiumPoints(cid)
    local query = db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = "..getPlayerAccountId(cid))
    return query:getDataInt("premium_points") <= 0 and 0 or query:getDataInt("premium_points")
end
function doCalcPercent(cid, a, b)
    return math.floor(b/a*100)
end
function getExperienceForLevel(lv)
    lv = lv - 1
    return ((50 * lv * lv * lv) - (150 * lv * lv) + (400 * lv)) / 3
end
local var = {
    ["fist fighting"] = 0,
    ["club fighting"] = 1,
    ["sword fighting"] = 2,
    ["axe fighting"] = 3,
    ["distance fighting"] = 4,
    ["shield fighting"] = 5,
    ["fishing"] = 6,
    ["magic"] = 9
}
function onSay(cid, words, param, channel)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Premium Points: "..getPremiumPoints(cid))
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Dias Premmy: "..getPlayerPremiumDays(cid))
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Dodge Level: "..(getPlayerStorageValue(cid, 98798644) <= 0 and 0 or getPlayerStorageValue(cid, 98798644)))
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Critical Level: "..(getPlayerStorageValue(cid, 48903) <= 0 and 0 or getPlayerStorageValue(cid, 48903)))
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Stamina: "..timeString((getPlayerStamina(cid)*60)))
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Cap livre: "..getPlayerFreeCap(cid))
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Banco: "..getPlayerBalance(cid))
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Experiencia: "..getPlayerExperience(cid))
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Informacoes das skills de "..getCreatureName(cid))
    local lvl, ln = getPlayerLevel(cid),-(getPlayerExperience(cid) - getExperienceForLevel((getPlayerLevel(cid)+1)))
    local z = (getExperienceForLevel(getPlayerLevel(cid)) - getExperienceForLevel(getPlayerLevel(cid)+1))
    local w = (getExperienceForLevel(getPlayerLevel(cid)) - getPlayerExperience(cid))
    local v = math.floor(w/z*100)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"- level: "..lvl.." {"..(v <= 0 and 0 or v).."%}. Faltando "..ln.." pontos de experiencia.")
    for name, id in pairs(var) do
        if name == "magic" then
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"- ".. name .. ": "..getPlayerMagLevel(cid).." {" .. doCalcPercent(cid, getPlayerRequiredMana(cid, getPlayerMagLevel(cid)+1), getPlayerSpentMana(cid)) .. "%}. Faltando "..getPlayerRequiredMana(cid, getPlayerMagLevel(cid)+1) - getPlayerSpentMana(cid).." pontos.") 
        else
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"- ".. name .. ": "..getPlayerSkillLevel(cid, id).." {" .. doCalcPercent(cid, getPlayerRequiredSkillTries(cid, id, getPlayerSkillLevel(cid, id)+1), getPlayerSkillTries(cid, id)) .. "%}. Faltando "..getPlayerRequiredSkillTries(cid, id, getPlayerSkillLevel(cid, id)+1) - getPlayerSkillTries(cid, id).." pontos.") 
        end
    end
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"- labia: "..getLabiaLevel(cid).." {" .. doCalcPercent(cid, getLabiaExpTo(getLabiaLevel(cid)+1), getLabiaTries(cid)) .. "%}. Faltando ".. math.floor(getLabiaExpTo(getLabiaLevel(cid)+1) - getLabiaTries(cid)).." pontos.") 
    return true
end

 

Script dos BUFF feito pelo @xWhiteWolf

Vita Sio - Vida

Spoiler

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 39)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)

local config = {
tempo = 600, --- tempo que vai durar a spell
percent = 20 -- quanto % vai aumentar
}

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 100+config.percent)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end

Vita Gran Sio - Vida

Spoiler

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 39)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)

local config = {
tempo = 600, --- tempo que vai durar a spell
percent = 40 -- quanto % vai aumentar
}

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 100+config.percent)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end

Vita Gran Mas Sio - Vida. Modificado Pelo @KotZletY

Spoiler

local config = {
tempo = 600, --- tempo que vai durar a spell
percent = 40 -- quanto % vai aumentar
}

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 100+config.percent)

local config = {
    baseMana = 120,
    pvpManaSpent = getConfigValue("addManaSpentInPvPZone")
}

function onCastSpell(cid, var)
    local pos, membersList = getCreaturePosition(cid), getPartyMembers(cid)

    if not membersList then
        doPlayerSendTextMessage(cid,22,"Voce precisa esta em party para usar esse buff.")
        doSendMagicEffect(pos, CONST_ME_POFF)
        return false
    end

    if table.maxn(membersList) <= 1 then
        doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE)
        doSendMagicEffect(pos, CONST_ME_POFF)
        return false
    end

    local affectedList = {}
    for _, pid in ipairs(membersList) do
        if(getDistanceBetween(getCreaturePosition(pid), pos) <= 36) then
            table.insert(affectedList, pid)
        end
    end

    local tmp = table.maxn(affectedList)
    if(tmp <= 1) then
        doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE)
        doSendMagicEffect(pos, CONST_ME_POFF)
        return false
    end

    local mana = math.ceil((0.9 ^ (tmp - 1) * config.baseMana) * tmp)
    if(getCreatureMana(cid) < mana) then
        doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHMANA)
        doSendMagicEffect(pos, CONST_ME_POFF)
        return false
    end

    doCreatureAddMana(cid, -(mana - config.baseMana), false)
    if(not getPlayerFlagValue(cid, PlayerFlag_NotGainMana) and (not getTileInfo(getThingPosition(cid)).pvp or config.pvpManaSpent)) then
        doPlayerAddSpentMana(cid, (mana - config.baseMana))
    end

    for _, pid in ipairs(affectedList) do
        doAddCondition(pid, condition)
    end

    return true
end

Utevo Sio - Mana

Spoiler

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 39)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)


local config = {
tempo = 600, --- tempo que vai ficar recuperando mana (tempo total)
mana = 200, -- quanto de mana ganha a cada intervalo
intervalo = 5  --- intervalo que leva pra recuperar X de mana, 
}

local condition = createConditionObject(CONDITION_FOOD)
setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_MANAGAIN, config.mana)
setConditionParam(condition, CONDITION_PARAM_MANATICKS, config.intervalo*1000)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end

Utevo Gran Sio - Mana

Spoiler

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 39)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)


local config = {
tempo = 600, --- tempo que vai ficar recuperando mana (tempo total)
mana = 250, -- quanto de mana ganha a cada intervalo
intervalo = 3  --- intervalo que leva pra recuperar X de mana, 
}

local condition = createConditionObject(CONDITION_FOOD)
setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_MANAGAIN, config.mana)
setConditionParam(condition, CONDITION_PARAM_MANATICKS, config.intervalo*1000)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end

Utevo Gran Mas Sio - Mana. Modificado pelo @KotZletY

Spoiler

local config = {
tempo = 600, --- tempo que vai ficar recuperando mana (tempo total)
mana = 350, -- quanto de mana ganha a cada intervalo
intervalo = 1  --- intervalo que leva pra recuperar X de mana, 
}

local condition = createConditionObject(CONDITION_FOOD)
setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_MANAGAIN, config.mana)
setConditionParam(condition, CONDITION_PARAM_MANATICKS, config.intervalo*1000)

local config = {
    baseMana = 60,
    pvpManaSpent = getConfigValue("addManaSpentInPvPZone")
}

function onCastSpell(cid, var)
    local pos, membersList = getCreaturePosition(cid), getPartyMembers(cid)

    if not membersList then
        doPlayerSendTextMessage(cid,22,"Voce precisa esta em party para usar esse buff.")
        doSendMagicEffect(pos, CONST_ME_POFF)
        return false
    end

    if table.maxn(membersList) <= 1 then
        doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE)
        doSendMagicEffect(pos, CONST_ME_POFF)
        return false
    end

    local affectedList = {}
    for _, pid in ipairs(membersList) do
        if(getDistanceBetween(getCreaturePosition(pid), pos) <= 36) then
            table.insert(affectedList, pid)
        end
    end

    local tmp = table.maxn(affectedList)
    if(tmp <= 1) then
        doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE)
        doSendMagicEffect(pos, CONST_ME_POFF)
        return false
    end

    local mana = math.ceil((0.9 ^ (tmp - 1) * config.baseMana) * tmp)
    if(getCreatureMana(cid) < mana) then
        doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHMANA)
        doSendMagicEffect(pos, CONST_ME_POFF)
        return false
    end

    doCreatureAddMana(cid, -(mana - config.baseMana), false)
    if(not getPlayerFlagValue(cid, PlayerFlag_NotGainMana) and (not getTileInfo(getThingPosition(cid)).pvp or config.pvpManaSpent)) then
        doPlayerAddSpentMana(cid, (mana - config.baseMana))
    end

    for _, pid in ipairs(affectedList) do
        doAddCondition(pid, condition)
    end

    return true
end

Utamo Sio - Shield

Spoiler

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 39)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)

local config = {
tempo = 600, --- tempo que vai durar a spell
percent = 40 -- quanto % vai aumentar
}

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELDPERCENT, 100+config.percent)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end

Utamo Gran Sio - Shield

Spoiler

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 39)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)

local config = {
tempo = 600, --- tempo que vai durar a spell
percent = 70 -- quanto % vai aumentar
}

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELDPERCENT, 100+config.percent)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end

Utamo Gran Mas Sio - Shield. Modificado pelo @KotZletY

Spoiler

local config = {
tempo = 600, --- tempo que vai durar a spell
percent = 95 -- quanto % vai aumentar
}

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_SKILL_SHIELDPERCENT, 100+config.percent)

local config = {
    baseMana = 90,
    pvpManaSpent = getConfigValue("addManaSpentInPvPZone")
}

function onCastSpell(cid, var)
    local pos, membersList = getCreaturePosition(cid), getPartyMembers(cid)

    if not membersList then
        doPlayerSendTextMessage(cid,22,"Voce precisa esta em party para usar esse buff.")
        doSendMagicEffect(pos, CONST_ME_POFF)
        return false
    end

    if table.maxn(membersList) <= 1 then
        doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE)
        doSendMagicEffect(pos, CONST_ME_POFF)
        return false
    end

    local affectedList = {}
    for _, pid in ipairs(membersList) do
        if(getDistanceBetween(getCreaturePosition(pid), pos) <= 36) then
            table.insert(affectedList, pid)
        end
    end

    local tmp = table.maxn(affectedList)
    if(tmp <= 1) then
        doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE)
        doSendMagicEffect(pos, CONST_ME_POFF)
        return false
    end

    local mana = math.ceil((0.9 ^ (tmp - 1) * config.baseMana) * tmp)
    if(getCreatureMana(cid) < mana) then
        doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHMANA)
        doSendMagicEffect(pos, CONST_ME_POFF)
        return false
    end

    doCreatureAddMana(cid, -(mana - config.baseMana), false)
    if(not getPlayerFlagValue(cid, PlayerFlag_NotGainMana) and (not getTileInfo(getThingPosition(cid)).pvp or config.pvpManaSpent)) then
        doPlayerAddSpentMana(cid, (mana - config.baseMana))
    end

    for _, pid in ipairs(affectedList) do
        doAddCondition(pid, condition)
    end

    return true
end

Utito Mas Sio - Skill

Spoiler

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 39)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)

local config = {
tempo = 120, --- tempo que vai durar a spell
percent = 300 -- quanto % vai aumentar
}

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_SKILL_CLUBPERCENT, 100+config.percent)
setConditionParam(condition, CONDITION_PARAM_SKILL_SWORDPERCENT, 100+config.percent)
setConditionParam(condition, CONDITION_PARAM_SKILL_AXEPERCENT, 100+config.percent)
setConditionParam(condition, CONDITION_PARAM_SKILL_DISTANCEPERCENT, 100+config.percent)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
return doCombat(cid, combat, var)
end

 

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites
  • Moderador

@Vodkart Poderia me dizer como eu faço? Por favor

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites

@Phineasz 

 

vou te ensinar como fazer, é meio chato mas vou fazer em 3 script diferentes para você.

 

Presta atenção:

 

Vita Sio - Vida
 

Spoiler

 

eu atribui uma storage nela, no caso eu escolhi a storage 789651, olha como ficou:

 

 


local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 39)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)

local config = {
	tempo = 600, --- tempo que vai durar a spell
	percent = 20 -- quanto % vai aumentar
}

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 100+config.percent)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
	local store = 789651 -- valor da storage escolhido
	setPlayerStorageValue(cid, store, os.time()+config.tempo) 
	return doCombat(cid, combat, var)
end

 

 

 

 

 

Vita Gran Sio - Vida
 

Spoiler

 

eu atribui outra storage nela, no caso eu escolhi a storage 789652, olha como ficou:

 


local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 39)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)

local config = {
	tempo = 600, --- tempo que vai durar a spell
	percent = 40 -- quanto % vai aumentar
}

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 100+config.percent)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
	local store = 789652 -- storage escolhida
	setPlayerStorageValue(cid, store, os.time()+config.tempo) 
	return doCombat(cid, combat, var)
end

 

 

 

 

 

 


Vita Gran Mas Sio - Vida.
 

Spoiler

 

Nesse caso é um buff que é dado em party então todos os jogadores que serão bufados devem receber a storage, que no caso foi escolhida a 789653.

 


local config = {
	tempo = 600, --- tempo que vai durar a spell
	percent = 40 -- quanto % vai aumentar
}
local store = 789653 -- aqui valor da storage

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 100+config.percent)

local config = {
	baseMana = 120,
	pvpManaSpent = getConfigValue("addManaSpentInPvPZone")
}
function onCastSpell(cid, var)
	local pos, membersList = getCreaturePosition(cid), getPartyMembers(cid)
	
	if not membersList then
		doPlayerSendTextMessage(cid,22,"Voce precisa esta em party para usar esse buff.")
		doSendMagicEffect(pos, CONST_ME_POFF)
		return false
	end
	
	if table.maxn(membersList) <= 1 then
		doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE)
		doSendMagicEffect(pos, CONST_ME_POFF)
		return false
	end
	
	local affectedList = {}
	for _, pid in ipairs(membersList) do
		if(getDistanceBetween(getCreaturePosition(pid), pos) <= 36) then
			table.insert(affectedList, pid)
		end
	end
	
	local tmp = table.maxn(affectedList)
	if(tmp <= 1) then
		doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE)
		doSendMagicEffect(pos, CONST_ME_POFF)
		return false
	end
	
	local mana = math.ceil((0.9 ^ (tmp - 1) * config.baseMana) * tmp)
	if(getCreatureMana(cid) < mana) then
		doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHMANA)
		doSendMagicEffect(pos, CONST_ME_POFF)
		return false
	end
	
	doCreatureAddMana(cid, -(mana - config.baseMana), false)
	if(not getPlayerFlagValue(cid, PlayerFlag_NotGainMana) and (not getTileInfo(getThingPosition(cid)).pvp or config.pvpManaSpent)) then
		doPlayerAddSpentMana(cid, (mana - config.baseMana))
	end
	
	for _, pid in ipairs(affectedList) do
		doAddCondition(pid, condition)
		setPlayerStorageValue(pid, store, os.time()+config.tempo) -- aqui storage
	end	
	return true
end

 

 

 

----------------------------------------------

 

agora vou na lib e coloco em qualquer arquivo la no final essa tabela:

 

-- buffs info

command_buffs_storages = {
	[789651] = "Vida up - tempo restante: %s.",
	[789652] = "Super vida up - tempo restante: %s.",
	[789653] = "Party Vida Up - tempo restante: %s."
}

 

--------------------------------------------------

 

agora vou no creaturescript e no arquivo do login.lua adiciona antes do último return true:

 

	for store, buff in pairs(command_buffs_storages) do
    		setPlayerStorageValue(cid, store, 0)
	end

 

e o script vc deixa assim a talk:

 

 

Spoiler

function timeString(timeDiff)
	local dateFormat = {
		{"day", timeDiff / 60 / 60 / 24},
		{"hour", timeDiff / 60 / 60 % 24},
		{"minute", timeDiff / 60 % 60},
		{"second", timeDiff % 60}
	}
	local out = {}
	for k, t in ipairs(dateFormat) do
		local v = math.floor(t[2])
		if(v > 0) then
			table.insert(out, (k < #dateFormat and (#out > 0 and ', ' or '') or ' and ') .. v .. ' ' .. t[1] .. (v ~= 1 and 's' or ''))
		end
	end
	local ret = table.concat(out)
	if ret:len() < 16 and ret:find("second") then
		local a, b = ret:find(" and ")
		ret = ret:sub(b+1)
	end
	
	return ret
end
function getPremiumPoints(cid)
    local query = db.getResult("SELECT `premium_points` FROM `accounts` WHERE `id` = "..getPlayerAccountId(cid))
    return query:getDataInt("premium_points") <= 0 and 0 or query:getDataInt("premium_points")
end
function doCalcPercent(cid, a, b)
    return math.floor(b/a*100)
end
function getExperienceForLevel(lv)
    lv = lv - 1
    return ((50 * lv * lv * lv) - (150 * lv * lv) + (400 * lv)) / 3
end
local var = {
    ["fist fighting"] = 0,
    ["club fighting"] = 1,
    ["sword fighting"] = 2,
    ["axe fighting"] = 3,
    ["distance fighting"] = 4,
    ["shield fighting"] = 5,
    ["fishing"] = 6,
    ["magic"] = 9
}
function ShowMyBuffs(cid)
local show = false
	for store, buff in pairs(command_buffs_storages) do
		if getPlayerStorageValue(cid, store) >= os.time() then
			if show == false then
				doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Informações dos Buffs:")
				show = true
			end			
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, string.format(buff, timeString(getPlayerStorageValue(cid, store) - os.time())))
		end
	end
end
function onSay(cid, words, param, channel)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Premium Points: "..getPremiumPoints(cid))
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Dias Premmy: "..getPlayerPremiumDays(cid))
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Dodge Level: "..(getPlayerStorageValue(cid, 98798644) <= 0 and 0 or getPlayerStorageValue(cid, 98798644)))
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Critical Level: "..(getPlayerStorageValue(cid, 48903) <= 0 and 0 or getPlayerStorageValue(cid, 48903)))
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Stamina: "..timeString((getPlayerStamina(cid)*60)))
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Cap livre: "..getPlayerFreeCap(cid))
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Banco: "..getPlayerBalance(cid))
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Experiencia: "..getPlayerExperience(cid))
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"Informacoes das skills de "..getCreatureName(cid))
    local lvl, ln = getPlayerLevel(cid),-(getPlayerExperience(cid) - getExperienceForLevel((getPlayerLevel(cid)+1)))
    local z = (getExperienceForLevel(getPlayerLevel(cid)) - getExperienceForLevel(getPlayerLevel(cid)+1))
    local w = (getExperienceForLevel(getPlayerLevel(cid)) - getPlayerExperience(cid))
    local v = math.floor(w/z*100)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"- level: "..lvl.." {"..(v <= 0 and 0 or v).."%}. Faltando "..ln.." pontos de experiencia.")
    for name, id in pairs(var) do
        if name == "magic" then
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"- ".. name .. ": "..getPlayerMagLevel(cid).." {" .. doCalcPercent(cid, getPlayerRequiredMana(cid, getPlayerMagLevel(cid)+1), getPlayerSpentMana(cid)) .. "%}. Faltando "..getPlayerRequiredMana(cid, getPlayerMagLevel(cid)+1) - getPlayerSpentMana(cid).." pontos.") 
        else
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"- ".. name .. ": "..getPlayerSkillLevel(cid, id).." {" .. doCalcPercent(cid, getPlayerRequiredSkillTries(cid, id, getPlayerSkillLevel(cid, id)+1), getPlayerSkillTries(cid, id)) .. "%}. Faltando "..getPlayerRequiredSkillTries(cid, id, getPlayerSkillLevel(cid, id)+1) - getPlayerSkillTries(cid, id).." pontos.") 
        end
    end
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,"- labia: "..getLabiaLevel(cid).." {" .. doCalcPercent(cid, getLabiaExpTo(getLabiaLevel(cid)+1), getLabiaTries(cid)) .. "%}. Faltando ".. math.floor(getLabiaExpTo(getLabiaLevel(cid)+1) - getLabiaTries(cid)).." pontos.") 
    ShowMyBuffs(cid)
    return true
end

 


 

 

 

 

 

 

 

 

 

 

 

 

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
  • Moderador

@Vodkart Vou fazer os testes aqui, já te aviso

Funcionou obrigado

@Vodkart Ahmm, poderia me ajudar só mais em uma coisinha? Poderia mudar a parte da storage que vai para o jogador quando usa a magia? Tipo, o script estar funcionando perfeitamente, mais a storage só vai para o jogador que usou o buff, o que eu estou tentando dizer é, se eu bufar um amigo ou qualquer outro jogador, quem vai ficar com a storage sou eu e não vai aparecer o tempo nas informações de quem recebeu o buff, 

No script do Vita Gran Mas Sio estar dando este erro

image.png.8fd2a8897016253c016e0e8353902129.png

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites

@Phineasz No Vita Gran Mas Sio tinha duas tabelas com o mesmo nome...

 

------------------------------

 

sobre os demais scripts, o buff não é só em si mesmo? tbm dá para colocar no target? em todos eles?

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
  • Moderador

@Vodkart Sim, você pode bufar quem quiser, é em target, somente os Gran Mas Sio que é por party

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites

@Phineasz pois é, testa esse Gran Mas Sio que editei pra vc:

 

local ret = {
	tempo = 600, --- tempo que vai durar a spell
	percent = 40 -- quanto % vai aumentar
}
local store = 789653 -- aqui valor da storage

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, ret.tempo*1000)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 100+ret.percent)

local config = {
	baseMana = 120,
	pvpManaSpent = getConfigValue("addManaSpentInPvPZone")
}
function onCastSpell(cid, var)
	local pos, membersList = getCreaturePosition(cid), getPartyMembers(cid)
	
	if not membersList then
		doPlayerSendTextMessage(cid,22,"Voce precisa esta em party para usar esse buff.")
		doSendMagicEffect(pos, CONST_ME_POFF)
		return false
	end
	
	if table.maxn(membersList) <= 1 then
		doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE)
		doSendMagicEffect(pos, CONST_ME_POFF)
		return false
	end
	
	local affectedList = {}
	for _, pid in ipairs(membersList) do
		if(getDistanceBetween(getCreaturePosition(pid), pos) <= 36) then
			table.insert(affectedList, pid)
		end
	end
	
	local tmp = table.maxn(affectedList)
	if(tmp <= 1) then
		doPlayerSendDefaultCancel(cid, RETURNVALUE_NOPARTYMEMBERSINRANGE)
		doSendMagicEffect(pos, CONST_ME_POFF)
		return false
	end
	
	local mana = math.ceil((0.9 ^ (tmp - 1) * config.baseMana) * tmp)
	if(getCreatureMana(cid) < mana) then
		doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTENOUGHMANA)
		doSendMagicEffect(pos, CONST_ME_POFF)
		return false
	end
	
	doCreatureAddMana(cid, -(mana - config.baseMana), false)
	if(not getPlayerFlagValue(cid, PlayerFlag_NotGainMana) and (not getTileInfo(getThingPosition(cid)).pvp or config.pvpManaSpent)) then
		doPlayerAddSpentMana(cid, (mana - config.baseMana))
	end
	for _, pid in ipairs(affectedList) do
		doAddCondition(pid, condition)
		setPlayerStorageValue(pid, store, os.time()+ret.tempo) -- aqui storage
	end	
	return true
end

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
  • Moderador

@Vodkart Agora ta normal, sobre ganhar a storage tem resposta pra essa pergunta?

Editado por Phineasz (veja o histórico de edições)

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites

@Phineasz Não entendi, que storage? esse ele adiciona storage para todos na party.

 

 

deixa eu ver a tag nos script que da pra buffar o target?

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
  • Moderador

@Vodkart Tipo, quando eu digo storage, é a storage que mostra quanto tempo tem de buff no script do talkactions sabe, ai tipo, quando eu vou bufar uma pessoa o tempo do buff aparece pra mim e não pra ela entende? Por exemplo, eu vou te bufar ai eu vou usar vita sio "vodkart ai o tempo que é pra mostrar no talkactions vem pra mim, o jogador que usou o buff, e não vai pra você que estar bufado, deu pra entender um pouco agora? Eu sou meio lerdo pra explicações kkk

<instant name="Utevo Sio" words="utevo sio" lvl="75" mana="800" maglv="90" prem="1" aggressive="0" needtarget="1" range="5" params="1" exhaustion="1500" enabled="1" needlearn="0" event="script" value="buff/utevo sio.lua">
</instant>
<instant name="Utevo Gran Sio" words="utevo gran sio" lvl="150" mana="1500" maglv="120" prem="1" aggressive="0" needtarget="1" range="5" params="1" exhaustion="1500" enabled="1" needlearn="0" event="script" value="buff/utevo gran sio.lua">
</instant>>
<instant name="Utevo Gran Mas Sio" words="utevo gran mas sio" lvl="300" mana="2500" maglv="130" prem="1" aggressive="0" selftarget="1" range="9" exhaustion="1500" enabled="1" needlearn="0" event="script" value="buff/utevo gran mas sio.lua">
</instant>
<instant name="Utamo Sio" words="utamo sio" lvl="75" mana="800" maglv="90" prem="1" aggressive="0" needtarget="1" range="5" params="1" exhaustion="1500" enabled="1" needlearn="0" event="script" value="buff/utamo sio.lua">
</instant>
<instant name="Utamo Gran Sio" words="utamo gran sio" lvl="150" mana="1500" maglv="120" prem="1" aggressive="0" needtarget="1" range="5" params="1" exhaustion="1500" enabled="1" needlearn="0" event="script" value="buff/utamo gran sio.lua">
</instant>
<instant name="Utamo Gran Mas Sio" words="utamo gran mas sio" lvl="300" mana="2500" maglv="130" prem="1" aggressive="0" selftarget="1" range="9" exhaustion="1500" enabled="1" needlearn="0" event="script" value="buff/utamo gran mas sio.lua">	
</instant>
<instant name="Vita Sio" words="vita sio" lvl="75" mana="800" maglv="90" prem="1" aggressive="0" needtarget="1" range="5" params="1" exhaustion="1500" enabled="1" needlearn="0" event="script" value="buff/vita sio.lua">
</instant>
<instant name="Vita Gran Sio" words="vita gran sio" lvl="150" mana="1500" maglv="120" prem="1" aggressive="0" needtarget="1" range="5" params="1" exhaustion="1500" enabled="1" needlearn="0" event="script" value="buff/vita gran sio.lua">
</instant>
<instant name="Vita Gran Mas Sio" words="vita gran mas sio" lvl="300" mana="2500" maglv="130" prem="1" aggressive="0" selftarget="1" range="9" exhaustion="1500" enabled="1" needlearn="0" event="script" value="buff/vita gran mas sio.lua">
</instant>
<instant name="Utito Mas Sio" words="utito mas sio" lvl="90" mana="1500" maglv="10" prem="1" aggressive="0" needtarget="1" range="5" params="1" exhaustion="1500" enabled="1" needlearn="0" event="script" value="buff/utito mas sio.lua">
</instant>

 

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites
  • Solução

verdade, vou usar o do Vita Sio como exemplo, ficou assim:

 

 

local combat = createCombatObject()
setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
setCombatParam(combat, COMBAT_PARAM_EFFECT, 39)
setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, false)

local config = {
	tempo = 600, --- tempo que vai durar a spell
	percent = 20 -- quanto % vai aumentar
}

local condition = createConditionObject(CONDITION_ATTRIBUTES)
setConditionParam(condition, CONDITION_PARAM_TICKS, config.tempo*1000)
setConditionParam(condition, CONDITION_PARAM_BUFF, true)
setConditionParam(condition, CONDITION_PARAM_STAT_MAXHITPOINTSPERCENT, 100+config.percent)
setCombatCondition(combat, condition)

function onCastSpell(cid, var)
	local store = 789651 -- valor da storage escolhido
	setPlayerStorageValue(variantToNumber(var), store, os.time()+config.tempo) 
	return doCombat(cid, combat, var)
end

 

------------------------------------------------------------------------

 

Testa a spell do Vita Sio - Vida // e fala se funcionou.

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
  • Moderador

@Vodkart Funcionou, poderia dar um exemplo de algum buff usado em party? O resto eu faço

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites

ué, o da party eu ja coloquei ali em cima, todos ganham storage.

 

	for _, pid in ipairs(affectedList) do
		doAddCondition(pid, condition)
		setPlayerStorageValue(pid, store, os.time()+ret.tempo) -- aqui storage
	end

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
  • Moderador

@Vodkart ?? Foi mal, falta de atenção minha :(

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites
  • Moderador

@Vodkart Poderia me dizer se os atributos que ganha assim que é bufado ele reseta quando o personagem desloga ou morre? Por que eu testei aqui, e quando desloga, você ainda fica com os atributos :(

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites
  • Moderador

@Vodkart Era pra isso acontecer, de quando morrer ou deslogar o buff saísse, mais eu tentei hoje cedo e o buff continua quando desloga, não deu tempo de testar se vale também pra quando morresse, pois tive que fazer um favor pra minha prima

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites
  • Moderador

@Vodkart Quando morre estar normal, você perde os atributos dos buffs

OBS: Fiz os teste em todos os buffs, e o único que os atributos não some quando morre/desloga é o vita sio, vita gran siovita gran mas sio o restante você perde os atributos assim que morre/desloga

Lembrando que os scripts são todos iguais, só mudando os atributos mesmo, mais a estrutura é a mesma

Meu Curso sobre Programação para OTServer

Programando OTServer

 

Peça o seu script! Entre agora mesmo no grupo

Developing

 

Conteúdos:

 

Discord: Belmont#7352

Não esqueça do REP+ :)     

Link para o post
Compartilhar em outros sites

no script do onLogin você deixa assim então, aquela parte que te falei pra adc lá em cima lembra? deixa assim:

 

 

	doRemoveConditions(cid, false) 
	for store, buff in pairs(command_buffs_storages) do
    		setPlayerStorageValue(cid, store, 0)
	end

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo