Ir para conteúdo

Eliminando Erro De Vocations


romera

Posts Recomendados

Ola a todos, vou ensinar a quem não sabe como eliminar um erro muito conhecido, depois de criar sua vocation:

 

You see yourself. You are .

 

Repare bem, quando dou look no meu Char , Não aparece a Promotion e Consecutivamente o char buga, não podendo usar nenhuma magia. Bugando todo o char.

 

OBS1: Isso aconteçe muitas das vezes com server's abaixo de 8.50. Ou server's com o function desatualiazado.

 

OBS2: Não tenha preguiça de ler para depois falar que não funciono.

 

Vamos lá:

 

1º - Abra seu OT, 'data/lib/function', vai estar mais ou menos assim:

 

2º - Mas antes de copiar, olha no seu function primeiro se tem alguma parte igual a essa:

 

return (isInArray({1,5}, getPlayerVocation(cid)) == TRUE)

 

Não exatamente igual, mas que tenha os dois numeros? Caso tiver, adicione as ID's das proximas promotions entendeu?

Apenas adicione 9,10,11,12:

Ficando assim:

 

return (isInArray({1,5,9}, getPlayerVocation(cid)) == TRUE)

return (isInArray({2,6,10}, getPlayerVocation(cid)) == TRUE)

return (isInArray({3,7,11}, getPlayerVocation(cid)) == TRUE)

return (isInArray({4,8,12}, getPlayerVocation(cid)) == TRUE)

 

3º - Fazendo isso sucessivamente ate as 4 vocações:

 

Não tem que ser nessa ordem os números, e sim a ordem do nível de vocações.
EX: Knight = ID 4, Elite Knight = ID 8, Epic Knight = ID 12.

 

4º - (Opcional) E se você for criar mais vocações siga a ordem das promotion's e coloque as ID's deles também.

Ex:

 

Ex:
ID1= Sorcerer "return (isInArray({1,5,9,13,17}, getPlayerVocation(cid)) == TRUE)"
ID2= Druid "return (isInArray({2,6,10,14,18}, getPlayerVocation(cid)) == TRUE)"
ID3= Paladin "return (isInArray({3,7,11,15,19}, getPlayerVocation(cid)) == TRUE)"
ID4= Knight "return (isInArray({4,8,12,16,20}, getPlayerVocation(cid)) == TRUE)"

 

Mas onde colocar isso??

Aperte CTRL + F, e digite "return (isInArray":

E depois adicione as ID's.

 

 

function doPlayerGiveItem(cid, itemid, amount, subType)

local item = 0

if(isItemStackable(itemid) == TRUE) then

item = doCreateItemEx(itemid, amount)

if(doPlayerAddItemEx(cid, item, TRUE) ~= RETURNVALUE_NOERROR) then

return LUA_ERROR

end

else

for i = 1, amount do

item = doCreateItemEx(itemid, subType)

if(doPlayerAddItemEx(cid, item, TRUE) ~= RETURNVALUE_NOERROR) then

return LUA_ERROR

end

end

end

 

return LUA_NO_ERROR

end

 

function doPlayerTakeItem(cid, itemid, amount)

if(getPlayerItemCount(cid, itemid) < amount or doPlayerRemoveItem(cid, itemid, amount) ~= TRUE) then

return LUA_ERROR

end

 

return LUA_NO_ERROR

end

 

function doPlayerBuyItem(cid, itemid, count, cost, charges)

if(doPlayerRemoveMoney(cid, cost) ~= TRUE) then

return LUA_ERROR

end

 

return doPlayerGiveItem(cid, itemid, count, charges)

end

 

function doPlayerBuyItemContainer(cid, containerid, itemid, count, cost, charges)

if(doPlayerRemoveMoney(cid, cost) ~= TRUE) then

return LUA_ERROR

end

 

for i = 1, count do

local container = doCreateItemEx(containerid, 1)

for x = 1, getContainerCapById(containerid) do

doAddContainerItem(container, itemid, charges)

end

 

if(doPlayerAddItemEx(cid, container, TRUE) ~= RETURNVALUE_NOERROR) then

return LUA_ERROR

end

end

 

return LUA_NO_ERROR

end

 

function doPlayerSellItem(cid, itemid, count, cost)

if(doPlayerTakeItem(cid, itemid, count) ~= LUA_NO_ERROR) then

return LUA_ERROR

end

 

if(doPlayerAddMoney(cid, cost) ~= TRUE) then

error('Could not add money to: ' .. getPlayerName(cid) .. ' (' .. cost .. 'gp).')

end

 

return LUA_NO_ERROR

end

 

function isInRange(pos, fromPos, toPos)

return (pos.x >= fromPos.x and pos.y >= fromPos.y and pos.z >= fromPos.z and pos.x <= toPos.x and pos.y <= toPos.y and pos.z <= toPos.z) and TRUE or FALSE

end

 

function isPremium(cid)

return (isPlayer(cid) == TRUE and (getPlayerPremiumDays(cid) > 0 or getConfigInfo('freePremium') == "yes")) and TRUE or FALSE

end

 

function getMonthDayEnding(day)

if day == "01" or day == "21" or day == "31" then

return "st"

elseif day == "02" or day == "22" then

return "nd"

elseif day == "03" or day == "23" then

return "rd"

else

return "th"

end

end

 

function getMonthString(m)

return os.date("%B", os.time{year = 1970, month = m, day = 1})

end

 

function getArticle(str)

return str:find("[AaEeIiOoUuYy]") == 1 and "an" or "a"

end

 

function isNumber(str)

return tonumber(str) ~= nil and TRUE or FALSE

end

 

function getDistanceBetween(firstPosition, secondPosition)

local xDif = math.abs(firstPosition.x - secondPosition.x)

local yDif = math.abs(firstPosition.y - secondPosition.y)

 

local posDif = math.max(xDif, yDif)

if(firstPosition.z ~= secondPosition.z) then

posDif = posDif + 9 + 6

end

return posDif

end

 

function doPlayerAddAddons(cid, addon)

for i = 0, table.maxn(maleOutfits) do

doPlayerAddOutfit(cid, maleOutfits, addon)

end

 

for i = 0, table.maxn(femaleOutfits) do

doPlayerAddOutfit(cid, femaleOutfits, addon)

end

end

 

function isSorcerer(cid)

if(isPlayer(cid) == FALSE) then

debugPrint("isSorcerer: Jogador nao encontrado.")

return false

end

 

return (isInArray({1,5,9}, getPlayerVocation(cid)) == TRUE)

end

 

function isDruid(cid)

if(isPlayer(cid) == FALSE) then

debugPrint("isDruid: Jogador nao encontrado.")

return false

end

 

return (isInArray({2,6,10}, getPlayerVocation(cid)) == TRUE)

end

 

function isPaladin(cid)

if(isPlayer(cid) == FALSE) then

debugPrint("isPaladin: Jogador nao encontrado.")

return false

end

 

return (isInArray({3,7,11}, getPlayerVocation(cid)) == TRUE)

end

 

function isKnight(cid)

if(isPlayer(cid) == FALSE) then

debugPrint("isKnight: Jogador nao encontrado.")

return false

end

 

return (isInArray({4,8,12}, getPlayerVocation(cid)) == TRUE)

end

 

function isRookie(cid)

if(isPlayer(cid) == FALSE) then

debugPrint("isRookie: Jogador nao encontrado.")

return false

end

 

return (isInArray({0}, getPlayerVocation(cid)) == TRUE)

end

 

function getDirectionTo(pos1, pos2)

local dir = NORTH

if(pos1.x > pos2.x) then

dir = WEST

if(pos1.y > pos2.y) then

dir = NORTHWEST

elseif(pos1.y < pos2.y) then

dir = SOUTHWEST

end

elseif(pos1.x < pos2.x) then

dir = EAST

if(pos1.y > pos2.y) then

dir = NORTHEAST

elseif(pos1.y < pos2.y) then

dir = SOUTHEAST

end

else

if(pos1.y > pos2.y) then

dir = NORTH

elseif(pos1.y < pos2.y) then

dir = SOUTH

end

end

return dir

end

 

function getPlayerLookPos(cid)

return getPosByDir(getThingPos(cid), getPlayerLookDir(cid))

end

 

function getPosByDir(fromPosition, direction, size)

local n = size or 1

 

local pos = fromPosition

if(direction == NORTH) then

pos.y = pos.y - n

elseif(direction == SOUTH) then

pos.y = pos.y + n

elseif(direction == WEST) then

pos.x = pos.x - n

elseif(direction == EAST) then

pos.x = pos.x + n

elseif(direction == NORTHWEST) then

pos.y = pos.y - n

pos.x = pos.x - n

elseif(direction == NORTHEAST) then

pos.y = pos.y - n

pos.x = pos.x + n

elseif(direction == SOUTHWEST) then

pos.y = pos.y + n

pos.x = pos.x - n

elseif(direction == SOUTHEAST) then

pos.y = pos.y + n

pos.x = pos.x + n

end

 

return pos

end

 

function getPlayerMoney(cid)

return ((getPlayerItemCount(cid, ITEM_CRYSTAL_COIN) * 10000) + (getPlayerItemCount(cid, ITEM_PLATINUM_COIN) * 100) + getPlayerItemCount(cid, ITEM_GOLD_COIN))

end

 

function doPlayerWithdrawAllMoney(cid)

return doPlayerWithdrawMoney(cid, getPlayerBalance(cid))

end

 

function doPlayerDepositAllMoney(cid)

return doPlayerDepositMoney(cid, getPlayerMoney(cid))

end

 

function doPlayerTransferAllMoneyTo(cid, target)

return doPlayerTransferMoneyTo(cid, target, getPlayerBalance(cid))

end

 

function playerExists(name)

return getPlayerGUIDByName(name) ~= 0

end

 

function getTibiaTime()

local minutes = getWorldTime()

local hours = 0

while (minutes > 60) do

hours = hours + 1

minutes = minutes - 60

end

 

return {hours = hours, minutes = minutes}

end

 

function doWriteLogFile(file, text)

local file = io.open(file, "a+")

file:write("[" .. os.date("%d/%m/%Y %H:%M:%S") .. "] " .. text .. "\n")

file:close()

end

 

function getExperienceForLevel(lv)

lv = lv - 1

return ((50 * lv * lv * lv) - (150 * lv * lv) + (400 * lv)) / 3

end

 

function doMutePlayer(cid, time)

local condition = createConditionObject(CONDITION_MUTED)

setConditionParam(condition, CONDITION_PARAM_TICKS, time * 1000)

return doAddCondition(cid, condition)

end

 

function getPlayerVocationName(cid)

return getVocationInfo(getPlayerVocation(cid)).name

end

 

function getPromotedVocation(vid)

return getVocationInfo(vid).promotedVocation

end

 

function doPlayerRemovePremiumDays(cid, days)

return doPlayerAddPremiumDays(cid, -days)

end

 

function getPlayerMasterPos(cid)

return getTownTemplePosition(getPlayerTown(cid))

end

 

function getItemNameById(itemid)

return getItemDescriptionsById(itemid).name

end

 

function getItemPluralNameById(itemid)

return getItemDescriptionsById(itemid).plural

end

 

function getItemArticleById(itemid)

return getItemDescriptionsById(itemid).article

end

 

function getItemName(uid)

return getItemDescriptions(uid).name

end

 

function getItemPluralName(uid)

return getItemDescriptions(uid).plural

end

 

function getItemArticle(uid)

return getItemDescriptions(uid).article

end

 

function getItemText(uid)

return getItemDescriptions(uid).text

end

 

function getItemWriter(uid)

return getItemDescriptions(uid).writer

end

 

function getItemDate(uid)

return getItemDescriptions(uid).date

end

 

function getTilePzInfo(pos)

return getTileInfo(pos).protection and TRUE or FALSE

end

 

function getTileZoneInfo(pos)

local tmp = getTileInfo(pos)

if(tmp.pvp) then

return 2

end

 

if(tmp.nopvp) then

return 1

end

 

return 0

end

 

function debugPrint(text)

return io.stdout:write(text)

end

 

function doShutdown()

return doSetGameState(GAMESTATE_SHUTDOWN)

end

 

function doSummonCreature(name, pos)

local cid = doCreateMonster(name, pos)

if(cid ~= LUA_ERROR) then

return cid

end

 

cid = doCreateNpc(name, pos)

return cid

end

 

function getOnlinePlayers()

local tmp = getPlayersOnline()

local players = {}

for i, cid in ipairs(tmp) do

table.insert(players, getCreatureName(cid))

end

 

return players

end

 

function getPlayerByName(name)

local cid = getCreatureByName(name)

return isPlayer(cid) == TRUE and cid or nil

end

 

function isPlayerGhost(cid)

return isPlayer(cid) == TRUE and getCreatureCondition(cid, CONDITION_GAMEMASTER, GAMEMASTER_INVISIBLE) or FALSE

end

 

function doPlayerSetExperienceRate(cid, value)

return doPlayerSetRate(cid, SKILL__LEVEL, value)

end

 

function doPlayerSetMagicRate(cid, value)

return doPlayerSetRate(cid, SKILL__MAGLEVEL, value)

end

 

function getPlayerFrags(cid)

return math.ceil((getPlayerRedSkullTicks(cid) / getConfigInfo('timeToDecreaseFrags')) + 1)

end

 

function getPartyLeader(cid)

local party = getPartyMembers(cid)

if(type(party) ~= 'table') then

return 0

end

 

return party[1]

end

 

function isInParty(cid)

return type(getPartyMembers(cid)) == 'table' and TRUE or FALSE

end

 

function isPrivateChannel(channelId)

for i = CHANNEL_GUILD, CHANNEL_HELP do

if(channelId == i) then

return FALSE

end

end

 

return TRUE

end

 

function doConvertIntegerToIp(int, mask)

local b4 = bit.urshift(bit.uband(int, 4278190080), 24)

local b3 = bit.urshift(bit.uband(int, 16711680), 16)

local b2 = bit.urshift(bit.uband(int, 65280), 8)

local b1 = bit.urshift(bit.uband(int, 255), 0)

if(mask ~= nil) then

local m4 = bit.urshift(bit.uband(mask, 4278190080), 24)

local m3 = bit.urshift(bit.uband(mask, 16711680), 16)

local m2 = bit.urshift(bit.uband(mask, 65280), 8)

local m1 = bit.urshift(bit.uband(mask, 255), 0)

if((m1 == 255 or m1 == 0) and (m2 == 255 or m2 == 0) and (m3 == 255 or m3 == 0) and (m4 == 255 or m4 == 0)) then

if m1 == 0 then b1 = "x" end

if m2 == 0 then b2 = "x" end

if m3 == 0 then b3 = "x" end

if m4 == 0 then b4 = "x" end

elseif(m1 ~= 255 or m2 ~= 255 or m3 ~= 255 or m4 ~= 255) then

return b1 .. "." .. b2 .. "." .. b3 .. "." .. b4 .. " : " .. m1 .. "." .. m2 .. "." .. m3 .. "." .. m4

end

end

 

return b1 .. "." .. b2 .. "." .. b3 .. "." .. b4

end

 

function doConvertIpToInteger(str)

local maskindex = str:find(":")

if(maskindex == nil) then

local ipint = 0

local maskint = 0

 

local index = 24

for b in str:gmatch("([x%d]+)%.?") do

if(b ~= "x") then

if(b:find("x") ~= nil) then

return 0, 0

end

 

if(tonumber(b) > 255 or tonumber(b) < 0) then

return 0, 0

end

 

maskint = bit.ubor(maskint, bit.ulshift(255, index))

ipint = bit.ubor(ipint, bit.ulshift(b, index))

end

 

index = index - 8

if(index < 0) then

break

end

end

 

if(index ~= -8) then

return 0, 0

end

 

return ipint, maskint

end

 

if(maskindex <= 1) then

return 0, 0

end

 

local ipstring = str:sub(1, maskindex - 1)

local maskstring = str:sub(maskindex)

 

local ipint = 0

local maskint = 0

 

local index = 0

for b in ipstring:gmatch("(%d+).?") do

if(tonumber(b) > 255 or tonumber(b) < 0) then

return 0, 0

end

 

ipint = bit.ubor(ipint, bit.ulshift(b, index))

index = index + 8

if(index > 24) then

break

end

end

 

if(index ~= 32) then

return 0, 0

end

 

index = 0

for b in maskstring:gmatch("(%d+)%.?") do

if(tonumber(b) > 255 or tonumber(b) < 0) then

return 0, 0

end

 

maskint = bit.ubor(maskint, bit.ulshift(b, index))

index = index + 8

if(index > 24) then

break

end

end

 

if(index ~= 32) then

return 0, 0

end

 

return ipint, maskint

end

 

function getBooleanFromString(str)

return (str:lower() == "yes" or str:lower() == "true" or (tonumber(str) and tonumber(str) > 0)) and TRUE or FALSE

end

 

function doCopyItem(item, attributes)

local attributes = attributes or FALSE

 

local ret = doCreateItemEx(item.itemid, item.type)

if(attributes == TRUE) then

if(item.actionid > 0) then

doSetItemActionId(ret, item.actionid)

end

end

 

if(isContainer(item.uid) == TRUE) then

for i = (getContainerSize(item.uid) - 1), 0, -1 do

local tmp = getContainerItem(item.uid, i)

if(tmp.itemid > 0) then

doAddContainerItemEx(ret, doCopyItem(tmp, TRUE).uid)

end

end

end

 

return getThing(ret)

end

 

table.find = function (table, value)

for i, v in pairs(table) do

if(v == value) then

return i

end

end

 

return nil

end

 

table.isStrIn = function (txt, str)

for i, v in pairs(str) do

if(txt:find(v) and not txt:find('(%w+)' .. v) and not txt:find(v .. '(%w+)')) then

return true

end

end

 

return false

end

 

table.countElements = function (table, item)

local count = 0

for i, n in pairs(table) do

if(item == n) then

count = count + 1

end

end

 

return count

end

 

table.getCombinations = function (table, num)

local a, number, select, newlist = {}, #table, num, {}

for i = 1, select do

a[#a + 1] = i

end

 

local newthing = {}

while(true) do

local newrow = {}

for i = 1, select do

newrow[#newrow + 1] = table[a]

end

 

newlist[#newlist + 1] = newrow

i = select

while(a == (number - select + i)) do

i = i - 1

end

 

if(i < 1) then

break

end

 

a = a + 1

for j = i, select do

a[j] = a + j - i

end

end

 

return newlist

end

 

string.split = function (str)

local t = {}

local function helper(word)

table.insert(t, word)

return ""

end

 

if(not str:gsub("%w+", helper):find("%S")) then

return t

end

end

 

string.trim = function (str)

return (string.gsub(str, "^%s*(.-)%s*{:content:}quot;, "%1"))

end

 

string.explode = function (str, sep)

local pos, t = 1, {}

if #sep == 0 or #str == 0 then

return

end

 

for s, e in function() return str:find(sep, pos) end do

table.insert(t, str:sub(pos, s - 1):trim())

pos = e + 1

end

 

table.insert(t, str:sub(pos):trim())

return t

end

 

 

5º - Salve, feche va em "data", abra seu server e veja se o procedimento junto a dica deu certo.

 

OBS: Se não funcionar ponha aqui seu post vou analisar melhor.

 

----------------------------------<><><><><><><><><><>---------------------------------

 

MAS, se seu server for atualizado, digo, na pasta, 'data/lib', tiver vários arquivos, e tiver um arquivo 031-vocations, ou coisa assim, terás que mudar apenas aqui, a mesma coisa aí em cima, veja:

 

function isSorcerer(cid)
return isInArray({1, 5}, getPlayerVocation(cid))
end

function isDruid(cid)
return isInArray({2, 6}, getPlayerVocation(cid))
end

function isPaladin(cid)
return isInArray({3, 7}, getPlayerVocation(cid))
end

function isKnight(cid)
return isInArray({4, 8}, getPlayerVocation(cid))
end

function isRookie(cid)
return isInArray({0}, getPlayerVocation(cid))
end

 

DISSO, para isso:

 

function isSorcerer(cid)
return isInArray({1, 5, 9}, getPlayerVocation(cid))
end

function isDruid(cid)
return isInArray({2, 6, 10}, getPlayerVocation(cid))
end

function isPaladin(cid)
return isInArray({3, 7, 11}, getPlayerVocation(cid))
end

function isKnight(cid)
return isInArray({4, 8, 12}, getPlayerVocation(cid))
end

function isRookie(cid)
return isInArray({0}, getPlayerVocation(cid))
end

 

OBS: Mude as ID de acordo com o que você colocar nas vocations.xml.

Editado por romera
Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

cara nao consegui... o master, royal, elite e elder funfam, mas os epic nao... tentei copiar sua function nao deu, e nao sei que parte eu add as id das voc ajuda ae :/

 

--- ae consegui arrumar, se alguem no futuro tiver esse erro e estiver lendo aqui vai nesse post http://www.xtibia.com/forum/topic/147043-resolvido-second-promotionvocation/ copia os arquivos do cara que ta pedindo ajuda e pega o 031 vocations do cara que ta ajudando e pronto!

Editado por Tibiarx
Link para o comentário
Compartilhar em outros sites

cara nao consegui... o master, royal, elite e elder funfam, mas os epic nao... tentei copiar sua function nao deu, e nao sei que parte eu add as id das voc ajuda ae :/

 

--- ae consegui arrumar, se alguem no futuro tiver esse erro e estiver lendo aqui vai nesse post http://www.xtibia.com/forum/topic/147043-resolvido-second-promotionvocation/ copia os arquivos do cara que ta pedindo ajuda e pega o 031 vocations do cara que ta ajudando e pronto!

 

Cara leia todo o tópico, não apenas copie!!!

Eu disse a mesma coisa!!

 

--EDIT--

 

Modifiquei o Tutorial para simplificar o processo e entendimento.

Editado por romera
Link para o comentário
Compartilhar em outros sites

cara nao sei se foi só comigo, mas o erro era na lib/vocations e nao na function

 

Ata....Mals aew...

Hehe aí é diferente...

 

Se tem que muda no 031-vocations, verdade valeu por lembrar:

Mas esse seu server é o atualizado como disse aí emcima, vo Edit, pra por isso também!!

Editado por romera
Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

kra dessa vez nao foi eu vo en data/lib/ 031-vocation mudo de EX: 1, 5 para 1, 5, 9 mais nda acontesse aina fika

 

You see yourself. You are .

 

Então faz assim poe seu vocation.xml aki...

Ou talvez tenha que muda nas functions..

Editado por romera
Link para o comentário
Compartilhar em outros sites

<?xml version="1.0" encoding="UTF-8"?>

<vocations>

<vocation id="0" name="None" description="none" needpremium="0" gaincap="5" gainhp="5" gainmana="5" gainhpticks="6" gainhpamount="1" gainmanaticks="6" gainmanaamount="1" manamultiplier="4.0" attackspeed="2000" soulmax="100" gainsoulticks="120" fromvoc="0" attackable="no">

<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>

<skill fist="1.5" club="2.0" sword="2.0" axe="2.0" distance="2.0" shielding="1.5" fishing="1.1" experience="1.0"/>

</vocation>

<vocation id="1" name="Sorcerer" description="a sorcerer" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="6" gainhpamount="40" gainmanaticks="3" gainmanaamount="50" manamultiplier="1.1" attackspeed="1000" soulmax="100" gainsoulticks="120" fromvoc="1">

<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>

<skill fist="1.5" club="2.0" sword="2.0" axe="2.0" distance="2.0" shielding="1.5" fishing="1.1" experience="1.0"/>

</vocation>

<vocation id="2" name="Druid" description="a druid" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="6" gainhpamount="40" gainmanaticks="3" gainmanaamount="50" manamultiplier="1.1" attackspeed="1300" soulmax="100" gainsoulticks="120" fromvoc="2">

<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>

<skill fist="1.5" club="1.8" sword="1.8" axe="1.8" distance="1.8" shielding="1.5" fishing="1.1" experience="1.0"/>

</vocation>

<vocation id="3" name="Paladin" description="a paladin" needpremium="0" gaincap="20" gainhp="10" gainmana="15" gainhpticks="4" gainhpamount="50" gainmanaticks="4" gainmanaamount="40" manamultiplier="1.4" attackspeed="1300" soulmax="100" gainsoulticks="120" fromvoc="3">

<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>

<skill fist="1.2" club="1.2" sword="1.2" axe="1.2" distance="1.1" shielding="1.1" fishing="1.1" experience="1.0"/>

</vocation>

<vocation id="4" name="Elite Knight" description="a Elite knight" needpremium="0" gaincap="25" gainhp="15" gainmana="5" gainhpticks="3" gainhpamount="60" gainmanaticks="6" gainmanaamount="30" manamultiplier="3.0" attackspeed="1300" soulmax="100" gainsoulticks="120" fromvoc="4">

<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>

<skill fist="1.1" club="1.1" sword="1.1" axe="1.1" distance="1.4" shielding="1.1" fishing="1.1" experience="1.0"/>

</vocation>

<vocation id="5" name="Master Sorcerer" description="a Master Sorcerer" needpremium="1" gaincap="15" gainhp="10" gainmana="35" gainhpticks="4" gainhpamount="50" gainmanaticks="2" gainmanaamount="65" manamultiplier="1.1" attackspeed="900" soulmax="200" gainsoulticks="15" fromvoc="1" lessloss="30">

<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>

<skill fist="1.5" club="2.0" sword="2.0" axe="2.0" distance="2.0" shielding="1.5" fishing="1.1" experience="1.2"/>

</vocation>

<vocation id="6" name="Elder Druid" description="an Elder druid" needpremium="1" gaincap="15" gainhp="10" gainmana="35" gainhpticks="4" gainhpamount="50" gainmanaticks="2" gainmanaamount="65" manamultiplier="1.1" attackspeed="900" soulmax="200" gainsoulticks="15" fromvoc="2" lessloss="30">

<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>

<skill fist="1.5" club="1.8" sword="1.8" axe="1.8" distance="1.8" shielding="1.5" fishing="1.1" experience="1.2"/>

</vocation>

<vocation id="7" name="Elder Paladin" description="a Elder paladin" needpremium="1" gaincap="25" gainhp="15" gainmana="20" gainhpticks="3" gainhpamount="60" gainmanaticks="3" gainmanaamount="60" manamultiplier="1.4" attackspeed="800" soulmax="200" gainsoulticks="15" fromvoc="3" lessloss="30">

<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>

<skill fist="1.2" club="1.2" sword="1.2" axe="1.2" distance="1.1" shielding="1.1" fishing="1.1" experience="1.2"/>

</vocation>

<vocation id="8" name="Elder Knight" description="an Elder knight" needpremium="1" gaincap="30" gainhp="20" gainmana="10" gainhpticks="2" gainhpamount="75" gainmanaticks="4" gainmanaamount="40" manamultiplier="3.0" attackspeed="900" soulmax="200" gainsoulticks="15" fromvoc="4" lessloss="30">

<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>

<skill fist="1.1" club="1.1" sword="1.1" axe="1.1" distance="1.4" shielding="1.1" fishing="1.1" experience="1.2"/>

</vocation>

<vocation id="9" name="Epic Master Sorcerer" description="an Epic Master Sorcerer" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="4" gainhpamount="100" gainmanaticks="2" gainmanaamount="120" manamultiplier="1.1" attackspeed="800" soulmax="200" gainsoulticks="15" fromvoc="5" lessloss="50">

<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>

<skill fist="1.5" club="2.0" sword="2.0" axe="2.0" distance="2.0" shielding="1.5" fishing="1.1" experience="1.0"/>

</vocation>

<vocation id="10" name="Epic Elder Druid" description="an Epic Elder Druid" needpremium="0" gaincap="10" gainhp="5" gainmana="30" gainhpticks="4" gainhpamount="100" gainmanaticks="2" gainmanaamount="120" manamultiplier="1.1" attackspeed="800" soulmax="200" gainsoulticks="15" fromvoc="6" lessloss="50">

<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>

<skill fist="1.5" club="1.8" sword="1.8" axe="1.8" distance="1.8" shielding="1.5" fishing="1.1" experience="1.0"/>

</vocation>

<vocation id="11" name="Epic Royal Paladin" description="an Epic Royal Paladin" needpremium="0" gaincap="20" gainhp="10" gainmana="15" gainhpticks="3" gainhpamount="130" gainmanaticks="3" gainmanaamount="95" manamultiplier="1.4" attackspeed="800" soulmax="200" gainsoulticks="15" fromvoc="7" lessloss="50">

<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>

<skill fist="1.2" club="1.2" sword="1.2" axe="1.2" distance="1.1" shielding="1.1" fishing="1.1" experience="1.0"/>

</vocation>

<vocation id="12" name="Epic Elite Knight" description="an Epic Elite Knight" needpremium="0" gaincap="25" gainhp="15" gainmana="5" gainhpticks="8" gainhpamount="185" gainmanaticks="4" gainmanaamount="65" manamultiplier="3.0" attackspeed="800" soulmax="200" gainsoulticks="15" fromvoc="8" lessloss="50">

<formula meleeDamage="1.0" distDamage="1.0" wandDamage="1.0" magDamage="1.0" magHealingDamage="1.0" defense="1.0" magDefense="1.0" armor="1.0"/>

<skill fist="1.1" club="1.1" sword="1.1" axe="1.1" distance="1.4" shielding="1.1" fishing="1.1" experience="1.0"/>

</vocation>

</vocations>

Link para o comentário
Compartilhar em outros sites

  • 1 month later...
×
×
  • Criar Novo...