|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
|
Как захватить их какой команды игрок умер
|
|
| 000000 | Дата: Понедельник, 10.11.2008, 12:21:45 | Сообщение # 1 |
 Рядовой
Группа: Пользователи
Сообщений: 15
Статус: Не в сети
| Вот накропал, но наверно много лишнего написал.. /* Plugin generated by AMXX-Studio */ #include <amxmodx> #define PLUGIN "mycolor chat" #define VERSION "0.1" #define AUTHOR "000000" #define MAXSLOTS 32 enum Color { YELLOW = 1, // Yellow GREEN, // Green Color TEAM_COLOR, // Red, grey, blue GREY, // grey RED, // Red BLUE, // Blue } new TeamInfo; new SayText; new MaxSlots; new TeamName[][] = { "", "TERRORIST", "CT", "SPECTATOR" } new bool:IsConnected[MAXSLOTS + 1]; public plugin_init() { register_plugin("mycolor chat", "0.1", "000000") register_event("DeathMsg", "color", "a") TeamInfo = get_user_msgid("TeamInfo"); SayText = get_user_msgid("SayText"); MaxSlots = get_maxplayers(); } public color() { ColorChat(0, GREEN, "%s^03(???????????) %s.", "*ТЕКС", "^04ТЕКС"); // ^03 ^04 Цвета сообщения return PLUGIN_HANDLED; } public client_putinserver(player) { IsConnected[player] = true; } public client_disconnect(player) { IsConnected[player] = false; } public ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...) { static message[256]; switch(type) { case YELLOW: // Yellow { message[0] = 0x01; } case GREEN: // Green { message[0] = 0x04; } default: // White, Red, Blue { message[0] = 0x03; } } vformat(message[1], 251, msg, 4); // Make sure message is not longer than 192 character. Will crash the server. message[192] = '^0'; new team, ColorChange, index, MSG_Type; if(!id) { index = FindPlayer(); MSG_Type = MSG_ALL; } else { MSG_Type = MSG_ONE; index = id; } team = get_user_team(index); ColorChange = ColorSelection(index, MSG_Type, type); ShowColorMessage(index, MSG_Type, message); if(ColorChange) { Team_Info(index, MSG_Type, TeamName[team]); } } ShowColorMessage(id, type, message[]) { message_begin(type, SayText, _, id); write_byte(id) write_string(message); message_end(); } Team_Info(id, type, team[]) { message_begin(type, TeamInfo, _, id); write_byte(id); write_string(team); message_end(); return 1; } ColorSelection(index, type, Color:Type) { switch(Type) { case RED: { return Team_Info(index, type, TeamName[1]); } case BLUE: { return Team_Info(index, type, TeamName[2]); } case GREY: { return Team_Info(index, type, TeamName[0]); } } return 0; } FindPlayer() { new i = -1; while(i <= MaxSlots) { if(IsConnected[++i]) { return i; } } return -1; } Он показывает соообщение в чате при каждой смерти ColorChat(0, GREEN, "%s^03(???????????) %s.", "*ТЕКС", "^04ТЕКС"); как вписать в ???????? что например при убийстве котр-террориста было там написанно Counter, а при убийстве террора было написанно (Terror) смерть я поймал но незнаю как сделать чтобы он определил из какой команды умер, и как вписать его в ColorChat За ранее спасибо 
|
| |
|
|
| mozart | Дата: Понедельник, 10.11.2008, 21:48:44 | Сообщение # 2 |
|
Лейтенант
Группа: Пользователи
Сообщений: 46
Статус: Не в сети
| get_user_team ???
|
| |
|
|
| 000000 | Дата: Понедельник, 10.11.2008, 22:04:45 | Сообщение # 3 |
 Рядовой
Группа: Пользователи
Сообщений: 15
Статус: Не в сети
| Это надо ввести 2 функции get_user_team Например Code get_user_team ( 32, [ CT[], len ] ) get_user_team ( 32, [ T[], len ] ) Или я не правильно заполнил? И потом если выполняется 1 действие (CT) то идет сообщение в 1 Colorchat А если выполняется 2 действие (Т) то сообщение идет во 2 Colorchat ??? И как сделать если например 1 функция выполнилась то выполнился 1 Colorchat ColorChat(0, GREEN, "%s^03(Counter) %s.", "*ТЕКС", "^04ТЕКС"); спс за помощь, пойду юзать скрипт kill hp
Сообщение отредактировал 000000 - Понедельник, 10.11.2008, 22:22:05 |
| |
|
|
| PomanoB | Дата: Понедельник, 10.11.2008, 22:35:34 | Сообщение # 4 |
 Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| http://www.amxmodx.org/funcwiki.php?go=func&id=199
http://romanov4400.mybrute.com
|
| |
|
|
| 000000 | Дата: Вторник, 11.11.2008, 11:04:42 | Сообщение # 5 |
 Рядовой
Группа: Пользователи
Сообщений: 15
Статус: Не в сети
| Вот сделал, но 1 ошибка при компиляции Quote <37> : error 034: argument does not have a default value (argument 2) Вот сам исходник Quote #include <amxmodx> #define PLUGIN "test" #define VERSION "0.1" #define AUTHOR "cwt777" new const g_msgTemplate[] = "^x04 TestTestTest ^x03%d" new g_msgSayText public plugin_init() { register_plugin("test", "0.1", "cwt777") register_event("DeathMsg", "kill", "a") g_msgSayText = get_user_msgid("SayText") } public kill() { static aID, vID static msgText[255] static aTeam aID = read_data(1) vID = read_data(2) if(vID == aID) { return } aTeam = get_user_team(aID) formatex(msgText,_, g_msgTemplate, aTeam) msgText[192] = '^0' msgSayText(vID, msgText) } msgSayText(id, message[]) { message_begin(MSG_ONE, g_msgSayText, _, id) write_byte(id) write_string(message) message_end() } А и еще бедет ли сообщение высвечиватся при каждом убийстве?
|
| |
|
|
| draft | Дата: Вторник, 11.11.2008, 12:38:10 | Сообщение # 6 |
 Полковник
Группа: Пользователи
Сообщений: 225
Статус: Не в сети
| Так а на какой строчке ошибка? formatex(msgText,_, g_msgTemplate, aTeam) мне лично кажется, что здесь 2 аргумент не канает как дефолтный, поэтому и ругается. Вставляй сюда число форматируемых символов.
|
| |
|
|
| cwt777 | Дата: Вторник, 11.11.2008, 13:11:15 | Сообщение # 7 |
|
Сержант
Группа: Пользователи
Сообщений: 32
Статус: Не в сети
| Поставил сначало в эту строчку formatex(msgText,1, g_msgTemplate, aTeam) Потом пробовал formatex(msgText,2, g_msgTemplate, aTeam) Все компинируется, но вот тока сообщение не показывает ((( Может сдесь где намудрил Quote static aID, vID static msgText[255] static aTeam aID = read_data(1) vID = read_data(2) if(vID == aID) { return }
|
| |
|
|
| draft | Дата: Вторник, 11.11.2008, 14:18:09 | Сообщение # 8 |
 Полковник
Группа: Пользователи
Сообщений: 225
Статус: Не в сети
| Так а не маловато ли поставил? Исходя из кода, ставить нужно 191, поскольку 192 - это символ конца строки ^0 Ну и плюс static msgText[255] замени на static msgText[193] память за зря расходуешь лишнюю
|
| |
|
|
| cwt777 | Дата: Вторник, 11.11.2008, 14:19:15 | Сообщение # 9 |
|
Сержант
Группа: Пользователи
Сообщений: 32
Статус: Не в сети
| Quote (draft) Так а не маловато ли поставил? Исходя из кода, ставить нужно 191, поскольку 192 - это символ конца строки ^0 Ну и плюс static msgText[255] замени на static msgText[193] память за зря расходуешь лишнюю Гг Я просто незнаю от куда такие числа берутся, это из какого то плагина слизанно ))) А как ты определил что 193 надо ставить
|
| |
|
|
| draft | Дата: Вторник, 11.11.2008, 14:26:57 | Сообщение # 10 |
 Полковник
Группа: Пользователи
Сообщений: 225
Статус: Не в сети
| Code formatex(msgText,_, g_msgTemplate, aTeam) msgText[192] = '^0' Вот код. msgText - это массив символов, где символ под номером 192 сделан нулевым, то бишь, последним в выводимой строке. Предполагаю, что сделано это предыдущим кодером для того, чтобы сервер не падал, если вдруг попадётся сообщение на 193 символа. Ну а дальше всё просто. 192-й символ - последний, значит, форматировать тебе надо 191 символ, поскольку 192-й ты уже знаешь. Ну и отсюда получается, что символы после 192-го уже не имеют значения, значит, при создании массива создаёшь его не static msgText[255] а static msgText[193] Суть в том, что 193 - указывает на размер строки или по-другому, массива символов, где у каждого символа свой номер. Тока прикол-то в том, что номер первого символа не "1", а "0", поэтому и символов всего 193, но последним будет не 193-й, а 192-й. Ну, в общем, такая математика
|
| |
|
|
| cwt777 | Дата: Вторник, 11.11.2008, 14:34:53 | Сообщение # 11 |
|
Сержант
Группа: Пользователи
Сообщений: 32
Статус: Не в сети
| Quote (draft) Вот код. msgText - это массив символов, где символ под номером 192 сделан нулевым, то бишь, последним в выводимой строке. Предполагаю, что сделано это предыдущим кодером для того, чтобы сервер не падал, если вдруг попадётся сообщение на 193 символа. Ну а дальше всё просто. 192-й символ - последний, значит, форматировать тебе надо 191 символ, поскольку 192-й ты уже знаешь. Ну и отсюда получается, что символы после 192-го уже не имеют значения, значит, при создании массива создаёшь его не static msgText[255] а static msgText[193] Суть в том, что 193 - указывает на размер строки или по-другому, массива символов, где у каждого символа свой номер. Тока прикол-то в том, что номер первого символа не "1", а "0", поэтому и символов всего 193, но последним будет не 193-й, а 192-й. Ну, в общем, такая математика спб что объяснил))) У меня еще пару вопросов вот исходник который работает Code /* Plugin generated by AMXX-Studio */
#include <amxmodx>
#define PLUGIN "kill" #define VERSION "0.1" #define AUTHOR "cwt777"
new const g_msgTemplate[] = "^x04 VAS ubil igrok ^x03%d KomaHgbl ^x04 %d Fragov"
new g_msgSayText
public plugin_init() { register_plugin("kill", "0.1", "cwt777") register_event("DeathMsg", "kill", "a") g_msgSayText = get_user_msgid("SayText")
} public kill() { static aID, vID static msgText[193] static aTeam, aFrags aID = read_data(1) vID = read_data(2) if(vID == aID) { return } aTeam = get_user_team(aID) aFrags = get_user_frags(aID) formatex(msgText,191,g_msgTemplate, aTeam, aFrags) msgText[192] = '^0' msgSayText(vID, msgText) }
msgSayText(id, message[]) { message_begin(MSG_ONE, g_msgSayText, _, id) write_byte(id) write_string(message) message_end() } Но.... Когда меня убивют пишут Игрок 1 (тут число моих фрагов) Fragov это когда я играю за Контров а когда за терроров Игрок 2 (тут число моих фрагов) Fragov А как сделать так что бы вместо цифры показал название команды, И в чат сообщаласб например при убийстве контров в контровский чат, а при убийстве террора в террорский чат 
Сообщение отредактировал cwt777 - Вторник, 11.11.2008, 15:20:18 |
| |
|
|
| PomanoB | Дата: Вторник, 11.11.2008, 16:37:48 | Сообщение # 12 |
 Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Что-то типа такого ... Только сообщение подправь Code /* Plugin generated by AMXX-Studio */
#include <amxmodx>
#define PLUGIN "kill" #define VERSION "0.1" #define AUTHOR "cwt777"
new const g_msgTemplate[] = "^x04 VAS ubil igrok ^x03%s ^x04 %d Fragov"
new g_msgSayText
public plugin_init() { register_plugin("kill", "0.1", "cwt777") register_event("DeathMsg", "kill", "a") g_msgSayText = get_user_msgid("SayText")
} public kill() { static aID, vID static msgText[193] static aTeam, aFrags new vTeam; aID = read_data(1) vID = read_data(2) if(vID == aID) { return } aTeam = get_user_team(aID) aFrags = get_user_frags(aID) vTeam=get_user_team(vID) if (aTeam==1) formatex(msgText,191,g_msgTemplate, "(Terrorist)", aFrags+1) else if (aTeam==2) formatex(msgText,191,g_msgTemplate, "(Counter-Terrorist)", aFrags+1) msgText[192] = '^0' msgSayText(vTeam, msgText) }
msgSayText(team,message[]) { new players[32] new pln; if (team==1) get_players(players,pln,"e","TERRORIST") else if (team==2) get_players(players,pln,"e","CT") for (new i=0; i<pln; i++) { message_begin(MSG_ONE, g_msgSayText, _, players[i]) write_byte(players[i]) write_string(message) message_end() } }
http://romanov4400.mybrute.com
|
| |
|
|
| cwt777 | Дата: Вторник, 11.11.2008, 17:29:50 | Сообщение # 13 |
|
Сержант
Группа: Пользователи
Сообщений: 32
Статус: Не в сети
| Quote (PomanoB) Что-то типа такого ... Только сообщение подправь спб огромное ))  Добавлено (2008-11-11, 5:29 Pm) --------------------------------------------- а можно в место фрагов поставить Имя игрока который убил, ведь через get_user_name = aName не получится да?
|
| |
|
|
| PomanoB | Дата: Вторник, 11.11.2008, 22:51:47 | Сообщение # 14 |
 Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Code new aName[32]; get_user_name(id,aName,31);
http://romanov4400.mybrute.com
|
| |
|
|
| cwt777 | Дата: Вторник, 11.11.2008, 23:00:59 | Сообщение # 15 |
|
Сержант
Группа: Пользователи
Сообщений: 32
Статус: Не в сети
| ага спб)) тока поменял местами if (aTeam==1) formatex(msgText,191,g_msgTemplate, "(Terrorist)", aFrags+1) else if (aTeam==2) formatex(msgText,191,g_msgTemplate, "(Counter-Terrorist)", aFrags+1) Как раз я только что таг же сделал)), у меня не выводил сообщение имени оказалось, что забыл поменять переменну %d на %s =) Эх достал я наверно всех своими вопросами, всем спасибо за помощь)
Сообщение отредактировал cwt777 - Вторник, 11.11.2008, 23:07:06 |
| |
|
|
 | AMX Mod X Russian Community © 2006-2026  |  |
|
| |