Tutorial Revscript Action

Alex

Miembro del equipo
Webdesigner
LV
58
 
Awards
38
Hola a todos ,

Aquí les voy a escribir un pequeño tutorial como escribir un revscript Action fácilmente y lo que permite hacer.

Antes que nada crearemos un archivo.lua en nuestro servidor data/scripts

El tutorial se basará en un script de usar un ítem , con condiciones:

La función para esta es (onUse)

Empezaremos:
Crearemos un simple script que al usar el ítem 1111, indicado abajo del todo del script no de 1 Crystal coin.

Código:
local miScript = Action()
 
funcion miScript.onUse(player, item, fromPosition, target)
    if player then
    player:addItem(2160, 1)
    end
end

miScript:id(1111)
miScript:register()

El script funciona pero , no remueve el ítem que usamos por el cual agregaremos debajo del estado if:

Código:
item:remove(1)

Le pondremos un efecto al usar el ítem:

Código:
player:sendMagicEffect(CONST_ME_FIRE)
El const_me_fire puede ser reemplazado por un número , el número corresponde al número de efecto en el Assets Editor.

Ahora lo vamos a restringir un poco , para poder usar ese ítem , deberemos de haber hecho una quest recuerdo una quest es una storage,

Código:
if player:getStorageValue(1111) > 1 then
 player:addItem(2160, 1)
 item:remove(1)
end

Pero si no tenemos esa storage o quest hecha entonces no nos dirá nada , y debemos de informar al jugador porque o como entonces agregaremos un mensaje , que siempre debe de ponerse en el caso de que no pueda acceder si no tiene esa storage:


Código:
if player:getStorageValue(1111) > 1 then
 player:addItem(2160, 1)
 item:remove(1)
 else
 player:sendTextMessage(MESSAGE_INFO_DESCR, "You cannot use this item because you didn't complete the quest.")
end

Aquí si no tenemos la quest hecha nos dirá que no podremos usar el ítem.

Ahora si quisiéramos crear otro ítem que nos de esa storage ( quest ) completada para poder usar ese ítem entonces crearemos un nuevo script :

Código:
local itemQuest = Action()
 function itemQuest.onUse(player, item, fromPosition, target)
  if player:getStorageValue(1111) > 1 then
  player:sendTextMessage(MESSAGE_INFO_DESCR, “You already have this quest.”)
  else
  player:setStorageValue(1111, 1)
  player:sendTextMessage(MESSAGE_INFO_DESCR, “You received the quest.”)
  end
itemQuest:id(2222)
itemQuest:register()

De esta informa , indicamos en la primera línea si el player ya tiene la quest hecha “if player:getStorageValue(1111) > 1 then”
Y en caso contrario “else” le dará la quest “player:setStorageValue(1111, 1)”


Aquí hemos creado dos ítems uno para dar la quest y el otro para usar un ítem si tenemos la quest.

Podemos crear un local para evitar escribir las storages por ejemplo :

Código:
local miItem = Action()

local miQuest = 1111

function miItem.onUse(player, item, fromPosition, target)
  if player:getStorageValue(miQuest) then
  player:addItem(2160, 1)
  item:remove(1)
end

miItem:id(2222)
miItem:register()

Se pueden hacer muchas cosas, en este tutorial es para una action pero se pueden bien en Creaturescripts , globalEvents y mucho más.

No duden en dejar un comentario si tienen dudas.
 
Arriba