PDA

Просмотр полной версии : [Вопрос] Некорректно работает OnPlayerKeyStateChange



DmitriyVasilev
14.02.2019, 17:20
Здравствуйте, плохо работает OnPlayerKeyStateChange
Например
if(newkeys == KEY_SECONDARY_ATTACK)
{
if(IsAFoods(playerid))
{
ClearAnimations(playerid, 1);
SendClientMessage(playerid,COLOR_RED, !"Автомат сломан");
return 1;
}
}
вот тут он не должен дать анимации кидания монетки в автомат(те которые стандартные в гташки и звук проигрываться не должен
а здесь же он как-то успевает анимацию быстро запустить но срабатывает ClearAnimations и звук как - то появляется.

Вот еще:
if(newkeys == KEY_SECONDARY_ATTACK)
{
if(IsABank(playerid))
{
ShowPlayerDialog(playerid,9666,DIALOG_STYLE_LIST, "Банк", "[0] Пополнить счет\n[1] Снять со счета\n[2] Сделать перевод\n[3] Баланс\n[4] Оплатить квартплату", "Выбрать", "Назад");
}
}
а вот здесь вообще срабатывает когда как с 3-2 иногда только с 1 раза и когда вылазит диалог он дважды нажимается(те как я открыл диалог сразу открылось меню пополнения счета, а не начальное. В других модах все нормально, только здесь что-то не так.
Помогите, с чем это может быть связано.

DeimoS
15.02.2019, 12:57
Касаемо первого: так анимация проигрывается на стороне клиента, а не сервером. Естественно такой код не поможет избавиться от проблемы, ибо сначала информация о нажатие кнопки должна прийти на сервер, обработаться им, а после сервер должен отправить ClearAnimation игроку. Чем больше пинг, тем больше будет задержка между проигрыванием анимации игрой и срабатыванием ClearAnimation.
Просто удали все автоматы через RemoveBuildingForPlayer, создай на их месте серверный аналог (в интернете можешь поискать готовый код для этого) и анимации уже не будет. Соответственно, твой код заработает так, как тебе надо.

Касаемо второго: последний раз, когда такая проблема всплывала у какого-то пользователя, проблема была то ли в GTA, то ли в каких-то клео/модах. В общем, тогда переустановка GTA помогла решить проблему.
Это точно не проблема OnPlayerKeyStateChange, ибо сервер отправляет вполне конкретную информацию игроку и она не может вдруг подмениться волшебным образом.

DmitriyVasilev
16.02.2019, 22:07
на других серверах все диалоги нормально работают.
мне должно вылезти меню выбора но при нажатии выбирает автоматически 1-й пункт.

DeimoS
17.02.2019, 19:18
Ну в SA-MP нет возможности как-то автоматически выбирать тот или иной пункт за игрока. Только показать новый диалог.
Если такое не только у тебя, то, собственно, проверяй, не открываешь ли ты пункт того диалога где-то, где не должен