引用 | 編輯
Yougmula
2023-02-19 22:11 |
樓主
▼ |
||
x0
我在修改zp的人类士气插件,想把hud做到【像cxol】的那种【士气条样式】要怎么实现呢?想实现的样式是这样的:: 攻击力:100% + 10% [0级士气,同时身边有1个队友额外加成10%攻击力] [ | ] 攻击力:150% + 50% [5级士气,同时身边有5个队友额外加成50%攻击力] [ | | | | | | | | | | ] 攻击力:200% + 50% [10级士气,同时身边有5个队友额外加成50%攻击力] [ | | | | | | | | | | | | | | | ] 每提升一级人类士气,也就是【每提升10%攻击力】,【就自动【增减】一条竖线】 。相当于【用一条竖线来表示10%攻击力】只用一个hudmessage的情况下要怎么实现。 上边的攻击力加成后面的数字是我加了【人类抱团】时候会【根据身边队友数量】【额外增加攻击力】的功能,所以我上边才会说 【自动增减一条竖线】 。 x0
|
引用 | 編輯
弒血
2023-02-19 23:00 |
1樓
▲ ▼ |
下面是引用 Yougmula 於 2023-02-19 22:11 發表的 关于hud样式设计的问题 来个大佬: 首先先用迴圈檢查玩家距離,在設定多少距離離內的人數 在來使用陣列字串紀錄1-10等的能量變化,再來把人數放進對應的能量字串陣列顯示出來即可 例如 new human_power[33][10][16] = {"I", "II", "III"} //以此類推 & 33 = 玩家編號順序 & 10 = 能量順序 & 16 = 能量字串顯示長度 再來把對應的hud顯示字串放入對應的順序即可 human_power[玩家ID][目前周圍幾人] x0 |
引用 | 編輯
Yougmula
2023-02-20 01:44 |
2樓
▲ ▼ |
下面是引用 弑血 于 2023-02-19 23:00 发表的 : 我在别的地方找到了别的士气怒气插件,里面的hud效果就符合我说的。但是我看不懂他的写法,我把hud那段代码发出来,你能说一下他的代码是什么意思吗? 【代码】 Show_RageHud(id) { if(!is_user_alive(id)) return new szBar[64] for(new i = 0; i < (floatround(float(g_iRagePercent[id]) / 4.0, floatround_floor)); i++) formatex(szBar, sizeof(szBar), "%s|", szBar) for(new i = 0; i < (25 - (floatround(float(g_iRagePercent[id]) / 4.0, floatround_floor))); i++) formatex(szBar, sizeof(szBar), "%s ", szBar) set_dhudmessage(250, 250 - g_iRagePercent[id] * 2 , 0, -1.0, 0.8, 0, 1.0, 1.0, 0.0, 0.0) show_dhudmessage(id, "[%s]", szBar) } Show_MoraleHud(id) { if(!is_user_alive(id)) return new szNotice[32], iMoarleBar = min(g_iMoraleLevel + g_iMoraleAdd[id] + g_iMoraleNear[id], 13) formatex(szNotice, sizeof(szNotice), "攻击力 : %i%", (g_iMoraleLevel + g_iMoraleAdd[id]) * 10 + 100) if(g_iMoraleNear[id]) format(szNotice, sizeof(szNotice), "%s% + %i%", szNotice, g_iMoraleNear[id] * 10) set_hudmessage(COLOR_MORALE[iMoarleBar][0], COLOR_MORALE[iMoarleBar][1], COLOR_MORALE[iMoarleBar][2], -1.0, 0.8 - 0.02, 0, 1.25, 1.25, 0.0, 0.0) ShowSyncHudMsg(id, CreateHudSyncObj(2), szNotice) new szBar[42] for(new i = 0; i < iMoarleBar * 2; i++) formatex(szBar, sizeof(szBar), "%s|", szBar) for(new i = 0; i < (20 - iMoarleBar * 2); i++) formatex(szBar, sizeof(szBar), "%s ", szBar) set_dhudmessage(COLOR_MORALE[iMoarleBar][0], COLOR_MORALE[iMoarleBar][1], COLOR_MORALE[iMoarleBar][2], -1.0, 0.8, 0, 1.0, 1.0, 0.0, 0.0) show_dhudmessage(id, "[%s]", szBar) } x0 |
引用 | 編輯
Yougmula
2023-02-20 01:49 |
3樓
▲ ▼ |
下面是引用 弑血 于 2023-02-19 23:00 发表的 : 【我把贴上来的代码重新排版了一下】 Show_RageHud(id) ///僵尸怒气HUD代码 { if(!is_user_alive(id)) return new szBar[64] for(new i = 0; i < (floatround(float(g_iRagePercent[id]) / 4.0, floatround_floor)); i++) formatex(szBar, sizeof(szBar), "%s|", szBar) for(new i = 0; i < (25 - (floatround(float(g_iRagePercent[id]) / 4.0, floatround_floor))); i++) formatex(szBar, sizeof(szBar), "%s ", szBar) set_dhudmessage(250, 250 - g_iRagePercent[id] * 2 , 0, -1.0, 0.8, 0, 1.0, 1.0, 0.0, 0.0) show_dhudmessage(id, "[%s]", szBar) } Show_MoraleHud(id) ///人类士气HUD代码 { if(!is_user_alive(id)) return new szNotice[32], iMoarleBar = min(g_iMoraleLevel + g_iMoraleAdd[id] + g_iMoraleNear[id], 13) formatex(szNotice, sizeof(szNotice), "攻击力 : %i%", (g_iMoraleLevel + g_iMoraleAdd[id]) * 10 + 100) if(g_iMoraleNear[id]) format(szNotice, sizeof(szNotice), "%s% + %i%", szNotice, g_iMoraleNear[id] * 10) set_hudmessage(COLOR_MORALE[iMoarleBar][0], COLOR_MORALE[iMoarleBar][1], COLOR_MORALE[iMoarleBar][2], -1.0, 0.8 - 0.02, 0, 1.25, 1.25, 0.0, 0.0) ShowSyncHudMsg(id, CreateHudSyncObj(2), szNotice) new szBar[42] for(new i = 0; i < iMoarleBar * 2; i++) formatex(szBar, sizeof(szBar), "%s|", szBar) for(new i = 0; i < (20 - iMoarleBar * 2); i++) formatex(szBar, sizeof(szBar), "%s ", szBar) set_dhudmessage(COLOR_MORALE[iMoarleBar][0], COLOR_MORALE[iMoarleBar][1], COLOR_MORALE[iMoarleBar][2], -1.0, 0.8, 0, 1.0, 1.0, 0.0, 0.0) show_dhudmessage(id, "[%s]", szBar) } x0 |
引用 | 編輯
Yougmula
2023-02-20 02:12 |
4樓
▲ ▼ |
下面是引用 弑血 于 2023-02-19 23:00 发表的 : 对了再顺便问一下 像cxol的尘埃之光,雷神,【虎王】巴雷特开枪会有一段一段的激光那种是怎么实现的。比如尘埃之光,开枪会有一小段蓝色激光特效向击中的地方飞行,这种激光特效是什么原理?不是那种一开枪就会立即显示完整一段的激光特效的。 x0 |
引用 | 編輯
弒血
2023-02-20 02:23 |
5樓
▲ |
下面是引用 Yougmula 於 2023-02-20 01:49 發表的 : 雖然都是先研究再改良,不過還是建議自己寫會比較好。只幫解說一次 Show_RageHud(id) ///僵屍怒氣HUD代碼 { if(!is_user_alive(id)) return //是否活著 new szBar[64] //字串空間 for(new i = 0; i < (floatround(float(g_iRagePercent[id]) / 4.0, floatround_floor)); i++) //怒氣運算 formatex(szBar, sizeof(szBar), "%s|", szBar) //怒氣條 for(new i = 0; i < (25 - (floatround(float(g_iRagePercent[id]) / 4.0, floatround_floor))); i++) //怒氣運算 formatex(szBar, sizeof(szBar), "%s ", szBar) //怒氣條 set_dhudmessage(250, 250 - g_iRagePercent[id] * 2 , 0, -1.0, 0.8, 0, 1.0, 1.0, 0.0, 0.0) //怒氣改變顏色 show_dhudmessage(id, "[%s]", szBar) //怒氣條顯示 } Show_MoraleHud(id) ///人類士氣HUD代碼 { if(!is_user_alive(id)) return //是否活著 new szNotice[32], iMoarleBar = min(g_iMoraleLevel + g_iMoraleAdd[id] + g_iMoraleNear[id], 13) //士氣運算+上限設定13 formatex(szNotice, sizeof(szNotice), "攻擊力 : %i%", (g_iMoraleLevel + g_iMoraleAdd[id]) * 10 + 100) //士氣運算 if(g_iMoraleNear[id]) format(szNotice, sizeof(szNotice), "%s% + %i%", szNotice, g_iMoraleNear[id] * 10) //士氣條運算 set_hudmessage(COLOR_MORALE[iMoarleBar][0], COLOR_MORALE[iMoarleBar][1], COLOR_MORALE[iMoarleBar][2], -1.0, 0.8 - 0.02, 0, 1.25, 1.25, 0.0, 0.0) //設定士氣條顏色 ShowSyncHudMsg(id, CreateHudSyncObj(2), szNotice) //顯示士氣條 new szBar[42] // 字串空間 for(new i = 0; i < iMoarleBar * 2; i++) formatex(szBar, sizeof(szBar), "%s|", szBar) //士氣條運算 for(new i = 0; i < (20 - iMoarleBar * 2); i++) formatex(szBar, sizeof(szBar), "%s ", szBar) //士氣條運算 set_dhudmessage(COLOR_MORALE[iMoarleBar][0], COLOR_MORALE[iMoarleBar][1], COLOR_MORALE[iMoarleBar][2], -1.0, 0.8, 0, 1.0, 1.0, 0.0, 0.0) //設定士氣條 show_dhudmessage(id, "[%s]", szBar) //顯示士氣條 } 以上可以改良空間很大,畢竟用太多迴圈會很消耗遊戲內存,久了可能會不穩,基本上迴圈少用點會比較好。 x0 |