Ir para conteúdo
  • Cadastre-se

[Pedido] Npc que faz virar morador da cidade.


Posts Recomendados

ola pessoal gostaria de pedir um script de um npc que faz virar morador da cidade em vez do player ter que passar em cima de um tile.

 

Ou seja, o jogador fala com o npc que pergunta se ele deseja virar morador de tal cidade. ai o player diz "yes" e passa a ser morador dessa cidade.
 
Segue o script do tile que faz virar morador da cidade em meu servidor.

 

 

function onStepIn(cid, item, position, fromPosition)

if(item.actionid > 30020 and item.actionid < 30100) then
local townId = (item.actionid - 30020)
doPlayerSetTown(cid, townId)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Voce agora e um morador de " .. getTownName(townId) .. ".")
end
 
return true
end

 

Se alguém puder me ajudar fico muito grato, já procurei em todo o tibiaking e não encontrei.

abraços!

Editado por maiconmnt (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 3 weeks later...

Tenta colocar isso aqui no .lua do NPC: 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
local townid = [COLOQUE O ID DA CIDADE AQUI]

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 greetCallback(cid)
     if msgcontains(cid,"citizen") then
          selfSay("Do you want to become a citizen?", cid)
          talkState[talkUser]=1
     end
     if talkState[talkUser]==1 then
          if msgcontains(cid,"yes") then
               selfSay("So be it!", cid)
               doPlayerSetTown(cid, townid)
          elseif msgcontains(cid,"no") then
               selfSay("As you wish.", cid)
          end
          talkState[talkUser]=0
     end
end
 
npcHandler:setCallback(CALLBACK_GREET, greetCallback)
npcHandler:addModule(FocusModule:new())

Não esquece de mudar o ID da cidade ali. Se não funcionar, me avisa. :)

 

Abraço.

Editado por palubo (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

então não deu certo. 

coloquei o npc no mapa e tudo mas ele não aparece e nem consigo sumonar ele. como coloco no script do npc em si? coloquei assim...

 

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

<npc name="Rei De Baiak" script="data/npc/scripts/reidebaiak.lua" walkinterval="2000" floorchange="0">
    <health now="100" max="100"/>
    <look type="129" head="19" body="69" legs="107" feet="50" addons="0"/>
    <parameters>
        <parameter key="message_greet" value="Bem vindo |PLAYERNAME|. Eu posso fazelo virar morador de Baiak, basta dizer {citizen}."/>
        <parameter key="message_farewell" value="Ate Logo"/>
    </parameters>
</npc>

de qualquer forma rep + por tentar me ajudar. vou dar uma verificada aqui no código e ve se consigo alguma coisa.

Link para o post
Compartilhar em outros sites
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, "yes")) then
        if getPlayerTown(cid) == 0 then
            npcHandler:say("Welcome! You are now a citizen of Baiak Town", cid)
            doPlayerSetTown(cid, 1)
        else
            npcHandler:say("sorry you already are a resident of this city!!", cid)
        end
        end
 
 
return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Editado por klipstyle (veja o histórico de edições)

www.pokemiw.com
24 Horas Online - 1º 2º 3º 4º 5º 6º 7º gerações 100%
 

Link para o post
Compartilhar em outros sites

corrigindo, ainda há um erro.

estou falando com outro npc de outra cidade e ele ta me dizendo que ja sou morador de tal cidade mesmo não sendo.

Link para o post
Compartilhar em outros sites

o jogador fala com o npc que pergunta se ele deseja virar morador de tal cidade. ai o player diz "yes" e passa a ser morador dessa cidade.



Fiz pra que o player seja teleportado para o templo da nova town ao falar com o NPC.

mayor.lua (data/npc/scripts):
local newtown = 5 -- new townID

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, 'dweller')) then
		talkState[talkUser] = 1
		selfSay('You want to become a dweller of this city?', cid)
	elseif (msgcontains(msg, 'yes') and talkState[talkUser] == 1) then
		if (getPlayerTown(cid) ~= newtown) then
			doPlayerSetTown(cid, newtown)
			doTeleportThing(cid, getTownTemplePosition(newtown))
			doSendMagicEffect(getThingPos(cid), CONST_ME_TELEPORT)
			selfSay('Now you are a dweller of '..getTownName(newtown)..' City.', cid)
		else
			talkState[talkUser] = 0
			selfSay('You are already a dweller of this city.', cid)
		end
	elseif (msgcontains(msg, 'no') and talkState[talkUser] == 1) then
		talkState[talkUser] = 0
		selfSay('Okay, you are just visiting.', cid)
	end
	
	return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())




Mayor.xml (data/npc):

<npc name="Mayor" script="data/npc/scripts/mayor.lua" access="5" lookdir="1">
<health now="1000" max="1000"/>
<look type="123" head="45" body="67" legs="89" feet="10" addons="1"/>
	<parameters>
		<parameter key="message_greet" value="Hello |PLAYERNAME|. I can make you a {dweller} of this city." />
	</parameters>
</npc>

The corrupt fear us.

The honest support us.

The heroic join us.

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo