Yougmula
|
分享:
▲
▼
下面是引用 弑血 于 2023-02-19 23:00 发表的 :
首先先用回圈检查玩家距离,在设定多少距离离内的人数
在来使用阵列字串纪录1-10等的能量变化,再来把人数放进对应的能量字串阵列显示出来即可
例如
new human_power[33][10][16] = {"I", "II", "III"} //以此类推 & 33 = 玩家编号顺序 & 10 = 能量顺序 & 16 = 能量字串显示长度
再来把对应的hud显示字串放入对应的顺序即可 human_power[玩家ID][目前周围几人] 我在别的地方找到了别的士气怒气插件,里面的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
[2 楼]
From:IANA保留地址 | Posted:2023-02-20 01:44 |
|
|
Yougmula
|
分享:
▲
▼
下面是引用 弑血 于 2023-02-19 23:00 发表的 :
首先先用回圈检查玩家距离,在设定多少距离离内的人数
在来使用阵列字串纪录1-10等的能量变化,再来把人数放进对应的能量字串阵列显示出来即可
例如
new human_power[33][10][16] = {"I", "II", "III"} //以此类推 & 33 = 玩家编号顺序 & 10 = 能量顺序 & 16 = 能量字串显示长度
再来把对应的hud显示字串放入对应的顺序即可 human_power[玩家ID][目前周围几人] 【我把贴上来的代码重新排版了一下】 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
[3 楼]
From:IANA保留地址 | Posted:2023-02-20 01:49 |
|
|
弑血
|
分享:
▲
下面是引用 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
[5 楼]
From:台湾中华电信股份有限公司 | Posted:2023-02-20 02:23 |
|
|
|