BlackTibia

No estás conectado. Conéctate o registrate

 » Open Tibia » Pedido de Scripts » 

[ayuda] script

[ayuda] script

#1 [ayuda] script el Vie Ene 31, 2014 3:50 pm

LOD


Novato
hola gente de bt, vengo a pedirles un script el cual consite en que al final de una quest cuando abra el cofre en vez de darme un item, me de 3 items al azar, y yo quiero que vayan varios items asi que en el script que hallan varios espacios para poner items jajaj     

espero que no sea mucha molestia y muchas gracias

#2 Re: [ayuda] script el Vie Ene 31, 2014 9:34 pm

Belerofonte


Administrador
Servidor/Data/Actions/Actions.xml:
Código:
<action uniqueid="XXXX" event="script" value="NombreQueQuieras.lua"/>

Le pones el número que quieras al UniqueID "XXXX", tanto de la línea del Actions.xml, como en el Script, como en el cofre con Remeres.
Servidor/Data/Actions/Scripts/NombreQueQuieras.lua:
Código:
local Belero = { -- Créditos.
Str = 37214, -- StorageKey que gustes.
[XXXX] = { -- [UniqueID del Chest]
Azar = {
--[Número de la línea (1,2,3,4,...)]={1º ItemID, 2º ItemID, 3º ItemID que dé},
[1]={{2148, 2152, 2160}},
[2]={{2154, 2155, 2156}},
[3]={{2147, 2149, 2150}},
},
},
}
function onUse(cid,item,fromPosition,itemEx,toPosition)
local u = Belero[item.uid]
    if getPlayerStorageValue(cid, Belero.Str) ~= 1 then
     doPlayerSetStorageValue(cid, Belero.Str, 1)
      for _, z in ipairs (u.Azar[math.random(1,#u.Azar)]) do
      doPlayerAddItem(cid,z[1])
  doPlayerAddItem(cid,z[2])
  doPlayerAddItem(cid,z[3])
      doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "You have found " .. getItemArticleById(z[1]) .. " " ..  getItemNameById(z[1]) .. ", " .. getItemArticleById(z[2]) .. " " ..  getItemNameById(z[2]) .. " and " .. getItemArticleById(z[3]) .. " " ..  getItemNameById(z[3]) .. ".")
  end
 else
    doPlayerSendCancel(cid, "It's empty.")
    end
return true
end

Si quieres añadir más objetos solo tendrás que añadir más líneas como las anteriores, es decir:
[XXXX]={ -- [UniqueID del Chest]
Azar = {
-- [Número de la línea (1,2,3,4,...)]={1º ItemID, 2º ItemID, 3º ItemID que dé},
[1]={{2148, 2152, 2160}}, -- Monedas
[2]={{2154, 2155, 2156}}, -- Gemas
[3]={{2147, 2149, 2150}}, -- Diamantes
[4]={{5909, 5910, 5911}}, -- Pañuelos
[5]={{6547, 6548, 6549}}, -- Sulfuros
[6]={{5805, 5806, 5807}}, -- Trofeos
[7]={{2000, 2001, 2002}}, -- Backpacks



Última edición por Belerofonte el Vie Ene 02, 2015 1:25 pm, editado 1 vez



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: [ayuda] script el Vie Ene 31, 2014 10:17 pm

LOD


Novato
muchas gracias te pasaste lo agregae altiro y vere si funciona , te daria 5000 +REP pero no tengo idea como se da adaskdasjd ni tampoco se que es.

cdt y gracias de nuevo

#4 Re: [ayuda] script el Vie Ene 31, 2014 10:19 pm

LOD


Novato
y por cierto, para que sirve el StorageValue?? no lo entiendo :/

#5 Re: [ayuda] script el Vie Ene 31, 2014 11:41 pm

Belerofonte


Administrador
[Tienes que estar registrado y conectado para ver este vínculo] escribió:muchas gracias :Dte pasaste lo agregae altiro y vere si funciona , te daria 5000 +REP pero no tengo idea como se da adaskdasjd ni tampoco se que es.

cdt y gracias de nuevo
Jaja gracias aunque el rep no es necesario, aún no cantemos victoria yo lo probé en mi servidor y me funcionó obviamente no lo habría puesto en caso contrario pero igualmente por si acaso...

[Tienes que estar registrado y conectado para ver este vínculo] escribió:y por cierto, para que sirve el StorageValue?? no lo entiendo :/
Es como un valor numérico invisible y su cantidad, que se le adhiere o remueve al jugador o a todo el Servidor entero cuando se ejecuta X acción... en cristiano, por ejemplo: en este caso, es lo que hace para que se verifique de alguna forma que el jugador le haya dado ya al cofre y por lo tanto no le pueda volver a dar más.

Suele ser usado con estas Funciones Secundarias...
Para solamente el jugador:
Código:
getPlayerStorageValue(cid, StorageKey)
Código:
doPlayerSetStorageValue(cid, StorageKey, StorageValue)
o
setPlayerStorageValue(cid, StorageKey, StorageValue)
(que viene a ser la misma que la anterior solo que en algunos Servidores viene mejor una u otra)


Para el servidor entero:
Código:
getGlobalStorageValue(StorageKey)
setGlobalStorageValue(StorageKey, StorageValue)


Para eso es en el Script:
local Belero = { -- Créditos.
  Str = 37214, -- StorageKey que gustes.
  [XXXX] = { -- [UniqueID del Chest]
  Azar = {
  --[Número de la línea (1,2,3,4,...)]={1º ItemID, 2º ItemID, 3º ItemID que dé},
  [1]={{2148, 2152, 2160}},
  [2]={{2154, 2155, 2156}},
  [3]={{2147, 2149, 2150}},
  },
  },
  }


function onUse(cid,item,fromPosition,itemEx,toPosition)
if getPlayerStorageValue(cid, Belero.Str) ~= 1 then
si el StorageValue verificado del Jugador (Jugador, Belero.Str) no es igual a 1 entonces hay que:

doPlayerSetStorageValue(cid, Belero.Str, 1)
ponerle al Jugador el siguiente StorageValue (Jugador, Belero.Str, 1)


for _, z in ipairs (u.Azar[math.random(1,#u.Azar)]) do

doPlayerAddItem(cid,z[1])
Añadirle al Jugador el siguiente Objeto (Jugador, 1º Objeto de la línea)

doPlayerAddItem(cid,z[2])
Añadirle al Jugador el siguiente Objeto (Jugador, 2º Objeto de la línea)

doPlayerAddItem(cid,z[3])
Añadirle al Jugador el siguiente Objeto (Jugador, 3º Objeto de la línea)

doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "You have found " .. getItemArticleById(z[1]) .. " " ..  getItemNameById(z[1]) .. ", ... lo mismo con los 2 de abajo.
Enviarle al Jugador el siguiente Mensaje de Texto (Jugador, TIPO_DE_MENSAJE, "Has encontrado " .. adquirir artíkulo (a o an) del Objeto que haya dentro del paréntesis según su ID(1º Objeto de la línea) .. " " ..  adquirir el nombre del Objeto que haya dentro del paréntesis según su ID(1º Objeto de la línea) .. ", ... lo mismo con los 2 de abajo.
end

else
pero (pero si no se da el caso que se indica en el "if getPlayerStorageValue(cid, Belero.Str) ~= 1 then", es decir, si el StorageValue verificado del jugador sí es igual o es mayor o es menor a 1) entonces hay que:
doPlayerSendCancel(cid, "It's empty.")
enviarle al Jugador mensaje de Cancelación (Jugador, "El cofre está vacío."
end

return true
end

Por lo tanto cada número del Storage de cada script ha de ser distinto de los otros pues si por ejemplo, en parte de otro script se hayase la función:
Código:
doPlayerSetStorageValue(cid, 37214, 1)
Que por ejemplo si al hablar con un NPC se le adhiere al jugador ese Storage, como es el mismo número que hay en el Storage de este otro script, el resultado sería que el jugador al darle al cofre no adquiriría ningún objeto pues ya le contaría como si lo hubiése obtenido sin hacerlo por el hecho de tener el mismo Storage registrado

Espero no haberme explicado tan bien como lo haría un zapato xD

PD: Acuérdate de usar el botón [Tienes que estar registrado y conectado para ver esa imagen] para cuando quieras añadir algún contenido más a tu anterior comentario



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: [ayuda] script Hoy a las 8:49 pm

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 .