• 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!

Action [TFS 1.0] Custom vocations

Cornex

Web Developer
Staff member
Global Moderator
Joined
Jun 15, 2008
Messages
3,444
Solutions
5
Reaction score
1,166
Location
Sweden
Hello, TFS 1.0 Custom vocations:

Code:
<action itemid="5943" script="epicvocations.lua"/>

Code:
function onUse(cid, item, frompos, itemEx, topos)
    local vocs = {9,10,11,12}
    if isInArray(vocs,getPlayerVocation(cid)) then
        doPlayerSendTextMessage(cid, 4, 'You already are upgraded vocation')
        return false
    else
        local vucs = {1,2,3,4}
        if isInArray(vucs,getPlayerVocation(cid)) then
            doPlayerSendTextMessage(cid, 4, 'You need first normal promotion in order to use this')
        else
            local allVocs = {1,2,3,4,5,6,7,8}
            if not isInArray(allVocs,getPlayerVocation(cid)) then
                doPlayerSendTextMessage(cid, 4, 'You have an invalid vocation')
            else
                -- If master sorcerer
                if getPlayerVocation(cid) == 5 then
                    doPlayerSetVocation(cid, 11)
                    doRemoveItem(item.uid,1)
                -- If elder druid
                elseif getPlayerVocation(cid) == 6 then
                    doPlayerSetVocation(cid, 12)
                    doRemoveItem(item.uid,1)
                -- If royal paladin
                elseif getPlayerVocation(cid) == 7 then
                    doPlayerSetVocation(cid, 10)
                    doRemoveItem(item.uid,1)
                -- If elite knight
                elseif getPlayerVocation(cid) == 8 then
                    doPlayerSetVocation(cid, 9)
                    doRemoveItem(item.uid,1)
                end
            end
        end
    end
    return true
end

VOCATIONS.XML

Code:
<vocations>
    <vocation id="9" clientid="1" name="Epic Elite Knight" description="an epic elite knight" gaincap="25" gainhp="15" gainmana="5" gainhpticks="2" gainhpamount="10" gainmanaticks="4" gainmanaamount="10" manamultiplier="3.0" attackspeed="800" basespeed="220" soulmax="200" gainsoulticks="15" fromvoc="4">
        <formula meleeDamage="1.0" distDamage="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.4"/>
        <skill id="5" multiplier="1.1"/>
        <skill id="6" multiplier="1.1"/>
    </vocation>
    <vocation id="10" clientid="2" name="Epic Royal Paladin" description="a epic royal paladin" gaincap="20" gainhp="10" gainmana="15" gainhpticks="3" gainhpamount="10" gainmanaticks="3" gainmanaamount="10" manamultiplier="1.4" attackspeed="800" basespeed="220" soulmax="200" gainsoulticks="15" fromvoc="3">
        <formula meleeDamage="1.0" distDamage="1.0" defense="1.0" armor="1.0"/>
        <skill id="0" multiplier="1.2"/>
        <skill id="1" multiplier="1.2"/>
        <skill id="2" multiplier="1.2"/>
        <skill id="3" multiplier="1.2"/>
        <skill id="4" multiplier="1.1"/>
        <skill id="5" multiplier="1.1"/>
        <skill id="6" multiplier="1.1"/>
    </vocation>
    <vocation id="11" clientid="3" name="Epic Master Sorcerer" description="a epic master sorcerer" gaincap="10" gainhp="5" gainmana="30" gainhpticks="4" gainhpamount="10" gainmanaticks="2" gainmanaamount="10" manamultiplier="1.1" attackspeed="800" basespeed="220" soulmax="200" gainsoulticks="15" fromvoc="1">
        <formula meleeDamage="1.0" distDamage="1.0" 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" clientid="4" name="Epic Elder Druid" description="an epic elder druid" gaincap="10" gainhp="5" gainmana="30" gainhpticks="4" gainhpamount="10" gainmanaticks="2" gainmanaamount="10" manamultiplier="1.1" attackspeed="800" basespeed="220" soulmax="200" gainsoulticks="15" fromvoc="2">
        <formula meleeDamage="1.0" distDamage="1.0" defense="1.0" armor="1.0"/>
        <skill id="0" multiplier="1.5"/>
        <skill id="1" multiplier="1.8"/>
        <skill id="2" multiplier="1.8"/>
        <skill id="3" multiplier="1.8"/>
        <skill id="4" multiplier="1.8"/>
        <skill id="5" multiplier="1.5"/>
        <skill id="6" multiplier="1.1"/>
    </vocation>
</vocations>
 
Looks great! Let's say I want the Epic Master Sorcerer be able to use the same items as a Master Sorcerer. Do I have to add this vocation name for all the DeEquip/Equips in movements.xml? Or that's not needed?
 
Looks great! Let's say I want the Epic Master Sorcerer be able to use the same items as a Master Sorcerer. Do I have to add this vocation name for all the DeEquip/Equips in movements.xml? Or that's not needed?
Yep, you have to add the vocation name to all the Equip/DeEquips. :p
 
Code:
Lua Script Error: [Action Interface]
data/actions/scripts/custom/enhancedvocations.lua:onUse
data/actions/scripts/custom/enhancedvocations.lua:17: attempt to call global 'doPlayerSetVocation' (a nil value)
stack traceback:
    [C]: in function 'doPlayerSetVocation'
    data/actions/scripts/custom/enhancedvocations.lua:17: in function <data/actions/scripts/custom/enhancedvocations.lua:1>



Haven't changed the script, but i'm using it on a linux server with tfs1.0 10.41.
 
Hello, TFS 1.0 Custom vocations:

Code:
<action itemid="5943" script="epicvocations.lua"/>

Code:
function onUse(cid, item, frompos, itemEx, topos)
    local vocs = {9,10,11,12}
    if isInArray(vocs,getPlayerVocation(cid)) then
        doPlayerSendTextMessage(cid, 4, 'You already are upgraded vocation')
        return false
    else
        local vucs = {1,2,3,4}
        if isInArray(vucs,getPlayerVocation(cid)) then
            doPlayerSendTextMessage(cid, 4, 'You need first normal promotion in order to use this')
        else
            local allVocs = {1,2,3,4,5,6,7,8}
            if not isInArray(allVocs,getPlayerVocation(cid)) then
                doPlayerSendTextMessage(cid, 4, 'You have an invalid vocation')
            else
                -- If master sorcerer
                if getPlayerVocation(cid) == 5 then
                    doPlayerSetVocation(cid, 11)
                    doRemoveItem(item.uid,1)
                -- If elder druid
                elseif getPlayerVocation(cid) == 6 then
                    doPlayerSetVocation(cid, 12)
                    doRemoveItem(item.uid,1)
                -- If royal paladin
                elseif getPlayerVocation(cid) == 7 then
                    doPlayerSetVocation(cid, 10)
                    doRemoveItem(item.uid,1)
                -- If elite knight
                elseif getPlayerVocation(cid) == 8 then
                    doPlayerSetVocation(cid, 9)
                    doRemoveItem(item.uid,1)
                end
            end
        end
    end
    return true
end

VOCATIONS.XML

Code:
<vocations>
    <vocation id="9" clientid="1" name="Epic Elite Knight" description="an epic elite knight" gaincap="25" gainhp="15" gainmana="5" gainhpticks="2" gainhpamount="10" gainmanaticks="4" gainmanaamount="10" manamultiplier="3.0" attackspeed="800" basespeed="220" soulmax="200" gainsoulticks="15" fromvoc="4">
        <formula meleeDamage="1.0" distDamage="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.4"/>
        <skill id="5" multiplier="1.1"/>
        <skill id="6" multiplier="1.1"/>
    </vocation>
    <vocation id="10" clientid="2" name="Epic Royal Paladin" description="a epic royal paladin" gaincap="20" gainhp="10" gainmana="15" gainhpticks="3" gainhpamount="10" gainmanaticks="3" gainmanaamount="10" manamultiplier="1.4" attackspeed="800" basespeed="220" soulmax="200" gainsoulticks="15" fromvoc="3">
        <formula meleeDamage="1.0" distDamage="1.0" defense="1.0" armor="1.0"/>
        <skill id="0" multiplier="1.2"/>
        <skill id="1" multiplier="1.2"/>
        <skill id="2" multiplier="1.2"/>
        <skill id="3" multiplier="1.2"/>
        <skill id="4" multiplier="1.1"/>
        <skill id="5" multiplier="1.1"/>
        <skill id="6" multiplier="1.1"/>
    </vocation>
    <vocation id="11" clientid="3" name="Epic Master Sorcerer" description="a epic master sorcerer" gaincap="10" gainhp="5" gainmana="30" gainhpticks="4" gainhpamount="10" gainmanaticks="2" gainmanaamount="10" manamultiplier="1.1" attackspeed="800" basespeed="220" soulmax="200" gainsoulticks="15" fromvoc="1">
        <formula meleeDamage="1.0" distDamage="1.0" 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" clientid="4" name="Epic Elder Druid" description="an epic elder druid" gaincap="10" gainhp="5" gainmana="30" gainhpticks="4" gainhpamount="10" gainmanaticks="2" gainmanaamount="10" manamultiplier="1.1" attackspeed="800" basespeed="220" soulmax="200" gainsoulticks="15" fromvoc="2">
        <formula meleeDamage="1.0" distDamage="1.0" defense="1.0" armor="1.0"/>
        <skill id="0" multiplier="1.5"/>
        <skill id="1" multiplier="1.8"/>
        <skill id="2" multiplier="1.8"/>
        <skill id="3" multiplier="1.8"/>
        <skill id="4" multiplier="1.8"/>
        <skill id="5" multiplier="1.5"/>
        <skill id="6" multiplier="1.1"/>
    </vocation>
</vocations>
how i can set this vocations only for premiums account?
 
how i can set this vocations only for premiums account?
Code:
function onUse(cid, item, frompos, itemEx, topos)
    if isPremium(cid) then
        local vocs = {9,10,11,12}
        if isInArray(vocs,getPlayerVocation(cid)) then
            doPlayerSendTextMessage(cid, 4, 'You already are upgraded vocation')
            return false
        else
            local vucs = {1,2,3,4}
            if isInArray(vucs,getPlayerVocation(cid)) then
                doPlayerSendTextMessage(cid, 4, 'You need first normal promotion in order to use this')
            else
                local allVocs = {1,2,3,4,5,6,7,8}
                if not isInArray(allVocs,getPlayerVocation(cid)) then
                    doPlayerSendTextMessage(cid, 4, 'You have an invalid vocation')
                else
                    -- If master sorcerer
                    if getPlayerVocation(cid) == 5 then
                        doPlayerSetVocation(cid, 11)
                        doRemoveItem(item.uid,1)
                    -- If elder druid
                    elseif getPlayerVocation(cid) == 6 then
                        doPlayerSetVocation(cid, 12)
                        doRemoveItem(item.uid,1)
                    -- If royal paladin
                    elseif getPlayerVocation(cid) == 7 then
                        doPlayerSetVocation(cid, 10)
                        doRemoveItem(item.uid,1)
                    -- If elite knight
                    elseif getPlayerVocation(cid) == 8 then
                        doPlayerSetVocation(cid, 9)
                        doRemoveItem(item.uid,1)
                    end
                end
            end
        end
    end
    return true
end
 
Back
Top