Вопросы

Mason
Постоянный

Всем Привет! Столкнулся я с такой проблемой, на аккаунте числится что есть дом/бизнес/заправка но на самом деле нет. Соответственно при выборе спавна предлагает вариант "в доме", купить дом, бизнес, и прочую фигню нельзя т.к пишет что уже есть дом..
Прилагаю код проверки на наличие того или иного имущества у игрока

Спойлер

stock GetPlayerHouse(playerid)//Это дома(впрочем такая же проверка стоит у бизнесов/заправок и.т.д)
{
    new house = 0;
    for(new i = 0; i <= HouseCount; i++)
    {
        if(!strcmp(HouseInfo[i][hOwner],PlayerInfo[playerid][pSendername],true)) house++, SetPVarInt(playerid, "PlayerHouse", i);
    }
    return house;
}

 


Произошло это всё после того как я на шаманил с i = 0, до этого вместо 0 стояла 1 почти везде(загрузка, взаимодействие с пикапом и так далее.) но т.к из за единицы не прогружалось имущество с 1 ид, было принято решение поставить 0.

Поделиться сообщением


Ссылка на сообщение

36 ответов на этот вопрос

  • 0
Cawfee
Великий Гуру

@Mason, вы мне что скинули, то я и анализирую, на основе чего формирую мысли. 

Поделиться сообщением


Ссылка на сообщение
  • 0
Mason
Постоянный

@Cawfee, А ой извините, забыл приложить код проверки на наличие дома у игрока, простите, мой косяк..¬¬

 

Спойлер

stock GetPlayerHouse(playerid)
{
    new house = 0;
    for(new i = 0; i <= HouseCount; i++)
    {
        if(!strcmp(HouseInfo[i][hOwner],PlayerInfo[playerid][pSendername],true)) house++, SetPVarInt(playerid, "PlayerHouse", i);
    }
    return house;
}

 

 

Поделиться сообщением


Ссылка на сообщение
  • 0
surenescore
Освоившийся

@Mason Проверь, с какого числа должен начинаться цикл в проверке имущества. Убедись, что это действительно должно быть 0, а не 1.

Добавь в код вывод отладочных сообщений, чтобы видеть, какое имущество присваивается игроку. Это поможет понять, где ошибка.

Исправь цикл в функции, чтобы он проверял все дома до последнего. Сделай так, чтобы цикл заканчивался на "меньше чем количество домов" (i < HouseCount).

Убедись, что в других частях кода, где проверяется наличие имущества, тоже используются правильные индексы.

Поделиться сообщением


Ссылка на сообщение
  • 0
Mason
Постоянный

@D2DChat, Сделал ваш способ с циклом, помогло. Но теперь творится такая дичь, когда я покупаю дом допустим с 365 ид вроде всё нормально всё отлично, а вот после рестарта сервера оказывается что владею я домом с 364 ид.:(

Поделиться сообщением


Ссылка на сообщение
  • 0
surenescore
Освоившийся

@Mason Это может происходить из-за неправильного сохранения или загрузки данных. Проверь, как ты сохраняешь данные о домах. Убедись, что ID дома сохраняется правильно и не смещается на 1. Проверь, как ты загружаешь данные о домах после рестарта сервера. Убедись, что данные загружаются с правильными ID.

 

Добавь отладочные сообщения в функции сохранения и загрузки данных, чтобы увидеть, что именно сохраняется и загружается.

Например, если у тебя есть функция, которая сохраняет данные о домах, добавь туда что-то вроде:

 

 

printf("Saving house data: ID = %d, Owner = %s", houseID, ownerName);

 

А в функции загрузки данных:

 

printf("Loading house data: ID = %d, Owner = %s", houseID, ownerName);

Так ты сможешь увидеть, где происходит смещение. Также проверь, нет ли в логике кода ошибок, которые могут приводить к смещению ID дома. Например, где-то может использоваться i-1 вместо i.

 

Попробуй эти шаги и посмотри, поможет ли это выявить и исправить ошибку. Если что-то будет неясно или понадобится помощь с конкретным кодом, дай знать!

Отредактировано пользователем D2DChat

Поделиться сообщением


Ссылка на сообщение
  • 0
Mason
Постоянный

@D2DChat, Функции сохранения домов у меня нет, но я выявил вот такой прикол, покупаю 381 дом, в игре покупается 381 дом, а в базе присвоение владельца и прочая шняга идёт 380 дому..

Поделиться сообщением


Ссылка на сообщение
  • 0
surenescore
Освоившийся

Попробуй проверить код, который отвечает за присвоение владельца дому. Убедись, что нигде не происходит смещение индекса на 1. Например, проверь, что ты не используешь i-1 вместо i.

 

Так же добавь отладочные сообщения в те места, где присваиваются владельцы домам, чтобы увидеть, где именно происходит смещение. Например, если у тебя есть функция, которая присваивает владельца дому, добавь туда что-то вроде:

 

printf("Setting owner for house ID %d to %s", houseid, PlayerInfo[playerid][pSendername]);

 

А когда ты сохраняешь данные в базу, добавь сообщение вроде:

 

printf("Saving house ID %d with owner %s to database", houseid, HouseInfo[houseid][hOwner]);

Так ты сможешь увидеть, где именно происходит смещение. Проверь все функции, которые работают с массивами домов, чтобы убедиться, что нигде нет ошибок с индексами.

Поделиться сообщением


Ссылка на сообщение
  • 0
Mason
Постоянный

@D2DChat, и так я вставил принтфки куда надо, но что в привоении владельца что в записи в базу указывает 364 ид(покупаю я соответственно 365), ну... А посмотрев код я не увидел никаких странностей

Поделиться сообщением


Ссылка на сообщение
  • 0
ddrgtagfon
Активный

@Mason попробуй это, в стоке/паблике загрузки тоже измени на i = 1, если там 0

stock GetPlayerHouse(playerid)
{
    new house = 1;
    for(new i = 1; i <= HouseCount; i++)
    {
        if(!strcmp(HouseInfo[i][hOwner],PlayerInfo[playerid][pSendername],true)) house++, SetPVarInt(playerid, "PlayerHouse", i);
    }
    return house;
}

 

Поделиться сообщением


Ссылка на сообщение
  • 0
Mason
Постоянный

@ddrgtagfon, увы но не помогло, если в загрузке домов поставить вместо 0 1 то дом с 0 ид пропадёт. А если поставить это в buyhouse но не менять в load house то это не даст никакого эффекта.

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Helados
      От Helados
      Короче, мы протестировали наш GTA на другом хостинге — голосовой чат там работает, всё включается нормально. Также проверили на другом хостинге с нашим игровым модом — voice chat тоже работает.
      Но на нашем личном хостинге, который мы купили на OVH и установили панель, не получается запустить голосовой чат. Похоже, проблема связана с портами. После перезапуска сервер почему-то случайным образом выбирает порты сам и мы не можем это исправить.
      Если кто-то знает человека, который может помочь разобраться с этой проблемой, буду благодарен.
    • тимормо
      От тимормо
      Копия Diamond RP (основа State 99)
      Скачать файл Мод DIAMOND RP (ver. 1.0)
      Основа: State 99
      Автор мода: #TomSnow
      Вопросы/Баги: https://vk.com/etalon_dev
       
      Приветствую всех! На связи #TomSnow
       
      Я принял решение начать поэтапную разработку и восстановление легендарного мода Diamond RolePlay образца 2015–2017 годов, взяв за основу мод State 99 (оригинальная основа DRP).
       
      Каждая новая версия разрабатываемого мода будет публиковаться в открытом доступе для всех участников и подписчиков сообщества (https://vk.com/etalon_dev). Это позволит вам не только следить за процессом разработки, но и принимать непосредственное участие в развитии проекта: тестировать обновления, находить баги, сообщать о недоработках и помогать делать мод максимально качественным и стабильным.
       
      Если вам интересна данная тематика и вы хотите наблюдать за ходом разработки, подписывайтесь на нашу группу ВКонтакте (https://vk.com/etalon_dev) и ожидайте публикацию версий проекта.
       
      Спасибо всем за поддержку! Впереди нас ждёт много интересной работы и возвращение атмосферы классического Diamond RolePlay. 
       
      Информация о моде:
       
      Версия MySQL R 39-6
      Античит Nex-AC (Доработанный)
      Стример Streamer Plugin v2.9.4
      Командный процессор Pawn CMD
       
      Список обновлений мода
       
       
      Добавил тимормо Добавлено 07/15/26 Категория Моды Автор #TomSnow  
    • тимормо
      От тимормо
      Мод DIAMOND RP (ver. 1.0)
      Основа: State 99
      Автор мода: #TomSnow
      Вопросы/Баги: https://vk.com/etalon_dev
       
      Приветствую всех! На связи #TomSnow
       
      Я принял решение начать поэтапную разработку и восстановление легендарного мода Diamond RolePlay образца 2015–2017 годов, взяв за основу мод State 99 (оригинальная основа DRP).
       
      Каждая новая версия разрабатываемого мода будет публиковаться в открытом доступе для всех участников и подписчиков сообщества (https://vk.com/etalon_dev). Это позволит вам не только следить за процессом разработки, но и принимать непосредственное участие в развитии проекта: тестировать обновления, находить баги, сообщать о недоработках и помогать делать мод максимально качественным и стабильным.
       
      Если вам интересна данная тематика и вы хотите наблюдать за ходом разработки, подписывайтесь на нашу группу ВКонтакте (https://vk.com/etalon_dev) и ожидайте публикацию версий проекта.
       
      Спасибо всем за поддержку! Впереди нас ждёт много интересной работы и возвращение атмосферы классического Diamond RolePlay. 
       
      Информация о моде:
       
      Версия MySQL R 39-6
      Античит Nex-AC (Доработанный)
      Стример Streamer Plugin v2.9.4
      Командный процессор Pawn CMD
       
      Список обновлений мода
       
       
    • Gabriel C
      От Gabriel C
      Всем привет. Ищу клиентскую сборку Flin RP для ПК.
      Нужна полноценная версия клиента со всеми необходимыми файлами для запуска игры и подключения к серверу.
      Желательно сборку примерно 2023 года, так как по имеющимся файлам видно, что обновления клиента и систем Real Cars / Real Skins были сделаны в начале 2023 года.
      Нужна именно ПК-сборка/клиент Flin RP:
      лаунчер (если был); папка с игрой; ASI/плагины; cache/modpack с моделями. Если у кого-то осталась рабочая сборка или архив клиента — буду благодарен за помощь.