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

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
Cawfee
Великий Гуру

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

Share this post


Link to post
Share on other sites
Новичок

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

 

Edited by keyl

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
Cawfee
Великий Гуру

@Мемен Томорли, при попадании на пикап 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
Cawfee
Великий Гуру

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

 

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.