BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

Pedido de 2 Scripts 1[NPC] & 2[Script]

Pedido de 2 Scripts 1[NPC] & 2[Script]

#1 Pedido de 2 Scripts 1[NPC] & 2[Script] el Vie Oct 17, 2014 10:33 pm

nefinoo


Miembro
Quisiera un script donde el npc por ejemplo quieras cambiarle 1 item por otro y este te cobre una comision por cambiarte el item.

y el otro es un script, que al momento de utilizar un weapon, o una parte de un set, este de al azar un item como dinero o que se yo, y que tenga un exausted de media hora o algo por el estilo.

#2 Re: Pedido de 2 Scripts 1[NPC] & 2[Script] el Lun Oct 20, 2014 2:09 pm

nefinoo


Miembro
Bump

#3 Re: Pedido de 2 Scripts 1[NPC] & 2[Script] el Miér Oct 22, 2014 3:09 pm

Belerofonte


Administrador
Servidor/Data/Npc/... nombre.xml:
Código:
<?xml version="1.0" encoding="UTF-8"?>
<npc name="NombreDelNPC" script="data/npc/scripts/nombre.lua" walkinterval="2000" floorchange="0">
    <health now="100" max="100"/>
    <look type="128" head="116" body="79" legs="117" feet="76" addons="0"/>
    <parameters>
        <parameter key="message_greet" value="Oh! otra inocente victima. Jeje!... ejem...!! Saludos al valiente |PLAYERNAME|, entra a mi tienda! o dime {lista} si deseas que te nombre mi lista de intercambios disponibles."/>
        <parameter key="message_farewell" value="Vuelve pronto! Si intercambias en cualquier otro sitio... te mato."/>
        <parameter key="message_walkaway" value="Hasta luego! hablales a todos de mis fabulosos intercambios!" />
    </parameters>
</npc>

Servidor/Data/Npc/Scripts... nombre.lua:
 local keywordHandler = KeywordHandler:new()
 local npcHandler = NpcHandler:new(keywordHandler)
   NpcSystem.parseParameters(npcHandler)
 local Topic = {}

 local stuff = {
--[+1 en cada línea] = {comision = Cantidad de Gold coins necesarias, requeridoID = ID del objeto requerido, obtenidoID = ID del objeto obtenido},
   [1] = {comision = 100, requeridoID = 5881, obtenidoID = 5882},
   [2] = {comision = 200, requeridoID = 5877, obtenidoID = 5878},
 }

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)
  Topic[cid] = 0
 return true
end

function creatureSayCallback(cid, type, msg)
local Gender = getPlayerSex(cid) == 0 and 'a' or 'o' -- "Gender" variable para definir si el NPC se está refiriendo a un personaje hombre o mujer, en sus mensajes.
   if not npcHandler:isFocused(cid) then
     return false
    elseif Topic[cid] ~= 0 then
       if msgcontains(msg, string.lower('yes')) then -- Palabra clave que dirá el jugador para aceptar el intercambio.
         local v = stuff[Topic[cid]]
           if getPlayerItemCount(cid, v.requeridoID) > 0 then
               if doPlayerRemoveMoney(cid, v.comision) then
                   doPlayerRemoveItem(cid, v.requeridoID, 1)
                   doPlayerAddItem(cid, v.obtenidoID, 1)
                   selfSay('Aqui tienes chic'.. (Gender) ..'. En este mundo... nada es gratis! JUAS JUAH JUAS!', cid) -- Mensaje del Npc si el jugador intercambia & da la comision con éxito.
                else
                  selfSay('Estas sec'.. (Gender) ..'. Vuelve cuando tengas mi comision! Sin ganancia nadie intercambia! JUAH JUAS JUAH!',cid) -- Mensaje del Npc si el jugador no posee la comisión necesaria.
               end
            else
              selfSay('Hey! no tienes ningun {' .. getItemNameById(v.requeridoID) .. '}! Querias timarme? Grrrrr!!',cid) -- Mensaje del Npc si el jugador no posee el objeto necesario.
           end
        else
          selfSay('Entonces para que has venido? Espantas a la clientela! LARGO DE AQUI!!', cid) -- Mensaje del Npc si el jugador se niega a intercambiar o no responde con la palabra clave "yes" de arriba.
       end
     Topic[cid] = 0
    else
     for i = 1, #stuff do
       if msgcontains(msg, string.lower(getItemNameById(stuff[i].obtenidoID))) then
           selfSay('Entonces, me quieres cambiar tu {' .. getItemNameById(stuff[i].requeridoID) .. '} a cambio de mi {' .. getItemNameById(stuff[i].obtenidoID) .. '}?\n...bien! eso te costara apenas unos {' .. stuff[i].comision .. ' Gold coins}... casi nada. Trato hecho?',cid) -- Mensaje del Npc si el jugador dice el nombre del objeto que desea intercambiar.
          Topic[cid] = i
         break
       end
       if msgcontains(msg, string.lower('lista')) then -- Palabra clave que dirá el jugador para poder ver la lista de objetos intercambiables.
          text = 'Si me das una ' ..getItemNameById(stuff[i].requeridoID).. ' (y una pequeña comision de ' .. stuff[i].comision .. ' Gold coins)... Te dare a cambio un {' .. getItemNameById(stuff[i].obtenidoID) .. '}.' -- Mensajes que dirá el Npc entre cada objeto intercambiable y sus respectivas comisiones. (Se repetirá tantas veces, como número de líneas haya en la tabla stuff de arriba.)
           selfSay(text, cid)
       end
     end
   end
 return true
end

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

Editas a tu gusto cada elemento señalado por un color y su correspondiente anotación a la derecha.
Si quieres añadir más objetos, solo tienes que añadir más líneas como las anteriores en la tabla "stuff" de arriba, ejemplo:
 local stuff = {
--[+1 en cada línea] = {comision = Cantidad de Gold coins necesarias, requeridoID = ID del objeto requerido, obtenidoID = ID del objeto obtenido},
   [1] = {comision = 100, requeridoID = 5881, obtenidoID = 5882},
   [2] = {comision = 200, requeridoID = 5877, obtenidoID = 5878},
   [3] = {comision = 874, requeridoID = 5897, obtenidoID = 5896},
   [4] = {comision = 42, requeridoID = 5919, obtenidoID = 5903},
   [5] = {comision = 108, requeridoID = 8304, obtenidoID = 2392},

 }

Fuentes: Lo saqué de [Tienes que estar registrado y conectado para ver este vínculo]

Respecto a la weapon, una duda:
[Tienes que estar registrado y conectado para ver este vínculo] escribió:al momento de utilizar un weapon
Con eso te refieres a...
a) ¿ponértela en tu set?
b) ¿dándole clíck? y en tal caso, ¿que funcione solamente si la cual la tienes equipada o no?



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]

#4 Re: Pedido de 2 Scripts 1[NPC] & 2[Script] el Miér Oct 22, 2014 4:25 pm

nefinoo


Miembro
Spoiler:
Con eso te refieres a...
a) ¿ponértela en tu set?
b) ¿dándole clíck? y en tal caso, ¿que funcione solamente si la cual la tienes equipada o no?

Si que cuando le des click, no necesariamente que la tengas puesta, si no que la tengas puesta o este en tu backpack.

Gracias !

#5 Re: Pedido de 2 Scripts 1[NPC] & 2[Script] el Jue Oct 23, 2014 4:47 am

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:
Spoiler:
Con eso te refieres a...
a) ¿ponértela en tu set?
b) ¿dándole clíck? y en tal caso, ¿que funcione solamente si la cual la tienes equipada o no?

Si que cuando le des click, no necesariamente que la tengas puesta, si no que la tengas puesta o este en tu backpack.

Gracias !
Servidor/Data/Lib/050-function.lua: (en cualquier parte que no entre en conflicto con las demás, por ejemplo arriba del todo)
Código:
function timeString(timeDiff)
  local dateFormat = {
    {"day", timeDiff / 60 / 60 / 24},
    {"hour", timeDiff / 60 / 60 % 24},
    {"minute", timeDiff / 60 % 60},
    {"second", timeDiff % 60}
  }

  local out = {}
    for k, t in ipairs(dateFormat) do
      local v = math.floor(t[2])
        if(v > 0) then
            table.insert(out, (k < #dateFormat and (#out > 0 and ', ' or '') or ' and ') .. v .. ' ' .. t[1] .. (v ~= 1 and 's' or ''))
        end
    end
  local ret = table.concat(out)
    if ret:len() < 16 and ret:find("second") then
      local a, b = ret:find(" and ")
      ret = ret:sub(b+1)
    end
  return ret
end

Servidor/Data/Actions/Actions.xml:
<action itemid="2471;6578;6531" event="script" value="weaponazar.lua"/>
Ahí pones los ID de las weapons que desees, cada una separada por un punto & coma.

Servidor/Data/Actions/Scripts/... weaponazar.lua:
Código:
 local c = {
-- [WeaponID] = {
--  str = StorageKey que gustes,
--  exHaust = Minutos de ehxaustion,
--  effect = Término del efecto mágico que aparecerá,
--  {Objeto que puede soltar, Cantidad},
--  {Objeto que puede soltar, Cantidad},
--  {Objeto que puede soltar, Cantidad},
-- },
   [2471] = { -- Golden Helmet.
    str = 38720,
    exHaust = 5,
    effect = CONST_ME_FIREWORK_YELLOW,
 {2148, 1},
 {2159, 2},
 {2152, 5},
 {2160, 3},
   },
   [6578] = { -- Party Hat.
    str = 38721,
    exHaust = 10,
    effect = CONST_ME_FIREWORK_BLUE,
    {6280, 2},
    {6501, 1},
    {6572, 4},
   },
   [6531] = { -- Santa Hat.
    str = 38722,
    exHaust = 2,
    effect = CONST_ME_FIREWORK_RED,
    {6512, 1},
    {7441, 2},
   },
  }
function onUse(cid, item, position)
local k = c[item.itemid]
  local v = k[math.random(#k)]
    if exhaustion.get(cid, k.str) == false then
        doPlayerAddItem(cid, v[1], v[2])
        doSendMagicEffect(position, k.effect)
        exhaustion.set(cid, k.str, k.exHaust * 60)
     else
       doPlayerSendCancel(cid, 'You must wait '.. timeString(exhaustion.get(cid, k.str)) ..'.')
    end
  return true
end



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]

#6 Re: Pedido de 2 Scripts 1[NPC] & 2[Script] el Vie Oct 24, 2014 8:14 pm

nefinoo


Miembro
Mis respetos belerofonte (Y)

#7 Re: Pedido de 2 Scripts 1[NPC] & 2[Script] el Sáb Oct 25, 2014 12:21 am

nefinoo


Miembro
22:50 Maloka [10000: hi
22:50 Joe: Oh! otra inocente victima. Jeje!... ejem...!! Saludos al valiente Maloka, entra a mi tienda! o dime lista si deseas que te nombre mi lista de intercambios disponibles.
22:50 Maloka [10000: lista
22:50 Joe: Si me das una [Bound 1] Studded helmet (y una pequeña comision de 500 Gold coins)... Te dare a cambio un [Bound 1] Studded armor.
22:50 Joe: Si me das una [Bound 1] Studded helmet (y una pequeña comision de 500 Gold coins)... Te dare a cambio un [Bound 1] Studded legs.
22:50 Joe: Si me das una [Bound 1] Studded helmet (y una pequeña comision de 500 Gold coins)... Te dare a cambio un [Bound 1] Studded boots.
22:50 Joe: Si me das una [Bound 1] Studded helmet (y una pequeña comision de 500 Gold coins)... Te dare a cambio un [Bound 1] Studded shield.
22:50 Joe: Si me das una [Bound 1] Studded helmet (y una pequeña comision de 500 Gold coins)... Te dare a cambio un [Bound 1] Studded staff.
22:50 Joe: Si me das una [Bound 1] Studded helmet (y una pequeña comision de 500 Gold coins)... Te dare a cambio un [Bound 1] Studded ring.
22:50 Joe: Si me das una [Bound 1] Studded helmet (y una pequeña comision de 500 Gold coins)... Te dare a cambio un [Bound 1] Studded blade.
22:50 Joe: Si me das una [Bound 1] Studded helmet (y una pequeña comision de 500 Gold coins)... Te dare a cambio un [Bound 1] Studded spear.
22:50 Maloka [10000: [Bound 1] Studded helmet
22:50 Maloka [10000: [Bound 1] Studded armor
22:50 Maloka [10000: yes
22:50 Maloka [10000: trade

No hace nada el npc, aparte queria saber que si podrias hacerlo que en ves de pedir un item, pueda cambiar por varias opciones, por ejemplo, quieres cambiar un mazo, y te de la opcion de cambiarlo por un sword, axe o spear cobrandote una comision por el intercambio

#8 Re: Pedido de 2 Scripts 1[NPC] & 2[Script] el Sáb Oct 25, 2014 1:59 am

nefinoo


Miembro
Man tambien cuando uso los items, los puedo usar seguido no tienen exausted, y podrias hacer que al darte los items tengan un chance? osea que sea mas probable que te de unos mas que otros

#9 Re: Pedido de 2 Scripts 1[NPC] & 2[Script] el Sáb Oct 25, 2014 4:10 am

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:Man tambien cuando uso los items, los puedo usar seguido no tienen exausted, y podrias hacer que al darte los items tengan un chance? osea que sea mas probable que te de unos mas que otros
Cuando no hayan pasado 24 horas y nadie más te ha respondido entre mensaje & mensaje, intenta usar la opción "Editar" para añadir lo que quieras

Respecto al Npc.
No le tienes que decir el objeto que tú ya tienes, tienes que decirle el objeto que tenga disponible para cambiarte.

Respecto al weaponsAzar.
El God no posee exhaustion. Por lo que prueba a testarlo con un jugador normal.
Y ¿cuántos niveles(rare, semi rare, normal, etc...) de probabilidades quiéres que tenga? o dicho de otro modo ¿qué número de probabilidades han de darse para que pueda salir cada objeto?



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]

#10 Re: Pedido de 2 Scripts 1[NPC] & 2[Script] el Sáb Oct 25, 2014 3:01 pm

nefinoo


Miembro
Por ejemplo que 1 item, te pueda tirar, platinum coin 70%, crystal coin 50%, o scarab coin 30%

#11 Re: Pedido de 2 Scripts 1[NPC] & 2[Script] el Sáb Oct 25, 2014 4:01 pm

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:Por ejemplo que 1 item, te pueda tirar, platinum coin 70%, crystal coin 50%, o scarab coin 30%
Código:
 local c = {
-- [WeaponID] = {
--  str = StorageKey que gustes,
--  exHaust = Minutos de ehxaustion,
--  effect = Término del efecto mágico que aparecerá,
--   [70] = { -- 70% normal (no tocar)
--      item = {Reward = ID del objeto entragado, Count = Cantidad del objeto entregado},
--   },
--   [50] = { -- 50% semi-raro (no tocar)
--      item = {Reward = ID del objeto entragado, Count = Cantidad del objeto entregado},
--   },
--   [30] = { -- 30% raro (no tocar)
--      item = {Reward = ID del objeto entragado, Count = Cantidad del objeto entregado},
--   },
--  },
    [2471] = { -- Golden Helmet.
      str = 38720,
      exHaust = 5,
      effect = CONST_ME_FIREWORK_YELLOW,
     [70] = { -- 70% normal
        item = {Reward = 2148, Count = 4},
     },
     [50] = { -- 50% semi-raro
        item = {Reward = 2152, Count = 2},
     },
     [30] = { -- 30% raro
        item = {Reward = 2160, Count = 1},
     },
    },
    [6578] = { -- Party Hat.
      str = 38721,
      exHaust = 10,
      effect = CONST_ME_FIREWORK_BLUE,
     [70] = { -- 70% normal
        item = {Reward = 6280, Count = 1},
     },
     [50] = { -- 50% semi-raro
        item = {Reward = 6501, Count = 2},
     },
     [30] = { -- 30% raro
        item = {Reward = 6572, Count = 4},
     },
    },
    [6531] = { -- Santa Hat.
      str = 38722,
      exHaust = 2,
      effect = CONST_ME_FIREWORK_RED,
     [70] = { -- 70% normal
        item = {Reward = 2111, Count = 5},
     },
     [50] = { -- 50% semi-raro
        item = {Reward = 7441, Count = 2},
     },
     [30] = { -- 30% raro
        item = {Reward = 6512, Count = 2},
     },
    },
  }

function onUse(cid, item, position)
  local v, premio, cantidad = c[item.itemid], {}, {}
    if exhaustion.get(cid, v.str) == false then
      local a = math.random(1,100)
        if a <= 30 then
          local Rare = v[30].item
            premio, cantidad = Rare.Reward, Rare.Count
         elseif a > 0 and a <= 50 then
          local Semi = v[50].item
            premio, cantidad = Semi.Reward, Semi.Count
         elseif a > 30 then
          local Normal = v[70].item
            premio, cantidad = Normal.Reward, Normal.Count
        end
        doPlayerAddItem(cid, premio, cantidad)
        doSendMagicEffect(position, v.effect)
        exhaustion.set(cid, v.str, v.exHaust * 60)
     else
       doPlayerSendCancel(cid, 'You must wait '.. timeString(exhaustion.get(cid, v.str)) ..'.')
    end
  return true
end

Respecto a las opciones del Npc lo intentaré aunque dudo mucho que lo consiga... (¿no podrías haber pedido esas cosas desde un principio? xD)



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]

#12 Re: Pedido de 2 Scripts 1[NPC] & 2[Script] el Lun Oct 27, 2014 10:34 pm

nefinoo


Miembro
Belerofonte no podras hacer que el npc cambiara por ejemplo 1 arma por otros 8 items diferentes?

1 blue sword, por unas blue legs por 500gp
1 blue sword, por unas blue armor por 500gp
1 blue sword, por unas blue shield por 500gp
1 blue sword, por unas blue helmet por 500gp


1 blue legs, por unas blue swordpor 500gp
1 blue legs, por unas blue armor por 500gp
1 blue legs, por unas blue shield por 500gp
1 blue legs, por unas blue helmet por 500gp

algo asi y sucesivamente

#13 Re: Pedido de 2 Scripts 1[NPC] & 2[Script] el Mar Oct 28, 2014 10:29 pm

nefinoo


Miembro
Bum´p

#14 Re: Pedido de 2 Scripts 1[NPC] & 2[Script] el Jue Oct 30, 2014 12:57 am

nefinoo


Miembro
Bump?

#15 Re: Pedido de 2 Scripts 1[NPC] & 2[Script] el Mar Nov 04, 2014 1:05 am

nefinoo


Miembro
@BUMP

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 .