BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

[Resuelto] NPC pregunta azar por entrar.

[Resuelto] NPC pregunta azar por entrar.

#1 [Resuelto] NPC pregunta azar por entrar. el Lun Mayo 21, 2012 10:27 am

psicoseven


Novato
Hola, necesito ayuda, me gustaria que me pasaran un script para un NPC que para poder teletransportarte a algun lugar tengas que responder una pregunta, en este caso una suma, pero que la suma siempre sea diferente, he visto un script aqui en BlackTibia que es del "antibot system", en el que te hacen una pregunta (suma) y si no respondes bien, te mandan a la carcel, en este caso yo quiero que sea en un NPC, que te teletransporte a algun lugar determinado si respondes correctamente a su pregunta (suma). Espero alguien pueda ayudarme. Gracias.

http://sites.google.com/site/sevenswordserver/

#2 Re: [Resuelto] NPC pregunta azar por entrar. el Miér Mayo 23, 2012 1:00 pm

Xafterin


Miembro
teleportxx.lua
Código:
local keywordHandler = KeywordHandler:new()
            local npcHandler = NpcHandler:new(keywordHandler)
            NpcSystem.parseParameters(npcHandler)
 
            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 talkState = {}
 local randstor = 5656576
local questions = {
    [1] = {question = "Cuanto es 3 + 2?", answer = "5", topos = {x=x, y=y, z=z}},
    [2] = {question = "Quien es el owner del ot", answer = "OWNERNAME", topos = {x=x, y=y, z=z}},
    [3] = {question = "Cuanta vida tiene un rotworm", answer = "65", topos = {x=x, y=y, z=z}},
    [4] = {question = "En que año fue creado tibia?", answer = "1997", topos = {x=x, y=y, z=z}},
    [5] = {question = "Cuanto es 2000-5?", answer = "1995", topos = {x=x, y=y, z=z}}
},
function creatureSayCallback(cid, type, msg)
  local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
  if (not npcHandler:isFocused(cid)) then
    return false
  end 
 local rand_question = math.random(1, #questions)
  if msgcontains(msg, 'question') and talkState[talkUser] == 0 then
        npcHandler:say(questions[rand_question].question, cid)
        setPlayerStorageValue(cid, randstor, rand_question)
        talkState[talkUser] == 1
    end
    local regq = getPlayerStorageValue(cid, randstor)
    if talkState[talkUser] == 1 and msgcontains(msg, questions[regq].answer) then
          npcHandler:say('Good bye '.. getPlayerName(cid) ..' and good luck in your adventure!', cid)
          talkState[talkUser] == 0
          doTeleportThing(cid, questions[regq].topos)
    end
  return true
end 
 
  npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) 
  npcHandler:addModule(FocusModule:new())

npcs.xml
Código:
<?xml version="1.0" encoding="UTF-8"?>

<npc name="Victorino" script="teleportxx.lua" walkinterval="2000" floorchange="0">
    <health now="100" max="100"/>
    <look type="325" head="29" body="4" legs="20" feet="96" addons="3" corpse="2212"/>
    <parameters>
        <parameter key="message_greet" value="Hello |PLAYERNAME|. You have time to a question of your interest? (...) Say {question} to know the question and if your answer is correct you will be teleported to anywhere ...?"/>
    </parameters>

</npc>

#3 Re: [Resuelto] NPC pregunta azar por entrar. el Miér Mayo 23, 2012 1:14 pm

God Wonki


Miembro
Muy bueno Xafterin
pero no explicaste como editar
Todo se edita en teleportxx:
local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

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 talkState = {}
local randstor = 5656576
local questions = {
[1] = {question = "Cuanto es 3 + 2?", answer = "5", topos = {x=x, y=y, z=z}},
[2] = {question = "Quien es el owner del ot", answer = "OWNERNAME", topos = {x=x, y=y, z=z}},
[3] = {question = "Cuanta vida tiene un rotworm", answer = "65", topos = {x=x, y=y, z=z}},
[4] = {question = "En que año fue creado tibia?", answer = "1997", topos = {x=x, y=y, z=z}},
[5] = {question = "Cuanto es 2000-5?", answer = "1995", topos = {x=x, y=y, z=z}}
},

function creatureSayCallback(cid, type, msg)
local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
if (not npcHandler:isFocused(cid)) then
return false
end
local rand_question = math.random(1, #questions)
if msgcontains(msg, 'question') and talkState[talkUser] == 0 then
npcHandler:say(questions[rand_question].question, cid)
setPlayerStorageValue(cid, randstor, rand_question)
talkState[talkUser] == 1
end
local regq = getPlayerStorageValue(cid, randstor)
if talkState[talkUser] == 1 and msgcontains(msg, questions[regq].answer) then
npcHandler:say('Good bye '.. getPlayerName(cid) ..' and good luck in your adventure!', cid)
talkState[talkUser] == 0
doTeleportThing(cid, questions[regq].topos)
end
return true
end

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

__________________________________________________________________________

Ahi lo que esta en rojo lo deveras editar con coordenadas de tu map
y la respuesta de una pregunta qe viene siendo la "2"

http://wonkiot.sytes.net

#4 Re: [Resuelto] NPC pregunta azar por entrar. el Miér Mayo 23, 2012 1:22 pm

Xafterin


Miembro
Mensaje privado enviado a psicoeven a las 7:32 pm

Código:
Te hice un script, deberas modificar la tabla 'questions' en algunas variables que necesitan modificación como claramente veras.


edit-
El script no va, si cuando llegue el fin de semana aun nadie no te lo ha solucionado, lo volvere a intentar pero probandolo yo directamente, que es como mejor trabajo con NPCs. Suerte.

#5 Re: [Resuelto] NPC pregunta azar por entrar. el Vie Mayo 25, 2012 6:53 pm

psicoseven


Novato
Hola, buen día, antes que nada quiero dar las gracias por su ayuda a Xafterin y a God Wonki, en realidad el script que me mandas no es lo que buscaba, necesitaba algo mas al azar, estuve buscando en varios foros y enviando mensajes personales y no encontré lo que buscaba, eso sí gente dispuesta ayudar mucha, pero en realidad me desespere y me puse a trabajar y por fin logre hacer el script, lo posteare en la zona de NPC's como se debe y pondré el link aquí para que sepan que ya está resuelto. De nuevo muchas gracias a todos y buena suerte en sus códigos y comandos.

GOD Falkor
SevenSword Server.

http://sites.google.com/site/sevenswordserver/

#6 Re: [Resuelto] NPC pregunta azar por entrar. el Vie Mayo 25, 2012 8:31 pm

Vodkart


Scripter
já foi resolvido?
se não eu posso fazer sem problema

#7 Re: [Resuelto] NPC pregunta azar por entrar. el Sáb Mayo 26, 2012 4:39 am

Xafterin


Miembro
[Tienes que estar registrado y conectado para ver este vínculo] escribió:já foi resolvido?

Sim

#8 Re: [Resuelto] NPC pregunta azar por entrar. el Dom Mayo 18, 2014 9:27 pm

Blod


Estudiante
Código:
[Error - LuaInterface::loadFile] data/npc/scripts/VocQuestions.lua:18: '(' expected near 'creatureSayCallback'
[Warning - NpcEvents::NpcEvents] Cannot load script: data/npc/scripts/VocQuestions.lua
data/npc/scripts/VocQuestions.lua:18: '(' expected near 'creatureSayCallback'

Por favor si me podrian ayudar con el siguiente error, eso sale al iniciar el servidor.

Servidor: OTX 2.9

http://oldland.sytes.net/

#9 Re: [Resuelto] NPC pregunta azar por entrar. el Lun Mayo 19, 2014 12:15 am

Xafterin


Miembro
¿Qué script probaste?

#10 Re: [Resuelto] NPC pregunta azar por entrar. el Lun Mayo 19, 2014 12:20 am

Blod


Estudiante
El siguiente:
Código:

local keywordHandler = KeywordHandler:new()
            local npcHandler = NpcHandler:new(keywordHandler)
            NpcSystem.parseParameters(npcHandler)
 
            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 talkState = {}
 local randstor = 5656576
local questions = {
    [1] = {question = "Cuanto es 3 + 2?", answer = "5", topos = {x=x, y=y, z=z}},
    [2] = {question = "Quien es el owner del ot", answer = "OWNERNAME", topos = {x=x, y=y, z=z}},
    [3] = {question = "Cuanta vida tiene un rotworm", answer = "65", topos = {x=x, y=y, z=z}},
    [4] = {question = "En que año fue creado tibia?", answer = "1997", topos = {x=x, y=y, z=z}},
    [5] = {question = "Cuanto es 2000-5?", answer = "1995", topos = {x=x, y=y, z=z}}
},
function creatureSayCallback(cid, type, msg)
  local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
  if (not npcHandler:isFocused(cid)) then
    return false
  end 
 local rand_question = math.random(1, #questions)
  if msgcontains(msg, 'question') and talkState[talkUser] == 0 then
        npcHandler:say(questions[rand_question].question, cid)
        setPlayerStorageValue(cid, randstor, rand_question)
        talkState[talkUser] == 1
    end
    local regq = getPlayerStorageValue(cid, randstor)
    if talkState[talkUser] == 1 and msgcontains(msg, questions[regq].answer) then
          npcHandler:say('Good bye '.. getPlayerName(cid) ..' and good luck in your adventure!', cid)
          talkState[talkUser] == 0
          doTeleportThing(cid, questions[regq].topos)
    end
  return true
end 
 
  npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) 
  npcHandler:addModule(FocusModule:new())

http://oldland.sytes.net/

#11 Re: [Resuelto] NPC pregunta azar por entrar. el Lun Mayo 19, 2014 12:54 am

Xafterin


Miembro
Ya esta, debe funcionarte con normalidad, modifica la tabla questions, tienes los valores para modificar como, la pregunta, la respuesta y la posición donde teletransportará al player.
Código:
local keywordHandler = KeywordHandler:new()
            local npcHandler = NpcHandler:new(keywordHandler)
            NpcSystem.parseParameters(npcHandler)
 
            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 talkState = {}
 local randstor = 5656576
local questions = {
    [1] = {question = "Cuanto es 3 + 2?", answer = "5", topos = {x=1001, y=1005, z=7}},
    [2] = {question = "Quien es el owner del ot", answer = "OWNERNAME", topos = {x=1001, y=1005, z=7}},
    [3] = {question = "Cuanta vida tiene un rotworm", answer = "65", topos = {x=1001, y=1005, z=7}},
    [4] = {question = "En que año fue creado tibia?", answer = "1997", topos = {x=1001, y=1005, z=7}},
    [5] = {question = "Cuanto es 2000-5?", answer = "1995", topos = {x=1001, y=1005, z=7}}
}
function creatureSayCallback(cid, type, msg)
  local talkUser = NPCHANDLER_CONVbehavior == CONVERSATION_DEFAULT and 0 or cid
  if (not npcHandler:isFocused(cid)) then
    return false
  end 
  if msgcontains(msg, 'question') then
         local r = math.random(1, #questions)
        npcHandler:say(questions[r].question, cid)
        setPlayerStorageValue(cid, randstor, r)
        talkState[talkUser] = 1
    end
    local regq = getPlayerStorageValue(cid, randstor)
    if talkState[talkUser] == 1 and msgcontains(msg, questions[regq].answer) then
          npcHandler:say('Good bye '.. getPlayerName(cid) ..' and good luck in your adventure!', cid)
          talkState[talkUser] = 0
          doTeleportThing(cid, questions[regq].topos)
    end
  return true
end 
 
  npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) 
  npcHandler:addModule(FocusModule:new())

#12 Re: [Resuelto] NPC pregunta azar por entrar. el Lun Mayo 19, 2014 2:12 am

Blod


Estudiante
gracias si me sirvio

http://oldland.sytes.net/

#13 Re: [Resuelto] NPC pregunta azar por entrar. el Lun Mayo 19, 2014 4:19 am

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver esa imagen]
TEMA CERRADO
¡Solucionado!



Sugerencia para evitar futuros quebraderos de cabeza:
[Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver esa imagen]

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.

 

¿Quién está en línea?

En total hay 1 usuario en línea: 0 Registrados, 0 Ocultos y 1 Invitado

Usuarios navegando en este foro: Ninguno

Forum Statistics

Nuestros miembros han públicado un total de posts en temas.
Actualmente hay miembros registrados.
Démosle la bienvenida al miembro más reciente,
La mayor cantidad de usuarios en línea ha sido de .