Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 14

Тема: Sscanf + Pickup

  1. #1
    Аватар для _MegaMix_
    Пользователь

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

    Sscanf + Pickup

    Здравствуйте, возникла такая проблема - у меня есть массив в котором записаны иды и координаты пикапов, с него идёт создание для каждого игрока и собственно сохранение и считывание при дальнейшей загрузке:

    PHP код:
    При регистрации игрока :

    new 
    str[250];
    for(new 
    0ArtefaktPiCkUpS;++)
    {
        if( 
    < (ArtefaktPiCkUpS-1) ) strcat(str"0 ");
        else 
    strcat(str"0");
        
    PlayerInfo[playerid][PlayerPickup][i] = CreateDynamicPickup(ArtZones[i][ObjID], 23ArtZones[i][CoordPick][0], ArtZones[i][CoordPick][1], ArtZones[i][CoordPick][2], -1, -1playerid);
    }

    сток

    Pick_SaveInfo
    (playerid)
    {
        new 
    string[350], str[256];
        
    strcat(string"UPDATE `Accounts` SET `Upped` = '");
        for(new 
    0ArtefaktPiCkUpS;++)
        {
            if( 
    < (ArtefaktPiCkUpS-1) ) format(strsizeof(str), "%d "UppedArtefaktPiCkUpS[playerid][i]);
            else 
    format(strsizeof(str), "%d"UppedArtefaktPiCkUpS[playerid][i]);
            
    strcat(stringstr);
        }
        
    format(strsizeof(str), "', `AllPick` = '%d' WHERE `Nickname` = '%s'"PlayerInfo[playerid][AllPick], PlayerInfo[playerid][pName]);
        
    strcat(stringstr);
        
    mysql_tquery(MYSQL_ARGstring"""");
        return 
    true;
    }

    сам подбор:

    public 
    OnPlayerPickUpDynamicPickup(playeridpickupid)
    {
        for(new 
    0ArtefaktPiCkUpSi++)
        if(
    pickupid == PlayerInfo[playerid][PlayerPickup][i])
            {
                
    PlayerInfo[playerid][AllPick]++;
                
    UppedArtefaktPiCkUpS[playerid][i] = 1;
                
    DestroyDynamicPickup(PlayerInfo[playerid][PlayerPickup][i]);
                
    Pick_SaveInfo(playerid);
                new 
    string[144];
                if(
    PlayerInfo[playerid][AllPick] == ArtefaktPiCkUpS)
                {
                    
    SendClientMessageToAll(0xCC6699FF,string);
                    
    GivePlayerMoney(playerid1000000*COMBO_PREDMER_EARN);
                }
                else
                {
                    
    GivePlayerMoney(playerid, (ArtZones[i][ObjID]*random(7))*COMBO_PREDMER_EARN);
                }
                break;
               }
        return 
    1;
    }

    При коннекте и дисконнекте обнуляю:

        
    PlayerInfo[playerid][AllPick] = 0;
        for(new 
    0ArtefaktPiCkUpS;++)
            
    UppedArtefaktPiCkUpS[playerid][i] = 0
    И собственно сама загрузка:
    PHP код:

            
    if(PlayerInfo[playerid][AllPick] != ArtefaktPiCkUpS)
            {
                new 
    result[ArtefaktPiCkUpS];//+1
                
    cache_get_field_content(0"Upped"resultMYSQL_ARGsizeof(result));
                
    sscanf(result"a<i>[115]"UppedArtefaktPiCkUpS[playerid]);
                for(new 
    0ArtefaktPiCkUpSi++)
                      if(
    UppedArtefaktPiCkUpS[playerid][i] == 0)
                        
    PlayerInfo[playerid][PlayerPickup][i] = CreateDynamicPickup(ArtZones[i][ObjID], 23ArtZones[i][CoordPick][0], ArtZones[i][CoordPick][1], ArtZones[i][CoordPick][2], -1, -1playerid);
            } 
    Но дело в том, что можно подбирать уже собранные пикапы при перезаходе, что не так в коде?

  2. #2
    Аватар для qwezert
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.06.2016
    Адрес
    Одесса, Украина
    Сообщений
    281
    Репутация:
    51 ±
    Но дело в том, что можно подбирать уже собранные пикапы при перезаходе, что не так в коде?
    А нельзя обновлять информацию о поднятом пикапе запросом в БД прямо при его поднятии?

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

    Я просто в этом коде чет вообще разобрать нормально ничего не могу, поэтому задам вопрос, а каким образом ты проверяешь тот или другой пикап был поднят и сохраняешь в БД если у тебя в БД id записей отличаются от id пикапа в моде + при создании они могут иметь отличающийся id .
    Лучше лишний раз показаться глупым и что то узнать, чем вы*бнуться и обосраться.

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

    Статус
    Оффлайн
    Регистрация
    25.12.2016
    Сообщений
    31
    Репутация:
    0 ±
    Цитата Сообщение от qwezert Посмотреть сообщение
    А нельзя обновлять информацию о поднятом пикапе запросом в БД прямо при его поднятии?

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

    Я просто в этом коде чет вообще разобрать нормально ничего не могу, поэтому задам вопрос, а каким образом ты проверяешь тот или другой пикап был поднят и сохраняешь в БД если у тебя в БД id записей отличаются от id пикапа в моде + при создании они могут иметь отличающийся id .
    При подборе присваиваю единицу и сохраняю, а при загрузке загружает пикапы равные 0
    PHP код:
              UppedArtefaktPiCkUpS[playerid][i] = 1;
                
    DestroyDynamicPickup(PlayerInfo[playerid][PlayerPickup][i]);
                
    Pick_SaveInfo(playerid); 

  4. #4
    Аватар для qwezert
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.06.2016
    Адрес
    Одесса, Украина
    Сообщений
    281
    Репутация:
    51 ±
    Как ты потом проверяешь - какие пикапы были подобраны а какие нет?
    Лучше лишний раз показаться глупым и что то узнать, чем вы*бнуться и обосраться.

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

    Статус
    Оффлайн
    Регистрация
    25.12.2016
    Сообщений
    31
    Репутация:
    0 ±
    Цитата Сообщение от qwezert Посмотреть сообщение
    Как ты потом проверяешь - какие пикапы были подобраны а какие нет?
    При повторной загрузке аккаунта - код не должен дать загрузиться уже подобранным пикапам, поэтому проверка при подборе на то что подборал игрок или нет - отсутствует
    PHP код:
    [PHP]            new result[ArtefaktPiCkUpS];//+1
                
    cache_get_field_content(0"Upped"resultMYSQL_ARGsizeof(result));
                
    sscanf(result"a<i>[115]"UppedArtefaktPiCkUpS[playerid]);
                for(new 
    0ArtefaktPiCkUpSi++)
                      if(
    UppedArtefaktPiCkUpS[playerid][i] == 0
    [/PHP]

  6. #6
    Аватар для qwezert
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.06.2016
    Адрес
    Одесса, Украина
    Сообщений
    281
    Репутация:
    51 ±
    Цитата Сообщение от _MegaMix_ Посмотреть сообщение
    При повторной загрузке аккаунта - код не должен дать загрузиться уже подобранным пикапам, поэтому проверка при подборе на то что подборал игрок или нет - отсутствует
    PHP код:
    [PHP]            new result[ArtefaktPiCkUpS];//+1
                
    cache_get_field_content(0"Upped"resultMYSQL_ARGsizeof(result));
                
    sscanf(result"a<i>[115]"UppedArtefaktPiCkUpS[playerid]);
                for(new 
    0ArtefaktPiCkUpSi++)
                      if(
    UppedArtefaktPiCkUpS[playerid][i] == 0
    [/PHP]
    В том и вопрос, как ты узнаешь - какие пикапы были подобраны? Когда ты создаешь пикап на сервере через мод - он со своим id, в то же время загружаю из БД ты загружаешь id из БД которые не соответствуют id созданым на сервере.
    Лучше лишний раз показаться глупым и что то узнать, чем вы*бнуться и обосраться.

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

    Статус
    Оффлайн
    Регистрация
    25.12.2016
    Сообщений
    31
    Репутация:
    0 ±
    Цитата Сообщение от qwezert Посмотреть сообщение
    В том и вопрос, как ты узнаешь - какие пикапы были подобраны? Когда ты создаешь пикап на сервере через мод - он со своим id, в то же время загружаю из БД ты загружаешь id из БД которые не соответствуют id созданым на сервере.
    Эм, идёт цикл при котором создаются, в бд они записываются вот так:

    PHP код:
    0 0 0 0 1 0 1 0 0 0
    0 0 0 1 0 0 0 0 0 1 
    Через sscanf я и загружаю их в дальнейшем по порядку проверяя равны ли они 0.

    Но собственно если я не так делаю, то как нужно тогда?

  8. #8
    Аватар для qwezert
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.06.2016
    Адрес
    Одесса, Украина
    Сообщений
    281
    Репутация:
    51 ±
    Цитата Сообщение от _MegaMix_ Посмотреть сообщение
    Эм, идёт цикл при котором создаются, в бд они записываются вот так:

    PHP код:
    0 0 0 0 1 0 1 0 0 0
    0 0 0 1 0 0 0 0 0 1 
    Через sscanf я и загружаю их в дальнейшем по порядку проверяя равны ли они 0.

    Но собственно если я не так делаю, то как нужно тогда?
    Ты все равно не понял. Вот игрок встает на пикап, у пикапа на сервере id допустим 12. Ты хочешь сохранить в БД - что этот пикап подобран, но в бд у тебя лежит всего 11 пикапов и начинаются они с id 0. Как ты узнаешь - какому пикапу в БД присваивать что он подобран или не подобран?
    Лучше лишний раз показаться глупым и что то узнать, чем вы*бнуться и обосраться.

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

    Статус
    Оффлайн
    Регистрация
    25.12.2016
    Сообщений
    31
    Репутация:
    0 ±
    Цитата Сообщение от qwezert Посмотреть сообщение
    Ты все равно не понял. Вот игрок встает на пикап, у пикапа на сервере id допустим 12. Ты хочешь сохранить в БД - что этот пикап подобран, но в бд у тебя лежит всего 11 пикапов и начинаются они с id 0. Как ты узнаешь - какому пикапу в БД присваивать что он подобран или не подобран?
    И как тогда нужно узнавать?

  10. #10
    Аватар для qwezert
    Пользователь

    Статус
    Оффлайн
    Регистрация
    13.06.2016
    Адрес
    Одесса, Украина
    Сообщений
    281
    Репутация:
    51 ±
    Цитата Сообщение от _MegaMix_ Посмотреть сообщение
    И как тогда нужно узнавать?
    Ну насколько я понимаю - тут все попроще будет. При загрузке пикапов сохраняй в массив с пикапами - их ID из бд. Когда игрок будет вставать на пикап - доставай их БДшный ID из ячейки и отправляй запрос на изменение. И можно упростить тот код который ты написал)
    Лучше лишний раз показаться глупым и что то узнать, чем вы*бнуться и обосраться.

 

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

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

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

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

Ваши права

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