mirror of
https://github.com/ErikasKontenis/SabrehavenServer.git
synced 2025-10-15 06:54:54 +02:00
Full Distribution
This commit is contained in:
125
data/lib/core/game.lua
Normal file
125
data/lib/core/game.lua
Normal file
@@ -0,0 +1,125 @@
|
||||
function Game.sendMagicEffect(position, effect)
|
||||
local pos = Position(position)
|
||||
pos:sendMagicEffect(effect)
|
||||
end
|
||||
|
||||
function Game.removeItemsOnMap(position)
|
||||
local tile = Tile(position)
|
||||
local tileCount = tile:getThingCount()
|
||||
local i = 0
|
||||
while i < tileCount do
|
||||
local tileItem = tile:getThing(i)
|
||||
if tileItem and tileItem:getType():isMovable() then
|
||||
tileItem:remove()
|
||||
else
|
||||
i = i + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Game.transformItemOnMap(position, itemId, toItemId, subtype)
|
||||
if not subtype then
|
||||
subtype = -1
|
||||
end
|
||||
|
||||
local tile = Tile(position)
|
||||
local item = tile:getItemById(itemId)
|
||||
item:transform(toItemId, subtype)
|
||||
item:decay()
|
||||
return item
|
||||
end
|
||||
|
||||
function Game.removeItemOnMap(position, itemId, subtype)
|
||||
if not subtype then
|
||||
subtype = -1
|
||||
end
|
||||
|
||||
local tile = Tile(position)
|
||||
local item = tile:getItemById(itemId, subtype)
|
||||
item:remove()
|
||||
end
|
||||
|
||||
function Game.isItemThere(position, itemId)
|
||||
local tile = Tile(position)
|
||||
return tile:getItemById(itemId) ~= nil
|
||||
end
|
||||
|
||||
function Game.isPlayerThere(position)
|
||||
local tile = Tile(position)
|
||||
local creatures = tile:getCreatures()
|
||||
for _, creature in ipairs(creatures) do
|
||||
if creature:isPlayer() then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function Game.broadcastMessage(message, messageType)
|
||||
if messageType == nil then
|
||||
messageType = MESSAGE_STATUS_WARNING
|
||||
end
|
||||
|
||||
for _, player in ipairs(Game.getPlayers()) do
|
||||
player:sendTextMessage(messageType, message)
|
||||
end
|
||||
end
|
||||
|
||||
function Game.convertIpToString(ip)
|
||||
local band = bit.band
|
||||
local rshift = bit.rshift
|
||||
return string.format("%d.%d.%d.%d",
|
||||
band(ip, 0xFF),
|
||||
band(rshift(ip, 8), 0xFF),
|
||||
band(rshift(ip, 16), 0xFF),
|
||||
rshift(ip, 24)
|
||||
)
|
||||
end
|
||||
|
||||
function Game.getReverseDirection(direction)
|
||||
if direction == WEST then
|
||||
return EAST
|
||||
elseif direction == EAST then
|
||||
return WEST
|
||||
elseif direction == NORTH then
|
||||
return SOUTH
|
||||
elseif direction == SOUTH then
|
||||
return NORTH
|
||||
elseif direction == NORTHWEST then
|
||||
return SOUTHEAST
|
||||
elseif direction == NORTHEAST then
|
||||
return SOUTHWEST
|
||||
elseif direction == SOUTHWEST then
|
||||
return NORTHEAST
|
||||
elseif direction == SOUTHEAST then
|
||||
return NORTHWEST
|
||||
end
|
||||
return NORTH
|
||||
end
|
||||
|
||||
function Game.getSkillType(weaponType)
|
||||
if weaponType == WEAPON_CLUB then
|
||||
return SKILL_CLUB
|
||||
elseif weaponType == WEAPON_SWORD then
|
||||
return SKILL_SWORD
|
||||
elseif weaponType == WEAPON_AXE then
|
||||
return SKILL_AXE
|
||||
elseif weaponType == WEAPON_DISTANCE then
|
||||
return SKILL_DISTANCE
|
||||
elseif weaponType == WEAPON_SHIELD then
|
||||
return SKILL_SHIELD
|
||||
end
|
||||
return SKILL_FIST
|
||||
end
|
||||
|
||||
if not globalStorageTable then
|
||||
globalStorageTable = {}
|
||||
end
|
||||
|
||||
function Game.getStorageValue(key)
|
||||
return globalStorageTable[key]
|
||||
end
|
||||
|
||||
function Game.setStorageValue(key, value)
|
||||
globalStorageTable[key] = value
|
||||
end
|
Reference in New Issue
Block a user