префикс
|
|
nynCuKaH
|
Дата: Суббота, 21.04.2012, 17:11:19 | Сообщение # 1 |
|
Сообщений: 110
Репутация: 0 [ +/- ]
|
|
Здравствуйте. Пишу плагин который будет показывать префикс админа. ТО есть написал в чате и сзади ника писало допустим: [Админ]nynCuKaH ну вы поняли. Код Code #include <sourcemod> #include <sdktools> #include <cstrike>
public OnPluginStart() { RegConsoleCmd("say", say); RegConsoleCmd("say_team", say); }
public Action:say(client, args) { if(GetUserAdmin(client) != INVALID_ADMIN_ID) { decl String:text[255]; GetCmdArgString(text, sizeof(text)); StripQuotes(text); if(StrContains(text,false) != -1) {
{ ReplaceString(text, sizeof(text),false); PrintToChatAll("\x04[Админ] \x01%s", text); //top left decl String:message[255]; Format(message, sizeof(message), text); new Handle:kv = CreateKeyValues("Stuff", "title", message); KvSetColor(kv, "color", 255, 0, 0, 255); KvSetNum(kv, "level", 200); KvSetNum(kv, "time", 10); for(new i = 1; i <= MaxClients; i++) { CreateDialog(i, kv, DialogType_Msg); } CloseHandle(kv); return Plugin_Handled } } } return Plugin_Continue }
В чем моя ошибка? Пишешь текст любой а префикса нету
|
|
| |
Scarface_slv
|
Дата: Воскресенье, 22.04.2012, 23:20:36 | Сообщение # 2 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
если доделаешь скинь)
|
|
| |
nynCuKaH
|
Дата: Понедельник, 23.04.2012, 17:11:50 | Сообщение # 3 |
|
Сообщений: 110
Репутация: 0 [ +/- ]
|
|
Помощь wS нужна.Добавлено (23.04.2012, 17:11:50) --------------------------------------------- Я сделал так что бы префикс был а ник и текста нет. Как эту ошибку исправить я не знаю.
|
|
| |
Scarface_slv
|
Дата: Понедельник, 23.04.2012, 17:43:57 | Сообщение # 4 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
просто то что ты скинул даже не компил у меня поэтому хз
|
|
| |
nynCuKaH
|
Дата: Понедельник, 23.04.2012, 19:42:52 | Сообщение # 5 |
|
Сообщений: 110
Репутация: 0 [ +/- ]
|
|
То что я скинул компильнуть. Просто я убрал пару кодов что бы не стырили мой код :) всякие там... Нужен код на префикс пиши в личку. Но мне все так же нужна помощь :(
|
|
| |
_wS_
|
Дата: Понедельник, 23.04.2012, 20:37:28 | Сообщение # 6 |
|
Глупые ошибки.. А все потому, что используешь чужой код и сам не пишешь. На синтаксис StrContains и ReplaceString в API посмотри, и примеров есть немало с этими командами.
Code public Action:say(client, args) { if (args > 0 и это админ) { decl String:text[255]; GetCmdArgString(text, 255); StripQuotes(text); Format(text, 255, "[ prefix ] %N: %s", client, text); PrintToChatAll(text); return Plugin_Handled; } return Plugin_Continue; }
|
|
| |
Scarface_slv
|
Дата: Вторник, 24.04.2012, 11:02:17 | Сообщение # 7 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
уау спасибо те большое WSДобавлено (24.04.2012, 10:45:31) --------------------------------------------- у меня появились два вопроса по поводу кода который ты написал: 1.как проверить в спекторах или нет просто нужен префикс *SPEC* дописать.(у меня не получается) 2.как сделать чтобы при say_team писало только своей команде просто нужен префикс *TEAM*(наверно через for пойду пробывать) Добавлено (24.04.2012, 11:02:17) --------------------------------------------- по поводу 1 понял = ) осталось тока Командный чат(
|
|
| |
nynCuKaH
|
Дата: Вторник, 24.04.2012, 12:49:45 | Сообщение # 8 |
|
Сообщений: 110
Репутация: 0 [ +/- ]
|
|
_wS_ а ты уверен что я использовал чужой код? Я сам писал... -_-
|
|
| |
_wS_
|
Дата: Вторник, 24.04.2012, 12:58:14 | Сообщение # 9 |
|
Code public Action:say(client, args) { if (client > 0 && args > 0) { decl String:text[255]; GetCmdArgString(text, 255); StripQuotes(text); new team = GetClientTeam(client); if (team > 1) { decl String:cmd[10]; GetCmdArg(0, cmd, 10); if (StrEqual(cmd, "say_team", false)) { if (team == 2) Format(text, 255, "[ *T* ] %N: %s", client, text); else Format(text, 255, "[ *CT* ] %N: %s", client, text); for (new i = 1; i <= MaxClients; i++) { if (IsClientInGame(i) && GetClientTeam(i) == team) PrintToChat(i, text); } return Plugin_Handled; } else { // say } } else { Format(text, 255, "[ *SPEC* ] %N: %s", client, text); PrintToChatAll(text); return Plugin_Handled; } } return Plugin_Continue; }
Еще надо проверку делать if (client > 0), потому что если использовать RCON команду say, это тоже вызовет функцию 'public Action:say' и client будет равен 0.
|
|
| |
nynCuKaH
|
Дата: Вторник, 24.04.2012, 13:34:32 | Сообщение # 10 |
|
Сообщений: 110
Репутация: 0 [ +/- ]
|
|
Проблема:
Все могут писать от моего лица. А от своего нет. ОоДобавлено (24.04.2012, 13:34:32) --------------------------------------------- Разобрался. -_-
|
|
| |
Scarface_slv
|
Дата: Вторник, 24.04.2012, 22:30:58 | Сообщение # 11 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
Спасибо=), у меня немного по другому но все получилось спустя 5 часов мучения)Добавлено (24.04.2012, 22:30:32) --------------------------------------------- не получаеться создать синий за кт и красный за кт ник сервак вылетает Code ... new Handle:h = StartMessageAll("SayText2"); if (GetClientTeam(client) < 2) { if (h != INVALID_HANDLE) { Format(text, 255, "\x01*SPEC* \x04|ADMIN| \x03%N \x01: %s", client, text); BfWriteByte(h, client); BfWriteByte(h, true); BfWriteString(h, text); EndMessage(); } } else ... Добавлено (24.04.2012, 22:30:58) --------------------------------------------- ой и красный за Т
|
|
| |
_wS_
|
Дата: Вторник, 24.04.2012, 23:23:32 | Сообщение # 12 |
|
Не знаю, у меня это работает, ищи ошибку в другом. И sm обновил? Последняя версия 1.4.2
|
|
| |
nynCuKaH
|
Дата: Среда, 25.04.2012, 10:54:59 | Сообщение # 13 |
|
Сообщений: 110
Репутация: 0 [ +/- ]
|
|
Scarface_slv, а что ты хочешь сделать? По подробнее.Добавлено (25.04.2012, 10:54:59) --------------------------------------------- Понял твою проблему. Попробую помочь
|
|
| |
Scarface_slv
|
Дата: Среда, 25.04.2012, 15:38:35 | Сообщение # 14 |
|
Сообщений: 737
Репутация: 61 [ +/- ]
|
|
я идиот) почему то вылетал потому что нельзя было использовать PrintToChat в одном блоке с BfWriteByte...
|
|
| |
_wS_
|
Дата: Среда, 25.04.2012, 15:49:08 | Сообщение # 15 |
|
Да, точно, нельзя делать PrintTo.. между StartMessage.. и EndMessage.
|
|
| |