[CS: Source] Командир для Jail с Меню

david89089

SemJef ЛОЛ
Сообщения
58
Реакции
69
Описание:

Я решил сделать кмд с меню пока я не видел такой плагин только платный!
Что входит в меню:
1.Дать аптечку
2.Открыть все Джайлы
3.Вкл\Выкл NoBlock
4.Взять гранату
5.Включить бокс

Основные команды плагина:

1) !w или !warden - взять кмд и открыть меню кмд
3) !unw или !unwarden - покинуть пост кмд.

Описания украл было лень писать:-D
За все мои обучения в скриптинге СПАСИБО SemJef

Требования:

Установленный Colors и SM_Hosties 2.1.0 , ибо без него сам плагин не нужен будет...

Оригинал: http://forums.alliedmods.net/showthread.php?t=157860 переведено не мною...
 

Вложения

  • cmdmenujail.smx
    15.5 КБ · Просмотры: 264
  • cmdmenujail.sp
    11.2 КБ · Просмотры: 322
Последнее редактирование:

david89089

SemJef ЛОЛ
Сообщения
58
Реакции
69
я писал что я его перевожу?
на держи не жалко
 

Вложения

  • warden.phrases.txt
    2.3 КБ · Просмотры: 168

david89089

SemJef ЛОЛ
Сообщения
58
Реакции
69
czar45, мм ну если не нравится пользуйся wS или своим или вообще без меню!
Щяс сервер ценятся от этих менюшек и если чего не нравится я не прошу тебя его использовать!
 

david89089

SemJef ЛОЛ
Сообщения
58
Реакции
69
Вот теперь будет открываться при взятия кмд!
 

Вложения

  • warden.smx
    15.2 КБ · Просмотры: 36

david89089

SemJef ЛОЛ
Сообщения
58
Реакции
69
Нашел ошибку исправил щяс должно быть норм!
 

Вложения

  • warden.smx
    15.5 КБ · Просмотры: 42

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #7
czar45, в переводе проблема
 

david89089

SemJef ЛОЛ
Сообщения
58
Реакции
69
Теперь меню закрывается при взятия гранаты думаю будет труднее его положить))
 

Вложения

  • warden.smx
    15.5 КБ · Просмотры: 51

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #10
PHP:
public Select_Panel(Handle:panel, MenuAction:action, client, option)  
{ 
	if (action == MenuAction_Select) 
	{ 
		if(IsPlayerAlive(client))
		{
			if(option == 1)
			{
				CreateMedKit(client);
				ShowMyPanel(client);
			}
			else if(option == 2)
			{
				PrintToChatAll("Командир > Командир Открыл Джайлы и другие обьекты");
				OpenAllDoors();
				ShowMyPanel(client);
			}
			else if(option == 3)
			{
				new bool:nenabled = GetConVarBool(g_hCvarEnabledNoBlock);
				if(nenabled)
				{
					PrintCenterTextAll( "Командир Выключил NoBlock!");
					PrintToChatAll("NoBlock: > Командир Выключил NoBlock");
					ServerCommand("sm_noblock 0");
				}
				else
				{
					PrintCenterTextAll( "Командир Включил NoBlock!");
					PrintToChatAll("NoBlock: > Командир Включил NoBlock");
					ServerCommand("sm_noblock 1");
				}
				ShowMyPanel(client);
			}
			else if(option == 4)
			{
				GivePlayerItem(client, "weapon_hegrenade");
				ShowMyPanel(client);
			}
			else if(option == 5)
			{
				new bool:nenabled = GetConVarBool(g_hCvarEnabledFriendlyFire);
				if(nenabled)
				{
					PrintCenterTextAll( "Командир Выключил Бокс!");
					PrintToChatAll("Бокс: > Командир выключил бокс!");
					SetConVarInt(FindConVar("mp_friendlyfire"), 0);
				}
				else
				{
					PrintCenterTextAll( "Командир Запустил Бокс!");
					PrintToChatAll("Бокс: > Командир запустил бокс!");
					SetConVarInt(FindConVar("mp_friendlyfire"), 1);
				}
				ShowMyPanel(client);
			}
		}
	} 
}

Так было бы лучше:
PHP:
public Select_Panel(Handle:panel, MenuAction:action, client, option)  
{ 
	if (action == MenuAction_Select) 
	{ 
		if(IsPlayerAlive(client))
		{
			switch(option)
			{
				case 1: CreateMedKit(client);
				case 2:
				{
					PrintToChatAll("Командир > Командир Открыл Джайлы и другие обьекты");
					OpenAllDoors();
				}
				case 3:
				{
					new bool:nenabled = GetConVarBool(g_hCvarEnabledNoBlock);
					PrintCenterTextAll( "Командир %s NoBlock!", (nenabled) ? "Выключил":"Включил");
					PrintToChatAll("NoBlock: > Командир %s NoBlock", (nenabled) ? "Выключил":"Включил");
					ServerCommand("sm_noblock %i", (nenabled) ? 0:1);
				}
				case 4: GivePlayerItem(client, "weapon_hegrenade");
				case 5:
				{
					new bool:nenabled = GetConVarBool(g_hCvarEnabledFriendlyFire);
					PrintCenterTextAll( "Командир %s Бокс!", (nenabled) ? "Выключил":"Запустил"); 
					PrintToChatAll("Бокс: > Командир %s бокс!", (nenabled) ? "Выключил":"Запустил"); 
					SetConVarInt(FindConVar("mp_friendlyfire"), (nenabled) ? 0:1);
				}
			}
			if(option < 6) ShowMyPanel(client);
		}
	} 
}
 
Последнее редактирование:

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #12
david777, плевать меньше или нет. Он оптимальнее.
 

semjef

semjef.ru
Сообщения
993
Реакции
444
R1KO, поправь в своём посте

PHP:
PrintCenterTextAll( "Командир Выключил Бокс!", (nenabled) ? "Выключил":"Запустил"); 
PrintToChatAll("Бокс: > Командир выключил бокс!", (nenabled) ? "Выключил":"Запустил");

на

PHP:
PrintCenterTextAll( "Командир %s Бокс!", (nenabled) ? "Выключил":"Запустил"); 
PrintToChatAll("Бокс: > Командир %s бокс!", (nenabled) ? "Выключил":"Запустил");

_______________

Ну и немного дополню: нет смысла оптимизировать на столько в данном случае, ведь тут действие выполняется очень редко, да и обработка в обоих случаях занимает менее фрейма, такчто можно оставить так как есть, а если хочешь поучить, то объясни "Почему надо делать именно так"
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
Сомневаюсь, что оптимальнее проверять столько раз одну переменную nenabled
 

semjef

semjef.ru
Сообщения
993
Реакции
444
The End Is Near..., да какая к чёрту разница!? тут разница всего в 2 раза, еслиб делали проверку 1000 раз, то была бы разница, а тут бред даже задумываться.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #16
The End Is Near..., я более уклонялся от ShowMyPanel(client); после каждого условия.
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
semjef
Логика нормальная такая, кстати, кто Тебе сказал, что эта функция не будет выполняться часто? Что эти условия не будут часто проверяться? По твоей логике следует, зачем лечить двоих людей, вот если бы было 1000, так? Другое дело, как ты заговоришь, если именно Ты окажешься среди этих двух человек. Так доходит, не?
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #18
The End Is Near...,
semjef, да ладно, че вы? Не начинайте то, что в последнее время стало привычным делом на этом форуме..
 

semjef

semjef.ru
Сообщения
993
Реакции
444
The End Is Near..., ты уходишь сильно в другую область, это нельзя сравнивать.
А часто выполняться будут эти проверки если игрок дебил и жмакает кнопку более 30 раз в секунду, что мало вероятно. Только тогда данный код будет не оптимальным.


R1KO, Я просто перечитал хабр на эту тему очень сильно:D
да и у Ричи о подобной псевдо-оптимизации не мало сказано (в большей степени о том, что нет смысла улучшать и без того эффективный код)
 

david89089

SemJef ЛОЛ
Сообщения
58
Реакции
69
Проверьте NoBlock должно работать если стоит плагин sm_hosties
 

Вложения

  • warden.smx
    15.5 КБ · Просмотры: 69
Сверху Снизу