Вопросы

Приветствую всех. При написании сдачи на права, после того, как сажусь в авто, ничего не происходит. Метка "гонки" не появляется. Также появляются варнинги в паблике OnPlayerEnterRace, в этой строке: SdachaCar[playerid] = SDACHA_CHECKPOINT_1;
.Заранее за помощь огромное спасибо.
OnPlayerKeyStateChange:

 

if(newcar >=LicCar[0] && newcar <=LicCar[10])
 {
      if(Player[playerid][pCarlic] == 0 && SdachaPrav[playerid] == 1)
         {
                SdachaCar[playerid] = SDACHA_CHECKPOINT_1;
                SetPlayerRaceCheckpoint(playerid, 0, 1268.5393,-1336.6180,13.0590, 1266.3180,-1285.5385,13.0454,  10.0);
                SCM(playerid, COLOR_WHITE, "Следуйте по красным меткам.");
         }
    }

 

OnPlayerEnterRace:

 

new string[256];
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
  if(SdachaCar[playerid] == 1)
  {
    switch(SdachaCar[playerid])
    {
      case SDACHA_CHECKPOINT_1:
        {
          pSdachaCar[playerid] = SDACHA_CHECKPOINT_2;
          SetPlayerRaceCheckpoint(playerid, 0, 1266.3180,-1285.5385,13.0454, 1295.4679,-1284.0054,13.1099, 5.0);
        }
      case SDACHA_CHECKPOINT_2:
        {
          pSdachaCar[playerid] = SDACHA_CHECKPOINT_3;
          SetPlayerRaceCheckpoint(playerid, 0, 295.4679,-1284.0054,13.1099,  1338.1318,-1287.9012,13.1374, 5.0);
        }

    }
}

 

Отредактировано пользователем odosenok

Заметка от Cawfee , создано

3.2. Код больше 10 строк необходимо брать в теги "Код" и "Спойлер". Как это сделать рассказано в разделе "FAQ".

Устное предупреждение.

Поделиться сообщением


Ссылка на сообщение

11 ответов на этот вопрос

  • 0

@yan2348 либо Player[playerid][pCarlic] равна 1, либо SdachaPrav[playerid] равна 0. Напиши команду, которая выводит эти значения и смотри, что не так

Поделиться сообщением


Ссылка на сообщение
  • 0

@yan2348, а какие предупреждения кидает компилятор?

Поделиться сообщением


Ссылка на сообщение
  • 0

@yan2348, покажите, как объявлены переменные SDACHA_CHECKPOINT_1 и SdachaCar.

Поделиться сообщением


Ссылка на сообщение
  • 0

Странно как-то. Ты переменной "SdachaCar[playerid]" приравниваешь "SDACHA_CHECKPOINT_1", потом проверяешь, равна ли эта переменная 1, потом через switch работаешь со значением этой переменной, не с числом, а с дефайном или, что это у тебя.

Начнём давай с другого, текст "Следуйте по красным меткам." выводится в чате?

Поделиться сообщением


Ссылка на сообщение
  • 0

@SCRIPTMAN там две разные переменные. 

 if(SdachaCar[playerid] == 1)
pSdachaCar[playerid] = SDACHA_CHECKPOINT_2;

@yan2348 

Решение тут думаю вот такое: 

switch(SdachaCar[playerid])// Проверять не эту переменную, а
switch(pSdachaCar[playerid])//Вот эту. - Верное

И тобишь, как я понимаю в OnPlayerKeyStateChange: будет вот так:

pSdachaCar[playerid] = SDACHA_CHECKPOINT_1;

 

Отредактировано пользователем Nekit_Krut18
Причина: Подправил.

Поделиться сообщением


Ссылка на сообщение
  • 0

@odosenok В диалоге на согласие на сдачу приравниваю к 1-му, после нажатия на "Да", чекпоинты SDACHA_CHECKPOINT_1 и т.д в enum'e

@Nekit_Krut18 Не изменилось, так и чекпоинты не появляются
@SCRIPTMAN Текст не выводится в чате

Поделиться сообщением


Ссылка на сообщение
  • 0

@yan2348 Попробуйте поставить в коде маячки: 

printf("DEBUG - 1");
printf("DEBUG - 2");
printf("DEBUG - 3");

И отслеживать какой код выполняется, какой нет.

Поделиться сообщением


Ссылка на сообщение
  • 0

@Nekit_Krut18 Вставил маячки, консоль сервера - 0 реакции, в любую часть кода засовывал, также в консоли ничего.

Поделиться сообщением


Ссылка на сообщение
  • 0

Замени код на этот и проследи, будет ли что-то писать в чате. Видимо что-то не соответствует проверке.

if(newcar >=LicCar[0] && newcar <=LicCar[10])
 {
      if(Player[playerid][pCarlic] == 0 && SdachaPrav[playerid] == 1)
         {
                SdachaCar[playerid] = SDACHA_CHECKPOINT_1;
                SetPlayerRaceCheckpoint(playerid, 0, 1268.5393,-1336.6180,13.0590, 1266.3180,-1285.5385,13.0454,  10.0);
                SCM(playerid, COLOR_WHITE, "Следуйте по красным меткам.");
         }
  	else return SendClientMessage(playerid, -1, "Косяк с проверкой внутри");
    }
else return SendClientMessage(playerid, -1, "Косяк с тачками");

Будет отталкиваться далее от текста, который выведет в чат

Поделиться сообщением


Ссылка на сообщение
  • 0

@SCRIPTMAN  Косяк в проверке, в тестовую команду всунул без проверки, метка гонки появилась. Что-то у меня не так с проверкой на лицензию и сдачу авто

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • sergeenko
      От sergeenko
      Если писать просто команду /a, то выдаёт /a [текст]
      А если написать какой-то текст то ничего не просиходит
      Код:
       
      stock SendAdminMessage(color, text[]) {     foreach(new i: Player)     {         if(PI[i][data_CADMIN] != 1||PI[i][data_ADMLVL] >= 1)         {              SendClientMessage(i, color, text);         }     }     return 1; } Команда: CMD:a(playerid, params[]) {     if(PI[playerid][data_ADMLVL] > 1)     {         new text[90];         if(sscanf(params, "s[90]", text))             return SendClientMessage(playerid, CG, "Используйте /a [текст]");         if(antiflood[playerid] > 0)              return SendClientMessage(playerid, COLOR_BLACK,"Пожалуйста, подождите пару секунд...");         antiflood[playerid]++;         if(PI[playerid][data_LOGGED] == false)              return SendClientMessage(playerid, CG, "Вы не авторизированы. Пожалуйста авторизируйтесь.");         new string[19 + (20 + (-2) + 1 + (-2)) + (MAX_PLAYER_NAME + (-2) + 3 + (-2)) + 90];         format(string, sizeof(string), "[%s #%i] %s[%i]: %s", GSName[PI[playerid][data_ADMLVL]], PI[playerid][ADMINSNUMBER], PI[playerid][data_NAME], playerid, text);         return SendAdminMessage(COLOR_BLUE, string);     }     return 1;    }