|
引用 | 編輯
曾李源
2013-07-30 15:08 |
樓主
▼ |
||
|
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]++ } 便可以限制人類的子彈包上限,但是僵尸感染人類后子彈包仍然會突破上限,請問大大怎樣也能限制僵尸獲得子彈包的上限
|
|||
|
引用 | 編輯
八云の橙貓
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) 判斷方法同樓主 只是這個比較方便 |
|
|
引用 | 編輯
弒血
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: 那段 刪掉 他就不會 有問題了 |
|
|
引用 | 編輯
弒血
2013-07-30 21:53 |
7樓
▲ ▼ |
下面是引用 八云の橙貓 於 2013-07-30 21:33 發表的 : 用人物思考判斷也是可以,方便性也很高 只不過 ZP是用 傷害去判斷 子彈包的 增加量 考量到還要去判斷傷害到變數上給人物思考 直接在傷害 判斷 使用 效果會比較好 |
|
|
引用 | 編輯
八云の橙貓
2013-07-30 22:05 |
8樓
▲ ▼ |
下面是引用 s8720419 於 2013-07-30 21:53 發表的 : 其實傷害判斷的方式可以不用考慮進去think啦w 我只需要在think裡面加上 複製程式 if(g_ammopacks[id] > 某數值) g_ammopacks[id] = 某數值 |
|
|
引用 | 編輯
弒血
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 就會停止 增加... 這樣問題 自然就解決了 |
|
|
引用 | 編輯
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))
}
|
|
|
引用 | 編輯
a7811311622
2013-08-03 19:16 |
14樓
▲ ▼ |