Вопросы

KlasterK
Освоившийся

Когда игрок впервые респавнится, его выкидывает в выбор класса, хотя я везде проставил TogglePlayerSpectating. После того, как он заспавнится, у него сбрасывается админка(SetPlayerTeam) и несколько переменных(PVar). После этого игрок нормально респавнится с сохранением всех параметров. Но когда игрок делает смену класса через F4 игрок зависает и показывается надпись Loading...

Доп вопрос: что быстрее работает, PVar или Enum?

 

  открыть спойлер
  открыть спойлер

 

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


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

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

  • 0
Cawfee
Великий Гуру
  В 8/22/2023 в 08:19, KlasterK сказал:

что быстрее работает, PVar или Enum

Читать далее...  

Работа с переменными всегда быстрее, чем с нативными функциями, которые, вдобавок, под капотом скрывают ассоциативный массив.

 

  В 8/22/2023 в 08:19, KlasterK сказал:

public OnPlayerSpawn(playerid)
{
    SetPlayerPos(playerid, spawn[0], spawn[1], spawn[2]);

}

Читать далее...  

Это неправильный подход. Перед тем, как возрождать игрока посредством spawnPlayer (либо неявными путями), вы должны установить параметры этого возрождения, используя SetSpawnInfo

 

  В 8/22/2023 в 08:19, KlasterK сказал:

игрок зависает и показывается надпись Loading

Читать далее...  

Есть такой косяк у игры, что описанная ситуация возникает при ряде обстоятельств. Чаще всего помогает добавление класса по умолчанию. Если в OnGameModeInit нет вызова следующей функции, добавьте. Понятия не имею, почему это происходит и как это работает, но обычно помогает. А вообще процесс входа в игру и возрождения полон чудес...

AddPlayerClass(00.00.00.00.0000000);

 

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


Ссылка на сообщение
  • 0
KlasterK
Освоившийся

@Cawfee 

Оказалось, что в проблеме с PVar оказался mxINI, не знаю как так получилось. Теперь при нажатии F4 появляется насыщенность и кнопки << >> Spawn. При нажатии последней, игрок нормально спавнится. Проблему с админкой буду решать, используя PVar.

 

Еще вопрос есть: когда я ввожу строку, то компилятор ругается на Input line too long. Я этого избегаю, используя массив, а потом загружаю его в обычную строку в OnGameModeInit. Можно ли как-то удалить этот массив строк?  Есть другие способы?

#define Load(%0for(new i; i < sizeof _%0; i++) strcat(%0, _%0[i])

static const _problem_stroka[][] =
{
    "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n",
    "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb\n",
    "ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc\n"
}
static problem_stroka;

public OnGameModeInit()
{
    Load(problem_stroka);
}

CMD:stroka(playerid, params[])
{
    return ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, "Problem Stroka", problem_stroka, "X""X");
}

 

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


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@KlasterK, у стандартного компилятора есть лимит на длину строки. Используйте компилятор от Zeex, где этот лимит увеличен. И тогда сможете писать следующим образом:

static const TOO_LONG_TEXT[] = !"\
    П Е Р В А Я  С Т Р О К А  С Л И Ш К О М  Д Л И Н Н О Г О  М А С С И В А  Т Е К С Т А\
    В Т О Р А Я  С Т Р О К А  С Л И Ш К О М  Д Л И Н Н О Г О  М А С С И В А  Т Е К С Т А\
    Т Р Е Т Ь Я  С Т Р О К А  С Л И Ш К О М  Д Л И Н Н О Г О  М А С С И В А  Т Е К С Т А\
\
    П Е Р В А Я  С Т Р О К А  С Л И Ш К О М  Д Л И Н Н О Г О  М А С С И В А  Т Е К С Т А\
    В Т О Р А Я  С Т Р О К А  С Л И Ш К О М  Д Л И Н Н О Г О  М А С С И В А  Т Е К С Т А\
    Т Р Е Т Ь Я  С Т Р О К А  С Л И Ш К О М  Д Л И Н Н О Г О  М А С С И В А  Т Е К С Т А\
\
    П Е Р В А Я  С Т Р О К А  С Л И Ш К О М  Д Л И Н Н О Г О  М А С С И В А  Т Е К С Т А\
    В Т О Р А Я  С Т Р О К А  С Л И Ш К О М  Д Л И Н Н О Г О  М А С С И В А  Т Е К С Т А\
    Т Р Е Т Ь Я  С Т Р О К А  С Л И Ш К О М  Д Л И Н Н О Г О  М А С С И В А  Т Е К С Т А\
";

 

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


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

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

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