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

В теме 9 сообщений

Здравствуйте, уважаемые пользователи форума 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 Надеюсь меня не будут критиковать :

Отредактировано пользователем DEST

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Отредактировано пользователем keyl

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу