[Новичкам] Создание пикапа входа/выхода

9 posts in this topic

Здравствуйте, уважаемые пользователи форума Pawno-rus.

Видел в уроках тему, заголовок которой гласит следующее: "Создание пикапа". 

Отозвались люди ( в том числе и я ) довольно негативно к данному уроку.

Я решил сделать идентичную тему, но с созданием пикапов входа/выхода.

 

Ну что начнем уже :-)

//Ко всем new

new bank[2];

Идем дальше.

Ищем следующую строку:

public OnGameModeInit

 И вставляем после первой скобки следующее

bank[0] = CreatePickup(19132, 23, x,y,z, -1);
bank[1] = CreatePickup(19132, 23, x,y,z, -1);

И так давайте разбираться, что к чему

 

bank[0] / bank[1] - Название пикапа, или присваивание переменной функции CreatePickup.

CreatePickup - Соответственно сама функция создания пикапа.

19132- Первый параметр функции или id пикапа. Данный id - Белая стрелка вниз.

23 - Тип пикапа. В данном случае - Взятие пикапа без пропадания.

x,y,z - Координаты нахождения пикапа. ( Дабы их узнать, в игре становимся к месту, где ходите поставить пикап и прописываете команду /save. Ваши координаты будут находится тут: Документы\GTA San Andreas User Files\CR-MP\GenerationC\saveposition ).

0 - Последний параметр функции. ID виртуального мира. По умолчанию - 0.

 

И так почти пол дела сделано.

Теперь идем в:

public OnPlayerPickUpPickup

И после первой скобки вставляем следующий код:

Спойлер

if(pickupid == Bank[0]) //Телепорт в интерьер
{
    SetPlayerFacingAngle(playerid, 180);
    SetPlayerPos(playerid, x,y,z);
    SetPlayerInterior(playerid, 5);
    SetPlayerVirtualWorld(playerid,1);
    return true;
}

if(pickupid == Bank[1]) //Телепорт во двор
{
    SetPlayerPos(playerid, x,y,z);
    SetPlayerVirtualWorld(playerid,0);
    SetPlayerInterior(playerid, 0);
    SetPlayerFacingAngle(playerid, 180);
    return true;
}

 

 

Разбираемся, друзья.

if... Проверка на то, что игрок встал на пикап.

SetPlayerPos - Установка координат местоположения игрока. (x,y,z - координаты).

SetPlayerFacingAngle - Угол игрока. ( Найдете в saveposition.txt )

SetPlayerVirtualWorld - Виртуальный мир

SetPlayerInterior - ID интерьера. Не трогать!!.

 

На этом все.
Автор урока - Edgar
Удачной компиляции без ошибок Вам, друзья B
P/S Надеюсь меня не будут критиковать :

Edited by DEST

Заметка от DEST , создано

Пользуйтесь тегом "код".
Как это сделать?

Share this post


Link to post
Share on other sites

@trp, правда сейчас многие переводят пикапы на динамические зоны, а вы, наоборот, рассказываете о старом методе :$

Share this post


Link to post
Share on other sites

Уже было... То же самое, смысла не вижу.

КЛИК (переход на тему)

Share this post


Link to post
Share on other sites

*слова удалены системой, все верно делаю, пикап есть но он никуда меня не тепает, устал

 

Edited by keyl

Share this post


Link to post
Share on other sites

@Мемен Томорли, показали бы, что и куда вы вставили...

Share this post


Link to post
Share on other sites

@Cawfee ну...
Создал две перемнные
new vhodmagazbcrb;

new vihodmagazbcrb;
Далее, в public OnGameModeInit() {
    vhodmagazbcrb = CreateDynamicPickup(1318,23,2069.5735,1815.5914,12.6791); - ID пикапа, тип пикапа, координаты пикапа.
    vihodmagazbcrb = CreateDynamicPickup(1318,23,-27.312299,-29.277599,1003.557250); - ID пикапа, тип пикапа, координаты интерьера(взял с инета).
Идем дальше в OnPlayerPickUpPickUp, у меня данный паблик немного по другому называется, но не суть
Тут я создал сам телепорт: 
    if(pickupid == vhodmagazbcrb) //Телепорт в 24/7
    {
        SetPlayerInterior(playerid, 4); // ID интерьера
        SetPlayerPos(playerid, -27.312299,-29.277599,1003.557250); // Координаты интерьера
        SetPlayerVirtualWorld(playerid, 6); // ID виртуального мира
        return true;
    }
    if(pickupid == vihodmagazbcrb) //Телепорт из 24/7
    {
        SetPlayerInterior(playerid, 0);  // ID интерьера, после выхода из инта 0
        SetPlayerPos(playerid, 2072.2981,1815.5206,12.2253); // Координаты выхода из интерьера
        SetPlayerVirtualWorld(playerid, 0); // ID виртуального мира
        return true;
    }
Ну в чем вообщем и проблема, пикап появился, все как надо, он даже телепортирует, но, телепортирует он так скажем, (Слово удалено системой) пойми куда.
Если есть желание помочь мне, напишите пожалуйста в вк https://vk.com/mementomorli

Share this post


Link to post
Share on other sites

@Мемен Томорли, при попадании на пикап vhodmagazbcrb вы переходите на координаты пикапа vihodmagazbcrb, а попадание на его координаты влечет обратно переход на координаты пикапа vhodmagazbcrb. Иначе говоря, вас бесконечно телепортирует с одного пикапа на другой.

 

Традиционно такую проблему решали двумя путями. Либо вы реализуете переход по нажатию клавиши, а не по факту "становления" на пикап, чтобы избежать зацикливания, либо переходить на координаты, отличные от координаты пикапа, например, путем внесения смещения:

SetPlayerPos(playerid, -27.312299+2.0,-29.277599,1003.557250); // Координаты интерьера

Share this post


Link to post
Share on other sites

@Cawfee Понимаете, проблема в том, что меня тепает в пустоту, там нету какого либо интерьера

Share this post


Link to post
Share on other sites

@Мемен Томорли, из-за постоянных переходов туда-обратно маппинг может не успеть подгрузиться, поэтому у вас складывается такое ощущение.

 

19 часов назад, Мемен Томорли сказал:

координаты интерьера(взял с инета)

С другой стороны, а уверены ли вы в достоверности этих координат?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.