Replace Info Message

Replace Info Message 2.3

Нет прав для скачивания
Сообщения
124
Реакции
92
Помог
1 раз(а)
h1k3 можно хоть весь сервер засунуть в один плагин на самом деле. Но лучше когда такие вещи реализуются отдельно.
 
Сообщения
96
Реакции
120
Помог
1 раз(а)
Bullseye, да я и не спорю что можно) но думал что здесь неплохое место и для этого.
 
Сообщения
1,031
Реакции
827
Помог
10 раз(а)
"#Terrorists_Win", "Террористы победили");
а если я сделаю вот так "#Terrorists_Win", "");
выходит тест не будет выводится?
Да, совершенно верно, текст не будет показан.

Javekson, может можно сюда еще впихнуть перевод (RADIO) для сервера?
Подумаю, но пока Вы можете это сделать самостоятельно.
 
Сообщения
1,031
Реакции
827
Помог
10 раз(а)
Vaqtincha, а для чего создавать двумерный массив и затем загонять его в trie массив?
 
Сообщения
653
Реакции
560
Помог
9 раз(а)
Javekson, Чтоб был понятнее для обычному юзеру
 
Сообщения
1,031
Реакции
827
Помог
10 раз(а)
Пользователь Javekson обновил ресурс Replace Info Message новой записью:

Обновление до версии 2.1

  • Изменен способ заполнения массива предложенный wopox1337
  • Добавлено разрушения массива при смены карты по причине возможной утечки памяти при AMX Mod X < 1.8.3
Узнать больше об этом обновлении...
 
Сообщения
96
Реакции
120
Помог
1 раз(а)
у меня одного не работает #Already_Own_Weapon ??
 
Сообщения
94
Реакции
14
Помог
5 раз(а)
h1k3, Видимо да, у меня работает.
 
Сообщения
94
Реакции
14
Помог
5 раз(а)
h1k3, нет.
12 Июл 2017
Помогите исправить, на обновленном стиме не видно кто сменил ник..

Код:
/* ===============================================================================
* Replace Info Message 2.1 [22.02.2017]
* Modification by Javekson
* ============================================================================ */

#include <amxmodx>

#pragma semicolon 1

new Trie:g_tReplaceInfoMsg;

public plugin_init() {
register_plugin("Replace Info Message", "2.1", "maeStro aka 9iky6");

g_tReplaceInfoMsg = TrieCreate();
Fill_trie();

register_message(get_user_msgid("SayText"), "MessageSayText");
register_message(get_user_msgid("TextMsg"), "MessageTextMsg");
}

public Fill_trie() {
TrieSetString(g_tReplaceInfoMsg, "#Game_Commencing", "Игра началась!");
TrieSetString(g_tReplaceInfoMsg, "#Game_will_restart_in", "Рестарт игры произойдет через %s секунд!");
TrieSetString(g_tReplaceInfoMsg, "#CTs_Win", "");
TrieSetString(g_tReplaceInfoMsg, "#Terrorists_Win", "");
TrieSetString(g_tReplaceInfoMsg, "#Round_Draw", "Раунд закончился вничью!");
TrieSetString(g_tReplaceInfoMsg, "#Target_Bombed", "");
TrieSetString(g_tReplaceInfoMsg, "#Target_Saved", "");
TrieSetString(g_tReplaceInfoMsg, "#Hostages_Not_Rescued", "Не удалось спасти заложников!");
TrieSetString(g_tReplaceInfoMsg, "#All_Hostages_Rescued", "Все заложники спасены!");
TrieSetString(g_tReplaceInfoMsg, "#VIP_Escaped", "VIP-игрок спасен!");
TrieSetString(g_tReplaceInfoMsg, "#VIP_Assassinated", "VIP-игрок убит!");
TrieSetString(g_tReplaceInfoMsg, "#C4_Arming_Cancelled", "Бомба может быть установлена только в зоне установки бомбы!");
TrieSetString(g_tReplaceInfoMsg, "#C4_Plant_Must_Be_On_Ground", "Для установки бобмы Вы должны находиться на земле!");
TrieSetString(g_tReplaceInfoMsg, "#Defusing_Bomb_With_Defuse_Kit", "Обезвреживание с набором сапёра!");
TrieSetString(g_tReplaceInfoMsg, "#Defusing_Bomb_Without_Defuse_Kit", "Обезвреживание без набора сапёра!");
TrieSetString(g_tReplaceInfoMsg, "#Weapon_Cannot_Be_Dropped", "Нельзя выбросить данное оружие!");
TrieSetString(g_tReplaceInfoMsg, "#C4_Plant_At_Bomb_Spot", "Бомба может быть установлена только в зоне установки бомбы!");
TrieSetString(g_tReplaceInfoMsg, "#Cannot_Carry_Anymore", "Вы не можете взять больше!");
TrieSetString(g_tReplaceInfoMsg, "#Already_Have_Kevlar", "У вас уже имеется бронежилет!");
TrieSetString(g_tReplaceInfoMsg, "#Already_Have_Kevlar_Helmet", "У вас уже имеется бронежилет и шлем!");
TrieSetString(g_tReplaceInfoMsg, "#Got_defuser", "У вас есть набора сапёра!");
TrieSetString(g_tReplaceInfoMsg, "#Switch_To_BurstFire", "Переключен в режим пулеметного огня!");
TrieSetString(g_tReplaceInfoMsg, "#Switch_To_FullAuto", "Переключен в автоматический режим!");
TrieSetString(g_tReplaceInfoMsg, "#Switch_To_SemiAuto", "Переключен в полуавтоматический режим!");
TrieSetString(g_tReplaceInfoMsg, "#Already_Own_Weapon", "У вас уже имеется данное оружие!");
TrieSetString(g_tReplaceInfoMsg, "#Command_Not_Available", "");
TrieSetString(g_tReplaceInfoMsg, "#Got_bomb", "Вы подобрали бомбу!");
TrieSetString(g_tReplaceInfoMsg, "#Game_bomb_pickup", "%s подобрал(а) бомбу!");
TrieSetString(g_tReplaceInfoMsg, "#Game_bomb_drop", "%s выбросил(а) бомбу!");
TrieSetString(g_tReplaceInfoMsg, "#Bomb_Planted", "Бомба установлена!");
TrieSetString(g_tReplaceInfoMsg, "#Bomb_Defused", "");
TrieSetString(g_tReplaceInfoMsg, "#Cant_buy", "Прошло %s секунд с начала раунда. Закупка запрещена!");
TrieSetString(g_tReplaceInfoMsg, "#Name_change_at_respawn", "Ваше ник будет изменено после следующего возрождения!");
TrieSetString(g_tReplaceInfoMsg, "#Auto_Team_Balance_Next_Round", "Автоматический баланс команды наступит в следующем раунде!");
TrieSetString(g_tReplaceInfoMsg, "#Spec_Mode4", "От первого лица!");
TrieSetString(g_tReplaceInfoMsg, "#Spec_Mode3", "Свободное наблюдение!");
TrieSetString(g_tReplaceInfoMsg, "#Spec_Mode2", "Режим свободной камеры!");
TrieSetString(g_tReplaceInfoMsg, "#Spec_Mode5", "Обзор свободной камеры!");
TrieSetString(g_tReplaceInfoMsg, "#Spec_Mode6", "Фиксированный обзор карты!");
TrieSetString(g_tReplaceInfoMsg, "#Name_change_at_respawn", "Ваш ник будет изменен в следующем раунде!");
TrieSetString(g_tReplaceInfoMsg, "#Too_Many_Terrorists", "Слишком много террористов!");
TrieSetString(g_tReplaceInfoMsg, "#Too_Many_CTs", "Слишком много контер-террористов!");
TrieSetString(g_tReplaceInfoMsg, "#Only_1_Team_Change", "Смена команды разрешена 1 раз за раунд!");
}

public MessageSayText() {
new szMsg[21];
get_msg_arg_string(2, szMsg, charsmax(szMsg));
if(equal(szMsg, "#Cstrike_Name_Change"))
set_msg_arg_string(2, "^4Игрок ^3%s ^1изменил ^4имя ^1на ^3%s");
return PLUGIN_CONTINUE;
}

public MessageTextMsg() {
new szMsg[192], szArg3[32];
get_msg_arg_string(2, szMsg, charsmax(szMsg));
if(TrieGetString(g_tReplaceInfoMsg, szMsg, szMsg, charsmax(szMsg))) {
if(get_msg_args() > 2) {
get_msg_arg_string(3, szArg3, charsmax(szArg3));
replace(szMsg, charsmax(szMsg), "%s", szArg3);
}
set_msg_arg_string(2, szMsg);
}
return PLUGIN_CONTINUE;
}

public plugin_end() {
TrieDestroy(g_tReplaceInfoMsg);
}
 

Вложения

d3m37r4

111111
Сообщения
1,449
Реакции
1,175
Помог
10 раз(а)
Andrey, попробуй заменить на это, на правильность не претендую, но должно работать:
Код:
public MessageSayText() {
new szMsg[21];
get_msg_arg_string(2, szMsg, charsmax(szMsg));
if(equal(szMsg, "#Cstrike_Name_Change")) {
new szNewName[32], szOldName[32], szNewMessage[180];
get_msg_arg_string(3, szOldName, charsmax(szOldName));
get_msg_arg_string(4, szNewName, charsmax(szNewName));
formatex(szNewMessage, charsmax(szNewMessage), "^1Игрок ^3%s ^1изменил имя на ^3%s", szOldName, szNewName);
set_msg_arg_string(2, szNewMessage);
}
return PLUGIN_CONTINUE;
}
 
Последнее редактирование:
Сообщения
1,031
Реакции
827
Помог
10 раз(а)
d3m37r4, два сообщения будет, стандартное и свое, поэтому немного иначе с ретурнами.
C++:
public MessageSayText() {
new szMsg[32];
get_msg_arg_string(2/*Получаемый текст сообщения*/, szMsg, charsmax(szMsg));
if(equal(szMsg, "#Cstrike_Name_Change")) {
new szNewName[32], szOldName[32];
get_msg_arg_string(3/*Получаем старое имя*/, szOldName, charsmax(szOldName));
get_msg_arg_string(4/*Получаем новое имя*/, szNewName, charsmax(szNewName));
client_print_color(0, get_msg_arg_int(1)/*ID отправителя*/, "^1Игрок ^3%s ^1изменил имя на ^3%s", szOldName, szNewName);
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
 
Сообщения
1,031
Реакции
827
Помог
10 раз(а)
Сообщения
142
Реакции
23
Помог
1 раз(а)
ошибка компиляции
Код:
//AMXXPC compile.exe
// by the AMX Mod X Dev Team


//// replace_info_msg.sma
// F:\╧╨╬├╨└╠╠█\╩╤\Compiler amxmodx 1.8.3\replace_info_msg.sma(65) : error 017: undefined symbol "client_print_color"
//
// 1 Error.
// Could not locate output file compiled\replace_info_msg.amx (compile failed).
//
// Compilation Time: 0,11 sec
// ----------------------------------------

Press enter to exit ...
 
Сообщения
2,491
Реакции
2,795
Помог
61 раз(а)
sergei, У вас точно компилятор и инклуды от AMXX 1.8.3?
 
Сообщения
142
Реакции
23
Помог
1 раз(а)
fantom, да вот еще и локально пробовал тот же эффект
Код:
Ошибка компиляции:
AMX Mod X Compiler 1.8.3
Copyright (c) 1997-2006 ITB CompuPhase
Copyright (c) 2004-2013 AMX Mod X Team

replace_info_msg.sma(65) : error 017: undefined symbol "client_print_color"

1 Error.
Could not locate output file replace_info_msg.amx (compile failed).
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу