MENU
Nahal
Дата: Среда, 17.06.2015, 16:48:52 | Сообщение # 1
Сообщений: 205
Репутация: 8 [ +/- ]
Добрый день всем!!! Пишу плагин VIP. Но я еще не многу разобраться как сделать к каждому пункту отдельную проверку и свой код, УЖЕ МОЗГИ КИПЯТ...
Код
public OnPluginStart() { RegConsoleCmd("vip", VIP); } public Action:VIP(client, args) { if (client > 0 && args < 1) ShowMyPanel(client); return Plugin_Handled; } ShowMyPanel(client) { new Handle:panel = CreatePanel(); SetPanelTitle(panel, "VIP by Parlament\n \n"); DrawPanelItem(panel, "Еффект воды"); DrawPanelItem(panel, "Меню не доступно"); DrawPanelItem(panel, "Меню не доступно"); DrawPanelItem(panel, "Меню не доступно \n \n"); DrawPanelItem(panel, "Выход"); SendPanelToClient(panel, client, Select_Panel, 0); CloseHandle(panel); ClientCommand(client, "playgamesound items/nvg_off.wav"); } public Select_Panel(Handle:panel, MenuAction:action, client, option) { if (action == MenuAction_Select) { PrintToChat(client, "Еффект воды", option); if (option < 5) ShowMyPanel(client); } }
Сообщение отредактировал Nahal - Среда, 17.06.2015, 18:27:33
Scarface_slv
Дата: Среда, 17.06.2015, 18:29:23 | Сообщение # 2
Сообщений: 737
Репутация: 61 [ +/- ]
Ну есть для этого глобальная переменная типа bool. new bool:a[MAXPLAYERS+1] При нажатие в меню на брызги воды проверяем включена ли она или нет у игрока if(a[client] == true) a[client] = false-выключаем если включен else a[client] = true; - включаем если выключен Там где пункты с меню тоже создаем проверку: if(a[client] == true) DrawPanelItem(panel, "Брызги воды [+]"); else DrawPanelItem(panel, "Брызги воды [-]"); И наверно надо в player_spawn проверить if(a[client] = true) - то включаем брызги снова. Мне было проще показать на примере. Но лучше сам
Nahal
Дата: Среда, 17.06.2015, 18:35:37 | Сообщение # 3
Сообщений: 205
Репутация: 8 [ +/- ]
Scarface_slv, Но я еще не многу разобраться как сделать к каждому пункту отдельную проверку и свой код,
Scarface_slv
Дата: Среда, 17.06.2015, 18:38:40 | Сообщение # 4
Сообщений: 737
Репутация: 61 [ +/- ]
Есть такая вещь как option в твоем примере - смотри что он получает при нажатие на какой либо пункт Print
Nahal
Дата: Среда, 17.06.2015, 18:43:04 | Сообщение # 5
Сообщений: 205
Репутация: 8 [ +/- ]
Scarface_slv, Я вообще не понимаю если честно, Геморой какойто(
Код
public Select_Panel(Handle:panel, MenuAction:action, client, option) { if (action == MenuAction_Select) { if([client] == true) [client] = false; { else [client] = true; } SetVariantString("WaterSurfaceExplosion"); AcceptEntityInput( client, "DispatchEffect"); } }
Сообщение отредактировал Nahal - Среда, 17.06.2015, 18:43:36
«SeReGa»☆
Дата: Среда, 17.06.2015, 18:48:48 | Сообщение # 6
Сообщений: 395
Репутация: 37 [ +/- ]
Nahal, накидал грязи!
Nahal
Дата: Среда, 17.06.2015, 18:55:01 | Сообщение # 7
Сообщений: 205
Репутация: 8 [ +/- ]
Тк, подскажите я вообще не вникаю(
Scarface_slv
Дата: Среда, 17.06.2015, 18:55:09 | Сообщение # 8
Сообщений: 737
Репутация: 61 [ +/- ]
Код
public Select_Panel(Handle:panel, MenuAction:action, client, option) { if (action == MenuAction_Select) { if(option == 1) { PrintToChat(client, "Еффект воды %d", option); SetVariantString("WaterSurfaceExplosion"); AcceptEntityInput( client, "DispatchEffect"); } if (option < 5) ShowMyPanel(client); } }
Сообщение отредактировал Scarface_slv - Среда, 17.06.2015, 18:56:10
Nahal
Дата: Среда, 17.06.2015, 18:58:58 | Сообщение # 9
Сообщений: 205
Репутация: 8 [ +/- ]
Scarface_slv, А что вообще за проверку ты скинул непонятную?Цитата Scarface_slv (
)
При нажатие в меню на брызги воды проверяем включена ли она или нет у игрока if(a[client] == true) a[client] = false-выключаем если включен else a[client] = true; - включаем если выключен Там где пункты с меню тоже создаем проверку: if(a[client] == true) DrawPanelItem(panel, "Брызги воды [+]"); else DrawPanelItem(panel, "Брызги воды [-]"); И наверно надо в player_spawn проверить if(a[client] = true) - то включаем брызги снова. Мне было проще показать на примере. Но лучше сам
Scarface_slv
Дата: Среда, 17.06.2015, 18:59:47 | Сообщение # 10
Сообщений: 737
Репутация: 61 [ +/- ]
Это ладно, ты забей, рановато видимо тебе
Nahal
Дата: Среда, 17.06.2015, 19:01:28 | Сообщение # 11
Сообщений: 205
Репутация: 8 [ +/- ]
Scarface_slv, Ну блин уж сказал договаривай как правильно это проверку сделать?
«SeReGa»☆
Дата: Среда, 17.06.2015, 19:06:13 | Сообщение # 12
Сообщений: 395
Репутация: 37 [ +/- ]
как то так >Удачи!
Код
new bool:WATER_SPLASH_ENABLED[MAXPLAYERS+1]; public OnPluginStart() { RegConsoleCmd("splash", splash); HookEvent("player_spawn", OnPlayerSpawn); } public Action:OnPlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast) { new client = GetClientOfUserId(GetEventInt(event, "userid")); WATER_SPLASH_ENABLED[client]=true; } public Action:splash(client, args) { if (client > 0 && args < 1){OpenMenu(client);} return Plugin_Handled; } OpenMenu(client) { decl String:item[100]; new Handle:menu=CreateMenu(SPLASHMenuHandle); SetMenuTitle(menu, "SPLASH MENU"); if(WATER_SPLASH_ENABLED[client]==true) { Format(item, sizeof(item), "ЛЯПНУТЬ"); AddMenuItem(menu, "", item); } else { Format(item, sizeof(item), "НЕ ЛЯПНУТЬ"); AddMenuItem(menu, "", item,ITEMDRAW_DISABLED); } DisplayMenu(menu,client,MENU_TIME_FOREVER); } public SPLASHMenuHandle(Handle:menu,MenuAction:action,client,slot) { if(action==MenuAction_Select) { if (slot == 1) { SetVariantString("WaterSurfaceExplosion"); AcceptEntityInput( client, "DispatchEffect"); WATER_SPLASH_ENABLED[client]=false; } } }
Сообщение отредактировал «SeReGa»☆ - Среда, 17.06.2015, 19:14:35
Scarface_slv
Дата: Среда, 17.06.2015, 19:12:06 | Сообщение # 13
Сообщений: 737
Репутация: 61 [ +/- ]
Код
new bool:a[MAXPLAYERS+1] public Select_Panel(Handle:panel, MenuAction:action, client, option) { if (action == MenuAction_Select) { if(option == 1) { if(a[client] == true) { PrintToChat(client, "Еффект воды выключен"); a[client] = false; } else { PrintToChat(client, "Еффект воды включен"); a[client] = true; } } if (option < 5) ShowMyPanel(client); } }
Далее в player_hurt -> if(a[client] == true) SetVariantString("WaterSurfaceExplosion"); AcceptEntityInput( client, "DispatchEffect");
«SeReGa»☆
Дата: Среда, 17.06.2015, 19:18:19 | Сообщение # 14
Сообщений: 395
Репутация: 37 [ +/- ]
2 готовых к работе примера Думаю Справишся!
Nahal
Дата: Среда, 17.06.2015, 19:27:34 | Сообщение # 15
Сообщений: 205
Репутация: 8 [ +/- ]
Суда то что? public player_hurt(Handle:event, const String:name[], bool:silent) if(a[client] == true) { SetVariantString("WaterSurfaceExplosion"); AcceptEntityInput( client, "DispatchEffect"); }