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

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

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

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

Сделать сообщения только для мертвых

, подкорректировать плагин
Статус пользователя 192168099
сообщение 27.10.2014, 2:15
Сообщение #1


Стаж: 13 лет

Сообщений: 78
Благодарностей: 26
Полезность: 204

Доброй ночи.
Народ, есть кто живой ?
Помогите немного подправить плагин. Необходимо, чтобы сообщение показывало только мёртвым и тем кто в спектаторах.
На данный момент, щас показывает всем.
Сам плагин
Код:
#define MAX_CHARS 128
#define TIME_TO_SEND 21.0
#define HUD_EFF 1
#define HUD_FIX_TIME 0.0
#define HUD_FADE_IN_TIME 0.3
#define HUD_FADE_OUT_TIME 0.1

new Array:g_aMessage
new Array:g_aColor
new Array:g_aTime
new Array:g_aPosition

new g_MsgId, g_ArraySize

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

g_aMessage=ArrayCreate(MAX_CHARS)
g_aColor=ArrayCreate(16)
g_aTime=ArrayCreate(6)
g_aPosition=ArrayCreate(16)

ReadFile()

set_task(TIME_TO_SEND, "SendMessage", _, _, _, "b")

g_ArraySize=ArraySize(g_aMessage)
}

public ReadFile()
{
new confdir[64], path[128]
new File, linedata[512], message[MAX_CHARS], color[21], hold_time[21], position[16]

get_configsdir(confdir, charsmax(confdir))

formatex(path, charsmax(path), "%s/%s", confdir, CFG_FILE)

File=fopen(path, "rt")

if(!File)
{
log_amx("Error! File %s not exist!", CFG_FILE)

set_fail_state("Config file not exist")

return
}

while(!feof(File))
{
fgets(File, linedata, charsmax(linedata))

if(linedata[0]==';'||linedata[0]=='/')
continue

replace(linedata, charsmax(linedata), "^n", "")

parse(linedata, message, sizeof(message), color, sizeof(color), hold_time, sizeof(hold_time), position, sizeof(position))

replace_all(color, charsmax(color), ",", " ")
replace_all(position, charsmax(position), ",", " ")

ArrayPushString(g_aMessage, message)
ArrayPushString(g_aColor, color)
ArrayPushString(g_aTime, hold_time)
ArrayPushString(g_aPosition, position)
}

fclose(File)
}

public SendMessage()
{
static message[MAX_CHARS]
static color[16], rgb[3][3], r, g, b, position[16]
static hold_time[16], hldtime[6],Float:fhold_time
static pos[2][6], Float:x, Float:y

ArrayGetString(g_aMessage, g_MsgId, message, charsmax(message))
ArrayGetString(g_aColor, g_MsgId, color, charsmax(color))
ArrayGetString(g_aTime, g_MsgId, hold_time, charsmax(hold_time))
ArrayGetString(g_aPosition, g_MsgId, position, charsmax(position))

parse(color, rgb[0], 3, rgb[1], 3, rgb[2], 3)
parse(hold_time, hldtime[0], 6)
parse(position, pos[0], 16, pos[1], 16)

r=str_to_num(rgb[0])
g=str_to_num(rgb[1])
b=str_to_num(rgb[2])

x=str_to_float(pos[0])
y=str_to_float(pos[1])

fhold_time=str_to_float(hldtime)

#if defined DHUD
set_dhudmessage(r, g, b, x, y, HUD_EFF, HUD_FIX_TIME, fhold_time, HUD_FADE_IN_TIME, HUD_FADE_OUT_TIME)
show_dhudmessage(0, message)
#else
set_hudmessage(r, g, b, x, y, HUD_EFF, HUD_FIX_TIME, fhold_time, HUD_FADE_IN_TIME, HUD_FADE_OUT_TIME)
show_hudmessage(0, message)
#endif

if(g_MsgId<g_ArraySize-1)
g_MsgId++
else
g_MsgId=0

}

Если я правильно понимаю, то тут надо что-то изменить в значениях или дописать ?
Спасибо.

Отредактировал: Bloo, - 27.10.2014, 7:24
Причина: Код плагинов выкладываем в тег PAWN
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Fintok
сообщение 27.10.2014, 9:05
Сообщение #2


Стаж: 16 лет

Сообщений: 756
Благодарностей: 294
Полезность: 638

192168099, меняй в коде
Скрытый текст
Код:
   #if defined DHUD
set_dhudmessage(r, g, b, x, y, HUD_EFF, HUD_FIX_TIME, fhold_time, HUD_FADE_IN_TIME, HUD_FADE_OUT_TIME)
show_dhudmessage(0, message)
#else
set_hudmessage(r, g, b, x, y, HUD_EFF, HUD_FIX_TIME, fhold_time, HUD_FADE_IN_TIME, HUD_FADE_OUT_TIME)
show_hudmessage(0, message)
#endif
--->
Код:
new iPlayers[32], iNum, iPlayer
get_players(iPlayers, iNum, "bch")

for(new i = 0; i < iNum; i++)
{
iPlayer = iPlayers[i]

#if defined DHUD
set_dhudmessage(r, g, b, x, y, HUD_EFF, HUD_FIX_TIME, fhold_time, HUD_FADE_IN_TIME, HUD_FADE_OUT_TIME)
show_dhudmessage(iPlayer, message)
#else
set_hudmessage(r, g, b, x, y, HUD_EFF, HUD_FIX_TIME, fhold_time, HUD_FADE_IN_TIME, HUD_FADE_OUT_TIME)
show_hudmessage(iPlayer, message)
#endif
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 27.10.2014, 9:32
Сообщение #3


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

А разве нельзя обойтись без цикла ?


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fintok
сообщение 27.10.2014, 11:03
Сообщение #4


Стаж: 16 лет

Сообщений: 756
Благодарностей: 294
Полезность: 638

Нельзя, необходимо отправить сообщение конкретно мертвому игроку.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 27.10.2014, 11:09
Сообщение #5


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Может и так лучше циклом, но я такие вещи всегда делаю через is_user_alive(id)

Например:
Код:

public SendMessage(id)
{
if(!is_user_alive(id))
{
static message[MAX_CHARS]
static color[16], rgb[3][3], r, g, b, position[16]
static hold_time[16], hldtime[6],Float:fhold_time
static pos[2][6], Float:x, Float:y

ArrayGetString(g_aMessage, g_MsgId, message, charsmax(message))
ArrayGetString(g_aColor, g_MsgId, color, charsmax(color))
ArrayGetString(g_aTime, g_MsgId, hold_time, charsmax(hold_time))
ArrayGetString(g_aPosition, g_MsgId, position, charsmax(position))

parse(color, rgb[0], 3, rgb[1], 3, rgb[2], 3)
parse(hold_time, hldtime[0], 6)
parse(position, pos[0], 16, pos[1], 16)

r=str_to_num(rgb[0])
g=str_to_num(rgb[1])
b=str_to_num(rgb[2])

x=str_to_float(pos[0])
y=str_to_float(pos[1])

fhold_time=str_to_float(hldtime)

#if defined DHUD
set_dhudmessage(r, g, b, x, y, HUD_EFF, HUD_FIX_TIME, fhold_time, HUD_FADE_IN_TIME, HUD_FADE_OUT_TIME)
show_dhudmessage(0, message)
#else
set_hudmessage(r, g, b, x, y, HUD_EFF, HUD_FIX_TIME, fhold_time, HUD_FADE_IN_TIME, HUD_FADE_OUT_TIME)
show_hudmessage(0, message)
#endif

if(g_MsgId<g_ArraySize-1)
g_MsgId++
else
g_MsgId=0
}
}


Цитата
Необходимо, чтобы сообщение показывало только мёртвым и тем кто в спектаторах.

Грубо говоря всем кто не живой. Спектаторам ведь тоже не живые.

Отредактировал: ssx, - 27.10.2014, 11:13


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fintok
сообщение 27.10.2014, 11:12
Сообщение #6


Стаж: 16 лет

Сообщений: 756
Благодарностей: 294
Полезность: 638

ssx, id игрока неизвестен нам
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя MiXa
сообщение 27.10.2014, 12:42
Сообщение #7


Стаж: 12 лет

Сообщений: 415
Благодарностей: 91
Полезность: 181

Fintok,
Если нельзя узнать id то почему не взять и отправлять всем неживым игрокам сообщение

можно сделать как посоветовал ssx,просто всего навсего написать вместо
Код:
if(!is_user_alive(id))

>>
Код:
 if(!is_user_alive(0))


или так неправильно?

Отредактировал: MiXa, - 27.10.2014, 14:37


Допомога з встановлення / налаштування / оновлення за $ :>>> Сервери \ Моди \ Плагіни \ Модулі
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: