BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

[Pedido] Script de Npc Pokemon

[Pedido] Script de Npc Pokemon

#1 [Pedido] Script de Npc Pokemon el Jue Ene 08, 2015 5:19 am

yiing12


Novato
Buenas, necesito un NPC que me cambie mi Old Amber por un Aerodactyl. Si me pueden ayudar Gracias.

#2 Re: [Pedido] Script de Npc Pokemon el Jue Ene 08, 2015 6:25 am

Belerofonte


Administrador
- ¿Cómo sería la estructura del diálogo? "¿Hi, old amber, yes/no, bye?" dime qué es lo que le tendría que decir el jugador y qué es lo que el Npc le responderá...
(o sea, no es necesario las palabras exactas, eso ya tú lo editas a tu gusto después pero sí la estructura...)

(Más, si quieres, algunas que otras palabras (que ha de decir el jugador) aparte para que el Npc le explique qué es lo que hace, qué es el amber, cuál es el Aerodactyl, y más cositas que le quieras meter para darle más historia)

- ¿Que solamente sea una vez o que siempre que el jugador tenga un ámbar viejo pueda intercambárselo?
O que solamente la primera vez se lo intercambie por Aerodactyl y que las demás veces solamente le dé otra cosa como dinero o algo... hay muchas formas u opciones por imaginar y hacerlo c:



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: [Pedido] Script de Npc Pokemon el Jue Ene 08, 2015 7:30 am

yiing12


Novato
Y que no pida solo el Old amber, me gustaria que tambien pidiera 100 Rock Stone

La charla seria masomenos asi

Player: Hi
Npc: Hi, I can give you "Aerodactyl" for you Old Amber.
Player: Aerodactyl
Npc: Accept change your Old Amber for Aerodactyl?.
Player: Yes.
Npc: Done! Enjoy It.

y pues le da su aerodactyl.
Bye.

Y que las cambie las veces que tenga el old amber

#4 Re: [Pedido] Script de Npc Pokemon el Jue Ene 08, 2015 11:15 am

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:Y que no pida solo el Old amber, me gustaria que tambien pidiera 100 Rock Stone
a) ¿Que sea necesario tener Old Amber & 100 Rock stones para intercambiarlos juntos por el Aerodactyl?

b) ¿Que vayan por separado, es decir, que a cambio del Old Amber dé el Aerodactyl y a cambio de las 100 Rock Stonesotra cosa que no mencionaste?



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]

#5 Re: [Pedido] Script de Npc Pokemon el Jue Ene 08, 2015 3:07 pm

yiing12


Novato
Seria mas como A). Ambas cosas por el Aerodactyl

#6 Re: [Pedido] Script de Npc Pokemon el Vie Ene 09, 2015 6:31 am

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:Seria mas como A).  Ambas cosas por el Aerodactyl

Finalmente pequé de confiado pues me costó bastante por no estar familiarizado con los sistemas de pokémon.
Y algo que me resultaría tan fácil de hacer en tibia normal como el requisito de tener ambos objetos... aquí me ha costado la vida hacerlo xD


Servidor/Data/Npc/ ... Npc.xml:
Código:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="Yiing12" script="yiingBuyPoke.lua" walkinterval="350000" floorchange="0" speed="0">
<health now="100" max="100"/>
<look type="510" head="95" body="116" legs="121" feet="115" addons="3"/>
</npc>
(Todo eso ya lo pones tú a tu gusto. Más, si quieres, las contestaciones de despedida, etc... menos la del saludo MESSAGE_GREET porque esa ya va dentro del siguiente script)

Servidor/Data/Npc/Scripts/ ... yiingBuyPoke.lua: (o como quieras llamar al archivo.lua, el mismo nombre que le hayas puesto en la variable: script="yiingBuyPoke.lua" del archivo.xml anterior)
Código:
 local keywordHandler = KeywordHandler:new()
  local npcHandler = NpcHandler:new(keywordHandler)
    NpcSystem.parseParameters(npcHandler)
  local Topic = {}
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 c = {
    addPoke = 'Aerodactyl', -- 'Nombre' del pokémon entregado. (Palabra clave que ha de decir el jugador tras saludar)
    level = 8, -- Nivel del pokémon.
    btype = "normal", -- Tipo de pokeball que guardará al pokémon. (normal, super, ultra, etc...)
    object = {
    --  {id = ID del objeto necesario, count = Cantidad del cual},
        {id = 12581, count = 1}, -- 1 old amber.
        {id = 11445, count = 100}, -- 100 rock stones.
    },
  }

  local thing = {
    amberName = c.object[1].id, -- thing.amberName
    amberCount = c.object[1].count, -- thing.amberCount
    rocksName = c.object[2].id, -- thing.rocksName
    rocksCount = c.object[2].count, -- thing.rocksCount
  }

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

  local dialog = { -- Conversación.
    'Accept change your ' .. getItemNameById(thing.amberName) .. ' and ' .. thing.rocksCount .. ' ' .. (thing.rocksCount > 1 and getItemPluralNameById(thing.rocksName) or getItemNameById(thing.rocksName)) .. ' for {'.. doCorrectPokemonName(c.addPoke) .. '}?', -- Contestación del Npc, para la confirmación del intercambio.

    'yes', -- Palabra clave de afirmación del jugador, a la anterior pregunta.
    'Deal done!', -- Contestación del Npc tras la confirmación anterior del jugador, junto con el intercambio realizado.

    'You need give me ' .. getItemArticleById(thing.amberName) .. ' ' .. getItemNameById(thing.amberName) .. ' and ' .. thing.rocksCount .. ' ' .. (thing.rocksCount > 1 and getItemPluralNameById(thing.rocksName) or getItemNameById(thing.rocksName)) .. '.', -- Contestación negativa del Npc, si el jugador no posee alguno de los objetos requeridos.

    'no', -- Palabra clave de negación del jugador, para rechazar el intercambio propuesto.
    'Well, do not waste my time!', -- Contestación del Npc, tras la anterior negación del jugador.
  }

    if (msgcontains(msg, c.addPoke) and Topic[cid] == nil or Topic[cid] == 0) then
        selfSay(dialog[1], cid)
      Topic[cid] = 1
     elseif (msgcontains(msg, dialog[2]) and Topic[cid] == 1) then
      local result = true
        for _, item in pairs(c.object) do
            if getPlayerItemCount(cid, item.id) < item.count then
                result = false
              break
            end
        end

        if result then
            for _, item in pairs(c.object) do
                doPlayerRemoveItem(cid, item.id, item.count)
            end
            selfSay(dialog[3], cid)
            addPokeToPlayer(cid, c.addPoke, c.level, nil, c.btype)
         else
           selfSay(dialog[4], cid)
        end

     elseif (msgcontains(msg, dialog[5]) and Topic[cid] == 1) then
        selfSay(dialog[6], cid)
        npcHandler:releaseFocus(cid)
        npcHandler:resetNpc(cid)
      Topic[cid] = 0
    end
  return true
end

npcHandler:setMessage(MESSAGE_GREET, 'Hi, I can give you an {' .. c.addPoke .. '} for you Old Amber and ' .. (thing.rocksCount > 1 and getItemPluralNameById(thing.rocksName) or getItemNameById(thing.rocksName)) .. '.') -- Contestación del Npc, tras el saludo del jugador.
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Zonas a editar:
A partir de la línea 10:

 local c = {
   addPoke = 'Aerodactyl', -- 'Nombre' del pokémon entregado. (Palabra clave que ha de decir el jugador tras saludar)
   level = 8, -- Nivel del pokémon.
   btype = "normal", -- Tipo de pokeball que guardará al pokémon. (normal, super, ultra, etc...)
   object = {
   --  {id = ID del objeto necesario, count = Cantidad del cual},
       {id = 12581, count = 1}, -- 1 old amber.
       {id = 11445, count = 100}, -- 100 rock stones.
   },
 }

A partir de la línea 34:

 local dialog = { -- Conversación.
   'Accept change your ' .. getItemNameById(thing.amberName) .. ' and ' .. thing.rocksCount .. ' ' .. (thing.rocksCount > 1 and getItemPluralNameById(thing.rocksName) or getItemNameById(thing.rocksName)) .. ' for {'.. doCorrectPokemonName(c.addPoke) .. '}?', -- Contestación del Npc, para la confirmación del intercambio.

   'yes', -- Palabra clave de afirmación del jugador, a la anterior pregunta.
   'Deal done!', -- Contestación del Npc tras la confirmación anterior del jugador, junto con el intercambio realizado.

   'You need give me ' .. getItemArticleById(thing.amberName) .. ' ' .. getItemNameById(thing.amberName) .. ' and ' .. thing.rocksCount .. ' ' .. (thing.rocksCount > 1 and getItemPluralNameById(thing.rocksName) or getItemNameById(thing.rocksName)) .. '.', -- Contestación negativa del Npc, si el jugador no posee los objetos requeridos.

   'no', -- Palabra clave de negación del jugador, para rechazar el intercambio propuesto.
   'Well, do not waste my time!', -- Contestación del Npc, tras la anterior negación del jugador.
 }

En la línea 77:

npcHandler:setMessage(MESSAGE_GREET, 'Hi, I can give you an {' .. c.addPoke .. '} for you Old Amber and ' .. (thing.rocksCount > 1 and getItemPluralNameById(thing.rocksName) or getItemNameById(thing.rocksName)) .. '.') -- Contestación del Npc, tras el saludo del jugador.

Listo. Cualquier duda, error o problema al respecto no dudes en comentarla



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]

#7 Problema Script Pokemon NPC el Sáb Ene 10, 2015 1:57 pm

yiing12


Novato
El Script del NPC de Aerodactyl, al momento de decirle Hi y decir la palabra Aerodactyl no me dice nada.
Ejemplo:

Hi - Jugador
Hi, I can give you an Aerodactyl for you Old Amber and Rock Stones. - Npc
Aerodactyl- Jugador.



Ahi ya no pasa nada, no me pregunta si quiero cambiar los item por el Aerodactyl.

#8 Re: [Pedido] Script de Npc Pokemon el Sáb Ene 10, 2015 2:12 pm

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:El Script del NPC de Aerodactyl, al momento de decirle Hi y decir la palabra Aerodactyl no me dice nada.
Ejemplo:

Hi - Jugador
Hi, I can give you an Aerodactyl for you Old Amber and Rock Stones. - Npc
Aerodactyl- Jugador.



Ahi ya no pasa nada, no me pregunta si quiero cambiar los item por el Aerodactyl.

- ¿Algún error en la consola?
- ¿Qué servidor de pokémon tienes, nombre, versión, etc... ?



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]

#9 Re: [Pedido] Script de Npc Pokemon el Sáb Ene 10, 2015 11:45 pm

yiing12


Novato
Lo que paso es que le digo Hi al npc y me dice que si quiero cambiar por "aerodactyl"(marcadas en azul). Intente diciendole Aerodactyl pero no me dice nada mas como que le falta agregar esa parte a los dialogos. Para cuando yo diga Aerodactyl el me diga que si quiero aceptar el intercambio ya segun lo que diga el usuario

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

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 .