Контакты Поиск

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

  • Страница 2 из 2
  • «
  • 1
  • 2
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Меню
Меню
_wS_ Дата: Пятница, 23.03.2012, 14:37:09 | Сообщение # 16
Naykon, не знаю, я никогда не использовал другие 'MenuAction:', кроме стандартного, да и функцию SetVoteResultCallback. И эти все vote функции, они ж наверно требуют эти стандартные SM скрипты, как mapchooser, nextmap, basevotes - а я их все снёс и сделал все по-своему. Так что вникать в это зря не хочу, хотя, может позже.
 
Naykon Дата: Вторник, 23.10.2012, 19:09:54 | Сообщение # 17
Сообщений: 439
Репутация: -4 [ +/- ]
Как можно сделать так чтобы если игрок не выбрал пункт меню то сделать над ним действие??

Добавлено (20.10.2012, 17:46:16)
---------------------------------------------

Code
      SetMenuExitButton(SkinMenu, false);
       DisplayMenu(SkinMenu, client, 10);


Если игрок ничего не выберет в меню через 10 сек (после закрытия меню) напишит в чат "Привет"... очень прошу отозваться!

Добавлено (23.10.2012, 19:09:54)
---------------------------------------------
подскажите

 
_wS_ Дата: Вторник, 23.10.2012, 19:15:16 | Сообщение # 18
Уже обсуждалось..

Code
public xz(Handle:menu, MenuAction:action, param1, param2)
{
     if (action == MenuAction_Cancel && param2 == MenuCancel_Timeout)
     {

     }
}
 
Naykon Дата: Четверг, 06.12.2012, 18:48:45 | Сообщение # 19
Сообщений: 439
Репутация: -4 [ +/- ]
Code
#include <sourcemod>
#include <cstrike>
#include <sdktools>
#include <sdktools_entoutput>
#include <sdktools_functions>
#include <sdkhooks>  
#include <clientprefs>
new Question[MAXPLAYERS+1] = 0;
new Bad[MAXPLAYERS+1] = 0;
new Good[MAXPLAYERS+1] = 0;
new Next[MAXPLAYERS+1] = 1;
public OnPluginStart()
{
  RegConsoleCmd("sm_teston", UNAFKfunc);
  RegConsoleCmd("sm_testoff", UNAFKfunc2);
}

public Action:UNAFKfunc(admin, args)
{
  for (new client = 1; client <= MaxClients; client++)
  {
   Question[client] = GetRandomQuestion();
   QuestionsRules(client);
   //Question[client] = 0;
   PrintToChatAll("Запуск");
  }
}  

public Action:UNAFKfunc2(admin, args)
{
  for (new client = 1; client <= MaxClients; client++)
  {
   Question[client] = 0;
   Bad[client] = 0;
   Good[client] = 0;
   Next[client] = 1;
   PrintToChatAll("Question[client] = %d", Question[client]);
   PrintToChatAll("Bad[client] = %d", Bad[client]);
   PrintToChatAll("Good[client] = %d", Good[client]);
   PrintToChatAll("Next[client] = %d", Next[client]);
  }
}  
        
QuestionsRules(client)
{
    new Handle:SkinMenu2 = CreateMenu(QuestionsRulesSelect);
    if (Question[client] == 1)
   {
    SetMenuTitle(SkinMenu2, "Вопрос №: %d \n Не правильных ответов: %d \n Максимально число неправильных ответов 3 \n Вопрос 1?\n \n", Next[client], Bad[client]);
     AddMenuItem(SkinMenu2, "1", "Ответ");
     AddMenuItem(SkinMenu2, "2", "Правильно");
     AddMenuItem(SkinMenu2, "3", "Ответ");
   }
    if (Question[client] == 2)
   {
    SetMenuTitle(SkinMenu2, "Вопрос №: %d \n Не правильных ответов: %d \n Максимально число неправильных ответов 3 \n Вопрос 2?\n \n", Next[client], Bad[client]);
     AddMenuItem(SkinMenu2, "1", "Правильно");
     AddMenuItem(SkinMenu2, "2", "Ответ");
     AddMenuItem(SkinMenu2, "3", "Ответ");
   }
    if (Question[client] == 3)
   {
    SetMenuTitle(SkinMenu2, "Вопрос №: %d \n Не правильных ответов: %d \n Максимально число неправильных ответов 3 \n Вопрос 3?\n \n", Next[client], Bad[client]);
     AddMenuItem(SkinMenu2, "1", "Ответ");
     AddMenuItem(SkinMenu2, "2", "Ответ");
     AddMenuItem(SkinMenu2, "3", "Правильно");
   }
       SetMenuExitButton(SkinMenu2, false);
       DisplayMenu(SkinMenu2, client, 12);
}  

public QuestionsRulesSelect(Handle:menu, MenuAction:action, client, i)
{
   if (action == MenuAction_End)
      {
          CloseHandle(menu);
          return;  
  }
      else if (action == MenuAction_Select)
       {
     decl String:Info[300];
     decl String:Skin[300];
           GetMenuItem(menu, i, Info, sizeof(Info), _, Skin, sizeof(Skin));
     if (Question[client] == 1)
   {
      if (StrEqual(Info, "1") || StrEqual(Info, "3"))
      {  
       PrintToChatAll("Дошло");
      Bad[client] += 1;
      Next[client] += 1;
      PrintToChatAll("Один НЕ Next[client] = %d", Next[client]);
      if (Next[client] < 4)
      {
       Vote(client);
      }
      else  
      {
       PrintToChatAll("else Next[client] = %d", Next[client]);
       if (Good[client] > 1)
       {
        PrintToChatAll("\x04%N. Поздравляем вы ответили правильно на %d вопросов", client, Good[client]);
       }
       else PrintToChatAll("%N. К сожалению вы ответили правильно всего на %d вопросов", client, Good[client]);
      }
      }
      else
      {
       PrintToChatAll("Дошло");
       Next[client] += 1;
       Good[client] += 1;
     PrintToChatAll("Один ДА Next[client] = %d", Next[client]);
      if (Next[client] < 4)
      {
       Vote(client);
      }
      else  
      {
       PrintToChatAll("else Next[client] = %d", Next[client]);
       if (Good[client] > 1)
       {
        PrintToChatAll("\x04%N. Поздравляем вы ответили правильно на %d вопросов", client, Good[client]);
       }
       else PrintToChatAll("%N. К сожалению вы ответили правильно всего на %d вопросов", client, Good[client]);
      }
      }
   }
     if (Question[client] == 2)
   {
      if (StrEqual(Info, "2") || StrEqual(Info, "3"))
      {  
       PrintToChatAll("Дошло");
      Bad[client] += 1;
      Next[client] += 1;
      PrintToChatAll("Два НЕ Next[client] = %d", Next[client]);
      if (Next[client] < 4)
      {
       Vote(client);
      }
      else  
      {
       PrintToChatAll("else Next[client] = %d", Next[client]);
       if (Good[client] > 1)
       {
        PrintToChatAll("\x04%N. Поздравляем вы ответили правильно на %d вопросов", client, Good[client]);
       }
       else PrintToChatAll("%N. К сожалению вы ответили правильно всего на %d вопросов", client, Good[client]);
      }
      }
      else
      {
       PrintToChatAll("Дошло");
       Next[client] += 1;
       Good[client] += 1;
     PrintToChatAll("Два ДА Next[client] = %d", Next[client]);
      if (Next[client] < 4)
      {
       Vote(client);
      }
      else  
      {
       PrintToChatAll("else Next[client] = %d", Next[client]);
       if (Good[client] > 1)
       {
        PrintToChatAll("\x04%N. Поздравляем вы ответили правильно на %d вопросов", client, Good[client]);
       }
       else PrintToChatAll("%N. К сожалению вы ответили правильно всего на %d вопросов", client, Good[client]);
      }
      }
   }
     if (Question[client] == 3)
   {
      if (StrEqual(Info, "1") || StrEqual(Info, "2"))
      {  
       PrintToChatAll("Дошло");
      Bad[client] += 1;
      Next[client] += 1;
      PrintToChatAll("Три НЕ Next[client] = %d", Next[client]);
      if (Next[client] < 4)
      {
       Vote(client);
      }
      else  
      {
       PrintToChatAll("else Next[client] = %d", Next[client]);
       if (Good[client] > 1)
       {
        PrintToChatAll("\x04%N. Поздравляем вы ответили правильно на %d вопросов", client, Good[client]);
       }
       else PrintToChatAll("%N. К сожалению вы ответили правильно всего на %d вопросов", client, Good[client]);
      }
      }
      else
      {
       PrintToChatAll("Дошло");
       Next[client] += 1;
       Good[client] += 1;
     PrintToChatAll("Три Да Next[client] = %d", Next[client]);
      if (Next[client] < 4)
      {
       Vote(client);
      }
      else  
      {
       PrintToChatAll("else Next[client] = %d", Next[client]);
       if (Good[client] > 1)
       {
        PrintToChatAll("\x04%N. Поздравляем вы ответили правильно на %d вопросов", client, Good[client]);
       }
       else PrintToChatAll("%N. К сожалению вы ответили правильно всего на %d вопросов", client, Good[client]);
      }
      }
   }

  }
   else if (i == MenuCancel_Timeout)
      {
       Next[client] += 1;
     PrintToChatAll("ВРЕМЯ Next[client] = %d", Next[client]);
      if (Next[client] < 4)
      {
       Vote(client);
      }
      else  
      {
       PrintToChatAll("else Next[client] = %d", Next[client]);
       if (Good[client] > 1)
       {
        PrintToChatAll("\x04%N. Поздравляем вы ответили правильно на %d вопросов", client, Good[client]);
       }
       else PrintToChatAll("%N. К сожалению вы ответили правильно всего на %d вопросов", client, Good[client]);
      }
      }  
}

GetRandomQuestion()
{
  new indexes[MaxClients+1], players = 0;
  for (new i = 1; i <= 3; i++)
  {
    indexes[players++] = i;
  }
  if (players > 0) return indexes[GetRandomInt(0, players-1)];
  return 0;
}

Vote(client)
{
   Question[client] = 0;
   PrintToChatAll("Очистили Question[client]");
   Question[client] = GetRandomQuestion();
   QuestionsRules(client);
   return Plugin_Stop;
}


По началу все ок но потом почему-то когда я отвечаю на вопрос выскакивает что как будто я отвечал на текущий вопрос и на вопрос 3.
Ппц какой-то....

Прикрепления: plug.sp(8.1 Kb)
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Меню
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: