PDA

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



Skyline
06.01.2017, 00:30
Здравствуйте, подскажите, как будет лучше создать пикапы входа.
Отдельно создавать пикап как объект через CreatePickup и делать Телепорт в интерьер и наоборот через IsPlayerInRangeOfPoint.
Или же значение приравнивать к Пикапу и уже совершать действие в OnPlayerPickUpPickup

vovandolg
06.01.2017, 00:40
Ну как делают посмотри во всех модах
Создали пикап и записали его в глобальную переменную,
далее в каллбеке OnPlayerPickUpPickup уже сверяют(с глоб. переменной) на какой пикап наступил игрок,
а там далее и другие действия внутри проверок.

Skyline
06.01.2017, 00:59
Ну как делают посмотри во всех модах
Создали пикап и записали его в глобальную переменную,
далее в каллбеке OnPlayerPickUpPickup уже сверяют(с глоб. переменной) на какой пикап наступил игрок,
а там далее и другие действия внутри проверок.

Это понятно, просто не знаю что лучше...
Есть вариант например создать массив

Lspd_pickup[6];

if(pickupid == Lspd_pickup[0])
{
SetPlayerPos(playerid, 246.7689,65.2401,1003.6406);
SetPlayerInterior(playerid, 6);
SetPlayerFacingAngle(playerid, 0.0);
SetCameraBehindPlayer(playerid);
PlayerInfo[playerid][pInt] = 6;
SetPlayerVirtualWorld(playerid,1);
}
if(pickupid == Lspd_pickup[1])
{
SetPlayerPos(playerid, 1552.5708,-1675.5957,16.1953);
SetPlayerInterior(playerid, 0);
SetPlayerFacingAngle(playerid, 90.0);
SetCameraBehindPlayer(playerid);
PlayerInfo[playerid][pInt] = 0;
SetPlayerVirtualWorld(playerid,0);
}


Lspd_pickup[0] = CreatePickup(19132, 23, 1554.8417,-1675.6074,16.1953, 0);
Lspd_pickup[2] = CreatePickup(19132, 23, 1524.4866,-1677.8508,6.2188, 0);

А можно сделать так еще.

Создать просто пикапы.


CreatePickup(19132, 23, 1554.8417,-1675.6074,16.1953, 0);
CreatePickup(19132, 23, 1524.4866,-1677.8508,6.2188, 0);

А через IsPlayerInRangeOfPoint делать уже телепорт.

DeimoS
06.01.2017, 03:06
Я бы предложил второй вариант. Или же вообще использовать динамические зоны, например, и уже по ним определять какой пикап сработал. Это всяко удобнее, нежели пикап, срабатывающий когда на него становишься

vovandolg
06.01.2017, 11:35
Пикап на то он и пикап что на него становится надо, не нравится юзайте круг шамболы:pardon:
Я за первый вариант не чего плохого не вижу в нём, тем более что не надо не чего другого вызывать и затрачиваться во времени.

Skyline
06.01.2017, 13:25
Пикап на то он и пикап что на него становится надо, не нравится юзайте круг шамболы:pardon:
Я за первый вариант не чего плохого не вижу в нём, тем более что не надо не чего другого вызывать и затрачиваться во времени.

Ну мне тоже 1 показался удобнее, просто узнал, какой из вариантов эффективнее и менее нагружает мод.
Всем спасибо.

DeimoS
06.01.2017, 15:47
Пикап на то он и пикап что на него становится надо, не нравится юзайте круг шамболы:pardon:
Я за первый вариант не чего плохого не вижу в нём, тем более что не надо не чего другого вызывать и затрачиваться во времени.

И потом изобретай велосипеды для того, чтоб пикапы не срабатывали повторно, когда тебе, например, нужно показывать диалог при взятии пикапа :fool: А после, благодаря твоему изобретению, чтоб повторно взять пикап и открыть диалог, нужно будет отойти от пикапа, подождать и опять подойти. Когда с кнопкой всё закончилось бы на том, что тебе просто нужно повторно нажать ALT.



Автоподбор пикапов - это очень удобно

http://risovach.ru/upload/2013/01/generator/kayf_8509696_orig_.png

Seviel
06.01.2017, 17:37
А вот если в OnPlayerPickUpPickup сделать проверку на нажатую кнопку через GetPlayerKeys.
Я нуб, ну очень нуп

vovandolg
06.01.2017, 17:40
И потом изобретай велосипеды для того, чтоб пикапы не срабатывали повторно, когда тебе, например, нужно показывать диалог при взятии пикапа :fool: А после, благодаря твоему изобретению, чтоб повторно взять пикап и открыть диалог, нужно будет отойти от пикапа, подождать и опять подойти. Когда с кнопкой всё закончилось бы на том, что тебе просто нужно повторно нажать ALT.



Автоподбор пикапов - это очень удобно

http://risovach.ru/upload/2013/01/generator/kayf_8509696_orig_.png

Ну перейдем к тому что человек делает щас телепорты, а для такого хватит и простой системы)
А во вторых мы в одной теме уже говорили про это как можно сделать в несколько строк чтобы было удобнее.:blush2:

DeimoS
06.01.2017, 18:08
Ну перейдем к тому что человек делает щас телепорты, а для такого хватит и простой системы)

Ну либо делать телепорт по принципу "телепортировать чуть дальше пикапа, который является выходом из интерьера" (в итоге, целые 4 координаты подбирать нужно), либо просто телепортировать на сам пикап (всего 2 координаты). В любом случае оно проще :)


А во вторых мы в одной теме уже говорили про это как можно сделать в несколько строк чтобы было удобнее.:blush2:

Метод, на самом деле, не особо рабочий, ибо там не учитывается, что пикапы обновляются всего раз в секунду и момент обновления пикапов часто просто не совпадает с приходом пакета о том, что игрок нажал на нужную кнопку. В итоге, получается, что ты жмёшь кнопку и потом около секунды просто стоишь (а то и вообще ничего не сработает).
Гораздо надёжнее именно через описанный мною в первом моём сообщении делать телепорт. Сейчас может даже накидаю инклуд, который позволит подобные телепорты создавать двумя функциями.

Skyline
07.01.2017, 02:20
Ну либо делать телепорт по принципу "телепортировать чуть дальше пикапа, который является выходом из интерьера" (в итоге, целые 4 координаты подбирать нужно), либо просто телепортировать на сам пикап (всего 2 координаты). В любом случае оно проще :)

Ну вот мне как раз и нужно по принципу "телепортировать чуть дальше пикапа, который является выходом из интерьера.

DeimoS
07.01.2017, 02:33
Ну вот мне как раз и нужно по принципу "телепортировать чуть дальше пикапа, который является выходом из интерьера.

При желании можно и пикапы на кнопку по такому принципу сделать. А уж как будет тебе удобней - решай сам.
Но я, имхо, всегда считал автоподбор пикапов зашкваром. Они хороши только в редких случаях. В остальных же лучше дать игроку выбор, использовать пикап или не использовать. Точнее, пикап будет лишь указанием того, что в таком-то месте можно нажать на кнопку и сработает действие.
Вопрос, как я понимаю, решён, да?

Skyline
07.01.2017, 03:24
При желании можно и пикапы на кнопку по такому принципу сделать. А уж как будет тебе удобней - решай сам.
Но я, имхо, всегда считал автоподбор пикапов зашкваром. Они хороши только в редких случаях. В остальных же лучше дать игроку выбор, использовать пикап или не использовать. Точнее, пикап будет лишь указанием того, что в таком-то месте можно нажать на кнопку и сработает действие.
Вопрос, как я понимаю, решён, да?

Да, решен. Спасибо)
Просто хотелось узнать еще, нагрузка и в плане оптимизации это как то повлияет?

DeimoS
07.01.2017, 06:52
Да, решен. Спасибо)
Просто хотелось узнать еще, нагрузка и в плане оптимизации это как то повлияет?

Ни реализация через пикапы, ни реализация через IsPlayerInRangeOfPoint не заставят твой сервер лагать.
А большего знать и не нужно :)
Закрыто