Меню
| |
Naykon
|
Дата: Вторник, 20.03.2012, 09:30:28 | Сообщение # 1 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Code Com_Menu(ct_client) { new Handle:pMenu = CreateMenu(Com_Select); SetMenuTitle(pMenu, "Командная панель!\n \n"); AddMenuItem(pMenu, "menu1", "Аптечка"); SetMenuExitButton(pMenu, true); DisplayMenu(pMenu, ct_client, 0); }
Есть меню. но оно после открытия остается у игрока в след раунде.. как закрыть меню чтоб с лед раунда игрок им не мог бы восполльзоваться??
|
|
| |
_wS_
|
Дата: Вторник, 20.03.2012, 09:58:06 | Сообщение # 2 |
|
http://docs.sourcemod.net/api/index.php?fastload=show&id=182&
Хотя, даже если и на x секунд отправить, все равно меню может быть доступно в следующем раунде. Проверь команды CancelMenu, CancelClientMenu, и возможно удастся закрыть с помощью ClientCommand(client, "menuselect x");, вместо x пробуй 0 или 10 или др.
|
|
| |
Naykon
|
Дата: Вторник, 20.03.2012, 14:56:30 | Сообщение # 3 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Есть Code CreateTimer(1.0, Timer_Func, TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE); Что делают команды TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE и что будет если их не использовать?
|
|
| |
_wS_
|
Дата: Вторник, 20.03.2012, 15:01:11 | Сообщение # 4 |
|
|
|
| |
Naykon
|
Дата: Вторник, 20.03.2012, 15:26:32 | Сообщение # 5 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Как можно оптимизировать строку Code decl Handle:j; if ((j = StartMessageAll("SayText2")) != INVALID_HANDLE) { BfWriteByte(j, random_client); BfWriteByte(j, true); decl String:xStR[75]; Format(xStR, sizeof(xStR), "\x03***\x04Игрок\x03 %N \x04стал Командиром!\x03***", random_client); BfWriteString(j, xStR); EndMessage(); }
Чтоб не писать каждый раз такую здаровую фигню чтоб получить цвет за кого играешь....
И еще а можно каким нибудь образом сделать так чтоб сообщение было только Крастным для ВСЕХ игроков???Добавлено (20.03.2012, 15:21:08) --------------------------------------------- + выше написаный код пишит сообщение всем а как написать конкретно кому-то??? Добавлено (20.03.2012, 15:26:32) ---------------------------------------------
Code ct_client = random_client SetEntityModel(random_client, "models/player/sourcegaming.ru/public_d2/ment1/ct_gsg9.mdl"); или Code ct_client = ololo SetEntityModel(ololo, "models/player/sourcegaming.ru/public_d2/ment1/ct_gsg9.mdl");
Так как же сделать что постоянно не писать Code SetEntityModel(ololo, "models/player/sourcegaming.ru/public_d2/ment1/ct_gsg9.mdl") Вот эту фигню и дать понять скрипту что если ct_client = ololo - Значит ololo и так должен сменить скин..??
|
|
| |
_wS_
|
Дата: Вторник, 20.03.2012, 15:32:09 | Сообщение # 6 |
|
Quote (Naykon) можно каким нибудь образом сделать так чтоб сообщение было только Крастным для ВСЕХ игроков??? Найди террориста и впиши его индекс в BfWriteByte..
Quote (Naykon) как написать конкретно кому-то??? new Handle:h = StartMessageOne("SayText2", client);
Остальные вопросы не понял.
|
|
| |
Naykon
|
Дата: Среда, 21.03.2012, 09:04:54 | Сообщение # 7 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Ловим момент Раунд Страт... Как можно устроить такую штуку чтоб меню создать отдельно - Com_Menu(i), а в Раундстарте как сказать можно чтоб это меню запустилось??Добавлено (20.03.2012, 15:50:45) --------------------------------------------- Игрок X будет использоваться очень часто в ф-ях... X - глобальная перемнная - нужно заложить в этого игрока X - SetEntityModel(ololo, "models/player/sourcegaming.ru/public_d2/ment1/ct_gsg9.mdl")
Как это будет выглядеть?? Добавлено (21.03.2012, 09:04:54) ---------------------------------------------
Code Com_Menu(ct_client) { new Handle:pMenu = CreateMenu(Com_Select); SetMenuTitle(pMenu, "Командная панель!\n \n"); AddMenuItem(pMenu, "menu1", "Аптечка"); SetMenuExitButton(pMenu, true); DisplayMenu(pMenu, ct_client, 0); }
roundstart(....) { Com_Menu(ct_client) }
Почему нельзя в таком виде записать?(
|
|
| |
_wS_
|
Дата: Среда, 21.03.2012, 10:36:47 | Сообщение # 8 |
|
Quote (Naykon) Почему нельзя в таком виде записать?( Кто сказал что нельзя? Если ct_client глобальная переменная, то можно, меню отправится 1 игроку.
|
|
| |
Naykon
|
Дата: Среда, 21.03.2012, 11:26:08 | Сообщение # 9 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
блин а у меня не получается((( не запускается просто напросто(Добавлено (21.03.2012, 11:26:08) ---------------------------------------------
Code public Round_Start(Handle:event, const String:name[], bool:dontBroadcast) { if (h_Timer != INVALID_HANDLE) { KillTimer(h_Timer); h_Timer = INVALID_HANDLE; } if (h_Menu != INVALID_HANDLE) CloseHandle(h_Menu); h_Menu = CreateMenu(Select_Func); SetMenuTitle(h_Menu, "Выберите желаемого командира...\n \n"); AddMenuItem(h_Menu, "", "Лучше подумай дважды!", ITEMDRAW_DISABLED); AddMenuItem(h_Menu, "", "Прежде чем тыкать куда нибудь!\n \n", ITEMDRAW_DISABLED); SetMenuExitButton(h_Menu, false); decl String:StR_Id[15], String:StR_Name[MAX_NAME_LENGTH]; new players = 0; for (new i = 1; i <= MaxClients; i++) { votes[i] = 0; if (IsClientInGame(i) && GetClientTeam(i) == 3 && IsPlayerAlive(i)) { IntToString(GetClientUserId(i), StR_Id, sizeof(StR_Id)); GetClientName(i,StR_Name, sizeof(StR_Name)); AddMenuItem(h_Menu, StR_Id, StR_Name);
players += 1; } }
Вот часть кода хоть убей не получается отдельно меню сделать(((
|
|
| |
_wS_
|
Дата: Среда, 21.03.2012, 12:03:59 | Сообщение # 10 |
|
В этой части кода ошибок нет, значит где-то в другом месте.
|
|
| |
Naykon
|
Дата: Среда, 21.03.2012, 17:57:33 | Сообщение # 11 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Code public OnBreak_Func(const String:output[], caller, activator, Float:delay) { if (activator > 0 && activator <= MaxClients) { // Предмет удалился, устанавливаем игроку 1 hp if(IsClientInGame(activator) && GetClientTeam(activator) == 2 && IsPlayerAlive(activator) && GetClientHealth(activator) < 100) { SetEntProp(activator, Prop_Send, "m_iHealth", 100); } else if (IsClientInGame(activator) && GetClientTeam(activator) == 2 && IsPlayerAlive(activator) && GetClientHealth(activator) > 100) { PrintToChatAll("У игрока %s 100 хп", activator); } else {
%s - имя игрока не пишет((( пытался получить имя через UserId.. - не компелируется(
|
|
| |
_wS_
|
Дата: Среда, 21.03.2012, 18:34:52 | Сообщение # 12 |
|
Не %s, а %N.. %s это если ты делал GetClientName. И у тебя опять лишний код в условиях - зачем ты их повторяешь? Надо делать так:
Code if (i > 0 && i <= MaxClients) { if (IsClientInGame(i) && GetClientTeam(i) == 2 && IsPlayerAlive(i)) { if (GetClientHealth(i) > 100) { // ... } else { // ... } } }
Или даже сразу так:
Code if (i > 0 && i <= MaxClients && IsClientInGame(i) && GetClientTeam(i) == 2 && IsPlayerAlive(i)) { if (GetClientHealth(i) > 100) { // ... } else { // ... } }
А ты несколько раз проверяешь условия (вызываешь команды), хотя результат тебе уже известен. Это просто лишний груз.
|
|
| |
Naykon
|
Дата: Среда, 21.03.2012, 20:54:21 | Сообщение # 13 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Буду лечить себя от "лишнего" но мне пока бы как нибудь чтоб получалось =))Добавлено (21.03.2012, 20:54:21) ---------------------------------------------
Code decl Handle:h; if ((h = StartMessageOne("SayText2", client)) != INVALID_HANDLE) { BfWriteByte(h, client); BfWriteByte(h, true); decl String:xStR[128]; Format(xStR, sizeof(xStR), "[\x03Баланс\x02]\x04 Вы добавлены в очередь номером\x03 %d ", GRindex); BfWriteString(h, xStR); EndMessage(); }
Не хотит... не хотит работать цвета)))))) Все в желтом стандартном пишет((
|
|
| |
_wS_
|
Дата: Среда, 21.03.2012, 22:45:36 | Сообщение # 14 |
|
Не вижу где определена переменная GRindex. Попробуй в начало строки добавить \x01
|
|
| |
Naykon
|
Дата: Четверг, 22.03.2012, 23:31:34 | Сообщение # 15 |
|
Сообщений: 439
Репутация: -4 [ +/- ]
|
|
Code g_VoteMenu = CreateMenu(Handler_MapVoteMenu, MenuAction:MENU_ACTIONS_ALL); AddMenuItem(g_VoteMenu, "", "Лучше подумай дважды!", ITEMDRAW_DISABLED); AddMenuItem(g_VoteMenu, "", "Прежде чем тыкать куда нибудь!\n \n", ITEMDRAW_DISABLED); SetMenuTitle(g_VoteMenu, "Vote Nextmap"); SetVoteResultCallback(g_VoteMenu, Handler_MapVoteFinished);
ITEMDRAW_DISABLED - тут не работет((( "Лучше подумай дважды!" - как пункт выбора а не как пустая ячейка =) в чем тут дело?
|
|
| |
|