Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 2
  • 1
  • 2
  • »
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Меню
Меню
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
Thanks
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
Thanks
 
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
Thanks
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
Thanks
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
Thanks
В этой части кода ошибок нет, значит где-то в другом месте.
 
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
Thanks
Не %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
Thanks
Не вижу где определена переменная 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 - тут не работет((( "Лучше подумай дважды!" - как пункт выбора а не как пустая ячейка =) в чем тут дело?
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Меню
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: