- 好友
- 354
- 在线时间
- 9636 小时
- 最后登录
- 2023-9-6
子爵[版主]
枢机主教
- UID
- 3551
- 第纳尔
- 5594
- 精华
- 10
- 互助
- 435
- 荣誉
- 314
- 贡献
- 984
- 魅力
- 1515
- 注册时间
- 2007-1-26
鲜花( 1950) 鸡蛋( 61)
|
我真忘记第一次想发个类似这样的帖子是在什么时候了,一来自己写的代码从初学到现在一直没好好整理,最初写的那些现在自己看来也是惨不忍睹,更不好意思整篇拿出来标榜分享。二来总在没空的时候想起来发帖分享这事儿,也可能是自己偷懒找的借口。总之这一来二去就一直拖拉着。这次因为早就答应一些骑友包括 @阳光刺破心脏 分享泡菜mod里的指北针代码,再拖拉下去就失信于人啦,所以就以此开始慢慢帖东西吧,尽量挑些相对添加便捷、适用范围广的,那些一言难尽比较复杂的就算了。
以下代码都可以自由使用,是否通知我都随您,但如果用在您要发布的mod中,请在Credit注明源自oolonglgx的光明与黑暗(泡菜)mod。
这个小玩意儿适合所有需要方向指示的场景,能让游戏更有rpg的感觉。以下代码单机、联机通用。
一、准备工作:
1、指北针的模型:http://pan.baidu.com/s/1kVI7CJd
把这个compass_plus.obj导入你的mod的任意brf文件里,导入方法有点mod制作经验的都知道,这里就不赘述了。
ps: 这个模型是从native里copy的,但我找不到是哪个文件里的了,索性传一个泡菜mod用的,或许我以前调整过这个模型角度或大小之类(时间太长不确定了),总之用这个肯定没问题。
2、启动骑砍并开启编辑模式。进入需要显示指南针的场景,ctrl+E打开场景编辑界面,在随便哪个地方添加一个新的entry点,编号为127,只需要让此entry点的Y轴指向你所期望的正北方即可(如果你要做指南针,那就将Y轴指向你所期望的正南方)。
二、添加代码:
1、首先引入指北针模型。在module_meshes.py里新增一行如下代码:
- ("compass_plus", 0, "compass_plus", 0, 0, 0, 0, 0, 0, 1, 1, 1),
复制代码
2、然后在module_presentations.py建立一个新的presentation。如果您已经有了类似的界面,那直接加入各个触发器里的代码就可以了。
- #指北针
- ("compass", prsntf_read_only, 0, [
- (ti_on_presentation_load,
- [
- (create_mesh_overlay, reg1, "mesh_compass_plus"),
- (position_set_x, pos1, 50),
- (position_set_y, pos1, 40),
- (overlay_set_position, reg1, pos1),
- (position_set_x, pos1, 700),
- (position_set_y, pos1, 700),
- (overlay_set_size, reg1, pos1),
- (assign, "$g_compass", reg1),
-
- (presentation_set_duration, 999999),
- ]),
-
- (ti_on_presentation_run,
- [
- # (store_trigger_param_1, ":cur_time"),
- (set_fixed_point_multiplier, 1000),
- (entry_point_get_position, pos1, 127),
- (position_get_rotation_around_z, ":pos_rot", pos1),
- (try_begin),
- (game_in_multiplayer_mode),
- (multiplayer_get_my_player, ":my_player"),
- (player_get_agent_id, ":my_agent", ":my_player"),
- (else_try),
- (get_player_agent_no, ":my_agent"),
- (try_end),
- (agent_get_look_position, pos2, ":my_agent"),
- (position_get_rotation_around_z, ":i_rot", pos2),
- (store_sub, ":compass_rot", ":pos_rot", ":i_rot"),
- (init_position, pos1),
- (position_rotate_x, pos1, -48),
- (position_rotate_z, pos1, ":compass_rot"),
- (overlay_set_mesh_rotation, "$g_compass", pos1),
- ]),
- ]),
复制代码
3、最后就是要在进入场景时启动指北针界面。打开module_mission_templates.py,将此触发器加入你的场景所使用的mt中:
- (0.1, 0, 0, [
- (neg|multiplayer_is_dedicated_server),
- (neg|conversation_screen_is_active),
- ],
- [
- (assign, ":my_agent", -1),
- (try_begin),
- (game_in_multiplayer_mode),
- (multiplayer_get_my_player, ":my_player_no"),
- (player_is_active, ":my_player_no"),
- (player_get_agent_id, ":my_agent", ":my_player_no"),
- (else_try),
- (neg|game_in_multiplayer_mode),
- (get_player_agent_no, ":my_agent"),
- (try_end),
- (ge, ":my_agent", 0),
- (agent_is_active, ":my_agent"),
- (agent_is_alive, ":my_agent"),
- (neg|is_presentation_active, "prsnt_compass"),
- (start_presentation, "prsnt_compass"),
- ]),
复制代码
完毕。本想着这个挺简单的哪知最后还是列了这么多123。。。希望大家能看懂。
进入场景后你就能看到在屏幕左下角有个随着你的视角变化而转动的指北针了。效果图:
|
还有些东西,有空再更新~~~ |
评分
-
查看全部评分
|