BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

NPC que de TP a Zonas de Hunt

NPC que de TP a Zonas de Hunt

#1 NPC que de TP a Zonas de Hunt el Sáb Ene 31, 2015 10:55 pm

GOD Hyperoid


Miembro
Hola comunidad Blacktibia,

necesito ayuda con un script que consista en lo siguiente:

Un NPC que al decirle Hi y luego list, te de una lista de numeros la cual implique todas las zonas hunts de tibia (aunque yo tenga que poner las coordenadas del mapa) y te diga por separado si son zonas de Thais, de Aab'dendriel y asi...
Ejemplo:
A)  Player: Hi / NPC: Hi, where Would you like to go? / Player: List
B) Entonces el NPC despliega una lista de las zonas hunts algo asi.

THAIS...
1.- Rotworms
2.- Cyclops North
3.- Cyclops South
4.- Dragons
5.- Minotaurs
6.- Beholders
CARLIN....
7.- Trolls
8.- Rats
VENORE....
9.-
10.-

C) El player dira un número dependiendo de la zona hunt que quiera y le dara TP hasta allá cobrandole 500gp.
Player: 5 / NPC: You will go to Minotaurs, it's okay? / Player: Yes


D) O que simplemente sin decir list, pero al decir Hi y el número y luego yes, lo teletransporte a la zona hunt...


Muchas gracias.

#2 Re: NPC que de TP a Zonas de Hunt el Dom Feb 01, 2015 12:50 am

Belerofonte


Administrador
Servidor/Data/Npc/... NpcHuntList.xml
Código:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="NpcHuntList" script="data/npc/scripts/NpcHuntList.lua" walkinterval="0" floorchange="0">
  <health now="100" max="100"/>
  <look type="131" head="0" body="21" legs="95" feet="87" addons="1"/>
    <parameters>
      <parameter key="message_greet" value="Hi, where Would you like to go?"/>
    </parameters>
</npc>
(Todo eso ya lo editas tú a tu gusto)

Servidor/Data/Npc/Scripts/... NpcHuntList.lua
Código:
 local keywordHandler = KeywordHandler:new()
  local npcHandler = NpcHandler:new(keywordHandler)
  local Topic, place = {}, {}
    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

--------###CONFIGURACIÓN ABAJO###--------
  local Hunts = {
    List = 'THAIS...\n1.- Rotworms\n2.- Cyclops North\n3.- Cyclops South\n4.- Dragons\n5.- Minotaurs\n6.- Beholders\n\nCARLIN...\n7.- Trolls\n8.- Rats\n\nVENORE...', -- Lista de destinos.
    Object = 1956, -- ID del objeto mostrado en la lista.
    Precio = 500, -- Cantidad de Gold Coins cobradas.

    --------THAIS--------
    ['1'] = { -- Número de la Zona Hunt y "Palabra clave" que ha de decir el jugador.
      Nombre = 'Rotworms', -- 'Nombre' de la Zona Hunt,
      Lugar = {x = 1010, y = 1031, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
    },

    ['2'] = { -- Número de la Zona Hunt y "Palabra clave" que ha de decir el jugador.
      Nombre = 'Cyclops Nort', -- 'Nombre' de la Zona Hunt,
      Lugar = {x = 1010, y = 1033, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
    },

    ['3'] = { -- Número de la Zona Hunt y "Palabra clave" que ha de decir el jugador.
      Nombre = 'Cyclops South', -- 'Nombre' de la Zona Hunt,
      Lugar = {x = 1010, y = 1035, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
    },

    ['4'] = { -- Número de la Zona Hunt y "Palabra clave" que ha de decir el jugador.
      Nombre = 'Dragons', -- 'Nombre' de la Zona Hunt,
      Lugar = {x = 1010, y = 1037, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
    },

    ['5'] = { -- Número de la Zona Hunt y "Palabra clave" que ha de decir el jugador.
      Nombre = 'Minotaurs', -- 'Nombre' de la Zona Hunt,
      Lugar = {x = 1010, y = 1039, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
    },

    ['6'] = { -- Número de la Zona Hunt y "Palabra clave" que ha de decir el jugador.
      Nombre = 'Beholders', -- 'Nombre' de la Zona Hunt,
      Lugar = {x = 1010, y = 1041, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
    },
    ----------------------

    --------CARLIN--------
    ['7'] = { -- Número de la Zona Hunt y "Palabra clave" que ha de decir el jugador.
      Nombre = 'Trolls', -- 'Nombre' de la Zona Hunt,
      Lugar = {x = 1014, y = 1033, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
    },

    ['8'] = { -- Número de la Zona Hunt y "Palabra clave" que ha de decir el jugador.
      Nombre = 'Rats', -- 'Nombre' de la Zona Hunt,
      Lugar = {x = 1014, y = 1039, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
    },
    ----------------------

    --------VENORE--------

}
--------###CONFIGURACIÓN ARRIBA###--------

function creatureSayCallback(cid, type, msg)
  local msg = msg:lower()
    if not npcHandler:isFocused(cid) then
      return false
    end

    if (Topic[cid] == nil) or (Topic[cid] == 0) then
      place[cid] = Hunts[msg]
        if place[cid] then
            npcHandler:say("You will go to " .. place[cid].Nombre .. ", it's okay?", cid)
          Topic[cid] = 1
        end
    end

    if (msgcontains(msg, "yes") and Topic[cid] == 1) then
        if doPlayerRemoveMoney(cid, Hunts.Precio) == true then
            doSendMagicEffect (getThingPos(cid), CONST_ME_TELEPORT)
            doTeleportThing(cid, place[cid].Lugar)
            doSendMagicEffect (getThingPos(cid), CONST_ME_TELEPORT)
            npcHandler:releaseFocus(cid)
          Topic[cid] = 0
         else
           npcHandler:say(getPlayerMoney(cid) > 0 and "You need pay me " .. Hunts.Precio .. "gp for traveling! So... " .. Hunts.Precio - getPlayerMoney(cid)  .. "gp left." or "You need pay me " .. Hunts.Precio .. "gp for traveling!", cid) -- Contestación del Npc si el jugador no posee el coste requerido.
        end

     elseif (msgcontains(msg, "no") and Topic[cid] == 1) then
        npcHandler:say("Don't waste my time!", cid) -- Contestación del Npc si el jugador se niega a ser llevado, tras haberle dicho la "palabra clave" del principio.
    end

    if msgcontains(msg, "list") then
        npcHandler:say("Take a look to the destinies!", cid) -- Contestación del Npc "mostrándole" la lista de destinos.
        doShowTextDialog(cid, Hunts.Object, Hunts.List)
    end
  return true
end

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

Zona a editar:
--------###CONFIGURACIÓN ABAJO###--------
 local Hunts = {
   List = 'THAIS...\n1.- Rotworms\n2.- Cyclops North\n3.- Cyclops South\n4.- Dragons\n5.- Minotaurs\n6.- Beholders\n\nCARLIN...\n7.- Trolls\n8.- Rats\n\nVENORE...', -- Lista de destinos.
   Object = 1956, -- ID del objeto mostrado en la lista.
   Precio = 500, -- Cantidad de Gold Coins cobradas.

   --------THAIS--------
   ['1'] = { -- Número de la Zona Hunt o "Palabra clave" que ha de decir el jugador.
     Nombre = 'Rotworms', -- 'Nombre' de la Zona Hunt,
     Lugar = {x = 1010, y = 1031, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
   },

   ['2'] = { -- Número de la Zona Hunt o "Palabra clave" que ha de decir el jugador.
     Nombre = 'Cyclops Nort', -- 'Nombre' de la Zona Hunt,
     Lugar = {x = 1010, y = 1033, z = 7}, -- Coordenada del lugar lugar donde será teletransportado el jugador.
   },

   ['3'] = { -- Número de la Zona Hunt o "Palabra clave" que ha de decir el jugador.
     Nombre = 'Cyclops South', -- 'Nombre' de la Zona Hunt,
     Lugar = {x = 1010, y = 1035, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
   },

   ['4'] = { -- Número de la Zona Hunt o "Palabra clave" que ha de decir el jugador.
     Nombre = 'Dragons', -- 'Nombre' de la Zona Hunt,
     Lugar = {x = 1010, y = 1037, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
   },

   ['5'] = { -- Número de la Zona Hunt o y "Palabra clave" que ha de decir el jugador.
     Nombre = 'Minotaurs', -- 'Nombre' de la Zona Hunt,
     Lugar = {x = 1010, y = 1039, z = 7}, -- Coordenada del lugar lugar donde será teletransportado el jugador.
   },

   ['6'] = { -- Número de la Zona Hunt o "Palabra clave" que ha de decir el jugador.
     Nombre = 'Beholders', -- 'Nombre' de la Zona Hunt,
     Lugar = {x = 1010, y = 1041, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
   },
   ----------------------

   --------CARLIN--------
   ['7'] = { -- Número de la Zona Hunt o "Palabra clave" que ha de decir el jugador.
     Nombre = 'Trolls', -- 'Nombre' de la Zona Hunt,
     Lugar = {x = 1014, y = 1033, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
   },

   ['8'] = { -- Número de la Zona Hunt o "Palabra clave" que ha de decir el jugador.
     Nombre = 'Rats', -- 'Nombre' de la Zona Hunt,
     Lugar = {x = 1014, y = 1039, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
   },
   ----------------------

   --------VENORE--------

}
--------###CONFIGURACIÓN ARRIBA###--------

Así la vas poniendo sucesivamente cada línea, con especial cuidado en no cagarla con algún signo o simbolito ;D
En la variable "list" de la lista de destinos, recuerda que ésto "\n" sirve para saltar un renglón más abajo. Así que aunque en el script aparezca toda la lista en una sóla línea, en el juego aparecerá cada línea una a una.

Más las contestaciones de abajo que le dará el Npc dependiendo de la situación.



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]

#3 Re: NPC que de TP a Zonas de Hunt el Dom Feb 01, 2015 2:35 pm

GOD Hyperoid


Miembro
[Tienes que estar registrado y conectado para ver este vínculo] escribió:Servidor/Data/Npc/... NpcHuntList.xml
Código:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="NpcHuntList" script="data/npc/scripts/NpcHuntList.lua" walkinterval="0" floorchange="0">
  <health now="100" max="100"/>
  <look type="131" head="0" body="21" legs="95" feet="87" addons="1"/>
    <parameters>
      <parameter key="message_greet" value="Hi, where Would you like to go?"/>
    </parameters>
</npc>
(Todo eso ya lo editas tú a tu gusto)

Servidor/Data/Npc/Scripts/... NpcHuntList.lua
Código:
 local keywordHandler = KeywordHandler:new()
  local npcHandler = NpcHandler:new(keywordHandler)
  local Topic, place = {}, {}
    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

--------###CONFIGURACIÓN ABAJO###--------
  local Hunts = {
    List = 'THAIS...\n1.- Rotworms\n2.- Cyclops North\n3.- Cyclops South\n4.- Dragons\n5.- Minotaurs\n6.- Beholders\n\nCARLIN...\n7.- Trolls\n8.- Rats\n\nVENORE...', -- Lista de destinos.
    Object = 1956, -- ID del objeto mostrado en la lista.
    Precio = 500, -- Cantidad de Gold Coins cobradas.

    --------THAIS--------
    ['1'] = { -- Número de la Zona Hunt y "Palabra clave" que ha de decir el jugador.
      Nombre = 'Rotworms', -- 'Nombre' de la Zona Hunt,
      Lugar = {x = 1010, y = 1031, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
    },

    ['2'] = { -- Número de la Zona Hunt y "Palabra clave" que ha de decir el jugador.
      Nombre = 'Cyclops Nort', -- 'Nombre' de la Zona Hunt,
      Lugar = {x = 1010, y = 1033, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
    },

    ['3'] = { -- Número de la Zona Hunt y "Palabra clave" que ha de decir el jugador.
      Nombre = 'Cyclops South', -- 'Nombre' de la Zona Hunt,
      Lugar = {x = 1010, y = 1035, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
    },

    ['4'] = { -- Número de la Zona Hunt y "Palabra clave" que ha de decir el jugador.
      Nombre = 'Dragons', -- 'Nombre' de la Zona Hunt,
      Lugar = {x = 1010, y = 1037, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
    },

    ['5'] = { -- Número de la Zona Hunt y "Palabra clave" que ha de decir el jugador.
      Nombre = 'Minotaurs', -- 'Nombre' de la Zona Hunt,
      Lugar = {x = 1010, y = 1039, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
    },

    ['6'] = { -- Número de la Zona Hunt y "Palabra clave" que ha de decir el jugador.
      Nombre = 'Beholders', -- 'Nombre' de la Zona Hunt,
      Lugar = {x = 1010, y = 1041, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
    },
    ----------------------

    --------CARLIN--------
    ['7'] = { -- Número de la Zona Hunt y "Palabra clave" que ha de decir el jugador.
      Nombre = 'Trolls', -- 'Nombre' de la Zona Hunt,
      Lugar = {x = 1014, y = 1033, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
    },

    ['8'] = { -- Número de la Zona Hunt y "Palabra clave" que ha de decir el jugador.
      Nombre = 'Rats', -- 'Nombre' de la Zona Hunt,
      Lugar = {x = 1014, y = 1039, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
    },
    ----------------------

    --------VENORE--------

}
--------###CONFIGURACIÓN ARRIBA###--------

function creatureSayCallback(cid, type, msg)
  local msg = msg:lower()
    if not npcHandler:isFocused(cid) then
      return false
    end

    if (Topic[cid] == nil) or (Topic[cid] == 0) then
      place[cid] = Hunts[msg]
        if place[cid] then
            npcHandler:say("You will go to " .. place[cid].Nombre .. ", it's okay?", cid)
          Topic[cid] = 1
        end
    end

    if (msgcontains(msg, "yes") and Topic[cid] == 1) then
        if doPlayerRemoveMoney(cid, Hunts.Precio) == true then
            doSendMagicEffect (getThingPos(cid), CONST_ME_TELEPORT)
            doTeleportThing(cid, place[cid].Lugar)
            doSendMagicEffect (getThingPos(cid), CONST_ME_TELEPORT)
            npcHandler:releaseFocus(cid)
          Topic[cid] = 0
         else
           npcHandler:say(getPlayerMoney(cid) > 0 and "You need pay me " .. Hunts.Precio .. "gp for traveling! So... " .. Hunts.Precio - getPlayerMoney(cid)  .. "gp left." or "You need pay me " .. Hunts.Precio .. "gp for traveling!", cid) -- Contestación del Npc si el jugador no posee el coste requerido.
        end

     elseif (msgcontains(msg, "no") and Topic[cid] == 1) then
        npcHandler:say("Don't waste my time!", cid) -- Contestación del Npc si el jugador se niega a ser llevado, tras haberle dicho la "palabra clave" del principio.
    end

    if msgcontains(msg, "list") then
        npcHandler:say("Take a look to the destinies!", cid) -- Contestación del Npc "mostrándole" la lista de destinos.
        doShowTextDialog(cid, Hunts.Object, Hunts.List)
    end
  return true
end

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

Zona a editar:
--------###CONFIGURACIÓN ABAJO###--------
 local Hunts = {
   List = 'THAIS...\n1.- Rotworms\n2.- Cyclops North\n3.- Cyclops South\n4.- Dragons\n5.- Minotaurs\n6.- Beholders\n\nCARLIN...\n7.- Trolls\n8.- Rats\n\nVENORE...', -- Lista de destinos.
   Object = 1956, -- ID del objeto mostrado en la lista.
   Precio = 500, -- Cantidad de Gold Coins cobradas.

   --------THAIS--------
   ['1'] = { -- Número de la Zona Hunt o "Palabra clave" que ha de decir el jugador.
     Nombre = 'Rotworms', -- 'Nombre' de la Zona Hunt,
     Lugar = {x = 1010, y = 1031, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
   },

   ['2'] = { -- Número de la Zona Hunt o "Palabra clave" que ha de decir el jugador.
     Nombre = 'Cyclops Nort', -- 'Nombre' de la Zona Hunt,
     Lugar = {x = 1010, y = 1033, z = 7}, -- Coordenada del lugar lugar donde será teletransportado el jugador.
   },

   ['3'] = { -- Número de la Zona Hunt o "Palabra clave" que ha de decir el jugador.
     Nombre = 'Cyclops South', -- 'Nombre' de la Zona Hunt,
     Lugar = {x = 1010, y = 1035, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
   },

   ['4'] = { -- Número de la Zona Hunt o "Palabra clave" que ha de decir el jugador.
     Nombre = 'Dragons', -- 'Nombre' de la Zona Hunt,
     Lugar = {x = 1010, y = 1037, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
   },

   ['5'] = { -- Número de la Zona Hunt o y "Palabra clave" que ha de decir el jugador.
     Nombre = 'Minotaurs', -- 'Nombre' de la Zona Hunt,
     Lugar = {x = 1010, y = 1039, z = 7}, -- Coordenada del lugar lugar donde será teletransportado el jugador.
   },

   ['6'] = { -- Número de la Zona Hunt o "Palabra clave" que ha de decir el jugador.
     Nombre = 'Beholders', -- 'Nombre' de la Zona Hunt,
     Lugar = {x = 1010, y = 1041, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
   },
   ----------------------

   --------CARLIN--------
   ['7'] = { -- Número de la Zona Hunt o "Palabra clave" que ha de decir el jugador.
     Nombre = 'Trolls', -- 'Nombre' de la Zona Hunt,
     Lugar = {x = 1014, y = 1033, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
   },

   ['8'] = { -- Número de la Zona Hunt o "Palabra clave" que ha de decir el jugador.
     Nombre = 'Rats', -- 'Nombre' de la Zona Hunt,
     Lugar = {x = 1014, y = 1039, z = 7}, -- Coordenada del lugar donde será teletransportado el jugador.
   },
   ----------------------

   --------VENORE--------

}
--------###CONFIGURACIÓN ARRIBA###--------

Así la vas poniendo sucesivamente cada línea, con especial cuidado en no cagarla con algún signo o simbolito ;D
En la variable "list" de la lista de destinos, recuerda que ésto "\n" sirve para saltar un renglón más abajo. Así que aunque en el script aparezca toda la lista en una sóla línea, en el juego aparecerá cada línea una a una.

Más las contestaciones de abajo que le dará el Npc dependiendo de la situación.

Men ya te di +REP y todo, pero me sale este error al darle list, o decirle "1" yes-

[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 0 usuarios en línea: 0 Registrados, 0 Ocultos y 0 Invitado :: 1 Motor de búsqueda

Usuarios navegando en este foro: Ninguno
Motores de búsqueda : bing

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 .