• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Skill Quest

juansanchez

Advanced OT User
Joined
Apr 2, 2015
Messages
223
Reaction score
150
Hey people, i've looked everywhere, in a lot of forums, but i just can't seem to find one that works in my server.
I need a script, that gets the skill from the player and add 12 more (if knight or paladin) or 6 more (if druid or socerer). So if the Sorc is ML 102 it will go to 108, and same thing to Knights and Paladins.
I'm having a hard time finding one, none of the ones i found worked yet. So if anyone could help me, and also, there are 3 new vocations in my server:

<vocation id="9" name="Drunou" description="a drunou" needpremium="0" gaincap="20" gainhp="10" gainmana="15" gainhpticks="4" gainhpamount="15" gainmanaticks="4" gainmanaamount="20" manamultiplier="1.6" attackspeed="800" soulmax="200" gainsoulticks="15" fromvoc="9">
<formula meleeDamage="2.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" armor="1.0"/>
<skill id="0" multiplier="1.1"/>
<skill id="1" multiplier="1.1"/>
<skill id="2" multiplier="1.1"/>
<skill id="3" multiplier="1.1"/>
<skill id="4" multiplier="1.1"/>
<skill id="5" multiplier="1.1"/>
<skill id="6" multiplier="1.1"/>
</vocation>
<vocation id="10" name="Lord Drunou" description="an lord drunou" needpremium="0" gaincap="20" gainhp="10" gainmana="15" gainhpticks="3" gainhpamount="20" gainmanaticks="3" gainmanaamount="25" manamultiplier="2.5" attackspeed="800" soulmax="200" gainsoulticks="15" fromvoc="9" lessloss="3">
<formula meleeDamage="2.6" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.3" defense="1.0" armor="1.0"/>
<skill id="0" multiplier="1.1"/>
<skill id="1" multiplier="1.1"/>
<skill id="2" multiplier="1.1"/>
<skill id="3" multiplier="1.1"/>
<skill id="4" multiplier="1.1"/>
<skill id="5" multiplier="1.1"/>
<skill id="6" multiplier="1.1"/>
</vocation>
<vocation id="11" name="Infernalist" description="a infernalist" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="6" gainhpamount="15" gainmanaticks="3" gainmanaamount="60" manamultiplier="1.1" attackspeed="1700" soulmax="200" gainsoulticks="15" fromvoc="11">
<formula meleeDamage="1.1" distDamage="1.0" wandDamage="1.0" magDamage="1.1" magHealingDamage="1.6" defense="1.0" armor="1.0"/>
<skill id="0" multiplier="1.5"/>
<skill id="1" multiplier="2.0"/>
<skill id="2" multiplier="2.0"/>
<skill id="3" multiplier="2.0"/>
<skill id="4" multiplier="2.0"/>
<skill id="5" multiplier="1.5"/>
<skill id="6" multiplier="1.1"/>
</vocation>
<vocation id="12" name="Master Infernalist" description="an master infernalist" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="4" gainhpamount="20" gainmanaticks="2" gainmanaamount="70" manamultiplier="1.1" attackspeed="1700" soulmax="200" gainsoulticks="15" fromvoc="11" lessloss="3">
<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.6" defense="1.0" armor="1.0"/>
<skill id="0" multiplier="1.5"/>
<skill id="1" multiplier="2.0"/>
<skill id="2" multiplier="2.0"/>
<skill id="3" multiplier="2.0"/>
<skill id="4" multiplier="2.0"/>
<skill id="5" multiplier="1.5"/>
<skill id="6" multiplier="1.1"/>
</vocation>
<vocation id="13" name="Knocker" description="a knocker" needpremium="0" gaincap="15" gainhp="5" gainmana="30" gainhpticks="2" gainhpamount="20" gainmanaticks="4" gainmanaamount="60" manamultiplier="3.0" attackspeed="700" soulmax="200" gainsoulticks="15" fromvoc="13" lessloss="3">
<formula meleeDamage="3.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" armor="1.0"/>
<skill id="0" multiplier="1.1"/>
<skill id="1" multiplier="1.0"/>
<skill id="2" multiplier="1.0"/>
<skill id="3" multiplier="1.0"/>
<skill id="4" multiplier="1.0"/>
<skill id="5" multiplier="1.0"/>
<skill id="6" multiplier="1.0"/>
</vocation>
<vocation id="14" name="Champion Knocker" description="a champion knocker" needpremium="0" gaincap="15" gainhp="5" gainmana="30" gainhpticks="2" gainhpamount="20" gainmanaticks="4" gainmanaamount="60" manamultiplier="3.0" attackspeed="700" soulmax="200" gainsoulticks="15" fromvoc="13" lessloss="3">
<formula meleeDamage="3.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.2" defense="1.0" armor="1.0"/>
<skill id="0" multiplier="1.1"/>
<skill id="1" multiplier="1.1"/>
<skill id="2" multiplier="1.1"/>
<skill id="3" multiplier="1.1"/>
<skill id="4" multiplier="1.1"/>
<skill id="5" multiplier="1.1"/>
<skill id="6" multiplier="1.1"/>
</vocation>

Lord Drunou = Add 12 more Club Fighting
Master Infernalist = Add 6 more Magic Level
Champion Knocker = Add 12 more Fist Fighting

If anyone can help me i'd really appreciate it.
I use TFS 0.3.7
 
Code:
function doPlayerAddMagLevel(cid, n)
    if n <= 0 then
        return false
    end

    local magLevel = getPlayerMagLevel(cid, true)
    local percent = getPlayerSpentMana(cid) / getPlayerRequiredMana(cid, magLevel + 1)
    for i = 1, n do
        doPlayerAddSpentMana(cid, getPlayerRequiredMana(cid, magLevel + i) - getPlayerSpentMana(cid))
    end
    doPlayerAddSpentMana(cid, percent * getPlayerRequiredMana(cid, magLevel + n + 1))

    return true
end

function doPlayerAddSkillLevel(cid, skillId, n)
    if n <= 0 then
        return false
    end

    local skillLevel = getPlayerSkillLevel(cid, skillId)
    local percent = getPlayerSkillTries(cid, skillId) / getPlayerRequiredSkillTries(cid, skillId, skillLevel + 1)
    for i = 1, n do
        doPlayerAddSkillTry(cid, skillId, getPlayerRequiredSkillTries(cid, skillId, skillLevel + i) - getPlayerSkillTries(cid, skillId))
    end
    doPlayerAddSkillTry(cid, skillId, percent * getPlayerRequiredSkillTries(cid, skillId, skillLevel + n + 1))

    return true
end

These functions will preserve the player's current magic level/skill progress, so if you give 2 magic levels to a player currently on magic level 50/45%, he'll get to magic level 52/45%. Here is how you use them:

Code:
doPlayerAddMagLevel(cid, 6) -- gives 6 magic levels
doPlayerAddSkillLevel(cid, SKILL_SWORD, 12) -- gives 12 sword skill levels
 
Code:
function doPlayerAddMagLevel(cid, n)
    if n <= 0 then
        return false
    end

    local magLevel = getPlayerMagLevel(cid, true)
    local percent = getPlayerSpentMana(cid) / getPlayerRequiredMana(cid, magLevel + 1)
    for i = 1, n do
        doPlayerAddSpentMana(cid, getPlayerRequiredMana(cid, magLevel + i) - getPlayerSpentMana(cid))
    end
    doPlayerAddSpentMana(cid, percent * getPlayerRequiredMana(cid, magLevel + n + 1))

    return true
end

function doPlayerAddSkillLevel(cid, skillId, n)
    if n <= 0 then
        return false
    end

    local skillLevel = getPlayerSkillLevel(cid, skillId)
    local percent = getPlayerSkillTries(cid, skillId) / getPlayerRequiredSkillTries(cid, skillId, skillLevel + 1)
    for i = 1, n do
        doPlayerAddSkillTry(cid, skillId, getPlayerRequiredSkillTries(cid, skillId, skillLevel + i) - getPlayerSkillTries(cid, skillId))
    end
    doPlayerAddSkillTry(cid, skillId, percent * getPlayerRequiredSkillTries(cid, skillId, skillLevel + n + 1))

    return true
end

These functions will preserve the player's current magic level/skill progress, so if you give 2 magic levels to a player currently on magic level 50/45%, he'll get to magic level 52/45%. Here is how you use them:

Code:
doPlayerAddMagLevel(cid, 6) -- gives 6 magic levels
doPlayerAddSkillLevel(cid, SKILL_SWORD, 12) -- gives 12 sword skill levels

Could you explain me a little better? I'm a bit confused, sorry for the delay on answering, i was without a computer for a time.
 
Either put the functions into lib/050.functions
or place into the script you want to use them in.

Then call the function like any other function already pre-made in the server.

Code:
function onUse(cid, blah blah)
    doPlayerAddMagLevel(cid, 6) -- gives 6 magic levels
    doPlayerAddSkillLevel(cid, SKILL_SWORD, 12) -- gives 12 sword skill levels
    return true
end
 
Back
Top