Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 64 из 133 ПерваяПервая ... 14 54 62 63 64 65 66 74 114 ... ПоследняяПоследняя
Показано с 631 по 640 из 1325
  1. #631
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от qwezert Посмотреть сообщение
    В общем, незнаю почему - но у меня функция GetPlayerPos просто тупо не хочет работать внутри перехвата SetPlayerPos. Ты стандартным компилятором пользуешься?
    А причём тут компилятор вообще? И в каких ситуациях не работает?
    Надеюсь не в OnPlayerRequestClass или OnPlayerDisconnect, о которых написано тут?
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  2. #632
    Аватар для qwezert
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.06.2016
    Адрес
    Одесса, Украина
    Сообщений
    281
    Репутация:
    51 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    А причём тут компилятор вообще? И в каких ситуациях не работает?
    Надеюсь не в OnPlayerRequestClass или OnPlayerDisconnect, о которых написано тут?
    Нет, не в этих. Я делаю перехват SetPlayerPos:
    PHP код:
    new Float:plOldPos[MAX_PLAYERS][3];
    new 
    Float:plPrevPos[MAX_PLAYERS][3];
    stock ac_SetPlayerPos(playeridFloat:xFloat:yFloat:z)
    {
        
    GetPlayerPos(playeridplPrevPos[playerid][0], plPrevPos[playerid][1], plPrevPos[playerid][2]);
        
    plOldPos[playerid][0] = x;
        
    plOldPos[playerid][1] = y;
        
    plOldPos[playerid][2] = z;
        return 
    SetPlayerPos(playerid,x,y,z);
    }
    #if defined _ALS_SetPlayerPos
        #undef SetPlayerPos
    #else
        #define _ALS_SetPlayerPos
    #endif
    #define SetPlayerPos ac_SetPlayerPos 
    И пытаюсь получить предыдущую позицию игрока через GetPlayerPos(эту функцию я заранее не перехватывал, она нативная)
    Но в переменных лежат 0.0000.
    Сам SetPlayerPos я вызываю уже когда игрок заспавнен - телепортируюсь с помощью команды.
    Насчет компилятора я спросил - потому что слышал что в стандартном есть некие баги)

  3. #633
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Уверен, что перехват находится выше твоих SetPlayerPos?
    Покажи как выводишь данные.

     #У_меня_всё_нормально
      Открыть/закрыть

      Открыть/закрыть
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  4. #634
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от qwezert Посмотреть сообщение
    В общем, незнаю почему - но у меня функция GetPlayerPos просто тупо не хочет работать внутри перехвата SetPlayerPos. Ты стандартным компилятором пользуешься?
    Что значит не хочет?

  5. #635
    Аватар для qwezert
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.06.2016
    Адрес
    Одесса, Украина
    Сообщений
    281
    Репутация:
    51 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Уверен, что перехват находится выше твоих SetPlayerPos?
    Покажи как выводишь данные.

     #У_меня_всё_нормально
      Открыть/закрыть

      Открыть/закрыть
    Перехват находится точно раньше, после обьявления переменных сразу.
    У меня тут происходит какая -то дичь. Я ничего не менял, вывод в консоль была, я добавил формат - и о чудо - все заработало. Данные стали приходить. Теперь у меня что то странное, из за формата - не успевали сохранятся новые координаты в переменные отвечающие за старую позицию.
     #ВОТ

    Формат я закоментил и оставил только принтф - и вот что в консоле после телепорта. Опять не успели сохранится новые координаты
     #ВОТ


    - - - Добавлено - - -

    Тьфу блин, нафига я вывод делаю прямо в перехвате, я понял в чем тут прикол.
    Только очень странно както заработало все, до того как я написал printf - гетпос возвращал тупо 0.

    - - - Добавлено - - -

    Очень странно, но даже вот так
      Открыть/закрыть

      Открыть/закрыть

      Открыть/закрыть

  6. #636
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Ну так а ты когда проверку делаешь? Не после самого первого спавна, надеюсь?
    Тебе нужно заспавнится и телепортироваться в какое-либо другое место с другими координатами.

    При первом спавне GetPlayerPos вернёт нули, ибо для сервера игрок ещё не находится где-либо (GetPlayerPos вызывается до SetPlayerPos => позиция не установлена, если не было SetSpawnInfo).
    А уже при последующих будут нормальные данные
    Последний раз редактировалось DeimoS; 06.01.2017 в 15:42.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  7. #637
    Аватар для qwezert
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.06.2016
    Адрес
    Одесса, Украина
    Сообщений
    281
    Репутация:
    51 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ну так а ты когда проверку делаешь? Не после самого первого спавна, надеюсь?
    Тебе нужно заспавнится и телепортироваться в какое-либо другое место с другими координатами.

    При первом спавне GetPlayerPos вернёт нули, ибо для сервера игрок ещё не находится где-либо (GetPlayerPos вызывается до SetPlayerPos => позиция не установлена, если не было SetSpawnInfo).
    А уже при последующих будут нормальные данные
    1-й спавн
      Открыть/закрыть

    Телепортируюсь на мэрию
      Открыть/закрыть

    Консоль
      Открыть/закрыть


    - - - Добавлено - - -

    Во время телепорта - подвисает игра иногда чуть больше, иногда чуть меньше(там дохрена маппинга, спецом это место выбрал). Бывает проскакивает варнинг даже когда на глаз подвисания не видно, но при этом в переменных старые значения.

    - - - Добавлено - - -

    Я думаю может пихнуть проверку для таких вот зависающих игроков что бы если oldPos и prevPos одинаковые - не проверять.

    - - - Добавлено - - -

    И да, у меня игрока сначало спавнит на 0 а потом SetPlayerPos телепортирует в нужное место. Поэтому даже первый спавн у меня уже идет с координатами.

  8. #638
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Зачем вообще проверять координаты при телепорте? Не проще ли указывать античиту на то, что несколько итераций подряд игрока трогать не нужно? Не думаю, что кто-то додумается в моменты подобных серверных перемещений телепортироваться с помощью чита. А если и додумается, то это не так просто будет.


    Цитата Сообщение от qwezert Посмотреть сообщение
    И да, у меня игрока сначало спавнит на 0 а потом SetPlayerPos телепортирует в нужное место. Поэтому даже первый спавн у меня уже идет с координатами.
    Тогда можно будет 2 раза заспавнится и после телепортироваться куда угодно, не?
    Ну или любым другим образом вызвать SetPlayerPos 2 раза на одних и тех же координатах.

    Гораздо проще разгрузить игрока при телепорте, подгружая маппинг вручную после телепортации с помощью функционала стримера

    - - - Добавлено - - -

    То бишь, при телепорте
    PHP код:
    Streamer_ToggleItemUpdate(playeridSTREAMER_TYPE_OBJECT0); 
    И там же таймер, в котором
    PHP код:
    Streamer_ToggleItemUpdate(playeridSTREAMER_TYPE_OBJECT1); 
    Это если я правильно помню назначение функции и имена макросов
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  9. #639
    Аватар для qwezert
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.06.2016
    Адрес
    Одесса, Украина
    Сообщений
    281
    Репутация:
    51 ±
    Насчет иммунитета на несколько иттераций - придется наверно делать, все равно у игроков компы разные, и при подгрузке даже в местах где маппинга нет - могут происходить зависания.

  10. #640
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от qwezert Посмотреть сообщение
    Насчет иммунитета на несколько иттераций - придется наверно делать, все равно у игроков компы разные, и при подгрузке даже в местах где маппинга нет - могут происходить зависания.
    Ну а кто виноват, что люди сидят с калькуляторов?
    Ориентируясь на таких игроков ты лишь даёшь возможность читерам обходить твой античит.
    С таким же успехом игрок сможет и секунд 5 подгружать маппинг, если ПК очень слабый.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

 

 
Страница 64 из 133 ПерваяПервая ... 14 54 62 63 64 65 66 74 114 ... ПоследняяПоследняя

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

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

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

Ваши права

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