Luga03 333 Postado Agosto 16, 2015 Share Postado Agosto 16, 2015 (editado) 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 cidadee em James.lua só modifique está parte: local CITYID = 1 -- Townid da cidade! local CITYNAME = "Thais" -- Nome da Cidade! 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 Zet0N0Mumurou(Eu) - Por Criar o Script! KualKerun - Pela ideia! Editado Agosto 16, 2015 por Zet0N0Murmurouu Link para o comentário https://xtibia.com/forum/topic/236269-npc-changer-town/ Compartilhar em outros sites More sharing options...
Lumus 254 Postado Agosto 16, 2015 Share Postado Agosto 16, 2015 (editado) 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, 2015 por Fawz Link para o comentário https://xtibia.com/forum/topic/236269-npc-changer-town/#findComment-1665400 Compartilhar em outros sites More sharing options...
Luga03 333 Postado Agosto 16, 2015 Autor Share Postado Agosto 16, 2015 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! Link para o comentário https://xtibia.com/forum/topic/236269-npc-changer-town/#findComment-1665434 Compartilhar em outros sites More sharing options...
Bruno 536 Postado Agosto 17, 2015 Share Postado Agosto 17, 2015 @ 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()) Link para o comentário https://xtibia.com/forum/topic/236269-npc-changer-town/#findComment-1665448 Compartilhar em outros sites More sharing options...
Luga03 333 Postado Agosto 17, 2015 Autor Share Postado Agosto 17, 2015 @ gostei da ideia, obrigado por compartilhar conosco. Precisa de uma correção: Se o player falar "hi", "yes" ele já troca a cidade... 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 ^^ Link para o comentário https://xtibia.com/forum/topic/236269-npc-changer-town/#findComment-1665476 Compartilhar em outros sites More sharing options...
SkyLigh 453 Postado Agosto 17, 2015 Share Postado Agosto 17, 2015 Ficou bem da hora parabéns Link para o comentário https://xtibia.com/forum/topic/236269-npc-changer-town/#findComment-1665478 Compartilhar em outros sites More sharing options...
Luga03 333 Postado Agosto 17, 2015 Autor Share Postado Agosto 17, 2015 Valeu man Comentários assim me incentivam mais ainda ^^ Link para o comentário https://xtibia.com/forum/topic/236269-npc-changer-town/#findComment-1665479 Compartilhar em outros sites More sharing options...
Bruno 536 Postado Agosto 17, 2015 Share Postado Agosto 17, 2015 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. Link para o comentário https://xtibia.com/forum/topic/236269-npc-changer-town/#findComment-1665483 Compartilhar em outros sites More sharing options...
Luga03 333 Postado Agosto 17, 2015 Autor Share Postado Agosto 17, 2015 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. 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 ^^ Link para o comentário https://xtibia.com/forum/topic/236269-npc-changer-town/#findComment-1665485 Compartilhar em outros sites More sharing options...
Posts Recomendados