- 好友
- 0
- 在线时间
- 0 小时
- 最后登录
- 2024-10-17
随仆
- UID
- 3146701
- 第纳尔
- 143
- 精华
- 0
- 互助
- 1
- 荣誉
- 0
- 贡献
- 0
- 魅力
- 20
- 注册时间
- 2020-3-14
鲜花( 2) 鸡蛋( 0)
|
楼主 |
发表于 2020-3-20 20:18:28
|
显示全部楼层
本帖最后由 myccmj 于 2020-3-21 12:43 编辑
没人吗、、、
我先把我用add_missile大概写的代码贴出来把
- ["new_pistol", "New Pistol", [("flintlock_pistol",0)], itp_type_pistol |itp_merchandise|itp_primary ,itcf_shoot_pistol|itcf_reload_pistol, 230 , weight(2.5)|difficulty(0)|spd_rtng(380) | shoot_speed(180) | thrust_damage(50 ,pierce)|max_ammo(25)|accuracy(999),imodbits_none,
- [(ti_on_weapon_attack, [(play_sound,"snd_pistol_shot"),(store_trigger_param_1,":attacker_agent"),(agent_get_wielded_item,":agent_cur_weapon",":attacker_agent"),
- #get original position of weapon
- (agent_get_look_position,pos24,":attacker_agent"),
- (item_get_weapon_length,":length",":agent_cur_weapon"),
- (position_move_y, pos24,":length"),
- (agent_get_horse,":attacker_agent_horse",":attacker_agent"),
- ##adjust pos for horse_mode&crouch_mode##
- (try_begin),
- (agent_get_crouch_mode,":crouch_mode",":attacker_agent"),
- (eq, ":crouch_mode", 1),
- (position_move_z,pos24,115,1),
- (else_try),
- (lt,":attacker_agent_horse",0),
- (position_move_z,pos24,170),
- (else_try),
- (position_move_z,pos24,270),
- (try_end),
- (try_begin),
- (neg|eq,"$is_first_vision",1),
- (position_move_z,pos24,38),
- (try_end),
-
- (set_fixed_point_multiplier,1),
- (add_missile, ":attacker_agent", pos24, 100, "itm_nomad_bow", imod_plain, "itm_arrows",imod_plain),(position_move_x, pos1,27),(position_move_y, pos1,36),(particle_system_burst, "psys_pistol_smoke", pos1, 15)])]],
复制代码 为了便于测试,发射的子弹换成了箭
主要借鉴了之前写自动步枪的大佬的帖子http://bbs.mountblade.com.cn/thread-262462-1-2.html
我一开始测试的时候发现在第三人称射击的时候,射出的位置会比准心要低,但是切到第一人称就是准确的。这是因为第一人称和第三人称player的视角与准心的距离是不一样的,所以在第三人称的时候要将pos24再往上提高一点距离,经过测试确定为38左右。并且由于要判断当前是处于第一人称还是第三人称视角,需要再添加一个全局变量来控制,并在module_mission_template.py里加上触发器。具体如下:
在variable.txt里加上一个变量: is_first_vision
在module_mission_template.py开头加上
- check_is_first=(
- 0,0,0,[(game_key_clicked,gk_cam_toggle)],
- [
- (try_begin),
- (eq,"$is_first_vision",1),
- (display_message,"@report:third_vision"),
- (assign,"$is_first_vision",0),
- (else_try),
- (display_message,"@report:first_vision"),
- (assign,"$is_first_vision",1),
- (end_try),
- ])
复制代码 再就是搜索
common_battle_order_panel_tick,
每找到一个,就另起一行,添加
check_is_first (这一步是学习了这篇帖子:http://bbs.mountblade.com.cn/for ... ad&tid=87813&page=1)
然后再搜索tutorial_training_ground,
在其放触发器的位置(也就是第二个'['之后)也加一个check_is_first
这是为了在训练场也能生效
|
评分
-
查看全部评分
|