Que versão de tfs ?
You see!~
Por Duuhzinhow, 22 de mai. de 2015 em Scripts
info
Grupo: Conde
Registrado: 07/04/15
Posts: 962
Reputação: +258
Gênero: Masculino

Que versão de tfs ?
You see!~
info
Grupo: Visconde
Registrado: 05/02/14
Posts: 411
Reputação: +285
Gênero: Masculino
Char no Tibia: Zeh Sergipano

Ja tem tempo que não mecho com script então esqueci muita coisa :b
Eu fiz, saio meio poluído porque eu esqueci como usar tabela mas ta funcional (To estudando denovo) ![]()
.Xml
<?xml version="1.0" encoding="UTF-8"?> <npc name="Nome do npc" script="Local da Script.lua" walkinterval="0" floorchange="0" speed="900"> <health now="150" max="150"/> <look type="128" head="0" body="0" legs="0" feet="0" addons="0"/> <parameters> <parameter key="message_greet" value="Ta Afim de ganha uma vocação?"/> </parameters> </npc>
.lua
-- By RigBy --
-- Xtibia.com --
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
local vocation = 1 -- Vocação que precisa ter
-- Primeira Vocação
local vocationnome1 = 'knight' -- Nome da primeira vocação que ira se torna
local vocationid1 = 3 -- id da vocação que vai ganha
local item1 = 7618 -- primeiro items da primeira vocação
local item2 = 7636 -- Segundo items da primeira vocação
local qnt1 = 15 -- quantidade do primeiro items
local qnt2 = 15 -- quantidade do segundo items
-- Segunda Vocação
local vocationnome2 = 'paladin' -- Nome da segunda vocação que ira se torna
local vocationid2 = 4 -- id da vocação que vai ganha
local items1 = 3333 -- primeiro items da segunda vocação
local items2 = 4444 -- Segundo items da segunda vocação
local qnts1 = 15 -- quantidade do primeiro items
local qnts2 = 15 -- quantidade do segundo items
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if msgcontains(msg, 'yes') then
if getPlayerVocation(cid) == vocation then
selfSay('Você que ['..vocationnome1..'] ou ['..vocationnome2..'].', cid)
talkState[talkUser] = 1
else
selfSay('Você não ta com a vocação certa ou ja ganho a vocação.', cid)
end
end
if talkState[talkUser] == 1 and msgcontains(msg, ''..vocationnome1..'') then
if getPlayerItemCount(cid, item1) >= qnt1 and getPlayerItemCount(cid, item2) >= qnt2 then
selfSay('Parabêns você acaba de se tornar '..vocationnome1..'', cid)
doPlayerSetVocation(cid, vocationid1)
doPlayerRemoveItem(cid, item1, qnt1)
doPlayerRemoveItem(cid, item2, qnt2)
else
selfSay('Você não tem os items que precisa para ganha a vocação.', cid)
end
end
if talkState[talkUser] == 1 and msgcontains(msg, ''..vocationnome2..'') then
if getPlayerItemCount(cid, items1) >= qnts1 and getPlayerItemCount(cid, items2) >= qnts2 then
selfSay('Parabêns você acaba de ser torna '..vocationnome2..'', cid)
doPlayerSetVocation(cid, vocationid2)
doPlayerRemoveItem(cid, items1, qnts1)
doPlayerRemoveItem(cid, items2, qnts2)
else
selfSay('Você não tem os items que precisa para ganha a vocação.', cid)
end
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Ps. Depois posto um com a tabela feita
Bye
Editado Maio 22 por RigBy
info
Grupo: Visconde
Registrado: 14/01/14
Posts: 276
Reputação: +30
Gênero: Masculino
Char no Tibia: Sonda retro

Ja tem tempo que não mecho com script então esqueci muita coisa :b
Eu fiz, saio meio poluído porque eu esqueci como usar tabela mas ta funcional (To estudando denovo)
.Xml
<?xml version="1.0" encoding="UTF-8"?> <npc name="Nome do npc" script="Local da Script.lua" walkinterval="0" floorchange="0" speed="900"> <health now="150" max="150"/> <look type="128" head="0" body="0" legs="0" feet="0" addons="0"/> <parameters> <parameter key="message_greet" value="Ta Afim de ganha uma vocação?"/> </parameters> </npc>.lua
-- By RigBy -- -- Xtibia.com -- 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 local vocation = 1 -- Vocação que precisa ter -- Primeira Vocação local vocationnome1 = 'knight' -- Nome da primeira vocação que ira se torna local vocationid1 = 3 -- id da vocação que vai ganha local item1 = 7618 -- primeiro items da primeira vocação local item2 = 7636 -- Segundo items da primeira vocação local qnt1 = 15 -- quantidade do primeiro items local qnt2 = 15 -- quantidade do segundo items -- Segunda Vocação local vocationnome2 = 'paladin' -- Nome da segunda vocação que ira se torna local vocationid2 = 4 -- id da vocação que vai ganha local items1 = 3333 -- primeiro items da segunda vocação local items2 = 4444 -- Segundo items da segunda vocação local qnts1 = 15 -- quantidade do primeiro items local qnts2 = 15 -- quantidade do segundo items function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'yes') then if getPlayerVocation(cid) == vocation then selfSay('Você que ['..vocationnome1..'] ou ['..vocationnome2..'].', cid) talkState[talkUser] = 1 else selfSay('Você não ta com a vocação certa ou ja ganho a vocação.', cid) end end if talkState[talkUser] == 1 and msgcontains(msg, ''..vocationnome1..'') then if getPlayerItemCount(cid, item1) >= qnt1 and getPlayerItemCount(cid, item2) >= qnt2 then selfSay('Parabêns você acaba de se tornar '..vocationnome1..'', cid) doPlayerSetVocation(cid, vocationid1) doPlayerRemoveItem(cid, item1, qnt1) doPlayerRemoveItem(cid, item2, qnt2) else selfSay('Você não tem os items que precisa para ganha a vocação.', cid) end end if talkState[talkUser] == 1 and msgcontains(msg, ''..vocationnome2..'') then if getPlayerItemCount(cid, items1) >= qnts1 and getPlayerItemCount(cid, items2) >= qnts2 then selfSay('Parabêns você acaba de ser torna '..vocationnome2..'', cid) doPlayerSetVocation(cid, vocationid2) doPlayerRemoveItem(cid, items1, qnts1) doPlayerRemoveItem(cid, items2, qnts2) else selfSay('Você não tem os items que precisa para ganha a vocação.', cid) end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())Ps. Depois posto um com a tabela feita
Bye
Rep+ , ate ai funcionando tudo certinho, tem como acrescentar mais uma opçao de vocaçao? valeu mano kkkkk
Para adicionar mais vocações :
Em baixo de
-- Segunda Vocação local vocationnome3 = 'archer' -- Nome da segunda vocação que ira se torna local vocationid2 = 4 -- id da vocação que vai ganha local items1 = 3333 -- primeiro items da segunda vocação local items2 = 4444 -- Segundo items da segunda vocação local qnts1 = 15 -- quantidade do primeiro items local qnts2 = 15 -- quantidade do segundo items
adicione :
-- NÚMERO Vocação local vocationnome2 = 'nome' -- Nome da segunda vocação que ira se torna local vocationid2 = ID -- id da vocação que vai ganha local items1 = x -- primeiro items da segunda vocação local items2 = x -- Segundo items da segunda vocação local qnts1 = x -- quantidade do primeiro items local qnts2 = x -- quantidade do segundo items
Onde esta :
if msgcontains(msg, 'yes') then
if getPlayerVocation(cid) == vocation then
selfSay('Você que ['..vocationnome1..'] ou ['..vocationnome2..'].', cid)
talkState[talkUser] = 1
else
selfSay('Você não ta com a vocação certa ou ja ganho a vocação.', cid)
end
end
Edite a 3° linha para isso :
selfSay('Você que ['..vocationnome1..'] ou ['..vocationnome2..'] ou ['..vocationnome3..'].', cid)
E em baixo de :
if talkState[talkUser] == 1 and msgcontains(msg, ''..vocationnome2..'') then
if getPlayerItemCount(cid, items1) >= qnts1 and getPlayerItemCount(cid, items2) >= qnts2 then
selfSay('Parabêns você acaba de ser torna '..vocationnome2..'', cid)
doPlayerSetVocation(cid, vocationid2)
doPlayerRemoveItem(cid, items1, qnts1)
doPlayerRemoveItem(cid, items2, qnts2)
else
selfSay('Você não tem os items que precisa para ganha a vocação.', cid)
end
end
Dê duas quebras de linha (enter) e adicione isso :
if talkState[talkUser] == 1 and msgcontains(msg, ''..vocationnome3..'') then
if getPlayerItemCount(cid, items1) >= qnts1 and getPlayerItemCount(cid, items2) >= qnts2 then
selfSay('Parabêns você acaba de ser torna '..vocationnome3..'', cid)
doPlayerSetVocation(cid, vocationid2)
doPlayerRemoveItem(cid, items1, qnts1)
doPlayerRemoveItem(cid, items2, qnts2)
else
selfSay('Você não tem os items que precisa para ganha a vocação.', cid)
end
end
Pronto acho que é isso , testa ai ..
Não estou podendo testar no momento.
Para adicionar além de 3 é so seguir a lógica.
info
Grupo: Visconde
Registrado: 14/01/14
Posts: 276
Reputação: +30
Gênero: Masculino
Char no Tibia: Sonda retro
Galera, preciso de um script de um npc que funcionaria da seguinte forma:
-Apenas uma vocaçao podera falar com ele, caso nao seja a vocaçao correta, ele mandara uma mensagem (tudo configuravel)
-Se for a vocaçao correta, tera duas opçoes, digamos... voce pode dar 15 itens de ID 1550 e mais 15 itens de ID 1290 (apenas exemplo) para se tornar uma vocaçao, e outros itens para se tornar a outra vocaçao, tem a escolha de uma das duas, após se transformar em uma das duas vocaçoes, nao podera voltar atras.. ou seja, ganhara uma storage que caso fale com o npc, o npc apenas mande uma msg e um "bye"
rep+ vlw gente :3 qualquer duvida pergunta ai