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