廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 1337 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為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 鮮花 x237
分享: 轉寄此文章 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 鮮花 x237
分享: 轉寄此文章 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.020427 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言