找回密码
 立即注册
查看: 142|回复: 4

[新框架LUA] 教你如何使用Deepseek-r1或者QWQ生成lua模块

[复制链接]
圣洁的灵魂 [SVIP]

1

主题

0

回帖

41

积分
CN币
9 颗


威望
15

贡献
1

UID
125

QQ
QQ

微信Wechat
没有

居住地
中国

发表于 2025-3-13 02:27:44 | 显示全部楼层 |阅读模式
1. 喂大模型API

  1. cgmsv是一个魔力宝贝的游戏服务器,采用luajit作为脚本引擎。请记住接下来我给出的lua函数并且无需做出解析说明
  2. ```lua
  3. ---创建随机地图。
  4. ---[@group Map.MakeMazeMap]
  5. ---@param Dofile? string 回调函数所在文件 字符串
  6. ---@param InitFuncName? string 回调函数名,当随机地图生成成功以后,会触发定义的回调函数 MakeMazeMapCallBack 字符串
  7. ---@param Xsize number 地图x坐标最大值
  8. ---@param Ysize number 地图y坐标最大值
  9. ---@param MapName string 地图名
  10. ---@return number @成功返回新的FloorID,失败返回-1。
  11. function Map.MakeMazeMap(Dofile, InitFuncName, Xsize, Ysize, MapName) end
复制代码
2. 喂样例
  1. 参考以下示例,无需做出解析说明
  2. `Char.GetData`示例:
  3. ```lua
  4. ---获取对象(Chara)类型
  5. Char.GetData(charIndex, CONST.对象_类型)
  6. ---对象(Chara)所在地图(Floor)
  7. Char.GetData(charIndex, CONST.对象_地图)
  8. ```

  9. `Item.GetData`示例:
  10. ```lua
  11. ---获取道具名字
  12. Item.GetData(itemIndex, CONST.道具_名字)
  13. ```

  14. `Map.GetExtData`示例:
  15. ```lua
  16. ---获取地图的mapVar1变量
  17. Map.GetExtData(mapId, floor, "mapVar1")
  18. ```
复制代码
3. 喂框架样例(可选)
  1. # lua Module 参考:
  2. ## test.lua
  3. ```lua
  4. ---test模块类
  5. ---@class TestModule: ModuleType
  6. local TestModule = ModuleBase:createModule('test')

  7. --- 加载模块钩子
  8. function TestModule:onLoad()
  9.   self:logInfo('load')
  10.   self:regCallback("ItemBoxLootEvent", Func.bind(self.onItemBoxLootEvent, self))
  11. end

  12. function TestModule:onItemBoxLootEvent(...)
  13. end

  14. --- 卸载模块钩子
  15. function TestModule:onUnload()
  16.     self:logInfo('unload')
  17. end

  18. return TestModule;
  19. ```
  20. ## itembox.lua
  21. ```lua
  22. ---宝箱模块
  23. ---@class ItemBoxModule: ModuleType
  24. local ItemBoxModule = ModuleBase:createModule('itembox')

  25. --- 加载模块钩子
  26. function ItemBoxModule:onLoad()
  27.   self:logInfo('load')
  28.   self:regCallback('ItemBoxGenerateEvent', function(mapType, floor, boxId, adm)
  29.     local n = NLG.Rand(1, 100);
  30.     -- 30% 黑宝箱,30%白宝箱, 40%普通宝箱
  31.     if n > 70 then
  32.       --self:logDebug('ItemBoxGenerateEvent', mapType, floor, boxId, 18003, adm);
  33.       return { 18003, adm }
  34.     end
  35.     if n > 40 then
  36.       --self:logDebug('ItemBoxGenerateEvent', mapType, floor, boxId, 18004, adm);
  37.       return { 18004, adm }
  38.     end
  39.     --self:logDebug('ItemBoxGenerateEvent', mapType, floor, boxId, 18002, adm);
  40.     return { 18002, adm };
  41.   end)
  42. end

  43. --- 卸载模块钩子
  44. function ItemBoxModule:onUnload()
  45.   self:logInfo('unload')
  46. end

  47. return ItemBoxModule;
  48. ```
  49. ## welcome.lua
  50. ```lua
  51. ---模块类
  52. ---@class Welcome: ModuleType
  53. local Welcome = ModuleBase:createModule('welcome')

  54. --- 加载模块钩子
  55. function Welcome:onLoad()
  56.   self:logInfo('load')
  57. end

  58. --- 卸载模块钩子
  59. function Welcome:onUnload()
  60.   self:logInfo('unload')
  61. end

  62. return Welcome;
  63. ```
复制代码
4. 告诉你得述求和逻辑
  1. 现在请你编写一个lua Module,满足以下要求:
  2. # 剧情提要
  3. 灵堂(MapId:0, Floor: 1001)突然出现一个神秘的黄金迷宫(入口 MapId:0, Floor: 1001, X: 0, Y: 0),需要玩家去探险

  4. # 入口NPC
  5. 1. 在入口处创建一个看守NPC(image: 100000, direction: 0, mapType: 0, map: 1001)
  6. 2. 如果玩家(包含所有队友)自定义数据`GoldMapDate`>=当前日期(数字,格式:YYYYMMDD)则提示“今天已经挑战过”并且中止操作
  7. 3. 玩家与NPC对话后生成一个LuaMap
  8. 4. 为玩家(包含所有队友)设置临时变量`GoldMapLevel`为数字`1`,表示第一层
  9. 5. 为玩家(包含所有队友)设置临时变量`GoldMapIndex`值为由1开始的自增长数值,到9999999时重置为1,表示队伍编号。
  10. 6. 通过`GoldMapIndex`保存玩家(包含所有队友)的RegistNumber(CONST.对象_RegistNumber = 52) 和账号(CONST.对象_账号 = 4002);
  11. 7. 玩家(包含所有队友)传送到新地图的随机位置
  12. 8. 玩家(包含所有队友)给予道具(Id:88888)
  13. 9. 玩家(包含所有队友)设置自定义数据`GoldMapDate`为当前日期(数字,格式:YYYYMMDD)

  14. # 生成LuaMap规则
  15. 1. 创建一个w宽,h高的地图,w,h取值[20,50]
  16. 2. 在随机可用坐标创建创建一个传送点(Warp) 传送目标固定(MapId: 0, Floor: 592, X: 111, Y: 111)
  17. 3. 创建若干个无主Item(60%: 普通宝箱(ITEMBOX_NM), 30%: 黑宝箱(ITEMBOX_BK), 10%: 白宝箱(ITEMBOX_WH))并放置到地图
  18. 4. 设置地图变量`GoldMapVar`为数字`1`
  19. 5. 保存地图的floor到self.MapList

  20. # Warp规则
  21. 当玩家触发WarpEvent时且满足玩家传送前的地图的变量`GoldMapVar`等于1时进行以下操作
  22. 1. 所有队友都在队伍中时玩家(包含所有队友)的临时变量`GoldMapLevel`加1. 如果`GoldMapLevel`<100,则生成新地图并传送到该地图的随机位置
  23. 2. 删除传送前的地图

  24. # 宝箱规则
  25. 当玩家触发ItemBoxLootEvent时且满足玩家所在地图的变量`GoldMapVar`等于1时进行以下操作
  26. 1. 拦截所有物品获取
  27. 2. 开启普通宝箱时 80%概率遇敌(普通怪物), 15%概率遇敌(精英怪物),5%概率下一层
  28. 3. 开启黑宝箱时 50%概率遇敌(普通怪物), 40%概率遇敌(精英怪物),10%概率下一层
  29. 4. 开启白宝箱时 50%概率遇敌(普通怪物), 30%概率遇敌(精英怪物),20%概率下一层


  30. 当玩家触发ItemBoxEncountRateEvent时且满足玩家所在地图的变量`GoldMapVar`等于1时进行以下操作
  31. 1. 遇敌率调整为0

  32. # 遇敌规则(通过Battle.PVE创建)
  33. 1. 当存在队伍中任意玩家缺少道具(ID:88888)时遇敌类型为BOSS,遇敌怪物为10个BOSS(ID:880048,等级:999)
  34. 2. 当遇敌类型为普通怪物时,从[880014, 880015, 880016, 880017, 880018]中随机选择1~10个作为怪物Id,设置怪物等级为`GoldMapLevel`
  35. 3. 当遇敌类型为精英怪物时,从[880014, 880015, 880016, 880017, 880018]中随机选择1~10个作为怪物Id,设置怪物等级为`GoldMapLevel` + 50,并且战斗胜利后传送到目标固定(MapId: 0, Floor: 592, X: 111, Y: 111)
  36. 4. 为怪物ID==880018的对象添加物品(ItemId: 999999)

  37. # LoopEvent规则
  38. 为入口NPC创建一个LoopEvent. 间隔1000毫秒
  39. 1. 注册LoopEvent需要通过`self:regCallback(fn)`注册获得全局函数名字(fnKey)
  40. 2. 检测self.MapList中的所有地图,如果地图中玩家数量为0则删除地图
  41. 3. 对self.MapList中的地图中的玩家移动距离(X、Y偏移的和),当移动距离>=1时并且是队长或没有组队时,按每格距离8%概率触发遇敌(普通怪物)
复制代码
然后你就得到一个80%正确的模块。剩下就是小修小补了。

完整提示词....这里放不下。。。。到 https://bbs.cgmsv.com/thread-2156-1-1.html 看完整版吧。。。

评分

参与人数 1CN币 +9 收起 理由
ahsin + 9 高技术含量

查看全部评分

呢喃的歌声

0

主题

32

回帖

148

积分
CN币
0 颗


威望
42

贡献
32

UID
536

QQ
QQ

微信Wechat
42552321

居住地
中国 山西省 晋城市

发表于 2025-3-13 10:34:44 | 显示全部楼层
学废了,给大大顶帖期望白嫖···············
万物创造者

189

主题

207

回帖

2345

积分
CN币
1 颗


威望
575

贡献
793

UID
1

QQ
QQ

微信Wechat
ahsinsoft

居住地
中国 上海市 杨浦区 定海路街道

发表于 2025-3-13 16:29:03 | 显示全部楼层
卧槽,病假刚开一刀,不能摸电脑,m佬就来了
呢喃的歌声

2

主题

38

回帖

194

积分
CN币
0 颗


威望
56

贡献
42

UID
473

QQ
QQ

微信Wechat
gao1783113327

居住地
中国 上海市 浦东新区

发表于 2025-3-13 19:39:00 | 显示全部楼层
感谢M大~~~~~~~~~~~~~
欢喜的慈雨

0

主题

144

回帖

592

积分
CN币
0 颗


威望
152

贡献
144

UID
79




发表于 2025-3-13 21:37:50 | 显示全部楼层
感谢大佬分享~~~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|CN魔力实验室

GMT+8, 2025-4-28 07:20 , Processed in 0.049937 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表