关于这把枪的问题

Home Home
引用 | 编辑 mingjey2000
2019-05-22 20:11
楼主
推文 x0
这把枪是在外国网站找到的,是个很毒的一把枪,它连队友都能毒死,
测试后算是一把完美的枪支,但它有个小小毛病,在第一次装子弹后,只要每点击一次发射,
它便会自动补一次子弹动作,但问题是明明子弹还很多,它根本不需要提前自动装子弹吧,
所以想请大家帮帮忙,这个小小毛病要从哪一段程式去修正它!
"让子弹用完才能自动补子弹"

本帖包含附件
档名: zip zp-毒药离子枪.rar   (2022-06-09 14:22 / 1008 KB)   下载次数:3


献花 x0
引用 | 编辑 弑血
2019-05-22 20:45
1楼
  
下面是引用 mingjey2000 于 2019-05-22 20:11 发表的 关于这把枪的问题: 到引言文
这把枪是在外国网站找到的,是个很毒的一把枪,它连队友都能毒死,
测试后算是一把完美的枪支,但它有个小小毛病,在第一次装子弹后,只要每点击一次发射,
它便会自动补一次子弹动作,但问题是明明子弹还很多,它根本不需要提前自动装子弹吧,
所以想请大家帮帮忙,这个小小毛病要从哪一段程式去修正它!
"让子弹用完才能自动补子弹"



269行后面没有写完..不晓得是不是这原因导致这把武器出问题


// 使用了武器射速参数 但是没有记忆体位置标示
set_pdata_float( Player, 83, OFFSET_TIME_ATTACK )


//修改后
set_pdata_float( Player, 83, OFFSET_TIME_ATTACK, 5 )

献花 x1
引用 | 编辑 mingjey2000
2019-05-22 22:20
2楼
  
弑血大大
这样改还是一样不行

献花 x0
引用 | 编辑 弑血
2019-05-23 00:02
3楼
  
下面是引用 mingjey2000 于 2019-05-22 22:20 发表的 : 到引言文
弑血大大
这样改还是一样不行



问个问题 是一次性补满 还是一次补一颗


因为 里面语法是写一次补满整个弹匣的写法


我在想是不是遇到霰弹本身问题


672行把判断改一下试看看
if( fInReload && flNextAttack <= 0.0 )
修改成
if( fInReload && flNextAttack <= 0.0 && !iClip)

献花 x1
引用 | 编辑 mingjey2000
2019-05-23 12:15
4楼
  
改成这指令后

if( fInReload && flNextAttack <= 0.0 && !iClip)
有时可正常,有时又会自动补一次子弹

原本45颗子弹,自动补弹后变回8颗,当子弹用完或是"手动装弹"又变回45颗,每发射一下又自动补一次子弹,
它确实是散弹枪的写法,也许只好从子弹数量设定成 8颗,让它能配合(不超过8颗就不会出现提前自动补子弹动作)

132行
cvar_clip = register_cvar("zp_pl_clip", "45") // 子弹数
改成
cvar_clip = register_cvar("zp_pl_clip", "8") // 子弹数

献花 x1
引用 | 编辑 弑血
2019-05-23 14:48
5楼
  
下面是引用 mingjey2000 于 2019-05-23 12:15 发表的 : 到引言文
改成这指令后

if( fInReload && flNextAttack <= 0.0 && !iClip)
有时可正常,有时又会自动补一次子弹

原本45颗子弹,自动补弹后变回8颗,当子弹用完或是"手动装弹"又变回45颗,每发射一下又自动补一次子弹,
它确实是散弹枪的写法,也许只好从子弹数量设定成 8颗,让它能配合(不超过8颗就不会出现提前自动补子弹动作)

132行
cvar_clip = register_cvar("zp_pl_clip", "45") // 子弹数
改成
cvar_clip = register_cvar("zp_pl_clip", "8") // 子弹数



707行改这段看看



if (iClip >= iClipExtra)
return HAM_SUPERCEDE
修改后

if (iClip >= iClipExtra || iClip)
return HAM_SUPERCEDE


修改成如果clip内还有子弹就不能装填看看


如果还是不行 那我建议 把m3改掉 换成别把步枪

献花 x1
引用 | 编辑 mingjey2000
2019-05-23 16:43
6楼
  
假如真这么做的话等于是强迫它把事情做完
当玩家想提前手动补个子弹,这时可能会认为案键是不是坏了...哈哈

您说把m3改成别把步枪?
我改改看

献花 x1
引用 | 编辑 弑血
2019-05-23 16:55
7楼
  
下面是引用 mingjey2000 于 2019-05-23 16:43 发表的 : 到引言文
假如真这么做的话等于是强迫它把事情做完
当玩家想提前手动补个子弹,这时可能会认为案键是不是坏了...哈哈

您说把m3改成别把步枪?
我改改看



很大的原因可能是M3本身就会自动一颗一颗换子弹
即有很大的因素冲突到一次换弹可能性
换成步枪就没这问题了

献花 x1
引用 | 编辑 mingjey2000
2019-05-23 17:15
8楼
  
我把m3霰弹枪改为M4A1步枪
并将子弹数改回45颗,装弹后变成30颗(自动提前装弹问题没在发生过)
当我买了M4A1步枪使用,这时...子弹速度也变成毒药离子枪速度(很慢)
飞出去的速度反成一个困扰



42行
#define CSW_WPN_POISON CSW_M4A1
46行
new const gWeapon[] = "weapon_m4a1"
160行
if (equal("events/m4a1.sc", name))
370行
if(equal(model, "models/w_m4a1.mdl"))

献花 x1
引用 | 编辑 弑血
2019-05-23 17:58
9楼
  
下面是引用 mingjey2000 于 2019-05-23 17:15 发表的 : 到引言文
我把m3霰弹枪改为M4A1步枪
并将子弹数改回45颗,装弹后变成30颗(自动提前装弹问题没在发生过)
当我买了M4A1步枪使用,这时...子弹速度也变成毒药离子枪速度(很慢)
飞出去的速度反成一个困扰



42行
#define CSW_WPN_POISON CSW_M4A1
46行
new const gWeapon[] = "weapon_m4a1"
160行
if (equal("events/m4a1.sc", name))
370行
if(equal(model, "models/w_m4a1.mdl"))



看了全部内容 大概知道原因在哪


你那m4a1可能没有关掉毒枪效果,关掉毒枪要丢弃武器


你尝试切换武器 看看有没有跳出毒枪的模组


此作者 并没有用curweapon事件去做检查手部武器模组


当下只有
178行的
public fw_item_addtoplayer(ent, id) //拾取道具时
跟 620行的
public fw_Item_Deploy_Post(weapon_ent) // 切换武器
才有给予毒枪模组


也有可能是 武器没有正常显示出毒枪模组 但是 效果依然存在导致 你看到是正常m4a1的外观 但是实际上 毒枪效果依然存在

献花 x1