CSOL缔造者LUA的脚本多种多样。但是往往地图作者不会使用LUA,而LUA的编写者又不会做地图。或者当你需要移植其他作者的脚本却无从下手。为了建立起作者与脚本编写者的桥梁,为了能够让脚本能够模块化,更高的移植性,能够让不会编写LUA的作者们也能够轻易的使用,扩展,移植别人的插件,MaiMaiFramework诞生了 为了方便国内访问,已经移至https://gitee.com/UmaruIsBoy/MaiMaiFramework.lua
注意:这个LUA框架只能在CSOL缔造者游戏模式环境下使用
MaiMaiFramework是基于事件的隐式调用的CSOL缔造者框架。为了能够让不会LUA的作者也能够快速掌握使用、扩展、移植其他LUA脚本编写者的脚本。为了实现这一目标,脚本编写者必须按照一定的规则来编写脚本。这些脚本将作为插件通过注册的方式静态或者动态的载入到框架中。
链接: 点击下载.
{
"game": ["MaiMaiFramework.lua"],
"ui": ["MaiMaiFramework.lua"]
}
现在还没有插件,如果有,就像这样添加新的插件
{
"game": ["MaiMaiFramework.lua", "ExamplePlug.lua"],
"ui": ["MaiMaiFramework.lua", "ExamplePlug.lua"]
}
这个文件会同时装载到服务端Game和客户端UI中
例如:文件名为PrintPlug.lua
--编写插件
if Game then
function MyGameFunc(player,msg)
print("玩家"..player.name.."说:"..msg)
end
end
if UI then
function MyUIFunc(time)
print("每帧执行:".."当前时间"..time)
end
end
--如果需要的话,注册插件方法到某个框架方法中
if Game then
Framework.GamePlug.OnChat:Register(MyGameFunc)
end
--每帧执行一次MyUIFunc
if UI then
Framework.UIPlug.OnUpdate:Register(MyUIFunc)
end
一个并没有什么用的打印插件就这样开发完成了
下载MaiMaiFramework.lua并且添加你的插件
{
"game": ["MaiMaiFramework.lua", "PrintPlug.lua"],
"ui": ["MaiMaiFramework.lua", "PrintPlug.lua"]
}
在CSOL缔造者游戏模式中测试脚本查看效果
例:服务端插件注册
Framework.GamePlug.OnUpdate:Register()
Framework.GamePlug.OnUpdate:UnRegister()
例:客户端插件注册
Framework.UIPlug.OnUpdate:Register()
Framework.UIPlug.OnUpdate:UnRegister()
服务端(Game)中能够注册的方法
OnKilled
OnRoundStart
OnPlayerJoiningSpawn
OnPlayerSignal
OnTakeDamage
OnPlayerKilled
OnPlayerSpawn
OnPlayerConnect
OnPlayerDisconnect
OnGetWeapon
OnGameSave
OnLoadGameSave
OnClearGameSave
OnReload
OnReloadFinished
OnSwitchWeapon
PostFireWeapon
CanBuyWeapon
CanHaveWeaponInHand
OnUpdate
OnLaterUpdate
OnPlayerTreat
OnPlayerHurt
OnPlayerUpdate
OnPlayerLaterUpdate
OnChat
OnPlayerDeath
客户端(UI)中能够注册的方法
OnRoundStart
OnSpawn
OnKilled
OnChat
OnInput
OnKeyDown
OnKeyUp
OnSignal
OnKeyDown
OnUpdate
官方方法注册的方法参数看:官方文档
注册到官方客户端(UI)方法示例
--注册匿名方法
Framework.UIPlug.OnUpdate:Register(
function(t)
print("在UI中每帧执行")
end
)
--注册普通方法
function MyOnKeyDown(inputs)
if inputs[UI.KEY.A]==true then
print("a key is pressed!")
end
end
Framework.UIPlug.OnKeyDown:Register(MyOnKeyDown)
服务端(Game)扩展方法
OnLaterUpdate
OnPlayerTreat
OnPlayerHurt
OnPlayerUpdate
OnPlayerLaterUpdate
OnChat
OnPlayerDeath
OnLaterUpdate(time) 会在OnUpdate的下一帧执行
function MyOnLaterUpdate(time)
end
--注册你的方法
Framework.GamePlug.OnLaterUpdate:Register(MyOnLaterUpdate)
OnPlayerTreat(player) 在玩家受到治疗的下一帧执行
function MyOnPlayerTreat(player)
end
--注册你的方法
Framework.GamePlug.OnPlayerTreat:Register(MyOnPlayerTreat)
OnPlayerHurt(player) 在玩家受到伤害的下一帧调用
function MyOnPlayerHurt(player)
end
--注册你的方法
Framework.GamePlug.OnPlayerHurt:Register(MyOnPlayerHurt)
OnPlayerUpdate(player,time) 带有player参数的每帧调用
function MyOnPlayerUpdate(player,time)
end
--注册你的方法
Framework.GamePlug.OnPlayerUpdate:Register(MyOnPlayerUpdate)
OnPlayerLaterUpdate(player,time) 在OnPlayerUpdate下一帧调用
function MyOnPlayerLaterUpdate(player,time)
end
--注册你的方法
Framework.GamePlug.OnPlayerLaterUpdate:Register(MyOnPlayerLaterUpdate)
OnChat(player,msg)
玩家发送消息时调用
msg:消息内容
function MyOnChat(player,msg)
end
--注册你的方法
Framework.GamePlug.OnChat:Register(MyOnChat)
OnPlayerDeath(player) 玩家死亡时调用
function MyOnPlayerDeath(player,msg)
end
--注册你的方法
Framework.GamePlug.OnPlayerDeath:Register(MyOnPlayerDeath)
MaiMaiFramework框架/插件开发群691763332