Ir al contenido principal

Scripts del servidor

En estos dias he avanzado algo en las funcionalidades de los scripts en Lua para el servidor. Aunque muchas cosas están ahí simplemente para tapar el hueco, los scripts ya están interactuando con las entidades sin ocasionar daños de consideración. O sea, que no hay caídas aleatorias ni datos corruptos.
Como ejemplo, aquí están un par de scripts.
El primero es el de creación de entidades que estoy usando ahora.

dofile("data/global_const.lua")
ent=world:getEntity(eID)
plus=math.random(0,3)
ent.attr:addAttribute(STRENGTH,math.random(10+eLevel,15+eLevel+plus))
ent.attr:addAttribute(INTEL,math.random(10+eLevel,13+eLevel+plus))
ent.attr:addAttribute(DEXT,math.random(10+eLevel,15+eLevel+plus))
ent.attr:addAttribute(CONSTIT,math.random(10+eLevel,14+eLevel+plus))
ent.attr:addAttribute(WILL,math.random(10+eLevel,15+eLevel+plus))
ent.attr:addAttribute(LUCK,math.random(10,15+plus))
ent.skills:addSkill(skUNARM)
ent.skills:addSkill(skSWORD)
--Add a sword
ent.invent:addItem(1,3,1)
-- Give some random namis
ent.invent:addItem(10000,0,math.random(1+eLevel,20+eLevel))

El segundo es el script (mejor no llamarlo de IA) que se ejecuta periódica y por el momento lo que hace es mover la entidad de vez en cuando, más precisamente, hay una probabilidad de 1/4 de que eche a andar. También verifica la hora, pues ciertas entidades serán nocturnas y otras diurnas.


ent=world:getEntity(eID)
-- What time is it? Some ents wont be visible at certain times
T=world:getTime()
if ent.type==5 then
--Goblin marauders sleep during day
if (T.hour>6 and T.hour<20)>
return
end --if T
else
--Normal ents, walk on daylight
if (T.hour<6>20) then
return
end --if T
end
chance=math.random(1,40)
if (chance<10)>
ent.actions=1
else
if ent.actions==1 then
ent.actions=2
end
end

Y esto que ven ustedes, damas y caballeros, no solamente es verídico, sino que también es cierto.

Comentarios