Question

Привествуйю, такая ситуация что я создаю проект, взял мод но там нету домов их нужно создать, создавал я дома через команду и в итоге всьо хорошо наченалось, но когда например купил дом №1 зашол в него и вышел то всьо хорошо, а когда ты например купил и зашол в дом №8 или в любой другой то выходиш ти через дом №1 я не знаю уже что искать в моде.Помогите

Вот нашол строки где именно диалог выхода из дома
 

        for(new h = 0; h < TotalHouses; h++)
        {
            if(PlayerToPoint(1.5, playerid, HOUSE_DATA[h][data_EXITX], HOUSE_DATA[h][data_EXITY], HOUSE_DATA[h][data_EXITZ]) && GetPlayerVirtualWorld(playerid) == HOUSE_DATA[h][data_ID])
            {
                SetPVarInt(playerid, "house", h);
                ShowPlayerDialogFix(playerid, dialog_EXIT_HOUSE, DIALOG_STYLE_MSGBOX, "{FFCC00}Дом""{FFFFFF}Вы желаете покинуть дом?""Выйти""Отмена");
                return true;
            }
        }

А вот уже сам диалог вихода
 

case dialog_EXIT_HOUSE:
        {
            if(!response) return true;
            if(response)
            {
                new h = GetPVarInt(playerid, "house");
                if(!PlayerToPoint(1.5, playerid, HOUSE_DATA[h][data_EXITX], HOUSE_DATA[h][data_EXITY], HOUSE_DATA[h][data_EXITZ])) return true;
                SetPlayerPosAC(playerid,HOUSE_DATA[h][data_ENTERX], HOUSE_DATA[h][data_ENTERY], HOUSE_DATA[h][data_ENTERZ]);
                SetPlayerInterior(playerid,0);
                SetPlayerVirtualWorld(playerid,0);
                
                FreezePlayer(playerid);
                SetTimerEx("UnfreezePlayer"4000false"d", playerid);
            }
        }

 

Share this post


Link to post

3 answers to this question

  • 0

@Nestor_Matroskin 

        case dialog_EXIT_HOUSE:
        {
            if(!response) return true;
            if(response)
            {
                new h = GetPVarInt(playerid, "house");
                if(!PlayerToPoint(1.5, playerid, HOUSE_DATA[h][data_EXITX], HOUSE_DATA[h][data_EXITY], HOUSE_DATA[h][data_EXITZ]) || \
                GetPlayerVirualWorld(playerid) != HOUSE_DATA[h][data_ID]) return true;
                SetPlayerPosAC(playerid,HOUSE_DATA[h][data_ENTERX], HOUSE_DATA[h][data_ENTERY], HOUSE_DATA[h][data_ENTERZ]);
                SetPlayerInterior(playerid,0);
                SetPlayerVirtualWorld(playerid,0);
                
                FreezePlayer(playerid);
                SetTimerEx("UnfreezePlayer"4000false"d", playerid);
            }
        }

 

Share this post


Link to post
  • 0

В диалоге 

dialog_EXIT_HOUSE

При проверке координат выхода нет проверки на ВВ, вот в коде:

if(!PlayerToPoint(1.5, playerid, HOUSE_DATA[h][data_EXITX], HOUSE_DATA[h][data_EXITY], HOUSE_DATA[h][data_EXITZ])) return true;

// Как видим, проверка только на координаты, так же добавим и на Виртуальный Мир:
if(!PlayerToPoint(1.5, playerid, HOUSE_DATA[h][data_EXITX], HOUSE_DATA[h][data_EXITY], HOUSE_DATA[h][data_EXITZ]) || \
 GetPlayerVirtualWorld(playerid) != HOUSE_DATA[h][data_ID]) return true;
 // тут уже добавлена проверка на ВВ

 

Share this post


Link to post
  • 0

@Sleash`en Вот нашол строки где именно диалог выхода из дома

        for(new h = 0; h < TotalHouses; h++)
        {
            if(PlayerToPoint(1.5, playerid, HOUSE_DATA[h][data_EXITX], HOUSE_DATA[h][data_EXITY], HOUSE_DATA[h][data_EXITZ]) && GetPlayerVirtualWorld(playerid) == HOUSE_DATA[h][data_ID])
            {
                SetPVarInt(playerid, "house", h);
                ShowPlayerDialogFix(playerid, dialog_EXIT_HOUSE, DIALOG_STYLE_MSGBOX, "{FFCC00}Дом""{FFFFFF}Вы желаете покинуть дом?""Выйти""Отмена");
                return true;
            }
        }

А вот уже сам диалог вихода
 

13 часов назад, Sleash`en сказал:

В диалоге 


dialog_EXIT_HOUSE

При проверке координат выхода нет проверки на ВВ, вот в коде:


if(!PlayerToPoint(1.5, playerid, HOUSE_DATA[h][data_EXITX], HOUSE_DATA[h][data_EXITY], HOUSE_DATA[h][data_EXITZ])) return true;

// Как видим, проверка только на координаты, так же добавим и на Виртуальный Мир:
if(!PlayerToPoint(1.5, playerid, HOUSE_DATA[h][data_EXITX], HOUSE_DATA[h][data_EXITY], HOUSE_DATA[h][data_EXITZ]) || \
 GetPlayerVirtualWorld(playerid) != HOUSE_DATA[h][data_ID]) return true;
 // тут уже добавлена проверка на ВВ

Извиняюсь но ето не помогло, получается когда другой класс или еще что-то тогда да но когда создать один класс всьоравно

 

 

вот диалог создание домов
 

        case dialog_ADD_HOUSE:
        {
            if(!response) return true;
            if(response)
            {
                SetPVarInt(playerid,"addhouse",1);
                new Float:X,Float:Y,Float:Z;
                GetPlayerPos(playerid, X,Y,Z);
                new veh = CreateVehicle(402, X,Y,Z, 0.011, -1);
                PutPlayerInVehicleAC(playerid, veh, 0);
                CAR_DATA[veh][data_ENG] = 0;
                SendClientMessage(playerid,-1"Сядьте в машину и введите /tpc для сохранения позиции автомобиля");
            }
        }
        case dialog_ADD_HOUSE_1:
        {
            if(!response) return SetPVarInt(playerid, "addhouse",0);
            if(response)
            {
                switch(listitem)
                {
                    case 0:
                    {
                        SetPVarFloat(playerid,"aExitX",242.0182);
                        SetPVarFloat(playerid,"aExitY",-137.7568);
                        SetPVarFloat(playerid,"aExitZ",998.9108);
                        SetPVarInt(playerid,"aInt",1);
                    }
                    case 1:
                    {
                        SetPVarFloat(playerid,"aExitX",2594.2136);
                        SetPVarFloat(playerid,"aExitY",-44.5393);
                        SetPVarFloat(playerid,"aExitZ",601.0859);
                        SetPVarInt(playerid,"aInt",2);
                    }
                }
                ShowPlayerDialogFix(playerid, dialog_ADD_HOUSE_2, DIALOG_STYLE_INPUT, "{FFCC00}Цена дома""{FFFFFF}От 10 000 рублей до 10 000 000 рублей""Добавить""Отмена");
            }
        }
                    
        case dialog_ADD_HOUSE_2:
        {
            if(!response) return SetPVarInt(playerid, "addhouse",0);
            if(response)
            {
                if(strval(inputtext) < 10000 || strval(inputtext) > 10000000return ShowPlayerDialogFix(playerid, dialog_ADD_HOUSE_3, DIALOG_STYLE_INPUT, "{FFCC00}Цена дома""{FFFFFF}От 10 000 рублей до 10 000 000 рублей""Добавить""Отмена");
                SetPVarInt(playerid,"aPrice",strval(inputtext));
                ShowPlayerDialogFix(playerid, dialog_ADD_HOUSE_3, DIALOG_STYLE_INPUT, "{FFCC00}Класс""{FFFFFF}Введите класс дома 0,1,2,3,4""Добавить""Отмена");
            }
        }
        case dialog_ADD_HOUSE_3:
        {
            if(!response) return true;
            if(response)
            {
                SetPVarInt(playerid,"aClass",strval(inputtext));
                AddHouse(playerid);
            }
        }

СТОК создания
 

stock AddHouse(playerid)
{
    new query[600];
    new h = TotalHouses;
    new Float:a1 = GetPVarFloat(playerid, "aEnterX");
    new Float:a2 = GetPVarFloat(playerid, "aEnterY");
    new Float:a3 = GetPVarFloat(playerid, "aEnterZ");
    new Float:a4 = GetPVarFloat(playerid, "aExitX");
    new Float:a5 = GetPVarFloat(playerid, "aExitY");
    new Float:a6 = GetPVarFloat(playerid, "aExitZ");
    new a7 = GetPVarInt(playerid, "aInt");
    new a8 = GetPVarInt(playerid, "aClass");
    new a9 = GetPVarInt(playerid, "aPrice");
    new Float:a10 = GetPVarFloat(playerid, "aCarX");
    new Float:a11 = GetPVarFloat(playerid, "aCarY");
    new Float:a12 = GetPVarFloat(playerid, "aCarZ");
    new Float:a13 = GetPVarFloat(playerid, "aCarAngle");
    SetPVarInt(playerid,"addhouse"0);
    SendClientMessage(playerid,-1"Дом добавлен");
    HOUSE_DATA[h][data_ENTERX] = a1;
    HOUSE_DATA[h][data_ENTERY] = a2;
    HOUSE_DATA[h][data_ENTERZ] = a3;
    HOUSE_DATA[h][data_EXITX] = a4;
    HOUSE_DATA[h][data_EXITY] = a5;
    HOUSE_DATA[h][data_EXITZ] = a6;
    HOUSE_DATA[h][data_INT] = a7;
    HOUSE_DATA[h][data_CLASS] = a8;
    HOUSE_DATA[h][data_PRICE] = a9;
    HOUSE_DATA[h][data_CARX] = a10;
    HOUSE_DATA[h][data_CARY] = a11;
    HOUSE_DATA[h][data_CARZ] = a12;
    HOUSE_DATA[h][data_CARANGLE] = a13;
    if(HOUSE_DATA[h][data_OWNED] == 0)
    {
        HOUSE_DATA[h][data_PICKUPENTER] = CreateDynamicPickup(127323, HOUSE_DATA[h][data_ENTERX], HOUSE_DATA[h][data_ENTERY], HOUSE_DATA[h][data_ENTERZ],-1);
        HOUSE_DATA[h][data_MAPICON] = CreateDynamicMapIcon(HOUSE_DATA[h][data_ENTERX], HOUSE_DATA[h][data_ENTERY], HOUSE_DATA[h][data_ENTERZ], 31, -10, -1, -1200.0);
    }
    else
    {
        HOUSE_DATA[h][data_PICKUPENTER] = CreateDynamicPickup(1913123, HOUSE_DATA[h][data_ENTERX], HOUSE_DATA[h][data_ENTERY], HOUSE_DATA[h][data_ENTERZ],0);
        HOUSE_DATA[h][data_MAPICON] = CreateDynamicMapIcon(HOUSE_DATA[h][data_ENTERX], HOUSE_DATA[h][data_ENTERY], HOUSE_DATA[h][data_ENTERZ], 32, -10, -1, -1200.0);
    }
    TotalHouses++;
    mysql_format(dbHandle,query, sizeof query, "INSERT INTO `houses` ( `enterx`, `entery`, `enterz`, `exitx`, `exity`, `exitz`, `carx`, `cary`, `carz`, `cara`, `int`, `class`, `price`) VALUES ( '%f', '%f', '%f', '%f', '%f', '%f', '%f', '%f', '%f', '%f', '%d', '%d', '%d')",a1,a2,a3,a4,a5,a6,a10,a11,a12,a13,a7,a8,a9);
    mysql_function_query(dbHandle, query, false"""");
    return true;
}

 

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0