Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 14
  1. #1
    Аватар для GodFather
    Пользователь

    Статус
    Оффлайн
    Регистрация
    18.05.2014
    Сообщений
    30
    Репутация:
    1 ±

    Проблема с сохранением домов.

    Итак... Когда покупаю дом, все остальные иконки домов перемещаются на иконку того что я купил и у всех тех домов я становлюсь владельцем...

    Команда покупки:
    PHP код:
    CMD:buyhouse(playerid,params[])
    {
        
    //if(!IsPlayerLogged(playerid)) return SendMes(playerid,COLOR_WHITE," Необходимо авторизоваться");
        
    if(PlayerInfo[playerid][pHouseKey] != -1) return SendMes(playerid,COLOR_B," У вас уже есть дом. Введите /sellhouse, чтобы его продать");
        for(new 
    1<= TOTALHOUSESh++)
        {
            if(
    IsPlayerInRangeOfPoint(playerid,2.0,HouseInfo[h][hEnterX],HouseInfo[h][hEnterY],HouseInfo[h][hEnterZ]))
            {
                if(
    HouseInfo[h][hOwned] == 1SendMes(playerid,COLOR_B,"В этом доме уже кто-то проживает");
                if(
    PlayerInfo[playerid][pCash] < HouseInfo[h][hPrice]) return SendMes(playerid,COLOR_B," У вас недостаточно денег на покупку дома");
                
    PlayerInfo[playerid][pHouseKey] = h;
                
    HouseInfo[h][hOwned] = 1;
                
    HouseInfo[h][hHel] = 0;
                
    HouseInfo[h][hTakings] = 50*(HouseInfo[h][hClass]+1)*2;
                
    strmid(HouseInfo[h][hOwner], PlayerInfo[playerid][pNames], 0strlen(PlayerInfo[playerid][pNames]), 255);
                
    PlayerInfo[playerid][pCash] -= HouseInfo[h][hPrice];
                
    GivePlayerMoney(playerid,PlayerInfo[playerid][pCash]);
                
    SetPlayerPos(playerid,HouseInfo[h][hExitX],HouseInfo[h][hExitY],HouseInfo[h][hExitZ]);
                
    SetPlayerInterior(playerid,HouseInfo[h][hInt]);
                
    SetPlayerVirtualWorld(playerid,h+50);
                
    SendMes(playerid,COLOR_B," Поздравляем с покупкой!");
                
    Update3DTexts();
                
    OnHouseSave(h);
                break;
            }
        }
        return 
    true;

    PHP код:
    public OnHouseSave(houseid)
    {
        new 
    string[32],query[256];
        
    format(string,sizeof(string),"UPDATE `"TABLE_HOUSES"` SET "),strcat(query,string);
        
    format(string,sizeof(string),"`hOwned` = '%i', ",HouseInfo[houseid][hOwned]),strcat(query,string);
        
    format(string,sizeof(string),"`hOwner` = '%s', ",HouseInfo[houseid][hOwner]),strcat(query,string);
        
    format(string,sizeof(string),"`hEnterX` = '%f', ",HouseInfo[houseid][hEnterX]),strcat(query,string);
        
    format(string,sizeof(string),"`hEnterY` = '%f', ",HouseInfo[houseid][hEnterY]),strcat(query,string);
        
    format(string,sizeof(string),"`hEnterZ` = '%f', ",HouseInfo[houseid][hEnterZ]),strcat(query,string);
        
    format(string,sizeof(string),"`hExitX` = '%f', ",HouseInfo[houseid][hExitX]),strcat(query,string);
        
    format(string,sizeof(string),"`hExitY` = '%f', ",HouseInfo[houseid][hExitY]),strcat(query,string);
        
    format(string,sizeof(string),"`hExitZ` = '%f', ",HouseInfo[houseid][hExitZ]),strcat(query,string);
        
    format(string,sizeof(string),"`hLevel` = '%i', ",HouseInfo[houseid][hLevel]),strcat(query,string);
        
    format(string,sizeof(string),"`hPrice` = '%i', ",HouseInfo[houseid][hPrice]),strcat(query,string);
        
    format(string,sizeof(string),"`hLock` = '%i', ",HouseInfo[houseid][hLock]),strcat(query,string);
        
    format(string,sizeof(string),"`hTakings` = '%i', ",HouseInfo[houseid][hTakings]),strcat(query,string);
        
    format(string,sizeof(string),"`hInt` = '%i', ",HouseInfo[houseid][hInt]),strcat(query,string);
        
    format(string,sizeof(string),"`hHel` = '%i', ",HouseInfo[houseid][hHel]),strcat(query,string);
        
    format(string,sizeof(string),"`hClass` = '%i' ",HouseInfo[houseid][hClass]),strcat(query,string);
        
    format(string,sizeof(string),"WHERE `hID` = '%i'",HouseInfo[houseid][hID]),strcat(query,string);
        
    mysql_function_query(MYSQL_ARG,query,false,"","");
        return 
    true;


  2. #2
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Если SendMes функция, а не макрос - советую от неё избавиться.
    Покажите Update3DTexts
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  3. #3
    Аватар для GodFather
    Пользователь

    Статус
    Оффлайн
    Регистрация
    18.05.2014
    Сообщений
    30
    Репутация:
    1 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Если SendMes функция, а не макрос - советую от неё избавиться.
    Покажите Update3DTexts
    PHP код:
    stock Update3DTexts()
    {
        new 
    string[128];
        for(new 
    idx 1idx <= TOTALHOUSESidx++)
        {
            new 
    klass[2];
            
    DestroyDynamicMapIcon(HouseInfo[idx][hIconID]);
            
    DestroyPickup(HouseInfo[idx][hPickupID]);
            
    Delete3DTextLabel(HouseInfo[idx][hTextID]);
            if(
    HouseInfo[idx][hOwned] == 0)
            {
                
    HouseInfo[idx][hPickupID] = CreatePickup(127323HouseInfo[idx][hEnterX], HouseInfo[idx][hEnterY], HouseInfo[idx][hEnterZ],-1);
                
    HouseInfo[idx][hIconID] = CreateDynamicMapIcon(HouseInfo[idx][hEnterX], HouseInfo[idx][hEnterY], HouseInfo[idx][hEnterZ], 31COLOR_WHITE0, -1, -1100.0);
                switch(
    HouseInfo[idx][hClass])
                {
                case 
    0klass "E";
                case 
    1klass "D";
                case 
    2klass "C";
                case 
    3klass "B";
                case 
    4klass "A";
                case 
    5klass "S";
                }
                
    format(string,sizeof(string),"Номер дома: %i\nЦена: %i долларов\nКласс: %s",idx,HouseInfo[idx][hPrice],klass);
                
    HouseInfo[idx][hTextID] = Create3DTextLabel(string,COLOR_SEND,HouseInfo[idx][hEnterX], HouseInfo[idx][hEnterY], HouseInfo[idx][hEnterZ],20.0,0,1);
            }
            else
            {
                
    HouseInfo[idx][hPickupID] = CreatePickup(127223HouseInfo[idx][hEnterX], HouseInfo[idx][hEnterY], HouseInfo[idx][hEnterZ],-1);
                
    HouseInfo[idx][hIconID] = CreateDynamicMapIcon(HouseInfo[idx][hEnterX], HouseInfo[idx][hEnterY], HouseInfo[idx][hEnterZ], 32COLOR_WHITE0, -1, -1100.0);
                switch(
    HouseInfo[idx][hClass])
                {
                case 
    0klass "E";
                case 
    1klass "D";
                case 
    2klass "C";
                case 
    3klass "B";
                case 
    4klass "A";
                case 
    5klass "S";
                }
                
    format(string,sizeof(string),"Номер дома: %i\nВладелец: %s\nКласс: %s",idx,HouseInfo[idx][hOwner],klass);
                
    HouseInfo[idx][hTextID] = Create3DTextLabel(string,COLOR_LIGHTRED,HouseInfo[idx][hEnterX], HouseInfo[idx][hEnterY], HouseInfo[idx][hEnterZ],20.0,0,1);
            }
        }

    SendMes - Макрос.

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

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    375
    Репутация:
    144 ±
    Попробуй заменить команду /buyhouse на вариант предложенный ниже.
    P.S Это всего лишь вариант, поэтому сохрани старый вариант команды

    PHP код:
    CMD:buyhouse(playerid,params[]) 

        
    //if(!IsPlayerLogged(playerid)) return SendMes(playerid,COLOR_WHITE," Необходимо авторизоваться"); 
        
    if(PlayerInfo[playerid][pHouseKey] != -1) return SendMes(playerid,COLOR_B," У вас уже есть дом. Введите /sellhouse, чтобы его продать"); 
        for(new 
    1<= TOTALHOUSESh++) 
        { 
            if(
    IsPlayerInRangeOfPoint(playerid,2.0,HouseInfo[h][hEnterX],HouseInfo[h][hEnterY],HouseInfo[h][hEnterZ])) 
            { 
                if(
    HouseInfo[h][hOwned] == 1SendMes(playerid,COLOR_B,"В этом доме уже кто-то проживает"); 
                if(
    PlayerInfo[playerid][pCash] < HouseInfo[h][hPrice]) return SendMes(playerid,COLOR_B," У вас недостаточно денег на покупку дома"); 
                
    PlayerInfo[playerid][pHouseKey] = h
                
    HouseInfo[h][hOwned] = 1
                
    HouseInfo[h][hHel] = 0
                
    HouseInfo[h][hTakings] = 50*(HouseInfo[h][hClass]+1)*2
                
    strmid(HouseInfo[h][hOwner], PlayerInfo[playerid][pNames], 0strlen(PlayerInfo[playerid][pNames]), 255); 
                
    PlayerInfo[playerid][pCash] -= HouseInfo[h][hPrice]; 
                
    GivePlayerMoney(playerid,PlayerInfo[playerid][pCash]); 
                
    SetPlayerPos(playerid,HouseInfo[h][hExitX],HouseInfo[h][hExitY],HouseInfo[h][hExitZ]); 
                
    SetPlayerInterior(playerid,HouseInfo[h][hInt]); 
                
    SetPlayerVirtualWorld(playerid,h+50); 
                
    SendMes(playerid,COLOR_B," Поздравляем с покупкой!"); 
                
    OnHouseSave(h); 
                
    DestroyDynamicMapIcon(HouseInfo[h][hIconID]);
                
    DestroyPickup(HouseInfo[h][hPickupID]);
                
    Delete3DTextLabel(HouseInfo[h][hTextID]);
                
    HouseInfo[h][hPickupID] = CreatePickup(127223HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ],-1);
                
    HouseInfo[h][hIconID] = CreateDynamicMapIcon(HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ], 32COLOR_WHITE0, -1, -1100.0);
                switch(
    HouseInfo[h][hClass])
                {
                case 
    0klass "E";
                case 
    1klass "D";
                case 
    2klass "C";
                case 
    3klass "B";
                case 
    4klass "A";
                case 
    5klass "S";
                }
                
    format(string,sizeof(string),"Номер дома: %i\nВладелец: %s\nКласс: %s",idx,HouseInfo[h][hOwner],klass);
                
    HouseInfo[h][hTextID] = Create3DTextLabel(string,COLOR_LIGHTRED,HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ],20.0,0,1);
                break; 
            } 
        } 
        return 
    true


  5. #5
    Аватар для GodFather
    Пользователь

    Статус
    Оффлайн
    Регистрация
    18.05.2014
    Сообщений
    30
    Репутация:
    1 ±
    Цитата Сообщение от wAx Посмотреть сообщение
    Попробуй заменить команду /buyhouse на вариант предложенный ниже.
    P.S Это всего лишь вариант, поэтому сохрани старый вариант команды

    PHP код:
    CMD:buyhouse(playerid,params[]) 

        
    //if(!IsPlayerLogged(playerid)) return SendMes(playerid,COLOR_WHITE," Необходимо авторизоваться"); 
        
    if(PlayerInfo[playerid][pHouseKey] != -1) return SendMes(playerid,COLOR_B," У вас уже есть дом. Введите /sellhouse, чтобы его продать"); 
        for(new 
    1<= TOTALHOUSESh++) 
        { 
            if(
    IsPlayerInRangeOfPoint(playerid,2.0,HouseInfo[h][hEnterX],HouseInfo[h][hEnterY],HouseInfo[h][hEnterZ])) 
            { 
                if(
    HouseInfo[h][hOwned] == 1SendMes(playerid,COLOR_B,"В этом доме уже кто-то проживает"); 
                if(
    PlayerInfo[playerid][pCash] < HouseInfo[h][hPrice]) return SendMes(playerid,COLOR_B," У вас недостаточно денег на покупку дома"); 
                
    PlayerInfo[playerid][pHouseKey] = h
                
    HouseInfo[h][hOwned] = 1
                
    HouseInfo[h][hHel] = 0
                
    HouseInfo[h][hTakings] = 50*(HouseInfo[h][hClass]+1)*2
                
    strmid(HouseInfo[h][hOwner], PlayerInfo[playerid][pNames], 0strlen(PlayerInfo[playerid][pNames]), 255); 
                
    PlayerInfo[playerid][pCash] -= HouseInfo[h][hPrice]; 
                
    GivePlayerMoney(playerid,PlayerInfo[playerid][pCash]); 
                
    SetPlayerPos(playerid,HouseInfo[h][hExitX],HouseInfo[h][hExitY],HouseInfo[h][hExitZ]); 
                
    SetPlayerInterior(playerid,HouseInfo[h][hInt]); 
                
    SetPlayerVirtualWorld(playerid,h+50); 
                
    SendMes(playerid,COLOR_B," Поздравляем с покупкой!"); 
                
    OnHouseSave(h); 
                
    DestroyDynamicMapIcon(HouseInfo[h][hIconID]);
                
    DestroyPickup(HouseInfo[h][hPickupID]);
                
    Delete3DTextLabel(HouseInfo[h][hTextID]);
                
    HouseInfo[h][hPickupID] = CreatePickup(127223HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ],-1);
                
    HouseInfo[h][hIconID] = CreateDynamicMapIcon(HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ], 32COLOR_WHITE0, -1, -1100.0);
                switch(
    HouseInfo[h][hClass])
                {
                case 
    0klass "E";
                case 
    1klass "D";
                case 
    2klass "C";
                case 
    3klass "B";
                case 
    4klass "A";
                case 
    5klass "S";
                }
                
    format(string,sizeof(string),"Номер дома: %i\nВладелец: %s\nКласс: %s",idx,HouseInfo[h][hOwner],klass);
                
    HouseInfo[h][hTextID] = Create3DTextLabel(string,COLOR_LIGHTRED,HouseInfo[h][hEnterX], HouseInfo[h][hEnterY], HouseInfo[h][hEnterZ],20.0,0,1);
                break; 
            } 
        } 
        return 
    true

    Попробовал ваш вариант:
    - Дом купился
    - Теперь паблик сохранения домов дома не сохраняет
    - Исправился тот баг или нет я теперь сказать не могу, потому что после покупки сначала в БД менялись координаты, все на один, и владелец тоже, а теперь в БД ничего не меняется.

    - - - Добавлено - - -

    Поставил в паблик сохранения домов printf с надписью "Дом номер %d сохранён" Паблик значит вызывается, но запрос в БД не отправляется...

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

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    375
    Репутация:
    144 ±
    Мой вариант никак не затрагивает ваш паблик сохранения.

  7. #7
    Аватар для GodFather
    Пользователь

    Статус
    Оффлайн
    Регистрация
    18.05.2014
    Сообщений
    30
    Репутация:
    1 ±
    Цитата Сообщение от wAx Посмотреть сообщение
    Мой вариант никак не затрагивает ваш паблик сохранения.
    Знаю, знаю... Но... я ничего кроме добавления принта с ним не делал... И до этого он работал. Что то я совсем уже запутался...

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

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    375
    Репутация:
    144 ±
    Скиньте логирование запроса, вставьте перед mysql_function_query в вашем паблике сохранения, строку:
    PHP код:
    printf(query); 
    и скиньте результат сюда.

  9. #9
    Аватар для GodFather
    Пользователь

    Статус
    Оффлайн
    Регистрация
    18.05.2014
    Сообщений
    30
    Репутация:
    1 ±
    Одну минуту.

    - - - Добавлено - - -

    PHP код:
    [17:24:14UPDATE `houseSET `hOwned` = '1', `hOwner` = 'Matty_Diamond', `hEnterX` = '2498.550048', `hEnterY` = '-1642.260009', `hEnterZ` = '14.113100', `hExitX` = '140.281005', `hExitY` = '1365.920043', `hExitZ` = '1083.859985', `hLevel` = '0', `hPrice` = '11', `
    Увеличить массив query?

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

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    375
    Репутация:
    144 ±
    Цитата Сообщение от GodFather Посмотреть сообщение
    Одну минуту.

    - - - Добавлено - - -

    PHP код:
    [17:24:14UPDATE `houseSET `hOwned` = '1', `hOwner` = 'Matty_Diamond', `hEnterX` = '2498.550048', `hEnterY` = '-1642.260009', `hEnterZ` = '14.113100', `hExitX` = '140.281005', `hExitY` = '1365.920043', `hExitZ` = '1083.859985', `hLevel` = '0', `hPrice` = '11', `
    Увеличить массив query?
    Правильный ответ

 

 
Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

Ваши права

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