Postado Junho 6, 2015 10 anos npc.xml <npc name="destino" script="data/npc/scripts/arquivo.lua" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="128" head="0" body="87" legs="39" feet="0"/> <parameters> <parameter key="module_travel" value="1"/> <parameter key="message_greet" value="Olá |PLAYERNAME|. o que vc quer {destino} ?" /> </parameters> </npc> arquivo.lua -- config elton123 local npc_destino = { msg = "vc quer que eu escolha o seu destino", -- frase do npc tempo = 120, --em segundos destino_final = {x=160, y=54, z=8}, salas = { {{x=160, y=54, z=7},sala_msg ="espere eu vou teletransportar você para sala 1"}, {{x=160, y=55, z=7},sala_msg ="espere eu vou teletransportar você para sala 2"}, }, } -- config elton123 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, 'destino') then selfSay(npc_destino.msg, cid) talkState[talkUser] = 1 elseif (msgcontains(msg,'no') and talkState[talkUser] == 1) then selfSay("bye", cid) talkState[talkUser] = 0 elseif (msgcontains(msg,'yes') and talkState[talkUser] == 1) then local do_destino = math.random(1,#npc_destino.salas) selfSay(npc_destino.salas[do_destino].sala_msg, cid) doCreatureSetNoMove(cid,true) addEvent(doTeleportThing,5000,cid,npc_destino.salas[do_destino][1]) addEvent(doCreatureSetNoMove,4999,cid,false) addEvent(destinoFinal,npc_destino.tempo*1000,cid,npc_destino.destino_final) talkState[talkUser] = 0 end end function destinoFinal (cid,fim) return doTeleportThing(cid,fim) and true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) só achei estranho que o cara vai ser teletransportado para uma sala ou para outra sala só que no final tem que ir para templo é isso msm? Editado Junho 6, 2015 10 anos por elton123 (veja o histórico de edições)
Postado Junho 6, 2015 10 anos Autor npc.xml <npc name="destino" script="data/npc/scripts/arquivo.lua" floorchange="0" access="5" level="1" maglevel="1"> <health now="150" max="150"/> <look type="128" head="0" body="87" legs="39" feet="0"/> <parameters> <parameter key="module_travel" value="1"/> <parameter key="message_greet" value="Olá |PLAYERNAME|. o que vc quer {destino} ?" /> </parameters></npc> arquivo.lua -- config elton123local npc_destino = {msg = "vc quer que eu escolha o seu destino", -- frase do npctempo = 120, --em segundos destino_final = {x=160, y=54, z=8},salas = {{{x=160, y=54, z=7},sala_msg ="espere eu vou teletransportar você para sala 1"},{{x=160, y=55, z=7},sala_msg ="espere eu vou teletransportar você para sala 2"},},}-- config elton123local keywordHandler = KeywordHandler:new()local npcHandler = NpcHandler:new(keywordHandler)NpcSystem.parseParameters(npcHandler)local talkState = {}function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) endfunction onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) endfunction onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) endfunction onThink() npcHandler:onThink() endfunction 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, 'destino') then selfSay(npc_destino.msg, cid) talkState[talkUser] = 1 elseif (msgcontains(msg,'no') and talkState[talkUser] == 1) then selfSay("bye", cid) talkState[talkUser] = 0 elseif (msgcontains(msg,'yes') and talkState[talkUser] == 1) then local do_destino = math.random(1,#npc_destino.salas) selfSay(npc_destino.salas[do_destino].sala_msg, cid) doCreatureSetNoMove(cid,true) addEvent(doTeleportThing,5000,cid,npc_destino.salas[do_destino][1]) addEvent(doCreatureSetNoMove,4999,cid,false) addEvent(destinoFinal,npc_destino.tempo*1000,cid,npc_destino.destino_final) talkState[talkUser] = 0 end endfunction destinoFinal (cid,fim) return doTeleportThing(cid,fim) and trueendnpcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)npcHandler:addModule(FocusModule:new()) só achei estranho que o cara vai ser teletransportado para uma sala ou para outra sala só que no final tem que ir para templo é isso msm? cara esse addevent eu acho que vai da erro tipo, eu crie as salas 4x4 se o player sair desse 4x4 ele n volta por templo, só volta que fica nesses 4x4 nas duas sala. Se n tiver como fazer isso, então remover o tempo de volta deixa só pra ir, aí eu coloco um teleporte pra ir pow templo.
Postado Junho 6, 2015 10 anos Solução eu tinha imaginado que as salas seria fechadas sem poder desloga dps eles seria tele... seria assim -- config elton123 local npc_destino = { msg = "vc quer que eu escolha o seu destino", -- frase do npc tempo = 10, --em segundos destino_final = {x=160, y=54, z=8}, area = { x = {152,164}, -- posição x as duas pontas horizontal a direita e a esquerda y = {47,54}, -- posição y as duas pontas vertical de cima e de baixo z = {7}, }, salas = { {{x=160, y=54, z=7},sala_msg ="espere eu vou teletransportar você para sala 1"}, {{x=160, y=55, z=7},sala_msg ="espere eu vou teletransportar você para sala 2"}, }, } -- config elton123 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, 'destino') then selfSay(npc_destino.msg, cid) talkState[talkUser] = 1 elseif (msgcontains(msg,'no') and talkState[talkUser] == 1) then selfSay("bye", cid) talkState[talkUser] = 0 elseif (msgcontains(msg,'yes') and talkState[talkUser] == 1) then local do_destino = math.random(1,#npc_destino.salas) selfSay(npc_destino.salas[do_destino].sala_msg, cid) doCreatureSetNoMove(cid,true) addEvent(doTeleportThing,5000,cid,npc_destino.salas[do_destino][1]) addEvent(doCreatureSetNoMove,4999,cid,false) addEvent(destinoFinal,npc_destino.tempo*1000,cid,npc_destino.destino_final) talkState[talkUser] = 0 end end function destinoFinal (cid,fim) for xx = npc_destino.area.x[1] , npc_destino.area.x[2] do for yy = npc_destino.area.y[1] , npc_destino.area.y[2] do local floor1 = getTopCreature({x=xx,y=yy,z=npc_destino.area.z[1]}).uid if floor1 > 0 and isPlayer(floor1) then doTeleportThing(cid,fim) end end end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) só editar essa parte area = { x = {152,164}, -- posição x as duas pontas horizontal a direita e a esquerda y = {47,54}, -- posição y as duas pontas vertical de cima e de baixo z = {7}, }, Editado Junho 6, 2015 10 anos por elton123 (veja o histórico de edições)
Postado Junho 6, 2015 10 anos Autor Poderia coloca uma alerta pra quando o tempo acaba. tipo, "o Tempo acabou, quem n saiu da sala voltará por tempo". tem como pow pra quando o primeiro player fala sempre e pra sala 1, o segundo pra sala 2 eo 3 pra sala 1 assim por diante. tipo impar, par. -- edit -- Arrumei geral vlw
Postado Junho 6, 2015 10 anos cara tem um bug que só ta olhando area de uma sala eu arrumei nesse -- config elton123 local npc_destino = { msg = "vc quer que eu escolha o seu destino", -- frase do npc tempo = 60, --em segundos destino_final = {x=160, y=54, z=8}, salas = { { {x=160, y=54, z=7},sala_msg ="espere eu vou teletransportar você para sala 1", area = { x = {152,164}, -- posição x as duas pontas horizontal a direita e a esquerda y = {47,54}, -- posição y as duas pontas vertical de cima e de baixo z = {7}, frase = "volte para sala 1 que sera teletransportado", }, }, { {x=160, y=54, z=8},sala_msg ="espere eu vou teletransportar você para sala 2", area = { x = {152,164}, -- posição x as duas pontas horizontal a direita e a esquerda y = {47,54}, -- posição y as duas pontas vertical de cima e de baixo z = {8}, frase = "volte para sala 2 que sera teletransportado", }, }, }, } -- config elton123 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, 'destino') then selfSay(npc_destino.msg, cid) talkState[talkUser] = 1 elseif (msgcontains(msg,'no') and talkState[talkUser] == 1) then selfSay("bye", cid) talkState[talkUser] = 0 elseif (msgcontains(msg,'yes') and talkState[talkUser] == 1) then local do_destino = math.random(1,#npc_destino.salas) selfSay(npc_destino.salas[do_destino].sala_msg, cid) doCreatureSetNoMove(cid,true) addEvent(doTeleportThing,5000,cid,npc_destino.salas[do_destino][1]) addEvent(doCreatureSetNoMove,4999,cid,false) addEvent(msgPlay,(npc_destino.tempo-10)*1000,cid,22,npc_destino.salas[do_destino].area.frase) addEvent(destinoFinal,npc_destino.tempo*1000,cid,npc_destino.destino_final,do_destino) talkState[talkUser] = 0 end end function destinoFinal (cid,fim,s) for xx = npc_destino.salas[s].area.x[1],npc_destino.salas[s].area.x[2] do for yy = npc_destino.salas[s].area.y[1] , npc_destino.salas[s].area.y[2] do local floor1 = getTopCreature({x=xx,y=yy,z=npc_destino.salas[s].area.z[1]}).uid if floor1 > 0 and isPlayer(floor1) then doTeleportThing(cid,fim) end end end return true end function msgPlay (cid,cor,m) if isPlayer(cid) then doPlayerSendTextMessage(cid,cor,m) end return true end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) { {x=160, y=54, z=8}, -- posição que play vai cair na sala sala_msg ="espere eu vou teletransportar você para sala 2", -- frase do npc area = { x = {152,164}, -- posição x as duas pontas horizontal a direita e a esquerda y = {47,54}, -- posição y as duas pontas vertical de cima e de baixo z = {8}, frase = "volte para sala 2 que sera teletransportado", -- frase que vai falar 10 segundos antes }, }, Editado Junho 6, 2015 10 anos por elton123 (veja o histórico de edições)
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.