Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

AES Status Info - изменить показ

Статус пользователя Somon007
сообщение 14.1.2024, 14:32
Сообщение #1
Стаж: 3 года

Сообщений: 6
Благодарностей: 1
Полезность: 0

Здравствуйте! Как вывести информацию об игроке (для своей команды: оружие, жизнь, защита, звание; для врагов: только звание / оружие) при нацеливание на игрока (врага/тиммембера). Аналогично такое уже реализовано в BF2 Rank. Посмотрел там код, но не смог адаптировать здесь.
Сейчас это выглядеть так: Ты нацеливаешься на друга/врага и показывает тебе либо в низу либо же по середине в зависимости от настроек твоего CS 1.6, а мне нужно как в плагине BF2 Как HUD сообщение над игроком показывалось информация о нем.
Скину код который нашел с плагина BF2 Rank 1.5.5:
Код BF2 Rank

Код:
public on_ShowStatus(id)
{
// If miscstats PlayerName option is on do not show this info
new statsHudMessage = get_xvar_num(gPlayerName);

new pid = read_data(2);
new pidrank = g_PlayerRank[pid];
new flags = flags_check();
new name[32];
new color1 = 0, color2 = 0;
new Float:height;

get_user_name(pid, name, 31);

if ( get_user_team(pid) == 1 )
color1 = 255;
else
color2 = 255;

if (flags & ABOVEHEAD)
height=0.35;
else
height=0.60;

if ( g_friend[id] == 1 ) // friend
{
if ( flags && !statsHudMessage )
{
new wpnid = get_user_weapon(pid);
new wpnname[32];

if ( wpnid )
xmod_get_wpnname(wpnid, wpnname, 31);

set_hudmessage(color1, 50, color2, -1.0, height, 1, 0.01, 3.0, 0.01, 0.01);

new hp[2], ap[2];
formatex(hp, charsmax(hp), "%L", id, "TARGET_INFO_HP");
formatex(ap, charsmax(ap), "%L", id, "TARGET_INFO_AP");

if (flags & TEAMRANK)
{
new grankname_pidrank_1[128], grankname_pidrank_2[128];
formatex(grankname_pidrank_2, charsmax(grankname_pidrank_2), "%L", id, gRankName[pidrank]);
formatex(grankname_pidrank_1, charsmax(grankname_pidrank_1), "%L", id, gRankName[pidrank]);

if (flags & STATS)
ShowSyncHudMsg(id, gHudSyncAimInfo, "%s : %s^n%d %s / %d %s / %s", name, grankname_pidrank_1, get_user_health(pid), hp, get_user_armor(pid), ap, wpnname);
else
ShowSyncHudMsg(id, gHudSyncAimInfo, "%s : %s", name, grankname_pidrank_2);
}
else
{
if (flags & STATS)
ShowSyncHudMsg(id, gHudSyncAimInfo, "%s^n%d %s / %d %s / %s", name, get_user_health(pid), hp, get_user_armor(pid), ap, wpnname);
else
ShowSyncHudMsg(id, gHudSyncAimInfo, "%s", name);
}
}

new time = floatround(get_pcvar_float(gPcvarIconTime)*10);
if ( time > 0 )
Create_TE_PLAYERATTACHMENT(id, pid, 55, gSprite[pidrank], time);
}
else if ( flags && !statsHudMessage )
{
if (!((flags & HIDEINVIS) && (g_invis[pid])))
{
set_hudmessage(color1, 50, color2, -1.0, height, 1, 0.01, 3.0, 0.01, 0.01);
new grankname_pidrank_3[128];
formatex(grankname_pidrank_3, charsmax(grankname_pidrank_3), "%L", id, gRankName[pidrank]);

if (flags & ENEMYRANK)
ShowSyncHudMsg(id, gHudSyncAimInfo, "%s : %s", name, grankname_pidrank_3);
else
ShowSyncHudMsg(id, gHudSyncAimInfo, "%s", name);
}
}
}


Плагин AES Status Info

/*
AES: Status Info v. 0.1
by serfreeman1337 http://gf.hldm.org/
*/

#include <amxmodx>
#include <aes_main>

#define PLUGIN "AES: Status Info"
#define AUTHOR "serfreeman1337"
#define VERSION "0.1"

new statusText

enum _:cvars {
CVAR_FRIEND,
CVAR_ENEMY
}

new cvar[cvars]

new statusFriend[128],statusEnemy[128]

enum _:isTpl {
TPL_EXP,
TPL_EXPNEED,
TPL_LEVEL,
TPL_MAXLEVEL,
TPL_RANK
}

new isTplFormat[isTpl]

new tplForm[][] = {
"<exp>",
"<nxp>",
"<lvl>",
"<mvl>",
"<rnk>"
}

public plugin_init(){
register_plugin(PLUGIN,VERSION,AUTHOR)

statusText = get_user_msgid("StatusText")
register_event("StatusValue", "Show_Status", "bef", "1=2", "2!0")

cvar[CVAR_FRIEND] = register_cvar("aes_status_friend","1 %c1: %p2\n2 %h: %i3%%")
cvar[CVAR_ENEMY] = register_cvar("aes_status_enemy","1 %c1: %p2")

}

public plugin_cfg(){
get_pcvar_string(cvar[CVAR_FRIEND],statusFriend,127)
get_pcvar_string(cvar[CVAR_ENEMY],statusEnemy,127)

for(new i ; i < isTpl ; ++i){
if(contain(statusFriend,tplForm[i]))
isTplFormat[i] |= (1<<0)

if(contain(statusEnemy,tplForm[i]))
isTplFormat[i] |= (1<<1)
}
}

public Show_Status(id){
new targetId = read_data(2)
new isEnemy = get_user_team(id) != get_user_team(targetId)

new statusTxt[128]
copy(statusTxt,127,isEnemy ? statusEnemy : statusFriend)

if(!tplFormat(id,targetId,statusTxt,127,isEnemy))
return

message_begin(MSG_ONE,statusText,.player=id)
write_byte(0)
write_string(statusTxt)
message_end()

}

public tplFormat(id,targetId,statusTxt[],statusLen,isEnemy){
new aStats[AES_ST_END],tmp[32]

if(!aes_get_player_stats(targetId,aStats))
return 0

for(new i ; i < isTpl ; ++i){
if(isTplFormat[i] & (1<<isEnemy)){
switch(i){
case TPL_EXP:{
formatex(tmp,31,"%d",aStats[AES_ST_EXP])
replace_all(statusTxt,statusLen,tplForm[i],tmp)
}
case TPL_EXPNEED:{
formatex(tmp,31,"%d",aes_get_exp_to_next_level(aStats[AES_ST_LEVEL]))
replace_all(statusTxt,statusLen,tplForm[i],tmp)
}
case TPL_LEVEL:{
formatex(tmp,31,"%d",aStats[AES_ST_LEVEL])
replace_all(statusTxt,statusLen,tplForm[i],tmp)
}
case TPL_MAXLEVEL:{
formatex(tmp,31,"%d",aes_get_max_level())
replace_all(statusTxt,statusLen,tplForm[i],tmp)
}
case TPL_RANK:{
aes_get_level_name(aStats[AES_ST_LEVEL],tmp,31,id)
replace_all(statusTxt,statusLen,tplForm[i],tmp)
}
}
}
}

replace_all(statusTxt,statusLen,"\n","^n")

return 1
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: