Помогите с домами
#1

Подскажите у меня с домами проблема , вот если у меня на 2-х домах стоят одинаковые интерьеры то если зашел в один дом(в инт) и выходишь появляешься не там откуда ты зашел , вот код:
PHP код:
228.045089,-1405.413208,51.609375,260.600006,1238.800048,1084.199951,0,0,0,0,0,0,The State,4 Room Apartment,350000,0,0,9,1,0,0,300,1,0,418,-1,-1,117,7,10,0,0,0,0,0,0,0,0,0,0,0,0,
и второй:
PHP код:
768.099975,-1696.500000,5.099997,260.600006,1238.800048,1084.199951,0,0,0,0,0,0,The State,4 Room Apartment,250000,0,0,9,1,0,0,1,0,839,418,-1,-1,334,7,44,0,0,0,0,0,0,0,0,0,0,0,0,
и код enum'a на всякий:
PHP код:
enum hInfo
{
    
Float:hEntrancex,
    
Float:hEntrancey,
    
Float:hEntrancez,
    
Float:hExitx,
    
Float:hExity,
    
Float:hExitz,
    
hHealthx,
    
hHealthy,
    
hHealthz,
    
hArmourx,
    
hArmoury,
    
hArmourz,
    
hOwner[MAX_PLAYER_NAME],
    
hDiscription[MAX_PLAYER_NAME],
    
hValue,
    
hHel,
    
hArm,
    
hInt,
    
hLock,
    
hOwned,
    
hRooms,
    
hRent,
    
hRentabil,
    
hTakings,
    
hVec,
    
hVcol1,
    
hVcol2,
    
hDate,
    
hLevel,
    
hWorld,
     
hGun1,
    
hGun2,
    
hGun3,
    
hGun4,
    
hGun5,
    
hAmmo1,
    
hAmmo2,
    
hAmmo3,
    
hAmmo4,
    
hAmmo5,
    
hMoney,
    
hDrugs,
    
hMats,
    
Text3D:hLabel,
    }; 
в чем может быть проблема? Я пробовал разные вирт миры ставить но все равно...
Reply
#2

сравнивай инты и миры. С мирами также работай как и с интом.
Reply
#3

ну вот к примеру у 1-го дома мир 10 , у 2-го 44 , а инт что у первого что у второго id 9 , если я его сменю у меня ж не будет заходить в тот инт куда мне надо , что тогда делать?
или получится просто поменять пару цифр в координатах интерьера? например 1-й
260.600006,1238.800048,1084.199951//1238
а второй
260.600006,1248.800048,1084.199951//1248
так получится? или врятли?
Reply
#4

при выходе из дома сравнивай мир игрока и мир дома, если равны, то выходим из дома
т.е. для гф как-то так:

pawn Код:
if(!strcmp(cmd, "/exit", true))
{
    for(new i = 0; i <  sizeof(HouseInfo); i++)
    {
        if(!PlayerToPoint(3, playerid,HouseInfo[i][hExitx], HouseInfo[i][hExity], HouseInfo[i][hExitz])
            || GetPlayerVirtualWorld(playerid) != HouseInfo[i][hWorld])
            continue;
Reply
#5

Сохраняй в PVar ИД дома в который зашел человек, а при выходе используй не цикл, а сохраненное значение.
Только это не сработает если человек , находясь в доме, перезайдет. Но и тут можно подумав решить проблему.
Reply
#6

парни спс за помощь , но я ниче не понял(т.к нуб в pawno)
вот мой /exit:
pawn Код:
if(strcmp(cmd, "/exit", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            for(new i = 0; i <  sizeof(HouseInfo); i++)
            {
                //printf("House :%d",i);
                if (PlayerToPoint(3, playerid,HouseInfo[i][hExitx], HouseInfo[i][hExity], HouseInfo[i][hExitz]))
                {
                    //if(HouseEntered[playerid] == i)
                    //{
                        SetPlayerInterior(playerid,0);
                        SetPlayerPos(playerid,HouseInfo[i][hEntrancex],HouseInfo[i][hEntrancey],HouseInfo[i][hEntrancez]);
                        PlayerInfo[playerid][pInt] = 0;
                        PlayerInfo[playerid][pLocal] = 255;
                        SetCameraBehindPlayer(playerid);
                        SetPlayerVirtualWorld(playerid,0);
                        HouseEntered[playerid] = 255;
                        if(HouseInfo[i][hHel] == 1)
                        {
                            new Float:tempheal;
                            GetPlayerHealth(playerid,tempheal);
                            if(tempheal < 100.0)
                            {
                                SetPlayerHealth(playerid,100.0);
                            }
                        }
                        return 1;
                    //}
                }
            }
вроде норм , но нз в чем может быть проблема почему так? Кому не сложно пожалуйста подскажите...
Reply
#7

Quote:
Originally Posted by mid119
Посмотреть сообщение
парни спс за помощь , но я ниче не понял(т.к нуб в pawno)
вот мой /exit:
вроде норм , но нз в чем может быть проблема почему так? Кому не сложно пожалуйста подскажите...
ёптыть, написал-же...
pawn Код:
if(strcmp(cmd, "/exit", true) == 0)
{
            for(new i = 0; i <  sizeof(HouseInfo); i++)
            {
                //printf("House :%d",i);
                if(!PlayerToPoint(3, playerid,HouseInfo[i][hExitx], HouseInfo[i][hExity], HouseInfo[i][hExitz])
                    || GetPlayerVirtualWorld(playerid) != HouseInfo[i][hWorld])
                    continue;
                    //if(HouseEntered[playerid] == i)
                    //{
                        SetPlayerInterior(playerid,0);
                        SetPlayerPos(playerid,HouseInfo[i][hEntrancex],HouseInfo[i][hEntrancey],HouseInfo[i][hEntrancez]);
                        PlayerInfo[playerid][pInt] = 0;
                        PlayerInfo[playerid][pLocal] = 255;
                        SetCameraBehindPlayer(playerid);
                        SetPlayerVirtualWorld(playerid,0);
                        HouseEntered[playerid] = 255;
                        if(HouseInfo[i][hHel] == 1)
                        {
                            new Float:tempheal;
                            GetPlayerHealth(playerid,tempheal);
                            if(tempheal < 100.0)
                            {
                                SetPlayerHealth(playerid,100.0);
                            }
                        }
                        return 1;
                    //}
            }
}
Reply
#8

ZiGGi - не компилирует
0 КБ
в чем может быть дело?
Reply
#9

Quote:
Originally Posted by mid119
Посмотреть сообщение
ZiGGi - не компилирует
0 КБ
в чем может быть дело?
копи-пастишь не правильно
Reply
#10

да вроде все норм вот я скопировал то что у меня щас стоит:
pawn Код:
if(strcmp(cmd, "/exit", true) == 0)
{
            for(new i = 0; i <  sizeof(HouseInfo); i++)
            {
                //printf("House :%d",i);
                if(!PlayerToPoint(3, playerid,HouseInfo[i][hExitx], HouseInfo[i][hExity], HouseInfo[i][hExitz])
                    || GetPlayerVirtualWorld(playerid) != HouseInfo[i][hWorld])
                    continue;
                    //if(HouseEntered[playerid] == i)
                    //{
                        SetPlayerInterior(playerid,0);
                        SetPlayerPos(playerid,HouseInfo[i][hEntrancex],HouseInfo[i][hEntrancey],HouseInfo[i][hEntrancez]);
                        PlayerInfo[playerid][pInt] = 0;
                        PlayerInfo[playerid][pLocal] = 255;
                        SetCameraBehindPlayer(playerid);
                        SetPlayerVirtualWorld(playerid,0);
                        HouseEntered[playerid] = 255;
                        if(HouseInfo[i][hHel] == 1)
                        {
                            new Float:tempheal;
                            GetPlayerHealth(playerid,tempheal);
                            if(tempheal < 100.0)
                            {
                                SetPlayerHealth(playerid,100.0);
                            }
                        }
                        return 1;
                    }
            }
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)