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

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

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

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

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Вывод сообщений

, ad_tutor
Статус пользователя Gabro
сообщение 24.5.2014, 20:04
Сообщение #1


Стаж: 11 лет

Сообщений: 94
Благодарностей: 77
Полезность: 67

Парни как сделать что бы сообщения выводились только мертвым и тем кто в спектрах?
Код:
/*
* Tutor Advertisement
* by quckly
*
* adtutor_round 0
* -1 - не показывать сообщение в начале раунда
* 0 - показать сообщение в начале раунда
* <time> - показать сообщение через <time> сек после начала раунда
*
* adtutor_repeat 120.0
* - время через которое повторяються сообщения, если 0.0 то не показывать
*
* adtutor_nextcolor 1
* 0 - выбирать цвет случайно
* 1 - показывать цвета по очереди
*
* adtutor_nextmsg 1
* 0 - выбирать сообщение случайно
* 1 - показывать сообщение по очереди
*
*
* Все сообщения вписывать в tutors.ini
*
* Сообщения Начинать с
* !r, !R - для красного сообещния
* !B, !B - для синего сообещния
* !y, !Y - для желтого сообещния
* !g, !G - для зеленного сообещния
*
* Если не написана буква, цвет будет выбран случайно
* Для новой строки пишем ^n
* Файл должен быть в кодировке ANSI
* Буквы "я" не должно быть в файле
*
*/

#include <amxmodx>
#include <amxmisc>

#pragma semicolon 1

#define VERSION "0.3.1"

#define MAX_TUTOR_CHARS 192
#define MAX_TUTOR_CHARM 191

enum TutorColor
{
TUTOR_RED = 1,
TUTOR_BLUE,
TUTOR_YELLOW,
TUTOR_GREEN
}

enum(+= 10)
{
TASK_TUTOR_LOAD = 57810,
TASK_TUTOR_SHOW,
TASK_TUTOR_RS,
TASK_TUTOR
}

#define TUTOR_TIME 10.0

new const g_TutorPrecache[][] = { "gfx/career/icon_!.tga", "gfx/career/icon_!-bigger.tga", "gfx/career/icon_i.tga", "gfx/career/icon_i-bigger.tga",
"gfx/career/icon_skulls.tga", "gfx/career/round_corner_ne.tga", "gfx/career/round_corner_nw.tga",
"gfx/career/round_corner_se.tga", "gfx/career/round_corner_sw.tga", "resource/TutorScheme.res", "resource/UI/TutorTextWindow.res" };

new Array:TutorMSG[_:TutorColor];
new g_iNextMSG[_:TutorColor];
new g_iNextColor;
new g_bLoaded;
new g_pStartRound, g_pRepeatTime, g_pNextColor, g_pNextMsg;

new g_iMsgTutor;
new g_iMsgTutClose;
new g_iMaxPlayers;

public plugin_precache()
{
for(new i = 0; i < sizeof g_TutorPrecache; i++)
{
precache_generic(g_TutorPrecache[i]);
}
}

public plugin_init()
{
register_plugin("Tutor advertisement", VERSION, "quckly");

g_iMsgTutor = get_user_msgid("TutorText");
g_iMsgTutClose = get_user_msgid("TutorClose");

g_iMaxPlayers = get_maxplayers();

g_pStartRound = register_cvar("adtutor_round", "0");
g_pRepeatTime = register_cvar("adtutor_repeat", "120.0");
g_pNextColor = register_cvar("adtutor_nextcolor", "1");
g_pNextMsg = register_cvar("adtutor_nextmsg", "1");

register_cvar("adtutor_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY);
set_cvar_string("adtutor_version", VERSION);

TutorMSG[_:TUTOR_RED] = ArrayCreate(MAX_TUTOR_CHARS);
TutorMSG[_:TUTOR_BLUE] = ArrayCreate(MAX_TUTOR_CHARS);
TutorMSG[_:TUTOR_YELLOW] = ArrayCreate(MAX_TUTOR_CHARS);
TutorMSG[_:TUTOR_GREEN] = ArrayCreate(MAX_TUTOR_CHARS);

register_event("HLTV", "EventRoundStart", "a", "1=0", "2=0");
register_logevent("EventRoundEnd", 2, "1=Round_End");

set_task(15.0, "Task_Load", TASK_TUTOR_LOAD);
g_bLoaded = false;
g_iNextColor = _:TUTOR_GREEN;

for(new i = _:TUTOR_RED; i <= _:TUTOR_GREEN; i++)
{
g_iNextMSG[i] = 0;
}
}

public EventRoundStart()
{
if(!g_bLoaded)
return;

if(get_pcvar_num(g_pStartRound) == 0)
TutorShowNext();
else if(get_pcvar_num(g_pStartRound) > 0)
{
set_task(float(get_pcvar_num(g_pStartRound)), "Task_Show", TASK_TUTOR_RS);
}

if(get_pcvar_float(g_pRepeatTime) > 0.0 )
set_task(get_pcvar_float(g_pRepeatTime), "Task_Show", TASK_TUTOR_SHOW, "", 0, "b");
}

public EventRoundEnd()
{
remove_task(TASK_TUTOR_SHOW);
remove_task(TASK_TUTOR_RS);
}

public Task_Show()
{
TutorShowNext();
}

TutorShowNext()
{
static szTutorText[MAX_TUTOR_CHARS];

if(get_pcvar_num(g_pNextColor))
while( ArraySize( TutorMSG[ (g_iNextColor = get_next_color(g_iNextColor)) ] ) == 0 ) {}
else
while( ArraySize( TutorMSG[ (g_iNextColor = random_num(_:TUTOR_RED, _:TUTOR_GREEN)) ] ) == 0 ) {}
//while( ArraySize( TutorMSG[g_iNextColor] ) == 0 )
//{
// g_iNextColor = get_next_color(g_iNextColor);
//}

if(get_pcvar_num(g_pNextMsg))
g_iNextMSG[g_iNextColor] = get_next_msg(g_iNextMSG[g_iNextColor]);
else
g_iNextMSG[g_iNextColor] = random_num(0, ArraySize(TutorMSG[g_iNextColor]) - 1);

ArrayGetString(TutorMSG[g_iNextColor], g_iNextMSG[g_iNextColor], szTutorText, MAX_TUTOR_CHARM);

tutorMake(0, TutorColor:g_iNextColor, TUTOR_TIME, szTutorText);

//g_iNextColor = get_next_color(g_iNextColor);
}

public Task_Load()
{
new szFile[64];
get_configsdir(szFile, 63);
format(szFile, 63, "%s/tutors.ini", szFile);

if(file_exists(szFile))
{
new fHandle = fopen(szFile, "rt");

if(!fHandle)
{
log_amx("fopen error");
return;
}

new szBuffer[MAX_TUTOR_CHARS], iTutor, iAll, seek;

while(!feof(fHandle))
{
fgets(fHandle, szBuffer, MAX_TUTOR_CHARM);

if(szBuffer[0] == ';' || !szBuffer[0] || szBuffer[0] == ' ' || szBuffer[0] == 10)
{
continue;
}

trim(szBuffer);

seek = 2;

if(szBuffer[0] == '!')
{
if(szBuffer[1] == 'r' || szBuffer[1] == 'R')
iTutor = _:TUTOR_RED;

else if(szBuffer[1] == 'b' || szBuffer[1] == 'B')
iTutor = _:TUTOR_BLUE;

else if(szBuffer[1] == 'y' || szBuffer[1] == 'Y')
iTutor = _:TUTOR_YELLOW;

else if(szBuffer[1] == 'g' || szBuffer[1] == 'G')
iTutor = _:TUTOR_GREEN;

else
{
iTutor = random_num(_:TUTOR_RED, _:TUTOR_GREEN);
seek = 0;
}
}
else
{
iTutor = random_num(_:TUTOR_RED, _:TUTOR_GREEN);
seek = 0;
}

replace_all(szBuffer, MAX_TUTOR_CHARM, "^^n", "^n");

ArrayPushString(TutorMSG[iTutor], szBuffer[seek]);
iAll++;
}

fclose(fHandle);

if(iAll > 0) g_bLoaded = true;

log_amx("Loaded %i tutors", iAll);
}
else
log_amx("%s not exists", szFile);
}

stock get_next_color(iColor)
{
if( iColor == _:TUTOR_GREEN )
return _:TUTOR_RED;
else
return iColor + 1;

return _:TUTOR_RED;
}

stock get_next_msg(iNumMsg)
{
if( iNumMsg == ( ArraySize(TutorMSG[g_iNextColor]) - 1 ) )
return 0;
else
return ++iNumMsg;

return 0;
}

/*============================================/
From tutor.inc
/============================================*/

stock tutorMake(id,TutorColor:Color,Float:fTime = 0.0,const szText[],any:...)
{
new szMessage[192];
vformat(szMessage, charsmax(szMessage), szText, 5);

if(!id){
message_begin(MSG_BROADCAST,g_iMsgTutor);
write_string(szMessage);
write_byte(0);
write_short(0);
write_short(0);
write_short(1<<_:Color);
message_end();
}
else if(is_user_connected(id))
{
message_begin(MSG_ONE_UNRELIABLE,g_iMsgTutor,_,id);
write_string(szMessage);
write_byte(0);
write_short(0);
write_short(0);
write_short(1<<_:Color);
message_end();
}

if(fTime != 0.0){
if(!id){
for(new i = 1; i <= g_iMaxPlayers; i++)
remove_task(i+TASK_TUTOR);


set_task(fTime,"tutorClose",TASK_TUTOR);
}
else
{
remove_task(id+TASK_TUTOR);
set_task(fTime,"tutorClose",id+TASK_TUTOR);
}
}
}

public tutorClose(iTask)
{
new id = iTask - TASK_TUTOR;

if(!id){
message_begin(MSG_BROADCAST,g_iMsgTutClose);
message_end();
}
else if(is_user_connected(id))
{
message_begin(MSG_ONE_UNRELIABLE,g_iMsgTutClose,_,id);
message_end();
}
}


Отредактировал: Gabro, - 24.5.2014, 20:07
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   Цитировать сообщение
Статус пользователя Bloo
сообщение 24.5.2014, 20:07
Сообщение #2


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

Gabro, зачем вы по каждому вопросу по этому плагину создаете новую тему?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Gabro
сообщение 24.5.2014, 20:07
Сообщение #3


Стаж: 11 лет

Сообщений: 94
Благодарностей: 77
Полезность: 67

Цитата(Bloo @ 24.5.2014, 20:07) *
Gabro, зачем вы по каждому вопросу по этому плагину создаете новую тему?

я напишу что бы потом удалили мои тему..а создаю потому что в тех темах что ниже никто уже не отвечает(((
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 24.5.2014, 20:08
Сообщение #4


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

переписать плагин
добавить проверку на команду игрока и alive
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя iLLuSioN
сообщение 24.5.2014, 20:09
Сообщение #5
Иконка группы

Стаж: 19 лет

Сообщений: 6911
Благодарностей: 7990
Полезность: 1639

Gabro,
Выдал устное предупреждение. Следующий раз будут %.

Если вам не отвечают, это не повод создавать новую тему. Свой новый вопрос по этому плагину нужно было задать в прошлой теме.


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Gabro
сообщение 24.5.2014, 20:10
Сообщение #6


Стаж: 11 лет

Сообщений: 94
Благодарностей: 77
Полезность: 67

Цитата(iLLuSioN @ 24.5.2014, 20:09) *
Gabro,
Выдал устное предупреждение. Следующий раз будут %.

Если вам не отвечают, это не повод создавать новую тему. Свой новый вопрос по этому плагину нужно было задать в прошлой теме.

я понял_))) спс

Цитата(Legenda @ 24.5.2014, 20:08) *
переписать плагин
добавить проверку на команду игрока и alive

я бы с радостью.. но не умею.. кто понимает в pawn прошу подправить исходник, спасибо
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя iLLuSioN
сообщение 24.5.2014, 20:13
Сообщение #7
Иконка группы

Стаж: 19 лет

Сообщений: 6911
Благодарностей: 7990
Полезность: 1639

строку
Код
tutorMake(0, TutorColor:g_iNextColor, TUTOR_TIME, szTutorText);

заменить на
Код
for(new id = 1; id <= g_iMaxPlayers; id++)
{
    if(!is_user_alive(id))
        tutorMake(id, TutorColor:g_iNextColor, TUTOR_TIME, szTutorText);  
}



Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 4 раз
   + Цитировать сообщение
Статус пользователя Gabro
сообщение 24.5.2014, 20:24
Сообщение #8


Стаж: 11 лет

Сообщений: 94
Благодарностей: 77
Полезность: 67

Цитата(iLLuSioN @ 24.5.2014, 20:13) *
строку
Код
tutorMake(0, TutorColor:g_iNextColor, TUTOR_TIME, szTutorText);

заменить на
Код
for(new id = 1; id <= g_iMaxPlayers; id++)
{
    if(!is_user_alive(id))
        tutorMake(id, TutorColor:g_iNextColor, TUTOR_TIME, szTutorText);  
}

спасибо..заработало
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя iLLuSioN
сообщение 24.5.2014, 20:26
Сообщение #9
Иконка группы

Стаж: 19 лет

Сообщений: 6911
Благодарностей: 7990
Полезность: 1639

Цитата(Gabro @ 24.5.2014, 21:24) *
спасибо..заработало



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