Haciendo Scripts Lua para Servers

Ver el tema anterior Ver el tema siguiente Ir abajo

Haciendo Scripts Lua para Servers

Mensaje por Vampiro el Mar Jul 01, 2008 8:24 pm

Guia sacada de www.eotfans.net
Link: Ver pagina original

En esta guia explicare cada una de las cosas que usaremos para hacer
Scripts en lenguage Lua para OTServ, partiendo desde lo basico, tambien
mantendre los dos posts siguientes en el caso de que necesite agregar
informacion.
Esta guia fue solicitada por Marzelo y espero que le sirva a mucha
gente mas, realmente espero que aprendan a hacer scripts por su cuenta.
No habia tenido tiempo, pero ahora que tengo un poco avanazare un poco en ella.


Simbolos mas usados.


Comparacion
> indicara que el valor de la izquierda es mayor al de la derecha.
< indicara que el valor de la derecha es mayor al de la izquierda.
>= indicara que el valor de la izquierda es mayor o igual al de la derecha.
<= indicara que el valor de la derecha es igual o mayor al de la izquierda.
== indicara que ambos valores son iguales.
~= indicara que ambos valores no son iguales.
Calculos
= esto ara que un valor pase a ocupar otro valor.
- calculo resta, tambien se usa para dar un valor negativo.
+ calculo suma.
* calculo multiplicacion.
/ calculo division.
Puntuaciones
. se usa para muchas cosas, una de sus principales funciones en lua es definir un parametro de una funcion y/o valor.
, se usa para muchas cosas, una de sus principales funciones en lua es separar parametros de una funcion y/o valor.
Parentesis
{ } abre y cierra una tabla.
( ) abre y cierra los parametros de una funcion y/o valor.
[ ] se usa para varias cosas, una des sus principales funcion en lua es abrir y cerrar subparametros en una funcion y/o valor.
Comillas
" " se usa para introducir texto en nuestra operacion.
' ' se usa para introducir texto en nuestra operacion.
si las comillas no se cierran correctamente esto dejara nula la operacion.
\ se usa para anular una comilla.

ejemplos
Código:
nivel del player = variante

el valor "nivel rdel player" pasa a tomar el valor de una variante que luego explicare como hacer.
Código:
nivel requerido = 50

el valor "nivel requerido" pasa a tomar el valor de 50.
Código:
nivel del player > nivel requerido

si el nivel del player es mayos a ...
Código:
nivel del player < nivel requerido

si el nivel del player es menor a ...
Código:
nivel del player >= nivel requerido

si el nivel del player es mayor o igual a ...
Código:
nivel del player <= nivel requerido

si el nivel del player es menor o igual a ...
Código:
nivel del player == nivel requerido

si el nivel del player es igual a ..
Código:
nivel del player ~= nivel requerido

Código:
posicion = {x = 1000, Y = 1000, z = 7}

en este ejemplo tenemos varias cosas presentes, como el valor
"posicion" pasa a tomar el valor indicado en la tabla, en la cual los
parametros tambien pasan a tomar un valor indicado con "=", y los
cuales estan separados por una coma ",".
Código:
valor1 = {mensaje = "Hola", color = 15}
doPlayerSendTextMessage(cid, valor1.color, valors1.mensaje)

el valor1 pasa a tomar el lugar de nuestra tabla, la cual tienes sus
parametros, luego hacemos un llamado al valor1, separando sus
parametros con un punto "."
Código:
doPlayerSendTextMessage(cid, "Hello i\'m alejandro", 15)

en los casos que nuestro texto debe llevar una comilla por cosa de
estetica anularemos la comilla con un "\", y nuestra comilla sera
mostrada.
Código:
valor = 1 + 1
valor = 2 - 1
valor = 5 * 1
valor = 9 / 3

ejemplos de calculos simples.
Código:
valor1 = 50
valor2 = 90
valor total = valor1 + valor2

ejemplo de calculos haciendo llamados a valores asignados.

Palabras Claves mas usadas

function dara inicio a nuestra funcion.
if pone una condicion a un evento.
else es la contradiccion de nuestra condicion.
elseif es la contradiccion de nuestra condicion, pero a la vez crea una nueva condicion.
and agrega una condicion a un if, la cual debe ser cumplida junto con el.
or es una condicion que se agrega a un if, la cual a la ves en una contradiccion.
end finaliza una function y/o un if.
local es un valor que puede ser llamado en cualquier momento de nuestra operacion.
then si se cumple la condicion da inicio a la serie de eventos.
not contradiccion a un if.

cada if, elseif debe llevar un then.
y cada if, function debe llevar su end.
ejemplos

Código:
function onUse(parametros)
hacer algo....
end

una funcion.
Código:
function onUse(cid, item, frompos, item2, topos)
if item.itemid > 2000 then
hacer algo....
elseif item.itemid < 2000 then
hacer algo....
end
end

notece en este ejemplo que cada if y elseif lleva un then y que por cada function y/o if tenemos un end,
tambien regresemos a los simbolos basicos y notece que item.itemid es
un parametro del valor item, y que tenemos presente comparaciones.
Código:
function onUse(cid, item, frompos, item2, topos)
local nivel = getPlayerLevel(cid)
if nivel > 1 and nivel < 8 then
hacer algo....
elseif nivel > 8 and nivel < 20 then
hacer algo....
else
hacer algo....
end
end

n este ejemplo tenemos presente un valor local, al cual hicimos llamados varias veces en la operacion, tambien tenemos presente la palabra clave and la cual usamos para cumplir dos condiciones, tambien esta presente un else que es lo que ocurrira si no se cumple las condiciones.
Código:
function onUse(cid, item, frompos, item2, topos)
local nivel = getPlayerLevel(cid)
if nivel == 8 or nivel == 20 then
hacer algo....
else
hacer algo....
end
end

tenemos presente un or.
Código:
function onUse(cid, item, frompos, item2, topos)
if not isPlayer(cid) == 1 then
hacer algo....
else
hacer algo....
end
end

ejemplo de como usar un not

Funciones

la funcion es lo que desencadenara nuestro script, es lo que dara
inicio a una seria de eventos, cada funcion debe llegar su resprectivo end.
tambien se le llama funcion a loes eventos que abran dentro de nuestra funcion, ejemplos.

Código:
getPlayerFood(cid)
getPlayerHealth(cid)

ellos no necesitan un end.


Tipos de funciones

Movements

Código:
function onStepIn(cid, item, pos)
end

se usa cuando quieres que al caminar sobre un objeto ocurra algo.
Código:
function onStepOut(cid, item, pos)
end

se usa cuando quieras que caminar fuera de un objeto ocurra algo.
Código:
function onEquip(cid, item, slot)
end


se usa cuando quieres que al poner un item en tu cuerpo ocurra algo.
Código:
function onDeEquip(cid, item, slot)
end

se usa cuando quieres que al quitar un item desde tu cuerpo ocurra algo.
Código:
function onAddItem(moveitem, tileitem, pos)
end

se usa cuando quieres que al agregar un item en algun lugar ocurra algo.
Código:
function onRemoveItem(moveitem, tileitem, pos)
end

se usa cuando quieras que al quitar un item desde un lugar ocurra algo.

ejemplos

Código:
function onStepIn(cid, item, pos)
if isPlayer(cid) == 1 then
doPlayerSendTextMessage(cid,22,"Hola.")
end
end

Código:
function onStepOut(cid, item, pos)
if isPlayer(cid) == 1 then
doPlayerSendTextMessage(cid,22,"Chao.")
end
end

Código:
function onEquip(cid, item, slot)
doPlayerAddHealth(cid, 100)
end

Código:
function onDeEquip(cid, item, slot)
doPlayerAddHealth(cid, -100)
end

Código:
function onAddItem(moveitem, tileitem, pos)
posicion = {x=1000,y=1000,z=7}
doSummonCreature("rat", posicion)
end

Código:
function onRemoveItem(moveitem, tileitem, pos)
posicion = {x=1000,y=1000,z=7}
doSummonCreature("rat", posicion)
end


Parametros presentes en las funciones

cid = es la criatura que ejecuta la accion, movimiento, etc.
item = en el caso de StepIn y StepOut, es el item que
debes pisar o abandonar, en el caso de onEquip y onDeEquip es el item
que te pondras o quitaras.
pos = es la pocision (sqm) donde esta el item (piso).
slot = en que parte del cuerpo te pondras el item, o desde donde lo quitaras.
moveitem = es el item que agregaremos o quitaremos desde la pos.
tileitem = es el item en el cual agregaremos o quitaremos otro item.

Subparametros

item.uid = si el item tiene unique id, se usara esto para verificarla.
item.itemid = se usara esto para verificar el id del item.
item.actionid = si el item tiene actiond id, se usara esto para verificarla.
moveitem.itemid =s e usara esto para verificar el id del item agregado o quitado.
tileitem.uid = si el item(sqm,piso) tiene unique id, se usara esto para verificarla.
tileitem.actionid = si el item(sqm,piso) tiene action id, se usara esto para verificarla.
tileitem.itemid = verifica el id del piso o sqm.
pos.x
pox.y
pos.z
pos.stackpos
verifica la posicion x, y, z y el stackpos del item.


Como agregas estas funciones al archivo xml

Código:
<movevent event="StepIn" uniqueid="2050" script="nombre.lua" />
<movevent event="StepOut" uniqueid="2050" script="nombre.lua" />

uniqueid="2050" se usara para cuando queremos realizar un paso dentro o fuera de un item con unique id.
itemid="2050" se usara cuando queramos ejecutar un paso dentro o fuera de un item con determinada id.
actionid="2050" se usara cuando queramos ejecutar un paso dentro o fuera de un item con determinada action id
Código:
<movevent event="Equip" itemid="2136" slot="necklace" script="nombre.lua" />
<movevent event="DeEquip" itemid="2136" slot="necklace" script="nombre.lua" />

podemos cambiar el slot por:
-head
-necklace
-backpack
-armor
-right-hand
-left-hand
-legs
-feet
-ring
Código:
<movevent event="AddItem" tileitem="1" uniqueid="2051" script="nombre.lua" />
<movevent event="RemoveItem" tileitem="1" uniqueid="2051" script="nombre.lua" />

uniqueid="2051" se usara cuando se agregue o quite un item con unique id.
itemid="2051" se usara cuando se agregue o quite un item con determinado id.
actionid="2051" se usara cuando se agregue o quite un item con action id.

Por ahora es todo cuando me aga un tiempo, continuare la guia
saludos.

Vampiro

Masculino
Cantidad de envíos: 9
Edad: 18
Localización: España
Fecha de inscripción: 30/06/2008

Tu Personaje
Nivel:
39/39  (39/39)
Vida:
340/340  (340/340)
Magia:
965/965  (965/965)

Ver perfil de usuario http://duendeserver.rpg-dynasty.com

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


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