铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 170|回复: 0

[lua复刻] 黑山群侠传源码学习2

[复制链接]
 楼主| 发表于 2024-6-16 09:45 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
1. 终于看完了角色创建,下面再回到StarMenu函数。NewGame中创建了你的游戏角色。下面看看如何加载地图的。
```bash
-- 可以看到开局画面就只有2个,第一个是杨过专属,第二个是小村开局
if JY.Base["畅想"] == 58 then
      -- 当前子场景号
      JY.SubScene = 18
      -- 大地图上古墓位置
      JY.Base["人X"] = 144
      JY.Base["人Y"] = 218
      -- 子场景位置
      JY.Base["人X1"] = 30
      JY.Base["人Y1"] = 32
    else
      -- 默认小村子场景号
      JY.SubScene = CC.NewGameSceneID
      JY.Base["人X1"] = CC.NewGameSceneX
      JY.Base["人Y1"] = CC.NewGameSceneY
    end
```
2. 再根据人物性别确定显示主角图片
```bash
    if JY.Person[0]["性别"] == 0 then
      JY.MyPic = CC.NewPersonPicM
    else
      JY.MyPic = CC.NewPersonPicF
    end
```
3. 初始化场景, `Init_SMap(0)`
4. 根据人物调用事件
```bash
--开局事件
    if JY.Base["畅想"] == 58 then   --畅想杨过
      CallCEvent(4187)
    else                --其他人
      CallCEvent(691)
    end
```
5. 黑山的事件是使用CEvent机制,目前只知道直接使用lua脚本实现。事件脚本都在SCRIPT/CEvent/目录下。找到4187和691看一下。
6. 非杨过开局事件
```bash
--OEVENTLUA[691] = function()
  --instruct_66(42)
  -- 设定小村事件0事件属性
  instruct_3(-2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
  -- 设定当前人物在子场景位置, 也就是主角在小村中的位置
  instruct_19(16, 31)
  -- 设定人物向左上移动
  instruct_40(2)
  -- 刷新屏幕
  instruct_0()
  -- 从一个位置移动到另外一个位置
  instruct_30(16, 31, 9, 31)
  instruct_0()
  -- 黑屏
  instruct_14()
  -- 更改小村62号事件位置显示人物,8250为北丑,这里的贴图>编号需要除以2才是实际的场景图号
  instruct_3(-2, 62, 0, 0, 0, 0, 0, 8250, 8250, 8250, -2, -2, -2)
  instruct_3(-2, 4, 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2)
  instruct_0()
  instruct_3(-2, 2, 1, 0, 690, 0, 0, 6086, 6086, 6086, -2, -2, -2)
  instruct_0()
  -- 添加物品
  instruct_32(174, 400)
  instruct_0()
  instruct_32(234, 1)
  instruct_0()
  instruct_32(182, 1)
  instruct_0()
  -- 设置2个位置显示人物,南贤与北丑
  instruct_3(-2, 4, 1, 0, 695, 0, 0, 8250, 8250, 8250, -2, -2, -2)
  instruct_3(-2, 3, 1, 0, 694, 0, 0, 5098, 5098, 5098, -2, -2, -2)
  instruct_3(-2, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
  instruct_3(-2, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
  -- 一些场景设置不能进入
  instruct_39(19)
  instruct_39(101)
  instruct_39(36)
  instruct_39(28)
  instruct_39(93)
  instruct_0()
  instruct_13()
--end
```
7. 上面主要就几个指令,这些指令名字很蛋疼都是`instruct_xx`,从名字完全不知道干什么的。只能自己摸索与研究。其中功能都用注释写出来了,只有`instruct_3`是最复杂的一个,这个命令需要结合UPedit才能说清楚。所以又引出来一个更复杂的教程了,下面就来玩一玩UPedit。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-9-8 11:35

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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