MENU
«SeReGa»☆
Дата: Среда, 17.06.2015, 19:34:25 | Сообщение # 16
Сообщений: 395
Репутация: 37 [ +/- ]
Scarface_slv
Дата: Среда, 17.06.2015, 19:38:03 | Сообщение # 17
Сообщений: 737
Репутация: 61 [ +/- ]
Код
public OnPluginStart() { ... HookEvent("player_hurt", player_hurt); } public player_hurt(Handle:event, const String:name[], bool:dontBroadcast) { new client = GetClientOfUserId(GetEventInt(event, "userid")); if(a[client] == true) { SetVariantString("WaterSurfaceExplosion"); AcceptEntityInput( client, "DispatchEffect"); } }
pro-health
Дата: Четверг, 18.06.2015, 07:24:21 | Сообщение # 18
Сообщений: 188
Репутация: 5 [ +/- ]
Цитата Nahal (
)
if (action == MenuAction_Select)
В панельке это вообще не робит. (вроде)
SourceSamil
Дата: Четверг, 18.06.2015, 10:33:29 | Сообщение # 19
Сообщений: 237
Репутация: [ +/- ]
Скар, а почему проверки опций без else?
Scarface_slv
Дата: Четверг, 18.06.2015, 12:15:50 | Сообщение # 20
Сообщений: 737
Репутация: 61 [ +/- ]
SourceSamil, а зачем там else если я только один пункт проверяю, было бы если if(option == 1) else if(option == 2) else ... и лучше тогда switch(option) case 1: ... =)
Nahal
Дата: Четверг, 18.06.2015, 16:24:02 | Сообщение # 21
Сообщений: 205
Репутация: 8 [ +/- ]
А как проверить 2 пункт?
Scarface_slv
Дата: Четверг, 18.06.2015, 17:43:05 | Сообщение # 22
Сообщений: 737
Репутация: 61 [ +/- ]
BarD
Дата: Четверг, 18.06.2015, 18:38:26 | Сообщение # 23
Сообщений: 943
Репутация: 137 [ +/- ]
Nahal, тебе Scarface уже все на пальцах объяснил. Бабуин с дерева слез, и тот понял бы, что если первый пункт проверяется условием if(option==1), то второй проверяется условием if(option==2). Видно, ты в математике не силён.
Сообщение отредактировал BarD - Четверг, 18.06.2015, 18:39:49
SourceSamil
Дата: Четверг, 18.06.2015, 18:50:11 | Сообщение # 24
Сообщений: 237
Репутация: [ +/- ]
Скар, твой код: Код
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); } }
Почему не switch и case 1: case 5:
Scarface_slv
Дата: Четверг, 18.06.2015, 19:19:18 | Сообщение # 25
Сообщений: 737
Репутация: 61 [ +/- ]
SourceSamil, if (option < 5) - потому что тут когда нажимается на 4 пункт или меньше до 1 пункта, меню открывается заново
BarD
Дата: Пятница, 19.06.2015, 05:29:02 | Сообщение # 26
Сообщений: 943
Репутация: 137 [ +/- ]
SourceSamil, это два разных условия, не зависящих друг от друга. Там просто 5 пункт - это "Выход". Меню открывается заново тогда, когда нанимается любой из первых четырёх пунктов.
SourceSamil
Дата: Пятница, 19.06.2015, 06:36:22 | Сообщение # 27
Сообщений: 237
Репутация: [ +/- ]
А, да, просите ребята, не догнал
«SeReGa»☆
Дата: Пятница, 19.06.2015, 10:54:08 | Сообщение # 28
Сообщений: 395
Репутация: 37 [ +/- ]
или ещё один вариант..
Код
#pragma semicolon 1 #include <sourcemod> #include <sdktools_entinput> new bool:WATER_SPLASH_ENABLED[MAXPLAYERS+1]; public OnPluginStart() { RegConsoleCmd("splash", splash); HookEvent("player_hurt", player_hurt); } public player_hurt(Handle:event, const String:name[], bool:dontBroadcast) { new attacker = GetClientOfUserId(GetEventInt(event, "attacker")); if(WATER_SPLASH_ENABLED[attacker]) { new client = GetClientOfUserId(GetEventInt(event, "userid")); SetVariantString("WaterSurfaceExplosion");} AcceptEntityInput( client, "DispatchEffect"); } } public Action:splash(client, args) { if (client) { SPLASH_MENU(client); } return Plugin_Handled; } SPLASH_MENU(client) { decl String:display[100]; new Handle:S_Menu = CreateMenu(SPLASHMenuHandle); if(WATER_SPLASH_ENABLED[client]) { SetMenuTitle(S_Menu, "SPLASH MENU:Включено"); Format(display, sizeof(display), "Отключить"); AddMenuItem(S_Menu, "DISABLED", display); } else { SetMenuTitle(S_Menu, "SPLASH MENU:Отключено"); Format(display, sizeof(display), "Включить"); AddMenuItem(S_Menu, "ENABLED", display); } SetMenuExitButton(S_Menu, true); DisplayMenu(S_Menu, client, MENU_TIME_FOREVER); } public SPLASHMenuHandle(Handle:S_Menu, MenuAction:action, client, param2) { if(action==MenuAction_Select) { decl String:info[16]; GetMenuItem(S_Menu, param2, info, sizeof(info)); if(StrEqual(info, "ENABLED")) { WATER_SPLASH_ENABLED[client]=true; PrintToChat(client, "Еффект воды \x03Включен"); } else if(StrEqual(info, "DISABLED")) { WATER_SPLASH_ENABLED[client]=false; PrintToChat(client, "Еффект воды \x02Выключен"); } SPLASH_MENU(client); } else if(action == MenuAction_End) { CloseHandle(S_Menu); } }
Сообщение отредактировал «SeReGa»☆ - Пятница, 19.06.2015, 10:54:59
SourceSamil
Дата: Пятница, 19.06.2015, 11:28:51 | Сообщение # 29
Сообщений: 237
Репутация: [ +/- ]
Нахал, как сказал когда-то мне Reiko: "Пиши что-то простенькое, а потом, когда опыт будет переходи к сложному"
BarD
Дата: Пятница, 19.06.2015, 11:31:40 | Сообщение # 30
Сообщений: 943
Репутация: 137 [ +/- ]
«SeReGa»☆, он пока еще на уровне панелей. До меню ему еще далеко. А твой пример хороший. Добавить бы комментарии и был бы обучающий для него. SourceSamil, согласен.