骑马与砍杀中文站论坛

标题: 如何取消火枪的瞄准时间 [打印本页]

作者: myccmj    时间: 2020-3-20 11:12
标题: 如何取消火枪的瞄准时间
本帖最后由 myccmj 于 2020-3-22 13:02 编辑

比如说native里的手枪,我想做到一点即发,而且是精准的,不是乱射的,就是指哪打哪的那种
作者: myccmj    时间: 2020-3-20 11:16
有想到用add_missile,但是不知道有没有方法直接取消瞄准时间,取消其瞄准系统
作者: myccmj    时间: 2020-3-20 11:24
虽然说现在骑砍热度已经没那么高了,但我觉得它对Mod制作的友好度是我目前见过的最高的游戏。
相当于自己提供了好多函数给玩家用,不用去看游戏的源码,只需要掌握一个类似简单函数体结构编程的语言就行。
作者: myccmj    时间: 2020-3-20 20:18
本帖最后由 myccmj 于 2020-3-21 12:43 编辑

没人吗、、、
我先把我用add_missile大概写的代码贴出来把
  1. ["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,
  2. [(ti_on_weapon_attack, [(play_sound,"snd_pistol_shot"),(store_trigger_param_1,":attacker_agent"),(agent_get_wielded_item,":agent_cur_weapon",":attacker_agent"),
  3. #get original position of weapon
  4.     (agent_get_look_position,pos24,":attacker_agent"),
  5.     (item_get_weapon_length,":length",":agent_cur_weapon"),
  6.     (position_move_y, pos24,":length"),
  7.     (agent_get_horse,":attacker_agent_horse",":attacker_agent"),
  8.     ##adjust pos for horse_mode&crouch_mode##
  9.    (try_begin),
  10.                     (agent_get_crouch_mode,":crouch_mode",":attacker_agent"),
  11.                     (eq, ":crouch_mode", 1),
  12.                     (position_move_z,pos24,115,1),
  13.                 (else_try),
  14.      (lt,":attacker_agent_horse",0),
  15.      (position_move_z,pos24,170),
  16.     (else_try),
  17.      (position_move_z,pos24,270),
  18.     (try_end),

  19.     (try_begin),
  20.      (neg|eq,"$is_first_vision",1),
  21.      (position_move_z,pos24,38),
  22.     (try_end),
  23.   
  24. (set_fixed_point_multiplier,1),
  25. (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开头加上
  1. check_is_first=(
  2. 0,0,0,[(game_key_clicked,gk_cam_toggle)],
  3. [
  4. (try_begin),
  5. (eq,"$is_first_vision",1),
  6. (display_message,"@report:third_vision"),
  7. (assign,"$is_first_vision",0),
  8. (else_try),
  9. (display_message,"@report:first_vision"),
  10. (assign,"$is_first_vision",1),
  11. (end_try),
  12. ])
复制代码
再就是搜索
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
这是为了在训练场也能生效









作者: myccmj    时间: 2020-3-20 21:08
这个代码的瑕疵就是每次相当于射出了两发子弹(虽然实际消耗的是只有一发),一发是其本身的,一发是我用add_missile添加的,但其实真正精准的是我用add_missile添加的子弹。所以,我在想能不能用把原来的子弹的贴图用一个空的贴图来代替,这样就不会看到有一个子弹乱蹿了
作者: 苍龙不屈意    时间: 2020-3-20 21:12
myccmj 发表于 2020-3-20 21:08
这个代码的瑕疵就是每次相当于射出了两发子弹(虽然实际消耗的是只有一发),一发是其本身的,一发是我用ad ...

item的第一项好像是隐形的武器,你可以试试把子弹模型用那个替换掉
作者: myccmj    时间: 2020-3-21 12:45
苍龙不屈意 发表于 2020-3-20 21:12
item的第一项好像是隐形的武器,你可以试试把子弹模型用那个替换掉

我用那个的贴图新加了个虚拟子弹,好像是可以
作者: Sugar现在番埋黎    时间: 2023-3-8 15:03
不明觉厉,还是留言支持一下
作者: 十万个为什么    时间: 2023-3-10 04:55
你好,我也是在做热武器mod  ,可以互相加个好友交流一下吗




欢迎光临 骑马与砍杀中文站论坛 (https://bbs.mountblade.com.cn/) Powered by Discuz! X3.4