广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 1371 个阅读者
04:00 ~ 4:30 资料库备份中,需等较久的时间,请耐心等候
 
发表文章 发表投票 回覆文章
  可列印版   加为IE收藏   收藏主题   上一主题 | 下一主题   
Yougmula
数位造型
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖
小人物
级别: 小人物 该用户目前不上站
推文 x1 鲜花 x32
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片
推文 x0
[1.6][插件] 关于hud样式设计的问题 来个大佬
我在修改zp的人类士气插件,想把hud做到【像cxol】的那种【士气条样式】要怎么实现呢?


想实现的样式是这样的::




攻击力:100% + 10% [0级士气,同时身边有1个队友额外加成10%攻击力]
[ |                           ]


攻击力:150% + 50% [5级士气,同时身边有5个队友额外加成50%攻击力]
[ | | | | | | | | | |          ]


攻击力:200% + 50% [10级士气,同时身边有5个队友额外加成50%攻击力]
[ | | | | | | | | | | | | | | | ]




每提升一级人类士气,也就是【每提升10%攻击力】,【就自动【增减】一条竖线】 。相当于【用一条竖线来表示10%攻击力】只用一个hudmessage的情况下要怎么实现。



上边的攻击力加成后面的数字是我加了【人类抱团】时候会【根据身边队友数量】【额外增加攻击力】的功能,所以我上边才会说 【自动增减一条竖线】 。



献花 x0 回到顶端 [楼 主] From:IANA保留地址 | Posted:2023-02-19 22:11 |
弑血
个人头像
个人文章 个人相簿 个人日记 个人地图
社区建设奖 特殊贡献奖 创作大师奖
小有名气
级别: 小有名气 该用户目前不上站
推文 x108 鲜花 x238
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 Yougmula 于 2023-02-19 22:11 发表的 关于hud样式设计的问题 来个大佬: 到引言文
我在修改zp的人类士气插件,想把hud做到【像cxol】的那种【士气条样式】要怎么实现呢?


想实现的样式是这样的::




攻击力:100% + 10% [0级士气,同时身边有1个队友额外加成10%攻击力]
[ |                           ]


攻击力:150% + 50% [5级士气,同时身边有5个队友额外加成50%攻击力]
[ | | | | | | | | | |          ]


攻击力:200% + 50% [10级士气,同时身边有5个队友额外加成50%攻击力]
[ | | | | | | | | | | | | | | | ]




每提升一级人类士气,也就是【每提升10%攻击力】,【就自动【增减】一条竖线】 。相当于【用一条竖线来表示10%攻击力】只用一个hudmessage的情况下要怎么实现。



上边的攻击力加成后面的数字是我加了【人类抱团】时候会【根据身边队友数量】【额外增加攻击力】的功能,所以我上边才会说 【自动增减一条竖线】 。



首先先用回圈检查玩家距离,在设定多少距离离内的人数


在来使用阵列字串纪录1-10等的能量变化,再来把人数放进对应的能量字串阵列显示出来即可


例如


new human_power[33][10][16] = {"I", "II", "III"} //以此类推  &  33 = 玩家编号顺序 & 10 = 能量顺序 & 16 = 能量字串显示长度


再来把对应的hud显示字串放入对应的顺序即可 human_power[玩家ID][目前周围几人]



目前传授教学&有兴趣者可以问我
BOT瞄准攻击NPC&模仿事件触发计算出场&新增地图重生位置等等
已修复entity的attachment错误问题,开始尝试写出各种npc_boss成品
按这里检视影片,登入论坛可以直接观看
按这里检视影片,登入论坛可以直接观看
按这里检视影片,登入论坛可以直接观看
按这里检视影片,登入论坛可以直接观看
献花 x0 回到顶端 [1 楼] From:台湾中华电信股份有限公司 | Posted:2023-02-19 23:00 |
Yougmula
数位造型
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖
小人物
级别: 小人物 该用户目前不上站
推文 x1 鲜花 x32
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 弑血 于 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
数位造型
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖
小人物
级别: 小人物 该用户目前不上站
推文 x1 鲜花 x32
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 弑血 于 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
数位造型
个人文章 个人相簿 个人日记 个人地图
特殊贡献奖
小人物
级别: 小人物 该用户目前不上站
推文 x1 鲜花 x32
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 弑血 于 2023-02-19 23:00 发表的 : 到引言文




首先先用回圈检查玩家距离,在设定多少距离离内的人数


在来使用阵列字串纪录1-10等的能量变化,再来把人数放进对应的能量字串阵列显示出来即可


例如


new human_power[33][10][16] = {"I", "II", "III"} //以此类推  &  33 = 玩家编号顺序 & 10 = 能量顺序 & 16 = 能量字串显示长度


再来把对应的hud显示字串放入对应的顺序即可 human_power[玩家ID][目前周围几人]



对了再顺便问一下 像cxol的尘埃之光,雷神,【虎王】巴雷特开枪会有一段一段的激光那种是怎么实现的。比如尘埃之光,开枪会有一小段蓝色激光特效向击中的地方飞行,这种激光特效是什么原理?不是那种一开枪就会立即显示完整一段的激光特效的。


献花 x0 回到顶端 [4 楼] From:IANA保留地址 | Posted:2023-02-20 02:12 |
弑血
个人头像
个人文章 个人相簿 个人日记 个人地图
社区建设奖 特殊贡献奖 创作大师奖
小有名气
级别: 小有名气 该用户目前不上站
推文 x108 鲜花 x238
分享: 转寄此文章 Facebook Plurk Twitter 复制连结到剪贴簿 转换为繁体 转换为简体 载入图片

下面是引用 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) //显示士气条
}


以上可以改良空间很大,毕竟用太多回圈会很消耗游戏内存,久了可能会不稳,基本上回圈少用点会比较好。



目前传授教学&有兴趣者可以问我
BOT瞄准攻击NPC&模仿事件触发计算出场&新增地图重生位置等等
已修复entity的attachment错误问题,开始尝试写出各种npc_boss成品
按这里检视影片,登入论坛可以直接观看
按这里检视影片,登入论坛可以直接观看
按这里检视影片,登入论坛可以直接观看
按这里检视影片,登入论坛可以直接观看
献花 x0 回到顶端 [5 楼] From:台湾中华电信股份有限公司 | Posted:2023-02-20 02:23 |

首页  发表文章 发表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.025290 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言