ZP武器前备弹量与武器换弹速度插件冲突问题

Home Home
引用 | 编辑 曾李源
2014-11-23 18:12
楼主
推文 x0
各位大大好久不见,最近我发现了一个BUG又要麻烦您来帮我看看了


先使用武器弹量插件把AK47或其他任何枪的弹量调高至默认以上比如32发,再使用武器换弹插件把AK47或其他任何枪的上弹时间变小比如0.5倍,当弹量低于默认值29或高于默认值31时换弹时间都和设定的一致缩短了0.5倍但是当弹量等于默认值30时换单速度却又变成了原本的1.0倍,我不知道是那个插件出的问题也不知道应该对谁修改请大大指点一下在下感激不尽表情


感谢i-c0112大大的帮忙修正问题已经解决了

本帖包含附件
档名: zip 问题插件.7z   (2022-06-09 14:21 / 5 KB)   下载次数:11


献花 x0
引用 | 编辑 弑血
2014-11-26 00:59
1楼
  
下面是引用 曾李源 于 2014-11-23 18:12 发表的 ZP武器前备弹量与武器换弹速度插件冲突问题: 到引言文
各位大大好久不见,最近我发现了一个BUG又要麻烦您来帮我看看了


先使用武器弹量插件把AK47或其他任何枪的弹量调高至默认以上比如32发,再使用武器换弹插件把AK47或其他任何枪的上弹时间变小比如0.5倍,当弹量低于默认值29或高于默认值31时换弹时间都和设定的一致缩短了0.5倍但是当弹量等于默认值30时换单速度却又变成了原本的1.0倍,我不知道是那个插件出的问题也不知道应该对谁修改请大大指点一下在下感激不尽表情



试着把amxx顺序给换一下..试看看

献花 x0
引用 | 编辑 曾李源
2014-11-26 02:23
2楼
  
下面是引用 s8720419 于 2014-11-26 00:59 发表的 : 到引言文




试着把amxx顺序给换一下..试看看



还是一样有这个问题,虽然不是什么致命的BUG但是也会影响游戏,每一把弹量大于默认值的武器都有可能出现这样的问题除非设定的换弹时间就和默认值一样,但是那样又会和模型动作不一致

献花 x0
引用 | 编辑 e1242656
2014-11-26 17:54
3楼
  
我的CVAR可能跟你的不一样
请使用这两个格式去做调整
weap_maxclip <weapon name> <maxclip>
weap_<weapon name>_reloadtime <time>
范例:
weap_p228_reloadtime       1.4
weap_maxclip p228 7

本帖包含附件
档名: zip scripting.rar   (2022-06-09 14:21 / 6 KB)  
子弹量.装弹时间
下载次数:11


献花 x0
引用 | 编辑 mnbmnb5266
2014-11-26 18:33
4楼
  
下面是引用 e1242656 于 2014-11-26 17:54 发表的 : 到引言文
我的CVAR可能跟你的不一样
请使用这两个格式去做调整
weap_maxclip <weapon name> <maxclip>
weap_<weapon name>_reloadtime <time>
范例:
weap_p228_reloadtime       1.4
weap_maxclip p228 7

大大你好我就是曾李源虽然按照您说的去做了但还是会出现这个问题

献花 x0
引用 | 编辑 JDD
2014-11-29 08:48
5楼
  
...这是个bug 此插件原作者不是我...

献花 x0
引用 | 编辑 husano896
2014-11-29 21:11
6楼
  
试着把弹药量调整插件的219行「set_pdata_float(id, m_flNextAttack, g_fDelay[iId], XTRA_OFS_PLAYER)」
去掉看看

献花 x0
引用 | 编辑 弑血
2014-12-01 16:46
7楼
  
下面是引用 mnbmnb5266 于 2014-11-26 18:33 发表的 : 到引言文


大大你好我就是曾李源虽然按照您说的去做了但还是会出现这个问题



打开弹量插件收寻105行:

if( iMaxClip && iMaxClip != g_iDftMaxClip[iId] )

修改

if( iMaxClip)

以下这些指是bug原因,参考就好:


主要原因在于..63行这段


stock const g_iDftMaxClip[CSW_P90+1] = {
-1,  13, -1, 10,  1,  7,    1, 30, 30,  1,  30, 
20, 25, 30, 35, 25,   12, 20, 10, 30, 100, 
8 , 30, 30, 20,  2,    7, 30, 30, -1,  50}
回到105段判断内容,当主要clip不等于原来的clip数量 也就是 30 那些..才会执行以下的判断
if( iMaxClip && iMaxClip != g_iDftMaxClip[iId] )

献花 x0
引用 | 编辑 i-c0112
2014-12-12 20:48
8楼
  
目前试了一下
原因:
"弹量插件"在 [子弹数为CS内建值] 时,以 [自订的方式] 去装填子弹。
"上弹时间"则是由 [Ham_Weapon_Reload] 捕捉武器装填,并 [覆写上弹时间]
=>因此上弹时间在符合条件 [子弹数为CS内建值] 并不会被覆写


解决方式:
在"弹量插件" [自订的方式] 之后 [加上 'ExecuteHamB'] 让 "上弹时间" 能由 [Ham_Weapon_Reload] 读取到此换弹动作

弹量插件:
复制程式
// [子弹数为CS内建值]
else if( iClip == g_iDftMaxClip[iId] )
{
 if( iBpAmmo )
 {
 // <[自订的方式]>
 set_pdata_float(id, m_flNextAttack, g_fDelay[iId], XTRA_OFS_PLAYER)


 if( SILENT_BS & (1<<iId) && get_pdata_int(iEnt, m_fSilent, XTRA_OFS_WEAPON) )
 {
 SendWeaponAnim( id, iId == CSW_USP ? 5 : 4 )
 }
 else
 {
 SendWeaponAnim(id, g_iReloadAnims[iId])
 }
 set_pdata_int(iEnt, m_fInReload, 1, XTRA_OFS_WEAPON)
 set_pdata_float(iEnt, m_flTimeWeaponIdle, g_fDelay[iId] + 0.5, XTRA_OFS_WEAPON)
 // <[自订的方式]/>
 }
}




上弹时间:
复制程式
// [Ham_Weapon_Reload]
public fw_WeaponReload(weapon)
{
 // ...


 // [覆写上弹时间]

 time = get_user_next_attack(owner) * multiplier
 set_user_next_attack(owner, time)
 set_weapon_idle_time(weapon, time + 0.5)


 // [加上 'ExecuteHamB']
 ExecuteHamB(Ham_Weapon_Reload, iEnt);
}


本帖包含附件
档名: zip 问题插件.7z   (2022-06-09 14:21 / 5 KB)   下载次数:5


献花 x0