Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 3 из 3
  1. #1
    Аватар для lonin
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.04.2013
    Адрес
    Очаков, UA
    Сообщений
    25
    Репутация:
    4 ±

    Система для прокачки стиля боя (Без сохранения)


    Доброго времени суток ув. пользователи форума!

    Итак думаю по названию все становится ясно. Данная система предназначена для прокачки стиля боя персонажа.

    Автор: lonin (Я).


    Как это работает?


    Мы приходим в зал который находится в Los Santose (стандартное место из сингла), заходим в него, после чего становимся на чекпоинт ну и собственно говоря происходит обучение (как именно можно увидеть на скриншотах.

    Распишем код по частям:

    • Добавим ко всем new следующие переменные:
      PHP код:
      new PlayerText:SPORT[13][MAX_PLAYERS]; 
      new 
      sportzal[2];
      new 
      bool:CP_FIGHT[MAX_PLAYERS];
      new 
      boxeract
      new 
      sporttimer
      PlayerText:SPORT[13][MAX_PLAYERS] - Переменная отвечающая за создание Textdraw (Включает в себе 13 ячеек. От 0 до 12).
      sportzal[2] - Переменная для пикапов входа/выхода.
      bool:CP_FIGHT[MAX_PLAYERS] - Персональная переменная для каждого игрока (В дальнейшем поможет нам создать чекпоинт для начала тренировки).
      boxeract - Переменная которая нужна для создание статического игрового бота (SetPlayerActor).
      sporttimer - Переменная которая нужна что бы задать таймер для нашего будущего коллбэка.


    • Далее в public OnPlayerConnect(playerid) добавим наши TextDraw'ы:

      PHP код:
          SPORT[0][playerid] = CreatePlayerTextDraw(playerid180.849182202.416656"LD_OTB2:butnA");
          
      PlayerTextDrawTextSize(playeridSPORT[0][playerid], 94.172760105.583343);
          
      PlayerTextDrawAlignment(playeridSPORT[0][playerid], 1);
          
      PlayerTextDrawColor(playeridSPORT[0][playerid], -1061109505);
          
      PlayerTextDrawUseBox(playeridSPORT[0][playerid], true);
          
      PlayerTextDrawBoxColor(playeridSPORT[0][playerid], -5570816);
          
      PlayerTextDrawSetShadow(playeridSPORT[0][playerid], 0);
          
      PlayerTextDrawSetOutline(playeridSPORT[0][playerid], 0);
          
      PlayerTextDrawBackgroundColor(playeridSPORT[0][playerid], -5570816);
          
      PlayerTextDrawFont(playeridSPORT[0][playerid], 5);
          
      PlayerTextDrawSetSelectable(playeridSPORT[0][playerid], true);
          
      PlayerTextDrawSetPreviewModel(playeridSPORT[0][playerid], 19134);
          
      PlayerTextDrawSetPreviewRot(playeridSPORT[0][playerid], 0.000000, -90.00000090.0000001.000000);

          
      SPORT[1][playerid] = CreatePlayerTextDraw(playerid368.790588200.499954"LD_OTB2:butnA");
          
      PlayerTextDrawTextSize(playeridSPORT[1][playerid], 94.172760105.583343);
          
      PlayerTextDrawAlignment(playeridSPORT[1][playerid], 1);
          
      PlayerTextDrawColor(playeridSPORT[1][playerid], -1061109505);
          
      PlayerTextDrawUseBox(playeridSPORT[1][playerid], true);
          
      PlayerTextDrawBoxColor(playeridSPORT[1][playerid], -5570816);
          
      PlayerTextDrawSetShadow(playeridSPORT[1][playerid], 0);
          
      PlayerTextDrawSetOutline(playeridSPORT[1][playerid], 0);
          
      PlayerTextDrawBackgroundColor(playeridSPORT[1][playerid], -5570816);
          
      PlayerTextDrawFont(playeridSPORT[1][playerid], 5);
          
      PlayerTextDrawSetSelectable(playeridSPORT[1][playerid], true);
          
      PlayerTextDrawSetPreviewModel(playeridSPORT[1][playerid], 19134);
          
      PlayerTextDrawSetPreviewRot(playeridSPORT[1][playerid], 0.00000090.00000090.0000001.000000);

          
      SPORT[2][playerid] = CreatePlayerTextDraw(playerid292.357238102.666664"LD_OTB2:butnA");
          
      PlayerTextDrawTextSize(playeridSPORT[2][playerid], 57.15960670.000007);
          
      PlayerTextDrawAlignment(playeridSPORT[2][playerid], 1);
          
      PlayerTextDrawColor(playeridSPORT[2][playerid], -1061109505);
          
      PlayerTextDrawUseBox(playeridSPORT[2][playerid], true);
          
      PlayerTextDrawBoxColor(playeridSPORT[2][playerid], -5570816);
          
      PlayerTextDrawSetShadow(playeridSPORT[2][playerid], 0);
          
      PlayerTextDrawSetOutline(playeridSPORT[2][playerid], 0);
          
      PlayerTextDrawBackgroundColor(playeridSPORT[2][playerid], -5570816);
          
      PlayerTextDrawFont(playeridSPORT[2][playerid], 5);
          
      PlayerTextDrawSetSelectable(playeridSPORT[2][playerid], true);
          
      PlayerTextDrawSetPreviewModel(playeridSPORT[2][playerid], 19134);
          
      PlayerTextDrawSetPreviewRot(playeridSPORT[2][playerid], 0.0000000.00000090.0000001.000000);

          
      SPORT[3][playerid] = CreatePlayerTextDraw(playerid294.762756331.166687"LD_OTB2:butnA");
          
      PlayerTextDrawTextSize(playeridSPORT[3][playerid], 57.15960670.000007);
          
      PlayerTextDrawAlignment(playeridSPORT[3][playerid], 1);
          
      PlayerTextDrawColor(playeridSPORT[3][playerid], -1061109505);
          
      PlayerTextDrawUseBox(playeridSPORT[3][playerid], true);
          
      PlayerTextDrawBoxColor(playeridSPORT[3][playerid], -5570816);
          
      PlayerTextDrawSetShadow(playeridSPORT[3][playerid], 0);
          
      PlayerTextDrawSetOutline(playeridSPORT[3][playerid], 0);
          
      PlayerTextDrawBackgroundColor(playeridSPORT[3][playerid], -5570816);
          
      PlayerTextDrawFont(playeridSPORT[3][playerid], 5);
          
      PlayerTextDrawSetSelectable(playeridSPORT[3][playerid], true);
          
      PlayerTextDrawSetPreviewModel(playeridSPORT[3][playerid], 19134);
          
      PlayerTextDrawSetPreviewRot(playeridSPORT[3][playerid], 180.0000000.00000090.0000001.000000);
          
          
      SPORT[4][playerid] = CreatePlayerTextDraw(playerid203.932647243.583343"LD_CHAT:thumbdn");
          
      PlayerTextDrawFont(playerid,SPORT[4][playerid], 4);
          
      PlayerTextDrawColor(playerid,SPORT[4][playerid], 0xFFFFFFFF);
          
      PlayerTextDrawTextSize(playerid,SPORT[4][playerid], 21.0,21.0);

          
      SPORT[5][playerid] = CreatePlayerTextDraw(playerid449.500274223.000045"LD_CHAT:thumbdn");
          
      PlayerTextDrawFont(playerid,SPORT[5][playerid], 4);
          
      PlayerTextDrawColor(playerid,SPORT[5][playerid], 0xFFFFFFFF);
          
      PlayerTextDrawTextSize(playerid,SPORT[5][playerid], 21.0,21.0);

          
      SPORT[6][playerid] = CreatePlayerTextDraw(playerid326.34207193.916687"LD_CHAT:thumbdn");
          
      PlayerTextDrawFont(playerid,SPORT[6][playerid], 4);
          
      PlayerTextDrawColor(playerid,SPORT[6][playerid], 0xFFFFFFFF);
          
      PlayerTextDrawTextSize(playerid,SPORT[6][playerid], 21.0,21.0);

          
      SPORT[7][playerid] = CreatePlayerTextDraw(playerid324.530639364.999664"LD_CHAT:thumbdn");
          
      PlayerTextDrawFont(playerid,SPORT[7][playerid], 4);
          
      PlayerTextDrawColor(playerid,SPORT[7][playerid], 0xFFFFFFFF);
          
      PlayerTextDrawTextSize(playerid,SPORT[7][playerid], 21.0,21.0);
          
          
      SPORT[8][playerid] = CreatePlayerTextDraw(playerid388.221160343.583221"TRUE KICK:");
          
      PlayerTextDrawLetterSize(playeridSPORT[8][playerid], 0.4682721.354999);
          
      PlayerTextDrawAlignment(playeridSPORT[8][playerid], 1);
          
      PlayerTextDrawColor(playeridSPORT[8][playerid], 8388863);
          
      PlayerTextDrawSetShadow(playeridSPORT[8][playerid], 0);
          
      PlayerTextDrawSetOutline(playeridSPORT[8][playerid], -1);
          
      PlayerTextDrawBackgroundColor(playeridSPORT[8][playerid], -1);
          
      PlayerTextDrawFont(playeridSPORT[8][playerid], 2);
          
      PlayerTextDrawSetProportional(playeridSPORT[8][playerid], 1);

          
      SPORT[9][playerid] = CreatePlayerTextDraw(playerid124.506652344.583190"FAIL KICK:");
          
      PlayerTextDrawLetterSize(playeridSPORT[9][playerid], 0.4682721.354999);
          
      PlayerTextDrawAlignment(playeridSPORT[9][playerid], 1);
          
      PlayerTextDrawColor(playeridSPORT[9][playerid], -16776961);
          
      PlayerTextDrawSetShadow(playeridSPORT[9][playerid], 0);
          
      PlayerTextDrawSetOutline(playeridSPORT[9][playerid], -1);
          
      PlayerTextDrawBackgroundColor(playeridSPORT[9][playerid], -1);
          
      PlayerTextDrawFont(playeridSPORT[9][playerid], 2);
          
      PlayerTextDrawSetProportional(playeridSPORT[9][playerid], 1);

          
      SPORT[10][playerid] = CreatePlayerTextDraw(playerid488.667755338.916564"1000");
          
      PlayerTextDrawLetterSize(playeridSPORT[10][playerid], 0.4710832.241667);
          
      PlayerTextDrawAlignment(playeridSPORT[10][playerid], 1);
          
      PlayerTextDrawColor(playeridSPORT[10][playerid], -1);
          
      PlayerTextDrawSetShadow(playeridSPORT[10][playerid], 0);
          
      PlayerTextDrawSetOutline(playeridSPORT[10][playerid], 1);
          
      PlayerTextDrawBackgroundColor(playeridSPORT[10][playerid], 51);
          
      PlayerTextDrawFont(playeridSPORT[10][playerid], 2);
          
      PlayerTextDrawSetProportional(playeridSPORT[10][playerid], 1);

          
      SPORT[11][playerid] = CreatePlayerTextDraw(playerid217.925430339.916595"1000");
          
      PlayerTextDrawLetterSize(playeridSPORT[11][playerid], 0.4710832.241667);
          
      PlayerTextDrawAlignment(playeridSPORT[11][playerid], 1);
          
      PlayerTextDrawColor(playeridSPORT[11][playerid], -1);
          
      PlayerTextDrawSetShadow(playeridSPORT[11][playerid], 0);
          
      PlayerTextDrawSetOutline(playeridSPORT[11][playerid], 1);
          
      PlayerTextDrawBackgroundColor(playeridSPORT[11][playerid], 51);
          
      PlayerTextDrawFont(playeridSPORT[11][playerid], 2);
          
      PlayerTextDrawSetProportional(playeridSPORT[11][playerid], 1);
          
          
      SPORT[12][playerid] = CreatePlayerTextDraw(playerid293.762939406.000122"Exit");
          
      PlayerTextDrawLetterSize(playeridSPORT[12][playerid], 0.8955633.332499);
          
      PlayerTextDrawAlignment(playeridSPORT[12][playerid], 1);
          
      PlayerTextDrawColor(playeridSPORT[12][playerid], -16776961);
          
      PlayerTextDrawUseBox(playeridSPORT[12][playerid], true);
          
      PlayerTextDrawBoxColor(playeridSPORT[12][playerid], 0);
          
      PlayerTextDrawSetShadow(playeridSPORT[12][playerid], 0);
          
      PlayerTextDrawSetOutline(playeridSPORT[12][playerid], 1);
          
      PlayerTextDrawBackgroundColor(playeridSPORT[12][playerid], -1);
          
      PlayerTextDrawFont(playeridSPORT[12][playerid], 0);
          
      PlayerTextDrawSetProportional(playeridSPORT[12][playerid], 1);
          
      PlayerTextDrawSetSelectable(playeridSPORT[12][playerid], true); 

    • Далее в public OnGameModeInit добавим следующие строки:

      PHP код:
          sporttimer SetTimer("STimer"1000,1);
          
      boxeract CreateActor(80761.7173,10.1372,1001.1639,39.4434);
          
      ApplyActorAnimation(boxeract"PED""FIGHTIDLE"4.110000);
          
      sportzal[0] = CreatePickup(1318,23,2229.7566,-1721.5988,13.5646);
          
      sportzal[1] = CreatePickup(1318,23,772.4290,-5.0806,1000.7289); 
      SetTimer - приводим в действие наш таймер. Он нам понадобится для обновления коллбэка "STimer" каждую секунду.
      CreateActor - Добавляем в интерьер спортзала статического бота со скином 80 (боксер).
      ApplyActorAnimation - ставим нашего бота боксера в "боевую" стойку.
      CreatePickup создаём пикапы входа/выхода в наш спортзал.



    • Добавим в public OnPlayerPickUpPickup(playerid, pickupid) следующие:
      PHP код:
          if(pickupid == sportzal[0])
          {
              
      SetPlayerInterior(playerid,5);
              
      SetPlayerPos(playerid,771.4412,-2.7885,1000.7279);
              
      SetPlayerFacingAngle(playerid21.2131);
              
      SetPlayerCheckpoint(playerid766.7979,11.3237,1000.70610.5);
               
      CP_FIGHT[playerid] = true;
          }
          else if(
      pickupid == sportzal[1])
          {
              
      SetPlayerInterior(playerid,0);
              
      SetPlayerPos(playerid,2227.1162,-1723.1353,13.5533);
              
      SetPlayerFacingAngle(playerid130.5909);
              
      SetPlayerFightingStyle (playeridFIGHT_STYLE_NORMAL);
              
      DisablePlayerCheckpoint(playerid);
              
      CP_FIGHT[playerid] = false;
          } 
      SetPlayerInterior - меняет id интерьера для игрока который стал на пикап.
      SetPlayerPos - меняет позицию игрока, который стал на пикап.
      SetPlayerFacingAngle - меняет угол поворота камеры игрока, который стал на пикап.
      SetPlayerCheckpoint - создаём чекпоинт для начала тренировки.
      CP_FIGHT[playerid] = true; - присваиваем значение "1"(true) игроку. Для того что бы коллбэк OnPlayerEnterCheckpoint понял на какой чекпоинт мы стали.
      DisablePlayerCheckpoint - удаляем созданный чекпоинт при выходе из интерьера.


    • Добавим в public OnPlayerEnterCheckpoint(playerid) следующие:

      PHP код:
          if(CP_FIGHT[playerid])
          {
              
      TogglePlayerControllable(playerid,0);
              
      SetPlayerCameraPos(playerid758.8285,12.9258,1002.1639);
              
      SetPlayerCameraLookAt(playerid761.7173,10.1372,1002.1639);
              
      SetPVarInt(playerid"FIGHT"1); //
              
      SetPVarInt(playerid"TRUE_F"0);
              
      SetPVarInt(playerid"FAIL_F"0);
              for(new 
      t!= 4t++) PlayerTextDrawShow(playeridSPORT[t][playerid]);
              for(new 
      8!= 13n++) PlayerTextDrawShow(playeridSPORT[n][playerid]);
              
      SelectTextDraw(playerid0xFF4040AA);
              
      DisablePlayerCheckpoint(playerid);
              
      RandomText(playerid);
          } 
      TogglePlayerControllable - при использовании значения "0" замораживает игрока на месте.
      SetPlayerCameraPos - Меняем позицию нашей камеры.
      SetPlayerCameraLookAt - Делаем так что бы камера смотрела на бота боксера.
      SetPVarInt - Создадим несколько свободных переменных, которые понадобятся нам в дальнейшем и присвоим им стартовые значения.
      for(new t; t != 4; t++) & for(new n = 8; n != 13; n++) - Циклы которые помогут нам отобразить наши уже созданные ранее текстдравы.
      SelectTextDraw - Сделаем наши текстдравы кликабельными(что бы мы могли на них нажать).
      DisablePlayerCheckpoint - Удалим наш чекпоинт.
      RandomText - Запустим коллбэк отображения рандомного текстдрава ( данный текстдрав будет указывать игроку куда нужно кликать для прокачки скилла).


    • Добавим наш коллбэк "STime" где-то в конец мода:
      PHP код:
      forward STimer(playerid);
      public 
      STimer(playerid)
      {
          if(
      GetPVarInt(playerid"FIGHT") == 1// Проверка на то, что бой начат
          
      {
              switch(
      GetPVarInt(playerid"FIGHT_1"))
              {
              case 
      3:
                  {
                      
      SetPVarInt(playerid"FIGHT_1"GetPVarInt(playerid"FIGHT_1")-1);
                  }
              case 
      2:
                  {
                      
      SetPVarInt(playerid"FIGHT_1"GetPVarInt(playerid"FIGHT_1")-1);
                  }
              case 
      1:
                  {
                      
      SetPVarInt(playerid"FIGHT_1"GetPVarInt(playerid"FIGHT_1")-1);
                      
      PlayerTextDrawHide(playeridSPORT[4][playerid]);
                      
      DeletePVar(playerid"FIGHT_1");
                      
      RandomText(playerid);
                  }
              }
              switch(
      GetPVarInt(playerid"FIGHT_2"))
              {
              case 
      3:
                  {
                      
      SetPVarInt(playerid"FIGHT_2"GetPVarInt(playerid"FIGHT_2")-1);
                  }
              case 
      2:
                  {
                      
      SetPVarInt(playerid"FIGHT_2"GetPVarInt(playerid"FIGHT_2")-1);
                  }
              case 
      1:
                  {
                      
      SetPVarInt(playerid"FIGHT_2"GetPVarInt(playerid"FIGHT_2")-1);
                      
      PlayerTextDrawHide(playeridSPORT[5][playerid]);
                      
      DeletePVar(playerid"FIGHT_2");
                      
      RandomText(playerid);
                  }
              }
              switch(
      GetPVarInt(playerid"FIGHT_3"))
              {
              case 
      3:
                  {
                      
      SetPVarInt(playerid"FIGHT_3"GetPVarInt(playerid"FIGHT_3")-1);
                  }
              case 
      2:
                  {
                      
      SetPVarInt(playerid"FIGHT_3"GetPVarInt(playerid"FIGHT_3")-1);
                  }
              case 
      1:
                  {
                      
      SetPVarInt(playerid"FIGHT_3"GetPVarInt(playerid"FIGHT_3")-1);
                      
      PlayerTextDrawHide(playeridSPORT[6][playerid]);
                      
      DeletePVar(playerid"FIGHT_3");
                      
      RandomText(playerid);
                  }
              }
              switch(
      GetPVarInt(playerid"FIGHT_4"))
              {
              case 
      3:
                  {
                      
      SetPVarInt(playerid"FIGHT_4"GetPVarInt(playerid"FIGHT_4")-1);
                  }
              case 
      2:
                  {
                      
      SetPVarInt(playerid"FIGHT_4"GetPVarInt(playerid"FIGHT_4")-1);
                  }
              case 
      1:
                  {
                      
      SetPVarInt(playerid"FIGHT_4"GetPVarInt(playerid"FIGHT_4")-1);
                      
      PlayerTextDrawHide(playeridSPORT[7][playerid]);
                      
      DeletePVar(playerid"FIGHT_4");
                      
      RandomText(playerid);
                  }
              }
          }

      GetPVarInt - используется что бы вытянуть значение из нашего PVara.
      SetPVarInt - здесь мы с помощью него отнимаем у переменной "1" единицу.
      PlayerTextDrawHide - скрываем наш текстдрав (делается это, когда значение наших PVar'ов достигает "0").
      DeletePVar - удаляем наш PVar для определённого игрока (делается это, когда значение наших PVar'ов достигает "0").
      RandomText - Перезапуск нашего рандомного текстдрава (делается это, когда значение наших PVar'ов достигает "0").


    • Добавим наш коллбэк рандомного текста:
      PHP код:
      stock RandomText(playerid)
      {
          switch(
      random(4))
          {
              case 
      0:
              {
                  
      PlayerTextDrawShow(playeridSPORT[4][playerid]);
                  
      SetPVarInt(playerid"FIGHT_1"3);
              }
              case 
      1:
              {
                  
      PlayerTextDrawShow(playeridSPORT[5][playerid]);
                  
      SetPVarInt(playerid"FIGHT_2"3);
              }
              case 
      2:
              {
                  
      PlayerTextDrawShow(playeridSPORT[6][playerid]);
                  
      SetPVarInt(playerid"FIGHT_3"3);
              }
              case 
      3:
              {
                  
      PlayerTextDrawShow(playeridSPORT[7][playerid]);
                  
      SetPVarInt(playerid"FIGHT_4"3);
              }
          }

      random(4) - функция рандома из 4-ёх значений.
      PlayerTextDrawShow - Отображаем текстдрав.
      SetPVarInt - устанавливаем значение для наших PVar'ов на "3". (3 в этом случае - секунды).


    • Добавим функцию подсчёта кликов:
      PHP код:
          if(playertextid == SPORT[0][playerid]) // Left
          
      {
              if(
      GetPVarInt(playerid"FIGHT_1")) SetPVarInt(playerid"TRUE_F"GetPVarInt(playerid"TRUE_F")+1), GameTextForPlayer(playerid"~g~True"1006);// Подсчёт верных кликов и вывод сообщения на экран в виде "True" 
              
      else
              {
                  
      GameTextForPlayer(playerid"~r~FAIL"1006); // Вывод сообщения при неверном клике "Fail" 
                  
      PlayerTextDrawHide(playeridSPORT[4][playerid]); // Удаление текстдрава
                  
      SetPVarInt(playerid"FAIL_F"GetPVarInt(playerid"FAIL_F")+1); // Добавляем к неверным ударам +1
                  
      DeletePVar(playerid"FIGHT_1"); // Удаляем PVar
                  
      RandomText(playerid); // Запускаем наш коллбэк рандомного отображения текстдравов
              
      }
              new 
      str[7]; // выделяем память для отображения ударов в текстдраве
              
      format(strsizeof(str), "~g~%d"GetPVarInt(playerid"TRUE_F")); // форматируем текст для отображения в текстдраве
              
      PlayerTextDrawSetString(playeridSPORT[10][playerid], str); // Отображаем текст в текстдраве.
              
      format(strsizeof(str), "~g~%d"GetPVarInt(playerid"FAIL_F"));
              
      PlayerTextDrawSetString(playeridSPORT[11][playerid], str);
          }
          else if(
      playertextid == SPORT[1][playerid]) // Right
          
      {
              if(
      GetPVarInt(playerid"FIGHT_2")) SetPVarInt(playerid"TRUE_F"GetPVarInt(playerid"TRUE_F")+1), GameTextForPlayer(playerid"~g~True"1006);
              else
              {
                  
      GameTextForPlayer(playerid"~r~FAIL"1006);
                  
      PlayerTextDrawHide(playeridSPORT[5][playerid]);
                  
      SetPVarInt(playerid"FAIL_F"GetPVarInt(playerid"FAIL_F")+1);
                  
      DeletePVar(playerid"FIGHT_2");
                  
      RandomText(playerid);
              }
              new 
      str[7];
              
      format(strsizeof(str), "~g~%d"GetPVarInt(playerid"TRUE_F"));
              
      PlayerTextDrawSetString(playeridSPORT[10][playerid], str);
              
      format(strsizeof(str), "~g~%d"GetPVarInt(playerid"FAIL_F"));
              
      PlayerTextDrawSetString(playeridSPORT[11][playerid], str);
          }
          else if(
      playertextid == SPORT[2][playerid]) // Up
          
      {
              if(
      GetPVarInt(playerid"FIGHT_3")) SetPVarInt(playerid"TRUE_F"GetPVarInt(playerid"TRUE_F")+1), GameTextForPlayer(playerid"~g~True"1006);
              else
              {
                  
      GameTextForPlayer(playerid"~r~FAIL"1006);
                  
      PlayerTextDrawHide(playeridSPORT[6][playerid]);
                  
      SetPVarInt(playerid"FAIL_F"GetPVarInt(playerid"FAIL_F")+1);
                  
      DeletePVar(playerid"FIGHT_3");
                  
      RandomText(playerid);
              }
              new 
      str[7];
              
      format(strsizeof(str), "~g~%d"GetPVarInt(playerid"TRUE_F"));
              
      PlayerTextDrawSetString(playeridSPORT[10][playerid], str);
              
      format(strsizeof(str), "~g~%d"GetPVarInt(playerid"FAIL_F"));
              
      PlayerTextDrawSetString(playeridSPORT[11][playerid], str);
          }
          else if(
      playertextid == SPORT[3][playerid]) // Down
          
      {
              if(
      GetPVarInt(playerid"FIGHT_4")) SetPVarInt(playerid"TRUE_F"GetPVarInt(playerid"TRUE_F")+1), GameTextForPlayer(playerid"~g~True"1006);
              else
              {
                  
      GameTextForPlayer(playerid"~r~FAIL"1006);
                  
      PlayerTextDrawHide(playeridSPORT[5][playerid]);
                  
      SetPVarInt(playerid"FAIL_F"GetPVarInt(playerid"FAIL_F")+1);
                  
      DeletePVar(playerid"FIGHT_2");
                  
      RandomText(playerid);
              }
              new 
      str[7];
              
      format(strsizeof(str), "~g~%d"GetPVarInt(playerid"TRUE_F"));
              
      PlayerTextDrawSetString(playeridSPORT[10][playerid], str);
              
      format(strsizeof(str), "~g~%d"GetPVarInt(playerid"FAIL_F"));
              
      PlayerTextDrawSetString(playeridSPORT[11][playerid], str);
          }
          else if(
      playertextid == SPORT[12][playerid])
          {
              if(
      GetPVarInt(playerid"FIGHT") != 0)
              {
                  
      DeletePVar(playerid"FIGHT");  // Удаляем PVar
                  
      DeletePVar(playerid"FIGHT_1"); // Удаляем PVar
                  
      DeletePVar(playerid"FIGHT_2"); // Удаляем PVar
                  
      DeletePVar(playerid"FIGHT_3"); // Удаляем PVar
                  
      DeletePVar(playerid"FIGHT_4"); // Удаляем PVar
                  
      SetPlayerPos(playerid,771.4412,-2.7885,1000.7279); // Устанавливаем позицию игрока при выходе с тренировки
                  
      SetPlayerFacingAngle(playerid21.2131); // Поворот камеры.
                  
      TogglePlayerControllable(playerid1); // Размораживаем игрока
                  
      for(new x!= 13x++) PlayerTextDrawHide(playeridSPORT[x][playerid]); // Удаляем все текстдравы
                  
      SetCameraBehindPlayer(playerid); // Возвращаем камеру игроку
                  
      CancelSelectTextDraw(playerid); // Удаляем кликабельность (убираем курсор).
              
      }
          } 

    • В public OnPlayerDisconnect(playerid)
      PHP код:
      for(new x!= 13x++) PlayerTextDrawHide(playeridSPORT[x][playerid]); // Удаляем все текстдравы для playerid (если он вылетел/вышел с игры). 

    • В public OnGameModeExit()
      PHP код:
      KillTimer(sporttimer); 


      Ну вот и всё, наша система готова. Вам осталось добавить функционал прокачки боя и сохранение стиля боя в Вашу базу данных.

       Скриншоты







  2. #2
    Аватар для Иван Бубнов
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.12.2015
    Сообщений
    157
    Репутация:
    8 ±
    Код не ахти

  3. #3
    Аватар для arzumanov
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.10.2015
    Сообщений
    3
    Репутация:
    0 ±
    Цитата Сообщение от Иван Бубнов Посмотреть сообщение
    Код не ахти
    Ну так объясни ему, что именно тебе не нравится

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •