ZP4.3子彈包上限問題

Home Home
引用 | 編輯 曾李源
2013-07-30 15:08
樓主
推文 x0
修改ZP4.3以下內容
while (g_damagedealt[attacker] > get_pcvar_num(cvar_ammodamage)) 
            { 
                g_ammopacks[attacker]++ 
                g_damagedealt[attacker] -= get_pcvar_num(cvar_ammodamage) 
            }

至這樣
while (g_damagedealt[attacker] > get_pcvar_num(cvar_ammodamage)) 
            { 
                g_damagedealt[attacker] -= get_pcvar_num(cvar_ammodamage) 
                if(g_ammopacks[attacker] < 160) // 現在子彈包上限為160 
                    g_ammopacks[attacker]++ 
            }
便可以限制人類的子彈包上限,但是僵尸感染人類后子彈包仍然會突破上限,請問大大怎樣也能限制僵尸獲得子彈包的上限

獻花 x0
引用 | 編輯 as960126
2013-07-30 15:59
1樓
  
是說備彈數嗎??

獻花 x0
引用 | 編輯 曾李源
2013-07-30 16:34
2樓
  
下面是引用 as960126 於 2013-07-30 15:59 發表的 : 到引言文
是說備彈數嗎??

是子彈包,ZP裡的金錢

獻花 x0
引用 | 編輯 弒血
2013-07-30 16:59
3樓
  
下面是引用 曾李源 於 2013-07-30 16:34 發表的 : 到引言文
 
是子彈包,ZP裡的金錢



修改ZP主插件內的 子彈包量..


先取得 子彈包量 如果大於16000量 就 等於 16000量

獻花 x0
引用 | 編輯 曾李源
2013-07-30 21:19
4樓
  
下面是引用 s8720419 於 2013-07-30 16:59 發表的 : 到引言文




修改ZP主插件內的 子彈包量..


先取得 子彈包量 如果大於16000量 就 等於 16000量


大大請看上面的修改,是否再加上一些指令就可以讓僵尸的金幣也有一定的上限

獻花 x0
引用 | 編輯 八云の橙貓
2013-07-30 21:33
5樓
  
殭屍的話 找到感染部分增加子彈包的函數就好了
複製程式
// Zombie/nemesis killed human, reward ammo packs
 if (g_zombie[attacker] && (!g_nemesis[attacker] || !get_pcvar_num(cvar_nemignoreammo)))
 g_ammopacks[attacker] += get_pcvar_num(cvar_ammoinfect)
其實比較快速的方法可以直接用PlayerThink偵測玩家子彈包
判斷方法同樓主 只是這個比較方便

獻花 x0
引用 | 編輯 弒血
2013-07-30 21:46
6樓
  
下面是引用 曾李源 於 2013-07-30 21:19 發表的 : 到引言文
 

大大請看上面的修改,是否再加上一些指令就可以讓僵尸的金幣也有一定的上限



下次要貼整段的上來喔


我來講解一下 你說的問題


Q:1
A: (因為他判斷說不是殭屍) = 人類 || 復仇者 || 倖存者 !!! 33%人類 0.0


Q:2
A: (因為他判斷說不是復仇者) = 人類 || 倖存者 !!! 50%人類 0.0


Q:3
A: (因為他判斷說不是倖存者) = 人類 !!! 100%人類 0.0



// Attacker is human...
if (!g_zombie[attacker]) Q:1
{
// Armor multiplier for the final damage on normal zombies
if (!g_nemesis[victim])  Q:2
{
damage *= get_pcvar_float(cvar_zombiearmor)
SetHamParamFloat(4, damage)
}

// Reward ammo packs
if (!g_survivor[attacker] || !get_pcvar_num(cvar_survignoreammo)) Q:3
{
// Store damage dealt
g_damagedealt[attacker] += floatround(damage)

// Get damage required to get an ammo pack
static ammodamage
ammodamage = get_pcvar_num(cvar_ammodamage)

// Reward ammo packs for every [ammo damage] dealt
while (g_damagedealt[attacker] >= ammodamage)
{
g_ammopacks[attacker]++
g_damagedealt[attacker] -= ammodamage
}
}

return HAM_IGNORED;
}


把 Q:1: 那段 刪掉 他就不會 有問題了

獻花 x0
引用 | 編輯 弒血
2013-07-30 21:53
7樓
  
下面是引用 八云の橙貓 於 2013-07-30 21:33 發表的 : 到引言文
殭屍的話 找到感染部分增加子彈包的函數就好了
複製程式
// Zombie/nemesis killed human, reward ammo packs
 if (g_zombie[attacker] && (!g_nemesis[attacker] || !get_pcvar_num(cvar_nemignoreammo)))
 g_ammopacks[attacker] += get_pcvar_num(cvar_ammoinfect)
其實比較快速的方法可以直接用PlayerThink偵測玩家子彈包
判斷方法同樓主 只是這個比較方便



用人物思考判斷也是可以,方便性也很高


只不過 ZP是用 傷害去判斷 子彈包的 增加量


考量到還要去判斷傷害到變數上給人物思考


直接在傷害 判斷 使用 效果會比較好

獻花 x0
引用 | 編輯 八云の橙貓
2013-07-30 22:05
8樓
  
下面是引用 s8720419 於 2013-07-30 21:53 發表的 : 到引言文




用人物思考判斷也是可以,方便性也很高


只不過 ZP是用 傷害去判斷 子彈包的 增加量


考量到還要去判斷傷害到變數上給人物思考


直接在傷害 判斷 使用 效果會比較好



其實傷害判斷的方式可以不用考慮進去think啦w


我只需要在think裡面加上
複製程式

if(g_ammopacks[id] > 某數值)
     g_ammopacks[id] = 某數值


根本懶人方法


其實把判斷獨立成一個插件也不是不行(炸


獻花 x0
引用 | 編輯 曾李源
2013-07-30 22:12
9樓
  
下面是引用 s8720419 於 2013-07-30 21:46 發表的 : 到引言文


下次要貼整段的上來喔

我來講解一下 你說的問題
.......

刪完之後僵屍變為殺死人類而且殺死之後加的金幣仍會突破上限

獻花 x0
引用 | 編輯 八云の橙貓
2013-07-30 23:14
10樓
  
下面是引用 s8720419 於 2013-07-30 21:46 發表的 : 到引言文


下次要貼整段的上來喔

我來講解一下 你說的問題
.......



可是這段 是給人類用的欸w?


殭屍是計算感染跟擊殺 所以與傷害無關

獻花 x0
引用 | 編輯 弒血
2013-07-30 23:47
11樓
  
下面是引用 曾李源 於 2013-07-30 22:12 發表的 : 到引言文
 
刪完之後僵屍變為殺死人類而且殺死之後加的金幣仍會突破上限



不然 你可以 先把 Q1還原


用判斷去讓while停止


if(g_ammopacks[attacker] <= 160) // 現在子彈包上限為160 
{
while (g_damagedealt[attacker] > get_pcvar_num(cvar_ammodamage)) 
            { 
                g_damagedealt[attacker] -= get_pcvar_num(cvar_ammodamage) 

                    g_ammopacks[attacker]++ 
            }
}


這樣是讓 子彈包如果小於 160數量時 才會繼續+子彈包


如果大於 160 就會停止 增加...


這樣問題 自然就解決了表情

獻花 x0
引用 | 編輯 a7811311622
2013-07-31 12:45
12樓
  
你改的內容只是人類的子彈包上限制…
殭屍的子彈包在 zombieme(id, infector, nemesis, silentmode, rewards) 裡面:
複製程式
       
       // Show deathmsg and reward infector?
       if (rewards && infector)
       {
              // Send death notice and fix the "dead" attrib on scoreboard
              SendDeathMsg(infector, id)
              FixDeadAttrib(id)
              
              // Reward frags, deaths, health, and ammo packs
              UpdateFrags(infector, id, get_pcvar_num(cvar_fragsinfect), 1, 1)
              g_ammopacks[infector] += get_pcvar_num(cvar_ammoinfect) // 這是增加殭屍子彈包的判斷
              fm_set_user_health(infector, pev(infector, pev_health) + get_pcvar_num(cvar_zombiebonushp))
       }
       
對那行做一樣的限制就好了…

獻花 x0
引用 | 編輯 曾李源
2013-08-03 02:43
13樓
  
问题已经解决了,方法就是僵尸感染人类不加金币,zp_zombie_infect_reward 0

獻花 x0
引用 | 編輯 a7811311622
2013-08-03 19:16
14樓
  
下面是引用 曾李源 於 2013-08-03 02:43 發表的 : 到引言文
问题已经解决了,方法就是僵尸感染人类不加金币,zp_zombie_infect_reward 0
那不叫解決問題…那是逃避問題…||= =

獻花 x0
引用 | 編輯 曾李源
2013-08-04 14:42
15樓
  
下面是引用 a7811311622 於 2013-08-03 19:16 發表的 : 到引言文

那不叫解決問題…那是逃避問題…||= =


對,這次用大大的方法試試,其實當僵尸沒錢賺是下策,那個時候沒找到更好的辦法限制

獻花 x0