Вопросы

Chopick
Новичок

Всем здравствуйте! Делаю систему домов/бизнесов по туториалу knox know с плагином GoodArea. Есть проблема, если заходишь в интерьер бизнеса, то когда выходишь спавнит почему-то на пикап дома.

Вот енумы:
 

#define MAX_HOUSES 1000
#define MAX_BIZS 1000

enum house
{
        hID,
        STREAMER_TAG_PICKUP:hPICKUP,
        STREAMER_TAG_AREA:hAREA,
        hOWNER[MAX_PLAYER_NAME],
        STREAMER_TAG_3D_TEXT_LABEL:hTEXT[256],
        STREAMER_TAG_MAP_ICON:hICON,
        hPRICE,
        hCLASS,
        hINTERIOR,
        Float:hX,
        Float:hY,
        Float:hZ,
        Float:hA,
        hCONDITION // Закрыт/Открыт
}
new House[MAX_HOUSES][house];
new Houses;
new HouseGroup;

enum biz
{
        bID,
        STREAMER_TAG_PICKUP:bPICKUP,
        STREAMER_TAG_AREA:bAREA,
        bOWNER[MAX_PLAYER_NAME],
        STREAMER_TAG_3D_TEXT_LABEL:bTEXT[256],
        STREAMER_TAG_MAP_ICON:bICON,
        bNAME[25],
        bPRICE,
        bTYPE,
        bINTERIOR,
        Float:bX,
        Float:bY,
        Float:bZ,
        Float:bA
}
new Biz[MAX_BIZS][biz];
new Bizs;
new BizGroup;

enum interior_info
{
        intID,
        intNAME[41],
        intINTERIOR,
        Float:intX,
        Float:intY,
        Float:intZ,
        Float:intA,
        STREAMER_TAG_AREA:intAREA
}
new Interior[MAX_INTERIORS][interior_info];
new Interiors;
new InteriorGroup;

Вот что у меня в OnGameModeInit:

HouseGroup = CreateGroupGoodAreas(GoodArea:HouseEnter);
InteriorGroup = CreateGroupGoodAreas(GoodArea:InteriorExit);
BizGroup = CreateGroupGoodAreas(GoodArea:BizArea);

 

Вот стоки:

GAResponse:HouseEnter(playerid, response, key, index)
{
        switch(response)
        {
            case GA_RESPONSE_PRESS_KEY:
            {
                if(key & KEY_WALK)
                {
                if(House[index][hCONDITION] > 0 && House[index][hOWNER] == player_info[playerid][NAME] || House[index][hCONDITION] == 0)
                {
                                        GoToInterior(playerid, House[index][hINTERIOR]);
                                        SetPlayerVirtualWorld(playerid, index);
                                }
                                else if(House[index][hCONDITION] > 0 && House[index][hOWNER] != player_info[playerid][NAME]) return SCM(playerid, COLOR_RED, "[Ошибка]{ffffff}Этот дом закрыт на ключ!");
                        }
                }
                case GA_RESPONSE_ENTER:
                {
                    if(House[index][hOWNER] == 0)
                    {
                        CreateNoOwnerHouseTD(playerid);
                        for(new i = 0; i < sizeof NoOwnerTextDraw_PTD[]; i++)
                        {
                            PlayerTextDrawShow(playerid, NoOwnerTextDraw_PTD[playerid][i]);
                                }
                                new price[8];
                                format(price, sizeof(price), "%d$", House[index][hPRICE]);
                                PlayerTextDrawSetString(playerid, NoOwnerTextDraw_PTD[playerid][2], price);
                                new id[9];
                                format(id, sizeof(id), "%d", House[index][hID]);
                                PlayerTextDrawSetString(playerid, NoOwnerTextDraw_PTD[playerid][0], id);
                                switch(House[index][hCLASS])
                                {
                                    case 1: PlayerTextDrawSetString(playerid, NoOwnerTextDraw_PTD[playerid][1], "A");
                                    case 2: PlayerTextDrawSetString(playerid, NoOwnerTextDraw_PTD[playerid][1], "B");
                                    case 3: PlayerTextDrawSetString(playerid, NoOwnerTextDraw_PTD[playerid][1], "C");
                                }
                                for(new i = 0; i < sizeof NoOwnerTextDraw_TD; i++)
                        {
                            TextDrawShowForPlayer(playerid, NoOwnerTextDraw_TD[i]);
                                }
                        }
                }
                case GA_RESPONSE_LEAVE:
                {
                for(new i = 0; i < sizeof NoOwnerTextDraw_PTD[]; i++)
                {
                    PlayerTextDrawHide(playerid, NoOwnerTextDraw_PTD[playerid][i]);
                        }
                        for(new i = 0; i < sizeof NoOwnerTextDraw_TD; i++)
                {
                    TextDrawHideForPlayer(playerid, NoOwnerTextDraw_TD[i]);
                        }
                }
        }
        return 1;
}

GAResponse:BizArea(playerid, response, key, index)
{
        switch(response)
        {
            case GA_RESPONSE_PRESS_KEY:
            {
                if(key & KEY_WALK)
                {
                    GoToInteriorBiz(playerid, Biz[index][bINTERIOR]);
                                SetPlayerVirtualWorld(playerid, index);
                }
                }
        }
        return 1;
}

GAResponse:InteriorExit(playerid, response, key, index)
{
        switch(response)
        {
            case GA_RESPONSE_PRESS_KEY:
            {
                new world = GetPlayerVirtualWorld(playerid);
                if(key & KEY_WALK)
                {
                    if(world < MAX_HOUSES)
                    {
                        SetPlayerInterior(playerid0);
                            SetPlayerVirtualWorld(playerid, 0);
                            SetPlayerPos(playerid, House[world][hX], House[world][hY], House[world][hZ]);
                            SetPlayerFacingAngle(playerid, House[world][hA]);
                                }
                                else if(world < MAX_HOUSES + MAX_BIZS)
                    {
                        world -= MAX_HOUSES;
                                        printf("%d index world", world);
                        SetPlayerInterior(playerid0);
                            SetPlayerVirtualWorld(playerid, 0);
                            SetPlayerPos(playerid, Biz[world][bX], Biz[world][bY], Biz[world][bZ]);
                            SetPlayerFacingAngle(playerid, Biz[world][bA]);
                                }
                        }
                        if(key & KEY_CTRL_BACK)
                        {
                            if(player_info[playerid][HOUSE] != House[world][hID]) return SCM(playerid, COLOR_RED, "[Ошибка]{ffffff}Вы не владелец данного дома!");
                            new dialog[256];
                                format(dialog, sizeof(dialog),
                                        "{ffd900}[1]{ffffff}Информация о доме\n\
                                        {ffd900}[2]{ffffff}%s дом",
                                (House[world][hCONDITION] == 1) ? ("{00ff00}Открыть") : ("{ff0000}Закрыть"));
                            SPD(playerid, DLG_HMENU, DIALOG_STYLE_LIST, "{ffd900}Меню дома", dialog, "Выбрать""Закрыть");
                            return 1;
                        }
                }
        }
        return 1;
}

stock GoToInterior(playerid, interior)
{
    for(new i = 0; i < Interiors; i++)
        {
            if(Interior[i][intID] != interior) continue;
            SetPlayerInterior(playerid, Interior[i][intINTERIOR]);
            SetPlayerPos(playerid, Interior[i][intX], Interior[i][intY], Interior[i][intZ]);
            SetPlayerFacingAngle(playerid, Interior[i][intA]);
            SetPlayerCheckpoint(playerid, Interior[i][intX], Interior[i][intY], Interior[i][intZ], 1.0);
            new str[128];
            format(str, sizeof(str),
                        "Нажмите \"ALT\" для выхода\n\
                        Нажмите \"H\", чтобы открыть меню дома");
            Create3DTextLabel(str, -1, Interior[i][intX], Interior[i][intY], Interior[i][intZ], 15.001);
            return 1;
        }
        return 0;
}

stock GoToInteriorBiz(playerid, interior)
{
    for(new i = 0; i < Interiors; i++)
        {
            if(Interior[i][intID] != interior) continue;
            SetPlayerInterior(playerid, Interior[i][intINTERIOR]);
            SetPlayerPos(playerid, Interior[i][intX], Interior[i][intY], Interior[i][intZ]);
            SetPlayerFacingAngle(playerid, Interior[i][intA]);
            SetPlayerCheckpoint(playerid, Interior[i][intX], Interior[i][intY], Interior[i][intZ], 1.0);
            new str[128];
            format(str, sizeof(str),
                        "Нажмите \"ALT\" для выхода");
            Create3DTextLabel(str, -1, Interior[i][intX], Interior[i][intY], Interior[i][intZ], 15.001);
            return 1;
        }
        return 0;
}

 

 

Что мне делать, подскажите пожалуйста?

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


Ссылка на сообщение

1 ответ на этот вопрос

  • 0
Vilvetto
Новичок

@Chopick Привет, я хочу помогать бесплатно я такойже новичек в этом деле, давайте  я помогу, но обьясните сперва. Что это CRMP или SAMP и какая версия. Я практик, делаю методом проб и ошибок. 

 

@Chopick У меня сейчас еще не скачена игра и не настроен павн, я займусь этим. Можете пока забыть о своей проблеме, я постараюсь что-нибудь сделать, займитесь чем - нибудь еще. Но Вам придётся подождать

 

@Chopick Я скобку в лево убрал, не знаю это повлияет или нет. Я практик, мне нужен мод и самому разбирать. Я попробую вставить код этот себе, но не знаю зарабоает он или нет. Подправте скобочку как у меня, может из-за неё? Но что-то сомниваюсь

GAResponse:BizArea(playerid, response, key, index)
{
        switch(response)
        {
            case GA_RESPONSE_PRESS_KEY:
            {
                if(key & KEY_WALK)
                {
                    GoToInteriorBiz(playerid, Biz[index][bINTERIOR]);
                                SetPlayerVirtualWorld(playerid, index);
                }
            }
        }
        return 1;
}

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

Поставил вас на премодерацию.

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


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

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

  • Похожий контент

    • Jasper231
      От Jasper231
      Идет набор в команду для создания CRMP MOBILE проекта. Нам нужны
      1) Кодеры
      2) Мапперы
      3) Люди которые вообще разбираются в создании серверов
       
      об зарпалте договоримся и об остальном поговорим в вк: @haslyyyim
    • otec
      От otec
      Копия радмира
      ║☑️Название CORVUS CRMP
      ║☑️Сервер у которого есть будущее и будет
      ║☑️Адекватная администрация
      ║☑️Идут наборы в Лидеры, Админы.
      ║☑️Вступайте в Telegram: t.me/corvusgta « Вступай!
      ║☑️Вступайте в ВКонтакте: vk.com/corvus_crmp « Вступай!
      ║☑️Постоянные ПРИЗЫ - МП | Интересный Мод
      ║☑️Все новости - обновления в Telegram и ВКонтакте
      ║☑️Сайт - corvus-crmp.ru
      ║☑️Форум - forum.corvus-crmp.ru
      ║☑️Скачать лаунчер - corvus-crmp.ru
      ║☑️Заходи мы ждем тебя
      ║☑️В случае возможных ошибок пишите сюда:@corvus_help_bot
    • vicegame
      От vicegame
      Доброго времени суток уважаемые форумчане
      Хочу представить наши услуги и цены:
      GTA SAMP от 75руб
      GTA CRMP от 75 руб
      GTA MTA от 120 руб
      Для каждого тарифа неограниченные слоты, оплата только за ресурсы 
      Удобная панель управления и широкий функционал 
      Работаем с 2023 года!
       
      Также имеются БЕСПЛАТНЫЕ тарифы для (ознакомительных целей)
       
      Мощные процессоры Ryzen 5950X (Германия)
       
      Платежная система YooKassa на борту:
      Банковские карты
      SberPay
      TinkoffPay
      Yoomoney

      Ссылка на хостинг: ТЫК
    • hatriyikko
      От hatriyikko
      Требуется мобильная сборка мод + клиент + лаунчер

      Копия Радмира, Блэк Раши или что-то другое с аналогичным функционалом. Основной упор на бизнесы, чтобы всё исправно работало
       
      Напишите сколько это будет стоить?

      В дальнейшем также могут понадобиться какие то доработки мода, если всё ок рассматриваю долгосрочное сотрудничество

      Связь тут или в тг @kovart7