Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 3 из 3
  1. #1
    Аватар для azlagor
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.08.2017
    Сообщений
    18
    Репутация:
    0 ±

    Система домов.Покупка

    Здравствуйте.У меня не работает система домов.При покупке любого дома с любым ID,игрок покупает дом с идом 0.В базу записываются данные в 0 ид дома.И в базе игрока записывает ид дома 0.

    Вот покупка дома

    PHP код:
    if(clickedid == housetd[4])
        {
              for(new 
    0sizeof(House);h++)
               {
                switch(
    House[h][hplayer])
                {
                    case 
    0:
                    {
                        if(
    player[playerid][phouse] != 9999) return SendClientMessage(playerid,red,!"У вас уже есть дом");
                        if(
    player[playerid][pmoney] < House[h][hmoney]) return SendClientMessage(playerid,grey,!"У вас недостаточно денег,чтобы купить этот дом");
                        
    strmid(House[h][hname],GN(playerid),0,strlen(GN(playerid)),MAX_PLAYER_NAME);
                        
    House[h][hplayer] = 1;
                        
    House[h][hopen] = 1;
                        
    player[playerid][pmoney] -= House[h][hmoney];
                        
    player[playerid][phouse] = h;
                        
    saveaccounts(playerid);
                        
    SaveHouse(h);
                        
    BuyHouse(h);
                        
    SetPlayerInterior(playerid,House[h][hint]);
                        
    SetPlayerVirtualWorld(playerid,h);
                        
    SetPlayerPos(playerid,House[h][hx2],House[h][hy2],House[h][hz2]);
                        
    SendClientMessage(playerid,yell,!"Вы купили дом!Введите /hmenu.");
                        for(new 
    i!= 6i++)TextDrawHideForPlayer(playerid,housetd[i]);
                        
    CancelSelectTextDraw(playerid);
                        return 
    1;
                    }
                    case 
    1:
                    {
                        if(
    House[h][hopen] == 0  || player[playerid][phouse] == h)
                        {
                            
    SetPlayerVirtualWorld(playerid,h);
                            
    SetPlayerInterior(playerid,House[h][hint]);
                            
    SetPlayerPos(playerid,House[h][hx2],House[h][hy2],House[h][hz2]);
                            for(new 
    i!= 6i++)TextDrawHideForPlayer(playerid,housetd[i]);
                            
    CancelSelectTextDraw(playerid);
                            return 
    1;
                        }
                        else 
    SendClientMessage(playerid,red,!"Дом закрыт");
                        return 
    1;
                    }
                }
            }
        } 
    Так же при перезаходе на сервер,игрок спавнится в ид 0 доме и при выходе из дома появляется у выхода 0 ида дома

  2. #2
    Аватар для wAx
    ¯\_(ツ)_/¯

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    377
    Репутация:
    146 ±
    а где собственно проверка на позицию дома возле которого игрок находится? В коде я увидел только цикл по всему массиву домов
    PHP код:
    for(new 0sizeof(House);h++) 
    и тут понятно, что если нет никаких условий, то коду подойдет первый попавшийся дом и он произведет действия с ним.

    Решение проблемы будет в одной проверке (по позиции, по динамическим зонам - это как душе угодно)
    В тело цикла:
    PHP код:
    if(!IsPlayerInRangeOfPoint(playerid5.0house_pos_xhouse_pos_yhouse_pos_z)) continue; 
    Но как по мне, самым удобным способом, будет присвоение значения PVar'у игрока при его взаимодействии с пикапом/меткой дома. То есть - подобрал игрок пикап дома записываем номер ячейки массива в котором хранится пикап в PVar игроку. А далее все от тебя зависит, хочешь - очищай PVar как только игрок например нажмет куда-нибудь и тебе уже не нужен будет этот пикап.
    Последний раз редактировалось wAx; 30.08.2017 в 12:26.

  3. Пользователь сказал cпасибо:
    azlagor (30.08.2017)
  4. #3
    Аватар для azlagor
    Пользователь

    Статус
    Оффлайн
    Регистрация
    29.08.2017
    Сообщений
    18
    Репутация:
    0 ±
    Спасибо,теперь всё работает отлично!Закрывайте

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •