
Tudo que Wise postou
-
Script De Fishing
Certo, mas o que isso tem a ver com o tópico em questão?
-
[pedido] Porta só abrir depois de matar
Fiz para que o player receba uma storage (assim que matar o boss) que têm um tempo de duração, para que ele possa abrir a porta nesse tempo. Não testei. bosskill.lua (data/creaturescripts/scripts): local tab = { bossname = "Morgaroth", str = {16661, 10} -- {storage, time} } function onKill(cid, target, lastHit) if(getCreatureName(target) == tab.bossname) then setPlayerStorageValue(cid, tab.str[1], os.time() + tab.str[2] * 60) end return true end Adicione o registro ao arquivo login.lua (data/creaturescripts/scripts): registerCreatureEvent(cid, "BossKill") Adicione a tag - creaturescripts.xml (data/creaturescripts): <event type="kill" name="BossKill" event="script" value="bosskill.lua"/> bossdoor.lua (data/actions/scripts): local str = 16661 -- storage function onUse(cid, item, frompos, item2, topos) local pos = getCreaturePosition(cid) if getPlayerStorageValue(cid, str) - os.time() < 1 then return doPlayerSendCancel(cid, "You need to kill the BOSS to open the door.") end if pos.x == topos.x then if pos.y < topos.y then pos.y = topos.y + 1 else pos.y = topos.y - 1 end elseif pos.y == topos.y then if pos.x < topos.x then pos.x = topos.x + 1 else pos.x = topos.x - 1 end else doPlayerSendCancel(cid, "Stand in front of the door.") return true end doTeleportThing(cid, pos) doSendMagicEffect(topos, CONST_ME_MAGIC_BLUE) return true end Adicione a tag - actions.xml (data/actions): <action actionid="ACTIONID" script="bossdoor.lua"/>
-
Npc Bugado
Você está modificando o script ou adicionando ele ao arquivo, de forma incorreta: Isso tá errado e está diferente do script que eu postei acima. Disponha.
-
(Resolvido)[PEDIDO] FERREIRO , CRIANDO INTENS SCRIPT !
Amigo, quando o membro pediu para você criar um arquivo ferreiro.lua, ele quis dizer que é pra você criar um arquivo com a extensão lua e nomear o mesmo para ferreiro. Nomear um arquivo já com a extensão Lua para .lua vai ocasionar esse tipo de erro no reconhecimento da localização do arquivo, pois ele ficará como .lua.lua em vez de somente .lua. @Nildson
- (Resolvido)[Help] Recompensa ao pegar tal level
-
Npc Bugado
De onde você tirou isso? O correto seria como está no script acima: if getPlayerMoney(cid) >= tab.aposta1[1] then doPlayerRemoveMoney(cid, tab.aposta1[1]) Não vejo erros.
-
(Resolvido)[Help] Recompensa ao pegar tal level
KISS rewardlevel.lua (data/creaturescripts/scripts): local tab = { level = 50, reward = {2160, 10} -- reward = {itemid, count} } function onAdvance(cid, skill, oldlevel, newlevel) if getPlayerLevel(cid) >= tab.level then doPlayerAddItem(cid, tab.reward[1], tab.reward[2]) doSendMagicEffect(getThingPos(cid), CONST_ME_GIFT_WRAPS) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You received "..tab.reward[2].." "..getItemNameById(tab.reward[1]).." for reaching level "..tab.level.."!!") end return true end Adicione o registro ao arquivo login.lua (data/creaturescripts/scripts): registerCreatureEvent(cid, "RewardLevel") Adicione a tag - creaturescripts.xml (data/creaturescripts): <event type="advance" name="RewardLevel" event="script" value="rewardlevel.lua"/>
-
Npc Bugado
Só fiz a tabela como exemplificação, configura aqui brother: local tab = { aposta1 = {1000000, 2000000}, -- apostaN = {custo, premio}, aposta2 = {1000000, 2000000}, aposta3 = {100000000, 200000000} } Caso tenha dificuldade em configurar: 1k = 1000 10k = 10000 100k = 100000 1000k (1kk) = 1000000
-
Ajuda Por Favor
Não entendi muito bem. Suponho que você queira um script que ao matar um monstro (pokémon), receba determinada quantia de um item, certo? pokemonkill.lua (data/creaturescripts/scripts): local tab = { ["Pichu"] = {5432, 1}, -- ["pokemon name"] = {itemid, count}, ["Pikachu"] = {5432, 1}, ["Raichu"] = {5432, 1} } function onKill(cid, target, lastHit) if(tab[getCreatureName(target)]) then doPlayerAddItem(cid, tab[getCreatureName(target)][1], tab[getCreatureName(target)][2]) end return true end No arquivo login.lua (data/creaturescripts/scripts), adicione: registerCreatureEvent(cid, "PokemonKill") Adicione a tag - creaturescripts.xml (data/creaturescripts): <event type="kill" name="PokemonKill" event="script" value="pokemonkill.lua"/>
-
Scripts para TFS 1.0
Talvez sim, talvez não. Varia de acordo com as funções do script, não tem como determinar se haverá bugs ou não. Você tem de analisar o script da versão anterior e aplicar as funções da versão na qual você o usa agora (1.0). Caso tenha bugs, basta fazer uma adaptação das funções do script que não executar corretamente, deve dar certo.
-
Script De Fishing
Como vou saber saber como você o quer? Eu não jogo esse "ot pokemon". Seja o mais específico possível.
-
Npc Bugado
local tab = { aposta1 = {1000000, 2000000}, -- apostaN = {custo, premio}, aposta2 = {1000000, 2000000}, aposta3 = {100000000, 200000000} } local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end function thinkCallback(cid) local rand = math.random(1,100) if rand == 1 then selfSay('Oi! Ganhe dinheiro com sua sorte!') end if rand == 2 then selfSay ('Só entendo português, diga oi.') end if rand == 3 then selfSay ('Posso te ajudar?') end return true end function greetCallback(cid) return true end local mpn = math.random(1,10) local npcn = math.random(1,10) local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid if(msgcontains(msg, 'jogar')) then selfSay('O jogo é bem simples, você só precisa decidir se quer apostar 1 crystal coin, 10 crystal coins ou 100 crystal coins. Após decidir sua aposta, será sorteado um número entre 1 e 10 para mim e para você, vence quem sortear o maior número. Se der empate, você recebe o dinheiro da aposta de volta, se você ganhar receberá o dobro do valor da aposta e se perder eu fico com o seu dinheiro da aposta. Diga {1 crystal coin}, {10 crystal coins} ou {100 crystal coins} para começar o jogo.', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, '1 crystal coin') and talkState[talkUser] == 1) then selfSay('Você tem certeza que quer apostar 1 crystal coin?', cid) talkState[talkUser] = 0 elseif(msgcontains(msg, 'sim') and talkState[talkUser] == 1) then if getPlayerMoney(cid) >= tab.aposta1[1] then doPlayerRemoveMoney(cid, tab.aposta1[1]) setPlayerStorageValue(cid, 2224, npcn) setPlayerStorageValue(cid, 55411, mpn) talkState[talkUser] = 0 if getPlayerStorageValue(cid, 55411) < getPlayerStorageValue(cid, 2224)then selfSay('Seu número: '..getPlayerStorageValue(cid, 55411)..'. Meu número: '..getPlayerStorageValue(cid, 2224)..'. Você Perdeu!',cid) talkState[talkUser] = 1 elseif getPlayerStorageValue(cid, 55411) == getPlayerStorageValue(cid, 2224) then selfSay('Seu número: '..getPlayerStorageValue(cid, 55411)..'. Meu número: '..getPlayerStorageValue(cid, 2224)..'. Deu Empate!',cid) talkState[talkUser] = 1 elseif getPlayerStorageValue(cid, 55411) > getPlayerStorageValue(cid, 2224) then selfSay('Seu número: '..getPlayerStorageValue(cid, 55411)..'. Meu número: '..getPlayerStorageValue(cid, 2224)..'. Você Venceu!',cid) doPlayerAddMoney(cid, tab.aposta1[2]) talkState[talkUser] = 1 end else selfSay('Desculpe, mas você não possui dinheiro para esta aposta',cid) end elseif(msgcontains(msg, '10 crystal coin') and talkState[talkUser] == 1) then selfSay('Você tem certeza que quer apostar 10 crystal coin?', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'sim') and talkState[talkUser] == 1) then if getPlayerMoney(cid) >= tab.aposta2[1] then doPlayerRemoveMoney(cid, tab.aposta2[1]) setPlayerStorageValue(cid, 2225, npcn) setPlayerStorageValue(cid, 55412, mpn) if getPlayerStorageValue(cid, 55412) < getPlayerStorageValue(cid, 2225)then selfSay('Seu número: '..getPlayerStorageValue(cid, 55412)..'. Meu número: '..getPlayerStorageValue(cid, 2225)..'. Você Perdeu!',cid) talkState[talkUser] = 1 elseif getPlayerStorageValue(cid, 55412) == getPlayerStorageValue(cid, 2225) then selfSay('Seu número: '..getPlayerStorageValue(cid, 55412)..'. Meu número: '..getPlayerStorageValue(cid, 2225)..'. Deu Empate!',cid) talkState[talkUser] = 1 elseif getPlayerStorageValue(cid, 55412) > getPlayerStorageValue(cid, 2225) then selfSay('Seu número: '..getPlayerStorageValue(cid, 55412)..'. Meu número: '..getPlayerStorageValue(cid, 2225)..'. Você Venceu!',cid) doPlayerAddMoney(cid, tab.aposta2[2]) talkState[talkUser] = 1 end else selfSay('Desculpe, mas você não possui dinheiro para esta aposta',cid) end elseif(msgcontains(msg, '100 crystal coin') and talkState[talkUser] == 1) then selfSay('Você tem certeza que quer apostar 100 crystal coin?', cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'sim') and talkState[talkUser] == 1) then if getPlayerMoney(cid) >= tab.aposta3[1] then doPlayerRemoveMoney(cid, tab.aposta3[1]) setPlayerStorageValue(cid, 2226, npcn) setPlayerStorageValue(cid, 55413, mpn) if getPlayerStorageValue(cid, 55413) < getPlayerStorageValue(cid, 2226)then selfSay('Seu número: '..getPlayerStorageValue(cid, 55413)..'. Meu número: '..getPlayerStorageValue(cid, 2226)..'. Você Perdeu!',cid) talkState[talkUser] = 1 elseif getPlayerStorageValue(cid, 55413) == getPlayerStorageValue(cid, 2226) then selfSay('Seu número: '..getPlayerStorageValue(cid, 55413)..'. Meu número: '..getPlayerStorageValue(cid, 2226)..'. Deu Empate!',cid) talkState[talkUser] = 1 elseif getPlayerStorageValue(cid, 55413) > getPlayerStorageValue(cid, 2226) then selfSay('Seu número: '..getPlayerStorageValue(cid, 55413)..'. Meu número: '..getPlayerStorageValue(cid, 2226)..'. Você Venceu!',cid) doPlayerAddMoney(cid, tab.aposta3[2]) talkState[talkUser] = 1 end else selfSay('Desculpe, mas você não possui dinheiro para esta aposta',cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())
- [Ajuda] Script de Critical apenas para quem tem quantia X de resets
-
Aprender Spells
@Nogard @luanluciano93 Que bom que gostaram, obrigado.
-
Aprender Spells
Essa talkaction consiste em fazer com que o player que possui determinada quantidade de um item, aprenda uma spell em troca do mesmo. Exemplo de uso (do parâmetro): !learnspell exori frigo Se preferir apenas uma determinada quantidade de um único item por spell: learnspell.lua (data/talkactions/scripts): local tab = { ["exori frigo"] = {spell = "Ice Strike", item = {1234, 5}}, -- ["nome da spell"] = {spell = "nome da conjuração da spell", item = {itemid, quantidade}}, ["exori mort"] = {spell = "Death Strike", item = {1234, 5}}, ["exori vis"] = {spell = "Energy Strike", item = {1234, 5}}, ["exori flam"] = {spell = "Flame Strike", item = {1234, 5}}, ["exori tera"] = {spell = "Terra Strike", item = {1234, 5}}, ["exori san"] = {spell = "Divine Missile", item = {1234, 5}} } function onSay(cid, words, param, channel) local sparam = string.lower(param) if(param == "") then return doPlayerSendCancel(cid, "Enter the name of the spell you want to learn.") end if not (tab[sparam]) then return doPlayerSendCancel(cid, "Spell not found.") end if(getPlayerLearnedInstantSpell(cid, tab[sparam].spell)) then return doPlayerSendCancel(cid, "You already have learned this spell.") end if(getPlayerItemCount(cid, tab[sparam].item[1]) >= tab[sparam].item[2]) then doPlayerLearnInstantSpell(cid, tab[sparam].spell) doPlayerRemoveItem(cid, tab[sparam].item[1], tab[sparam].item[2]) doSendMagicEffect(getThingPos(cid), CONST_ME_GIFT_WRAPS) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have learned the spell!") else doPlayerSendCancel(cid, "You need "..tab[sparam].item[2].." "..getItemNameById(tab[sparam].item[1]).." to learn this spell.") end return true end Se quiser 2 itens por spell, use este script (mesmo arquivo): local tab = { ["exori frigo"] = {spell = "Ice Strike", item = {1234, 5}, item2 = {5678, 9}}, -- ["nome da spell"] = {spell = "nome da conjuração da spell", item = {itemid, quantidade}, item2 = {itemid, quantidade}}}, ["exori mort"] = {spell = "Death Strike", item = {1234, 5}, item2 = {5678, 9}}, ["exori vis"] = {spell = "Energy Strike", item = {1234, 5}, item2 = {5678, 9}}, ["exori flam"] = {spell = "Flame Strike", item = {1234, 5}, item2 = {5678, 9}}, ["exori tera"] = {spell = "Terra Strike", item = {1234, 5}, item2 = {5678, 9}}, ["exori san"] = {spell = "Divine Missile", item = {1234, 5}, item2 = {5678, 9}} } function onSay(cid, words, param, channel) local sparam = string.lower(param) if(param == "") then return doPlayerSendCancel(cid, "Enter the name of the spell you want to learn.") end if not (tab[sparam]) then return doPlayerSendCancel(cid, "Spell not found.") end if(getPlayerLearnedInstantSpell(cid, tab[sparam].spell)) then return doPlayerSendCancel(cid, "You already have learned this spell.") end if(getPlayerItemCount(cid, tab[sparam].item[1]) >= tab[sparam].item[2] and (getPlayerItemCount(cid, tab[sparam].item2[1]) >= tab[sparam].item2[2])) then doPlayerLearnInstantSpell(cid, tab[sparam].spell) doPlayerRemoveItem(cid, tab[sparam].item[1], tab[sparam].item[2]) doPlayerRemoveItem(cid, tab[sparam].item2[1], tab[sparam].item2[2]) doSendMagicEffect(getThingPos(cid), CONST_ME_GIFT_WRAPS) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have learned the spell!") else doPlayerSendCancel(cid, "You need "..tab[sparam].item[2].." "..getItemNameById(tab[sparam].item[1]).." and "..tab[sparam].item2[2].." "..getItemNameById(tab[sparam].item2[1]).." to learn this spell.") end return true end Se quiser um script com mais de 2 itens para uma spell, peça no tópico que eu faço. Adicione a tag ao arquivo talkactions.xml (data/talkactions/scripts): <talkaction words="!learnspell" event="script" value="learnspell.lua"/> Não se esqueça de "ativar" a obtenção da spell, para que os players não aprendam ela ao criar o character. Basta mudar o valor na tag da spell, para 1, onde está needlearn. Ficando então: needlearn="1" Créditos: Suicide.
-
[AJUDA] Buggg
Substitua o seu script de bless por este: local tab = { bless = {1, 2, 3, 4, 5}, price = 80000 } function onSay(cid, words, param) for i = 1, table.maxn(tab.bless) do if(getPlayerBlessing(cid, tab.bless[i])) then doPlayerSendCancel(cid, "You already have all the blessings.") return true end if(getPlayerMoney(cid) >= tab.price) then doPlayerAddBlessing(cid, tab.bless[i]) doPlayerRemoveMoney(cid, tab.price) doCreatureSay(cid, "You are now blessed!", TALKTYPE_MONSTER) doSendMagicEffect(getThingPos(cid), CONST_ME_HOLYAREA) else doPlayerSendCancel(cid, "You need "..tab.price.." gold coins to buy the blessings.") end end return true end Remova o creaturescript de aol do seu servidor e use este: amuletofloss.lua (data/creaturescripts/scripts): local aolid = 2173 function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) if(isPlayer(cid) and (getPlayerSlotItem(cid, CONST_SLOT_NECKLACE).itemid == aolid)) then doCreatureSetDropLoot(cid, false) doSendMagicEffect(getThingPos(cid), CONST_ME_HOLYAREA) end return true end function onDeath(cid, corpse, deathList) if isPlayer(cid) and (getPlayerSlotItem(cid, CONST_SLOT_NECKLACE).itemid == aolid) then doPlayerRemoveItem(cid, aolid, 1) end return true end Adicione ao arquivo login.lua (data/creaturescripts/scripts): registerCreatureEvent(cid, "amuletofloss") registerCreatureEvent(cid, "removeaol") Adicione as tags - creaturescripts.xml (data/creaturescripts): <event type="PrepareDeath" name="amuletofloss" event="script" value="amuletofloss.lua"/> <event type="death" name="removeaol" event="script" value="amuletofloss.lua"/>
-
[AJUDA] Spell area desconfigurada
Amigo, na área da spell: o valor 0 determina que nada irá acontecer no local (sqm); o valor 1 determina o sqm no qual haverá o efeito da spell; o valor 3 determina o sqm central da spell. Tente desse modo: local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, 34) function getSpellDamage(cid, weaponSkill, weaponAttack) damage_min = (weaponSkill * weaponAttack / 25) * 5.0 damage_max = (weaponSkill * weaponAttack / 25) * 5.5 if(damage_max < damage_min) then local tmp = damage_max damage_max = damage_min damage_min = tmp end return -damage_min, -damage_max end local arr = { {1, 1, 1, 1, 1}, {1, 1, 1, 1, 1}, {1, 1, 3, 1, 1}, {1, 1, 1, 1, 1}, {1, 1, 1, 1, 1}, } local area = createCombatArea(arr) setCombatArea(combat, area) setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "getSpellDamage") function onCastSpell(cid, var) return doCombat(cid, combat, var) end
- Spell Teleporte
-
Alchemist Potions.
Nossa, que da hora.. Curti demais.
-
(Resolvido)[PEDIDO] Script comando /servesave
Script de talkaction padrão da maioria dos servidores.. serversave.lua (data/talkactions/scripts): local savingEvent = 0 function onSay(cid, words, param, channel) if(isNumber(param)) then stopEvent(savingEvent) save(tonumber(param) * 60 * 1000) else doSaveServer() end return true end function save(delay) doSaveServer() if(delay > 0) then savingEvent = addEvent(save, delay, delay) end end tag - talkactions.xml (data/talkactions): <talkaction log="yes" words="/serversave" access="4" event="script" value="serversave.lua"/>
-
Magnus Task Project
Simplesmente incrível, espero pela postagem do script tanto quanto vocês.
-
[Ajuda] Script de Critical apenas para quem tem quantia X de resets
local tab = { effect = 14, -- efeito que sai levelcrit = 100, --- leveis que terão resetsto = 39650, -- o storage do seu sistema de reset resetmin = 2, -- quantidade de resets para poder usar critsto = 48903 -- storage do Critical System } function onUse(cid, item, frompos, item2, topos) if(getPlayerStorageValue(cid, tab.resetsto) < tab.resetmin) then doPlayerSendCancel(cid, "You need to have at least "..tab.resetmin.." resets to use the Critical System.") return true end if(getPlayerStorageValue(cid, tab.critsto) < tab.levelcrit) then doRemoveItem(item.uid, 1) doSendMagicEffect(getThingPos(cid), tab.effect) setPlayerStorageValue(cid, tab.critsto, getPlayerStorageValue(cid, tab.critsto)+1) doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You've leveled your Critical Skill to ["..(getPlayerStorageValue(cid, tab.critsto)+1).."/100].") else doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, "You already have the maximum allowed of Critical Skill.\nCongratulations!!!!") return false end return true end
-
[PEDIDO] Script Teleporte Apos Chegar Certo Level ou Terminar Quest !
Disponha.
-
sistema akatsuki e anbu
Esse creaturescript é o que salva o player assim que ele tem seus dados alterados (skills).
-
[Pedido] Vocações Iniciam com Determinados Itens e Skills
Não testei newplayer.lua (data/creaturescripts/scripts): local tab = { items = { [1] = {1234, 2341, 3412, 4123, 4321}, -- {itemid1, itemdid2, itemdi3..} [2] = {1234, 2341, 3412, 4123, 4321}, [3] = {1234, 2341, 3412, 4123, 4321}, [4] = {1234, 2341, 3412, 4123, 4321} }, skills = { [1] = {fist = 10, club = 10, sword = 10, axe = 10, distance = 10, shield = 10, ml = 50}, [2] = {fist = 10, club = 10, sword = 10, axe = 10, distance = 10, shield = 10, ml = 50}, [3] = {fist = 10, club = 10, sword = 10, axe = 10, distance = 10, shield = 10, ml = 50}, [4] = {fist = 10, club = 10, sword = 10, axe = 10, distance = 10, shield = 10, ml = 50} }, containers = { [1] = {hpotion = {1234, 50}, mpotion = {4321, 50}, others = {123, 456, 789}}, -- {hpotion = {itemid, count}, mpotion = {itemid, count}, others = {itemid1, itemid2, itemid3..} [2] = {hpotion = {1234, 50}, mpotion = {4321, 50}, others = {123, 456, 789}}, [3] = {hpotion = {1234, 50}, mpotion = {4321, 50}, others = {123, 456, 789}}, [4] = {hpotion = {1234, 50}, mpotion = {4321, 50}, others = {123, 456, 789}} } } function onLogin(cid) local bag = doPlayerAddItem(cid, 12345, 1) -- 12345 = itemid da bag/backpack na qual serão adicionados os itens configurados em tab.containers if(getPlayerLastLoginSaved(cid) == 0) then for i = 1, table.maxn(tab.items[getPlayerVocation(cid)]) do for c = 1, table.maxn(tab.containers.others[getPlayerVocation(cid)]) do for voc, s in pairs(tab.skills[getPlayerVocation(cid)]) do doAddContainerItem(bag, tab.containers[getPlayerVocation(cid)].others[c], 1) doAddContainerItem(bag, tab.containers[getPlayerVocation(cid)].hpotion[1], tab.containers[getPlayerVocation(cid)].hpotion[2]) doAddContainerItem(bag, tab.containers[getPlayerVocation(cid)].mpotion[1], tab.containers[getPlayerVocation(cid)].mpotion[2]) doPlayerAddItem(cid, tab.items[getPlayerVocation(cid)][i], 1) doPlayerAddSkillTry(cid, SKILL_FIST, s.fist) doPlayerAddSkillTry(cid, SKILL_CLUB, s.club) doPlayerAddSkillTry(cid, SKILL_SWORD, s.sword) doPlayerAddSkillTry(cid, SKILL_AXE, s.axe) doPlayerAddSkillTry(cid, SKILL_DISTANCE, s.distance) doPlayerAddSkillTry(cid, SKILL_SHIELD, s.shield) doPlayerAddSkillTry(cid, SKILL__MAGLEVEL, s.ml) end end end end return true end tag - creaturescripts.xml (data/creaturescripts): <event type="login" name="NewPlayer" event="script" value="newplayer.lua"/> Ah sim, em ambas as tabelas, onde está: [1] = {.. [2] = {.. [3] = {.. [4] = {.. Esses números entre os colchetes [] são os IDs das vocações. Usei os valores no script como exemplo, é só alterar como preferir.