Se você colocasse uma tabela com mais cidades ficaria melhor não acha? Ai o player escolhe a cidade que ele quer morar u.u
Curti a ideia, rep+
info
Grupo: Marquês
Registrado: 03/02/13
Posts: 1.2k
Reputação: +254
Gênero: Masculino
Char no Tibia: Partiu Baladinha

Se você colocasse uma tabela com mais cidades ficaria melhor não acha? Ai o player escolhe a cidade que ele quer morar u.u
Curti a ideia, rep+
Editado Agosto 16 por Fawz
info
Grupo: Conde
Registrado: 14/04/15
Posts: 956
Reputação: +333
Gênero: Masculino

Se você colocasse uma tabela com mais cidades ficaria melhor não acha? Ai o player escolhe a cidade que ele quer morar u.u
Curti a ideia, rep+
Cara a ideia deste script foi de apenas uma cidade mas se quizer que o player escolhe-se uma cidade entre 5(cofiguravel) cidades, seila só pedir ai que eu faço!
info
Grupo: Herói
Registrado: 01/05/08
Posts: 2.6k
Reputação: +536
Gênero: Masculino

@ gostei da ideia, obrigado por compartilhar conosco.
Precisa de uma correção:
Se o player falar "hi", "yes" ele já troca a cidade...
Olha, pode tentar assim:
local CONFIG = {
CITYID = 1, -- Townid da cidade!
CITYNAME = "Thais" -- Nome da Cidade!
}
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
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if (msgcontains(msg, 'resident') or msgcontains(msg, CONFIG.CITYNAME)) and talkState[talkUser] == 0 then
selfSay('Do you want to become a resident of ' .. CONFIG.CITYNAME .. '?', cid)
talkState[talkUser] = 1
elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then
if getPlayerTown(cid) ~= CONFIG.CITYID then
doPlayerSetTown(cid, CONFIG.CITYID)
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
selfSay('You just become resident {' .. CONFIG.CITYNAME .. '}!', cid)
talkState[talkUser] = 0
else
selfSay('You already a resident of ' .. CONFIG.CITYNAME .. '!!!', cid)
talkState[talkUser] = 0
end
elseif msgcontains(msg, 'no') and talkState[talkUser] == 1 then
selfSay('How Are You! If you want to become a resident of {' .. CONFIG.CITYNAME .. '} talk to me!', cid)
talkState[talkUser] = 0
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Editado Agosto 16 por Bruno Minervino
info
Grupo: Conde
Registrado: 14/04/15
Posts: 956
Reputação: +333
Gênero: Masculino

Denada! Mas você ao menos testou?? porque eu fiz ele testando direto até ficar 100% funcional! ele fala hi, o player manda uma mensage se ele falar resident ou yes, ele é teleportado direto pra cidade nova dele e o npc envia uma mensagem! exatamente como foi pedido lá no código
mas obrigado pela melhoria ae ^^
info
Grupo: Lorde
Registrado: 22/07/12
Posts: 2.2k
Reputação: +453
Char no Tibia: Kissy

Ficou bem da hora parabéns ![]()
info
Grupo: Conde
Registrado: 14/04/15
Posts: 956
Reputação: +333
Gênero: Masculino

Valeu man
Comentários assim me incentivam mais ainda ^^
info
Grupo: Herói
Registrado: 01/05/08
Posts: 2.6k
Reputação: +536
Gênero: Masculino

Denada! Mas você ao menos testou?? porque eu fiz ele testando direto até ficar 100% funcional! ele fala hi, o player manda uma mensage se ele falar resident ou yes, ele é teleportado direto pra cidade nova dele e o npc envia uma mensagem! exatamente como foi pedido lá no código
mas obrigado pela melhoria ae ^^
Te dei um toque apenas amigo...basta olhar pra essa linha:
if msgcontains(msg, 'resident') or msgcontains(msg, 'yes') then
Faça o teste, fala "hi" e depois "yes".
Quando eu comecei com LUA, tive muitas pessoas que me corrigiram, isso me ajudou a enxergar a linguagem de uma forma diferente, certas coisas nós não precisamos testar, basta olhar para o script para saber o que ele faz.
info
Grupo: Conde
Registrado: 14/04/15
Posts: 956
Reputação: +333
Gênero: Masculino

Te dei um toque apenas amigo...basta olhar pra essa linha:
if msgcontains(msg, 'resident') or msgcontains(msg, 'yes') thenFaça o teste, fala "hi" e depois "yes".
Quando eu comecei com LUA, tive muitas pessoas que me corrigiram, isso me ajudou a enxergar a linguagem de uma forma diferente, certas coisas nós não precisamos testar, basta olhar para o script para saber o que ele faz.
Eu to ligado mas é porque o lek la que pediu pra o player falar hi ai depois "resident" e já ser teleportado, eu tentei fazer uma confirmação mais não due certo então deixei meio que incompleto porem funcional como o cara lá queria
e vlw ae dnv pela dica e.e eu estou olhando aqui uns tutoriais sobre lua, pra complementar meu conhecimento eu acabei de aprender sobre Arrays(tables) só que com um probleminha dps vou criar um tópico pra ver se alguem pode me explicar ^^
info
Grupo: Conde
Registrado: 14/04/15
Posts: 956
Reputação: +333
Gênero: Masculino
Eae pessoal blz?? Estou aqui para postar um script simples porém util pra comunidade!
Descrição: Você é morador de uma cidade, por exemplo, Carlin, dai você quer virar morador de Thais(Configuravel), você fala com o Npc James, ele vai te perguntar se você quer morar em thais, se você dizer sim, ele vai te teleportar para thais e você vai ser um morador de thais! Caso você já seja morador de Thais, ele vai dizer que você é morador de thais!
Testado em Tfs 0.3.6pl1 e Funcionou!
Simples não?? Vamos começar!
Em data/npc crie um arquivo James.xml e coloque isto dentro:
<?xml version="1.0" encoding="UTF-8"?> <npc name="James" script="data/npc/scripts/James.lua" walkinterval="0" floorchange="0" access="5" > <health now="150" max="150"/> <look type="177" head="17" body="54" legs="114" feet="0" addons="2" /> <parameters> <parameter key="message_greet" value="Welcome to CITYNAME |PLAYERNAME|! Would you like to become {resident} of CITYNAME??"/> <parameter key="message_farewell" value="Goodbye!"/> </parameters> </npc>E Agora em data/npc/scripts Crie um arquivo .lua chamado de James e dentro coloque isto:
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 local CITYID = 1 -- Townid da cidade! local CITYNAME = "Thais" -- Nome da Cidade! local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid if msgcontains(msg, 'resident') or msgcontains(msg, 'yes') then if (getPlayerTown(cid) ~= CITYID) then doPlayerSetTown(cid, CITYID) doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid))) selfSay('You just become resident '.. CITYNAME ..'!', cid) elseif msgcontains(msg, 'no') then selfSay('How Are You! If you want to become a resident of '.. CITYNAME ..' talk to me!', cid) else selfSay('Already a resident of '.. CITYNAME ..'!!!', cid) end end return 0 end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new())Configurações:
No arquivo James.xml, onde tiver escrito "CITYNAME", substitua pelo nome da cidade
e em James.lua só modifique está parte:
Creio que já deu pra entender ali no código oque deve configurar!
Pessoal Obrigado pela atenção e espero que façam um bom proveito!
Créditos
Editado Agosto 16 por Zet0N0Murmurouu