| 
				
				Создание Меню
				 |   |  
| 
VamPir1217
 | 
Дата: Воскресенье, 21.12.2014, 17:47:15 | Сообщение # 61 |  
  
  |  
Сообщений: 24
 
Репутация: 0 [ +/- ]
 |   
 | 
 Подскажите , как заменить "Назад" на другое название. Например "->". Кажется у wS'a где то видел. 
 | 
 
|   | 
 |    |  
| 
BarD
 | 
Дата: Воскресенье, 21.12.2014, 17:55:48 | Сообщение # 62 |  
  
  |  
Сообщений: 943
 
Репутация: 137 [ +/- ]
 |   
 | 
 Делаешь итем со своим названием и по его нажатию откатываешь на страницу назад. 
 | 
 
|   | 
 |    |  
| 
«SeReGa»☆
 | 
Дата: Понедельник, 22.12.2014, 18:25:17 | Сообщение # 63 |  
  
  |  
Сообщений: 395
 
Репутация: 37 [ +/- ]
 |   
 | 
 Дайте пожалуйста пример)) 
 
 Сообщение отредактировал «SeReGa»☆ - Вторник, 10.02.2015, 00:25:35  | 
 
|   | 
 |    |  
| 
Stepo4kin
 | 
Дата: Среда, 22.07.2015, 00:27:36 | Сообщение # 64 |  
  
  |  
Сообщений: 1
 
Репутация: 0 [ +/- ]
 |   
 | 
 в первом посте панели и меню отображаются В ИГРЕ в небольшом окошке, а у меня в hl2dm меню отображается как ОКНО, да еще и только В ГЛАВНОМ МЕНЮ(как например создать сервер или окно настроек)   Подскажите как исправить 
 
| 
Гости не могут скачивать файлы
 |   
 | 
 
|   | 
 |    |  
| 
Scarface_slv
 | 
Дата: Среда, 22.07.2015, 22:03:57 | Сообщение # 65 |  
  
  |  
Сообщений: 737
 
Репутация: 61 [ +/- ]
 |   
 | 
Handle:CreatePanel(Handle:hStyle=INVALID_HANDLE); - создаёт панель и возвращает её Handle.   Если вернёт INVALID_HANDLE, значит произошла ошибка. 
   Код    hStyle (стиль меню):  
   MenuStyle_Default = 0 // The "default" menu style for the mod    MenuStyle_Valve = 1 // The Valve provided menu style (Used on HL2DM)    MenuStyle_Radio = 2 // The simpler menu style commonly used on CS:S        попробуй что нить из этого   CreatePanel(MenuStyle_Valve);   CreatePanel(MenuStyle_Radio); 
 | 
 
|   | 
 |    |  
| 
«SeReGa»☆
 | 
Дата: Пятница, 24.07.2015, 15:41:41 | Сообщение # 66 |  
  
  |  
Сообщений: 395
 
Репутация: 37 [ +/- ]
 |   
 | 
 также на меню.. 
   new Handle:menu = CreateMenuEx(GetMenuStyleHandle(MenuStyle_Radio), MenuHNDL, MenuAction_Select|MenuAction_End|MenuAction_DisplayItem); 
 | 
 
|   | 
 |    |  
| 
«SeReGa»☆
 | 
Дата: Пятница, 24.07.2015, 15:43:42 | Сообщение # 67 |  
  
  |  
Сообщений: 395
 
Репутация: 37 [ +/- ]
 |   
 | 
 а вообще есть крутая штука которая намного упростит создание меню 
 
| 
Гости не могут скачивать файлы
 |   
 | 
 
|   | 
 |    |  
| 
sourcegod
 | 
Дата: Суббота, 25.07.2015, 09:54:34 | Сообщение # 68 |  
  
  |  
Сообщений: 69
 
Репутация: 0 [ +/- ]
 |   
 | 
VamPir1217,   В меню:   Код    SetPanelCurrentKey(panel, 8);   DrawPanelItem(panel, "<--");   
   В проверку:   Код case 8: название твоего меню(client);     Если ты делаешь через switch. 
   А если по другому то:   Код if(option == 8)     {            название твоего меню(client);     }  
 
 Сообщение отредактировал sourcegod - Суббота, 25.07.2015, 10:00:15  | 
 
|   | 
 |    |  
| 
Angel_hell
 | 
Дата: Вторник, 19.01.2016, 21:46:58 | Сообщение # 69 |  
  
  |  
Сообщений: 2
 
Репутация: 0 [ +/- ]
 |   
 | 
Выдает ошибку на 128 строчке, не могу понять в чем проблема, помогите плз. Менюшка для Jail
 
 Код #include <sourcemod> #include <sdktools>
  #define PLUGIN_VERSION "3.0.1"
  new Warden = -1; new Handle:g_cVar_mnotes = INVALID_HANDLE; new Handle:g_fward_onBecome = INVALID_HANDLE; new Handle:g_fward_onRemove = INVALID_HANDLE;
  public Plugin:myinfo = { name = "Jailbreak Warden", author = "ecca", description = "Jailbreak Warden script", version = PLUGIN_VERSION, url = "ffac.eu" };
  new Handle:cvar_ff; new iEnt; new String:EntityList[][] = {
  "func_door", "func_rotating", "func_walltoggle", "func_breakable", "func_door_rotating", "func_movelinear", "prop_door", "prop_door_rotating", "func_tracktrain", "func_elevator", "\0" };
  public OnPluginStart() { // Initialize our phrases LoadTranslations("simon.phrases");
  // Register our public commands RegConsoleCmd("sm_simon", BecomeWarden); RegConsoleCmd("say !simon", BecomeWarden); RegConsoleCmd("sm_simonmenu", Simonmenu); RegConsoleCmd("sm_us", ExitWarden); RegConsoleCmd("sm_unsimon", ExitWarden);
  // Register our admin commands RegAdminCmd("sm_rsimon", RemoveWarden, ADMFLAG_GENERIC);
  // Hooking the events HookEvent("round_start", roundStart); // For the round start HookEvent("player_death", playerDeath); // To check when our warden dies :)
  // For our warden to look some extra cool AddCommandListener(HookPlayerChat, "say");
  // May not touch this line CreateConVar("sm_warden_version", PLUGIN_VERSION, "The version of the SourceMod plugin JailBreak Warden, by ecca", FCVAR_REPLICATED|FCVAR_SPONLY|FCVAR_PLUGIN|FCVAR_NOTIFY|FCVAR_DONTRECORD); g_cVar_mnotes = CreateConVar("sm_warden_better_notifications", "0", "0 - disabled, 1 - Will use hint and center text", FCVAR_PLUGIN, true, 0.0, true, 1.0);
  g_fward_onBecome = CreateGlobalForward("warden_OnWardenCreated", ET_Ignore, Param_Cell); g_fward_onRemove = CreateGlobalForward("warden_OnWardenRemoved", ET_Ignore, Param_Cell); cvar_ff = FindConVar("mp_teammates_are_enemies"); }
  public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max) { CreateNative("warden_exist", Native_ExistWarden); CreateNative("warden_iswarden", Native_IsWarden); CreateNative("warden_set", Native_SetWarden); CreateNative("warden_remove", Native_RemoveWarden);
  RegPluginLibrary("warden");
  return APLRes_Success; }
  public Action:BecomeWarden(client, args) { if (Warden == -1) // There is no warden , so lets proceed { if (GetClientTeam(client) == 3) // The requested player is on the Counter-Terrorist side { if (IsPlayerAlive(client)) // A dead warden would be worthless >_< { SetTheWarden(client); Simonmenu(client, 0); SetEntityHealth(client, 255); } else // Grr he is not alive -.- { PrintToChat(client, "[Каторга] ~ %t", "warden_playerdead"); } } else // Would be wierd if an terrorist would run the prison wouldn't it :p { PrintToChat(client, "[Каторга] ~ %t", "warden_ctsonly"); } } else // The warden already exist so there is no point setting a new one { PrintToChat(client, "[Каторга] ~ %t", "warden_exist", Warden); } }
  public Action:Simonmenu(client, args) { new Handle:menu = CreateMenu(DIDMenuHandlerS); SetMenuTitle(menu, "Меню саймона");
  AddMenuItem(menu, "open", "Открыть клетки"); AddMenuItem(menu, "fdone", "Дать ФД игроку"); AddMenuItem(menu, "fdall", "Дать всем ФД");
  if(!GetConVarBool(cvar_ff)) AddMenuItem(menu, "ffa1", "Включить бокс"); else AddMenuItem(menu, "ffa2", "Выключить бокс");
  AddMenuItem(menu, "nosimon", "Отдать саймона"); SetMenuExitButton(menu, true); DisplayMenu(menu, client, MENU_TIME_FOREVER); }
  public DIDMenuHandlerS(Handle:menu, MenuAction:action, client, itemNum) { if ( action == MenuAction_Select ) { if(Warden() != client) return;
  new String:info[32];
  GetMenuItem(menu, itemNum, info, sizeof(info));
  if ( strcmp(info,"open") == 0 ) { abrir(); Simonmenu(client,0); } else if ( strcmp(info,"fdone") == 0 ) { FDone(client); }
  else if ( strcmp(info,"fdall") == 0 ) { FDTodos(); PrintToChatAll(" \x04[Каторга] \x05Дать всем ФД"); Simonmenu(client,0); } else if ( strcmp(info,"ffa1") == 0 ) { SetCvar("mp_teammates_are_enemies", 1); PrintToChatAll(" \x04[Каторга] \x05Включить бокс");
  Simonmenu(client,0); } else if ( strcmp(info,"ffa2") == 0 ) { SetCvar("mp_teammates_are_enemies", 0); PrintToChatAll(" \x04[Каторга] \x05Саймон выключил бокс");
  Simonmenu(client,0); } else if ( strcmp(info,"nosimon") == 0 ) { FakeClientCommand(client, "sm_unsimon"); DOMenu(client,0); }
  } else if (action == MenuAction_End) { CloseHandle(menu); } }
  public Action:abrir() { for(new i = 0; i < sizeof(EntityList); i++) while((iEnt = FindEntityByClassname(iEnt, EntityList[i])) != -1) AcceptEntityInput(iEnt, "Open"); return Plugin_Handled; }
  FDTodos() { for (new i = 1; i < MaxClients; i++) if(IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == CS_TEAM_T) JB_GiveFD(i); }
  FDone(client) { new Handle:menu = CreateMenu(DIDMenuHandlerFD); SetMenuTitle(menu, "Кому дать ФД?");
  decl String:temp2[8], String:temp[128]; new cuenta = 0; for (new i = 1; i < MaxClients; i++) if(IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == CS_TEAM_T && !JB_GetFD(i)) { Format(temp, 128, "%N", i); Format(temp2, 8, "%i", i); AddMenuItem(menu, temp2, temp);
  cuenta++; }
  SetMenuExitButton(menu, true); DisplayMenu(menu, client, MENU_TIME_FOREVER);
  if(cuenta == 0) { PrintToChat(client, " \x04[Каторга] \x05Нет живых зеков"); DOsimon(client,0); } }
  public DIDMenuHandlerFD(Handle:menu, MenuAction:action, client, itemNum) { if ( action == MenuAction_Select ) { if(Warden() != client) return;
  new String:info[32];
  GetMenuItem(menu, itemNum, info, sizeof(info));
  new i = StringToInt(info); if(IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == CS_TEAM_T) { JB_GiveFD(i); PrintToChatAll(" \x04[Каторга] \x05Саймон дал ФД игроку %N", i);
  Simonmenu(client,0); } else { PrintToChat(client, " \x04[Каторга] \x05Выберите другого игрока"); FDone(client); }
  } else if (action == MenuAction_End) { CloseHandle(menu); } }
  public Action:ExitWarden(client, args) { if(client == Warden) // The client is actually the current warden so lets proceed { PrintToChatAll("[Каторга] ~ %t", "warden_retire", client); if(GetConVarBool(g_cVar_mnotes)) { PrintCenterTextAll("[Каторга] ~ %t", "warden_retire", client); PrintHintTextToAll("[Каторга] ~ %t", "warden_retire", client); } Warden = -1; // Open for a new warden SetEntityRenderColor(client, 255, 255, 255, 255); // Lets remove the awesome color } else // Fake dude! { PrintToChat(client, "[Каторга] ~ %t", "warden_notwarden"); } }
  public Action:roundStart(Handle:event, const String:name[], bool:dontBroadcast) { Warden = -1; // Lets remove the current warden if he exist }
  public Action:playerDeath(Handle:event, const String:name[], bool:dontBroadcast) { new client = GetClientOfUserId(GetEventInt(event, "userid")); // Get the dead clients id
  if(client == Warden) // Aww damn , he is the warden { PrintToChatAll("[Каторга] ~ %t", "warden_dead", client); if(GetConVarBool(g_cVar_mnotes)) { PrintCenterTextAll("[Каторга] ~ %t", "warden_dead", client); PrintHintTextToAll("[Каторга] ~ %t", "warden_dead", client); } SetEntityRenderColor(client, 255, 255, 255, 255); // Lets give him the standard color back Warden = -1; // Lets open for a new warden } }
  public OnClientDisconnect(client) { if(client == Warden) // The warden disconnected, action! { PrintToChatAll("[Каторга] ~ %t", "warden_disconnected"); if(GetConVarBool(g_cVar_mnotes)) { PrintCenterTextAll("[Каторга] ~ %t", "warden_disconnected", client); PrintHintTextToAll("[Каторга] ~ %t", "warden_disconnected", client); } Warden = -1; // Lets open for a new warden } }
  public Action:RemoveWarden(client, args) { if(Warden != -1) // Is there an warden at the moment ? { RemoveTheWarden(client); } else { PrintToChatAll("[Каторга] ~ %t", "warden_noexist"); }
  return Plugin_Handled; // Prevent sourcemod from typing "unknown command" in console }
  public Action:HookPlayerChat(client, const String:command[], args) { if(Warden == client && client != 0) // Check so the player typing is warden and also checking so the client isn't console! { new String:szText[256]; GetCmdArg(1, szText, sizeof(szText));
  if(szText[0] == '/' || szText[0] == '@' || IsChatTrigger()) // Prevent unwanted text to be displayed. { return Plugin_Handled; }
  if(IsClientInGame(client) && IsPlayerAlive(client) && GetClientTeam(client) == 3) // Typing warden is alive and his team is Counter-Terrorist { PrintToChatAll("[Каторга] %N : %s", client, szText); return Plugin_Handled; } }
  return Plugin_Continue; }
  public SetTheWarden(client) { PrintToChatAll("[Каторга] ~ %t", "warden_new", client);
  if(GetConVarBool(g_cVar_mnotes)) { PrintCenterTextAll("[Каторга] ~ %t", "warden_new", client); PrintHintTextToAll("[Каторга] ~ %t", "warden_new", client); } Warden = client; SetEntityRenderColor(client, 0, 0, 255, 255); SetClientListeningFlags(client, VOICE_NORMAL);
  Forward_OnWardenCreation(client); }
  public RemoveTheWarden(client) { PrintToChatAll("[Каторга] ~ %t", "warden_removed", client, Warden); if(GetConVarBool(g_cVar_mnotes)) { PrintCenterTextAll("[Каторга] ~ %t", "warden_removed", client); PrintHintTextToAll("[Каторга] ~ %t", "warden_removed", client); } SetEntityRenderColor(Warden, 255, 255, 255, 255); Warden = -1;
  Forward_OnWardenRemoved(client); }
  public Native_ExistWarden(Handle:plugin, numParams) { if(Warden != -1) return true;
  return false; }
  public Native_IsWarden(Handle:plugin, numParams) { new client = GetNativeCell(1);
  if(!IsClientInGame(client) && !IsClientConnected(client)) ThrowNativeError(SP_ERROR_INDEX, "Client index %i is invalid", client);
  if(client == Warden) return true;
  return false; }
  public Native_SetWarden(Handle:plugin, numParams) { new client = GetNativeCell(1);
  if (!IsClientInGame(client) && !IsClientConnected(client)) ThrowNativeError(SP_ERROR_INDEX, "Client index %i is invalid", client);
  if(Warden == -1) { SetTheWarden(client); } }
  public Native_RemoveWarden(Handle:plugin, numParams) { new client = GetNativeCell(1);
  if (!IsClientInGame(client) && !IsClientConnected(client)) ThrowNativeError(SP_ERROR_INDEX, "Client index %i is invalid", client);
  if(client == Warden) { RemoveTheWarden(client); } }
  public Forward_OnWardenCreation(client) { Call_StartForward(g_fward_onBecome); Call_PushCell(client); Call_Finish(); }
  public Forward_OnWardenRemoved(client) { Call_StartForward(g_fward_onRemove); Call_PushCell(client); Call_Finish(); }  
 
 Сообщение отредактировал Angel_hell - Вторник, 19.01.2016, 22:55:17  | 
 
|   | 
 |    |  
| 
BarD
 | 
Дата: Четверг, 21.01.2016, 09:16:36 | Сообщение # 70 |  
  
  |  
Сообщений: 943
 
Репутация: 137 [ +/- ]
 |   
 | 
Цитата Angel_hell (  )  if(Warden() != client) return;  У тебя нет функции Warden(). Не знаю, что ты хотел этим сделать, но здесь определенно неверно. 
 | 
 
|   | 
 |    |  
| 
Angel_hell
 | 
Дата: Четверг, 21.01.2016, 16:08:21 | Сообщение # 71 |  
  
  |  
Сообщений: 2
 
Репутация: 0 [ +/- ]
 |   
 | 
Цитата BarD (  )  У тебя нет функции Warden(). Не знаю, что ты хотел этим сделать, но здесь определенно неверно. 
  Когда кт нажмет функцию "взять Саймона", ктшнику присваивается переменная Warden, и потом мне нужно провести поверку, если игрок не warden, то возврат функции.  Если я делаю сравнение как переменную, то у меня ломаются квары. Нету мыслей как можно это нормально сделать 
 | 
 
|   | 
 |    |  
| 
Darkeneez
 | 
Дата: Четверг, 21.01.2016, 18:51:58 | Сообщение # 72 |  
  
  |  
Сообщений: 221
 
Репутация: 18 [ +/- ]
 |   
 | 
Цитата Angel_hell (  )  Когда кт нажмет функцию "взять Саймона", ктшнику присваивается переменная Warden, и потом мне нужно провести поверку, если игрок не warden, то возврат функции. Если я делаю сравнение как переменную, то у меня ломаются квары. Нету мыслей как можно это нормально сделать 
  Каким образом у тебя квары ломаются? Там весь плагин из этой проверки состоит warden != client делай и не выдумывай ничего 
 
 Сообщение отредактировал Darkeneez - Четверг, 21.01.2016, 20:55:54  | 
 
|   | 
 |    |  
| 
Vitaminoz
 | 
Дата: Суббота, 06.08.2016, 16:55:06 | Сообщение # 73 |  
  
  |  
Сообщений: 141
 
Репутация: 1 [ +/- ]
 |   
 | 
 Возможно ли как то при установке флага на menu item'e ITEMDRAW_DISABLED сделать так, чтобы оно было кликабельно, но при этом текст в меню был белого цвета ? 
 | 
 
|   | 
 |    |  
| 
SourceSamil
 | 
Дата: Суббота, 06.08.2016, 19:17:27 | Сообщение # 74 |  
  
  |  
Сообщений: 237
 
Репутация:  [ +/- ]
 |   
 | 
 No, Нет, Nein 
 | 
 
|   | 
 |    |  
| 
Vitaminoz
 | 
Дата: Суббота, 06.08.2016, 19:39:01 | Сообщение # 75 |  
  
  |  
Сообщений: 141
 
Репутация: 1 [ +/- ]
 |   
 | 
 А возможно сделать как то по другому это (пример меню радиосообщений в CS) через другие флаги или чего то еще ? 
 | 
 
|   | 
 |    |     
		
		
 
 |