傷害顯示教材

Home Home
引用 | 編輯 可乐渴了
2020-02-20 14:08
樓主
推文 x0
*授人以魚不如授人以漁
*教程的代碼未經測試 慎用


今天教大家如何寫壹個傷害顯示 壹個比較實用的功能


// 請尊重原創者,不要擅自修改

#define PLUGIN_NAME "Show Damage"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_AUTHOR "Zapdos"


public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage") // 首先我們需要註冊壹個傷害事件
}



public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
// 如果是自我造成傷害或者不是連接的玩家攻擊
if (attacker == victim || !is_user_connected(attacker))
return HAM_IGNORED // 阻止往下執行


// 這裏設置輸出信息的顏色和xy坐標 (我采用了隨機顏色)
set_hudmessage(random(256), random(256), random(256), 0.50, 0.40 , 2, 0.1, 4.0, 0.02, 0.02, -1)
show_hudmessage(attacker, "%d", floatround(damage)) // 只讓攻擊者顯示傷害提示 將浮點化為整數


return HAM_IGNORED // 以防萬壹
}


*壹個傷害顯示就完成啦! 有什麽問題或者不懂的請留言
*如果是希望壹起合作寫程序碼請信件我
*最後說壹句 希望妳們每天開開心心

獻花 x1
引用 | 編輯 dw312382354
2020-03-10 11:22
1樓
  
你这个只有攻击者能看到攻击别人的伤害
那我想当我是受害者的时候怎么显示攻击我的人的名字 还有ta对我的伤害?

獻花 x0
引用 | 編輯 弒血
2020-03-11 16:17
2樓
  
下面是引用 dw312382354 於 2020-03-10 11:22 發表的 : 到引言文
你这个只有攻击者能看到攻击别人的伤害
那我想当我是受害者的时候怎么显示攻击我的人的名字 还有ta对我的伤害?



很簡單
表情

//新增字串空間32
new name[32];
//取得攻擊者名稱&儲存名稱字串
get_user_name(attacker, name, sizeof name-1);
show_hudmessage(victim, "name [%s] | damage[%d]", name, floatround(damage)) // 只讓受害者顯示攻擊者名稱跟傷害提示 將浮點化為整數


 

獻花 x1
引用 | 編輯 可乐渴了
2020-03-11 17:28
3樓
  
下面是引用 dw312382354 于 2020-03-10 11:22 发表的 : 到引言文
你这个只有攻击者能看到攻击别人的伤害
那我想当我是受害者的时候怎么显示攻击我的人的名字 还有ta对我的伤害?

弑血大大说的没错哦, 你可以参考他的来。

獻花 x0
引用 | 編輯 dw312382354
2020-03-18 01:22
4樓
  
下面是引用 弒血 於 2020-03-11 16:17 發表的 : 到引言文




很簡單
表情

//新增字串空間32
new name[32];
//取得攻擊者名稱&儲存名稱字串
get_user_name(attacker, name, sizeof name-1);
show_hudmessage(victim, "name [%s] | damage[%d]", name, floatround(damage)) // 只讓受害者顯示攻擊者名稱跟傷害提示 將浮點化為整數


 



为啥不行啊?

new attacker = get_user_attacker(victim),damage = read_data(2),name[32],name2[32]
get_user_name(attacker, name, 31) // get hud msg
get_user_name(victim, name2, 31) // get hud msg
if (!is_user_connected(attacker) || !is_user_connected(victim) || victim == attacker) return
if (attacker)
{
set_hudmessage(0, 0, 255, -1.0, 0.55, 2, 0.1, 2.0, 0.1, 0.1, -1)
show_hudmessage(attacker, "%d^n%s", damage, name2)
}
else if (victim)
{
set_hudmessage(255, 0, 0, -1.0, 0.55, 2, 0.1, 2.0, 0.1, 0.1, -1)
show_hudmessage(victim, "%d^n%s",damage, name)
}

獻花 x0
引用 | 編輯 弒血
2020-03-18 01:37
5樓
  
下面是引用 dw312382354 於 2020-03-18 01:22 發表的 : 到引言文


为啥不行啊?
new attacker = get_user_attacker(victim),damage = read_data(2),name[32],name2[32]
get_user_name(attacker, name, 31) // get hud msg
.......



public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
// 如果是自我造成傷害或者不是連接的玩家攻擊
if (attacker == victim || !is_user_connected(attacker))
return HAM_IGNORED // 阻止往下執行
}


不用再取得new attacker = get_user_attacker(victim)

獻花 x0
引用 | 編輯 dw312382354
2020-03-18 20:23
6樓
  
下面是引用 弒血 於 2020-03-18 01:37 發表的 : 到引言文




public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
// 如果是自我造成傷害或者不是連接的玩家攻擊
if (attacker == victim || !is_user_connected(attacker))
return HAM_IGNORED // 阻止往下執行
}


不用再取得new attacker = get_user_attacker(victim)
上面有这个判断啊。
我就想知道打别人显示 当自己受伤是不显示。哪里不行。

獻花 x0
引用 | 編輯 弒血
2020-03-18 20:40
7樓
  
下面是引用 dw312382354 於 2020-03-18 20:23 發表的 : 到引言文

上面有这个判断啊。
我就想知道打别人显示 当自己受伤是不显示。哪里不行。



if (attacker != victim)

獻花 x0
引用 | 編輯 576103569
2023-11-27 18:37
8樓
  
用来活不了平台,要么没显示伤害

獻花 x0