А причём тут компилятор вообще? И в каких ситуациях не работает?
Надеюсь не в OnPlayerRequestClass или OnPlayerDisconnect, о которых написано тут?
А причём тут компилятор вообще? И в каких ситуациях не работает?
Надеюсь не в OnPlayerRequestClass или OnPlayerDisconnect, о которых написано тут?
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Нет, не в этих. Я делаю перехват SetPlayerPos:
И пытаюсь получить предыдущую позицию игрока через GetPlayerPos(эту функцию я заранее не перехватывал, она нативная)PHP код:
new Float:plOldPos[MAX_PLAYERS][3];
new Float:plPrevPos[MAX_PLAYERS][3];
stock ac_SetPlayerPos(playerid, Float:x, Float:y, Float:z)
{
GetPlayerPos(playerid, plPrevPos[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
Но в переменных лежат 0.0000.
Сам SetPlayerPos я вызываю уже когда игрок заспавнен - телепортируюсь с помощью команды.
Насчет компилятора я спросил - потому что слышал что в стандартном есть некие баги)
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Перехват находится точно раньше, после обьявления переменных сразу.
У меня тут происходит какая -то дичь. Я ничего не менял, вывод в консоль была, я добавил формат - и о чудо - все заработало. Данные стали приходить. Теперь у меня что то странное, из за формата - не успевали сохранятся новые координаты в переменные отвечающие за старую позицию.
Формат я закоментил и оставил только принтф - и вот что в консоле после телепорта. Опять не успели сохранится новые координаты
- - - Добавлено - - -
Тьфу блин, нафига я вывод делаю прямо в перехвате, я понял в чем тут прикол.
Только очень странно както заработало все, до того как я написал printf - гетпос возвращал тупо 0.
- - - Добавлено - - -
Очень странно, но даже вот так
Ну так а ты когда проверку делаешь? Не после самого первого спавна, надеюсь?
Тебе нужно заспавнится и телепортироваться в какое-либо другое место с другими координатами.
При первом спавне GetPlayerPos вернёт нули, ибо для сервера игрок ещё не находится где-либо (GetPlayerPos вызывается до SetPlayerPos => позиция не установлена, если не было SetSpawnInfo).
А уже при последующих будут нормальные данные
Последний раз редактировалось DeimoS; 06.01.2017 в 15:42.
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
1-й спавн
Телепортируюсь на мэрию
Консоль
- - - Добавлено - - -
Во время телепорта - подвисает игра иногда чуть больше, иногда чуть меньше(там дохрена маппинга, спецом это место выбрал). Бывает проскакивает варнинг даже когда на глаз подвисания не видно, но при этом в переменных старые значения.
- - - Добавлено - - -
Я думаю может пихнуть проверку для таких вот зависающих игроков что бы если oldPos и prevPos одинаковые - не проверять.
- - - Добавлено - - -
И да, у меня игрока сначало спавнит на 0 а потом SetPlayerPos телепортирует в нужное место. Поэтому даже первый спавн у меня уже идет с координатами.
Зачем вообще проверять координаты при телепорте? Не проще ли указывать античиту на то, что несколько итераций подряд игрока трогать не нужно? Не думаю, что кто-то додумается в моменты подобных серверных перемещений телепортироваться с помощью чита. А если и додумается, то это не так просто будет.
Тогда можно будет 2 раза заспавнится и после телепортироваться куда угодно, не?
Ну или любым другим образом вызвать SetPlayerPos 2 раза на одних и тех же координатах.
Гораздо проще разгрузить игрока при телепорте, подгружая маппинг вручную после телепортации с помощью функционала стримера
- - - Добавлено - - -
То бишь, при телепорте
И там же таймер, в которомPHP код:
Streamer_ToggleItemUpdate(playerid, STREAMER_TYPE_OBJECT, 0);
Это если я правильно помню назначение функции и имена макросовPHP код:
Streamer_ToggleItemUpdate(playerid, STREAMER_TYPE_OBJECT, 1);
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Насчет иммунитета на несколько иттераций - придется наверно делать, все равно у игроков компы разные, и при подгрузке даже в местах где маппинга нет - могут происходить зависания.
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Эту тему просматривают: 10 (пользователей: 0 , гостей: 10)