Вопросы

Всем здравствуйте! Делаю систему домов/бизнесов по туториалу 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

@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 пользователей онлайн

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

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

    • Altronix
      От Altronix
      Вчера столнулся с такой проблемой,  что делать если я прописал в моде 615 айдишник машины, 614 и 613 работают, а вот на 615 крашает игру и не спавнит тачку? Хотя все текстуры вставил в vehicleid.pwn, vehicleid.ide всё прописал, другие 614 и 613 он создаёт, а 615 команда ещё не создавала до того как я заменил текстуры в тачке. Может где то ещё надо прописать что бы все работало? Лимит у меня увеличен до 700