Question

Asminov
Новичок

Здравствуйте, хотел сделать систему домов, но что-то пошло не так, пытался сделать что угодно. Проще говоря проблема в том что когда покупаешь дом, пикап меняется на этот, также в папке сохранения вместо None "владельца дома до покупки", появляется пустая строка. Помогите исправить

sa-mp-003.png

Edited by Asminov

Share this post


Link to post

5 answers to this question

  • 0
Asminov
Новичок

Вот команда для покупки:

Спойлер

CMD:buyhouse(playerid, params[])
{
    if(PlayerInfo[playerid][pHouse] != 255return SCM(playerid, 0xFF0000AA"![Ошибка]{afa9a9} У вас уже есть дом!");
    for(new h = 0; h <= AllHouse; h++)
    {
        if(!IsPlayerInRangeOfPoint(playerid, 1.0, HousesInfo[h][hX], HousesInfo[h][hY], HousesInfo[h][hZ])) continue;
        if(PlayerInfo[playerid][pMoney] < HousesInfo[h][hPrise])return SCM(playerid, 0xFF0000AA"![Ошибка]{afa9a9} У вас недостаточно денег на покупку дома!");
        if(strcmp(HousesInfo[h][hOwner], "None"true) == 0return SCM(playerid, 0xFF0000AA"![Ошибка]{afa9a9} Этот дом уже куплен!");
        HousesInfo[h][hOwned] = 1;
        strmid(HousesInfo[h][hOwner], PlayerInfo[playerid][pName], 02424);
        PlayerInfo[playerid][pHouse] = h;
        PlayerInfo[playerid][pMoney] -= HousesInfo[h][hPrise];
        UpdateHouse(h);
        SaveHouses();
        SCM(playerid, COLOR_WHITE, "< Поздравляем вас с покупкой дома. (/house - помощь по дому)");
        SetPlayerInterior(playerid, HInts[HousesInfo[h][hInterior]][hiInt]);
        SetPlayerVirtualWorld(playerid, HousesInfo[h][hVirtWorld]);
        SetPlayerPos(playerid, HInts[HousesInfo[h][hInterior]][hiX], HInts[HousesInfo[h][hInterior]][hiY], HInts[HousesInfo[h][hInterior]][hiZ]);
        }
    return 1;

}

 

 

Вот код обновления дома после покупки:

Спойлер

stock UpdateHouse(h)
{
    new string[228];
    DestroyDynamicMapIcon(HousesInfo[h][hIcon]);
    DestroyPickup(HousesInfo[h][hPickup]);
    
    if(HousesInfo[h][hOwned] == 0) {
        format(string,sizeof(string), "{FF9900}*** Продается ***\n\n{ffffff}Номер: {AFAFAF}%d\n{FFFFFF}Стоимость: {AFAFAF}%d {FFFFFF}[$]\nУровень: {AFAFAF}%d{ffffff}\n\nЧтобы купить, введите {AFAFAF}/buyhouse",h,HousesInfo[h][hPrice],HousesInfo[h][hLevel]);
        Update3DTextLabelText(houses_text[h], 0xFFFFFFFF, string);
        HousesInfo[h][hIcon] = CreateDynamicMapIcon(HousesInfo[h][hX], HousesInfo[h][hY],HousesInfo[h][hZ], 31, COLOR_WHITE, 0, -1, -1400.0);
        HousesInfo[h][hPickup] = CreatePickup(127323, HousesInfo[h][hX], HousesInfo[h][hY],HousesInfo[h][hZ]);
    }
    else if(HousesInfo[h][hOwned] == 1) {
        format(string,sizeof(string), "Дом № %d\n\nУровень: %d\nВладелец: %s",h,HousesInfo[h][hLevel],HousesInfo[h][hOwner]);
        Update3DTextLabelText(houses_text[h], 0xFFFFFFFF, string);
        HousesInfo[h][hIcon] = CreateDynamicMapIcon(HousesInfo[h][hX], HousesInfo[h][hY],HousesInfo[h][hZ], 32, COLOR_WHITE, 0, -1, -1400.0);
        HousesInfo[h][hPickup] = CreatePickup(127223, HousesInfo[h][hX], HousesInfo[h][hY],HousesInfo[h][hZ]);
    }
}

 

 

Edited by Cawfee

Заметка от Cawfee , создано

3.2. Код необходимо брать в тег "Код", а код более 10 строк – еще и в "Спойлер". Как это сделать рассказано в разделе "FAQ".

Устное предупреждение.

Share this post


Link to post
  • 0
Cawfee
Великий Гуру
19 часов назад, Asminov сказал:

когда покупаешь дом, пикап меняется на этот

А это является проблемой? В явном виде обозначается, что дом кем-либо приобретен. В любом случае, если вам это не нравится, в теле функции UpdateHouse вы можете изменить эту логику или изменить модель пикапа в функции CreatePickup.

 

19 часов назад, Asminov сказал:

также в папке сохранения вместо None "владельца дома до покупки", появляется пустая строка

Добавьте какой-нибудь вывод для отладки, чтобы убедиться, что в hOwner есть значение имени. 

printf("Дом приобретается игроком %s", HousesInfo[h][hOwner]);

Перед следующей строкой:

format(string,sizeof(string), "Дом № %d\n\nУровень: %d\nВладелец: %s",h,HousesInfo[h][hLevel],HousesInfo[h][hOwner]);

И после приобретения дома посмотрите, что там в консоли (логах сервера).

Share this post


Link to post
  • 0
Asminov
Новичок

@Cawfee Проблема заключается в том что после покупки надпись меняется на всякую балбурду, то есть строчка на строчке и не поймёшь что там написано. На фото видно

Edited by Asminov

Share this post


Link to post
  • 0
sinvays
Завсегдатый

@Asminov Возможно проблема заключается в некорректном обновлении информации о владельце дома и неправильном форматировании строки отображающей информации о доме. Посмотри что проверка на наличие владельца работает корректно, а присваивание имени владельца происходит без ошибок. Так-же ещё проверь правильно ли форматируются строки перед их обновлением, нужно это сделать дабы исключить смешивание текста. Как сказал выше CAWFEE чтобы упростить себе задачу добавь отладочные сообщения, они тебе помогут понять где именно происходит ошибка в логике обновления данных.

Edited by angel_sinvays
Причина: исправил

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • ВасилийСталин
      By ВасилийСталин
      VERDICT PROJECT - V:ACE
       
      Соревновательный проект на платформе SA-MP, вдохновлённый духом Counter-Strike: тактические перестрелки, честный рейтинг и ванильное PVP.
      В разработке, не используются ресурсы, из открытых источников. Всё строится с нуля, собственный игровой мод, полностью кастомный интерфейс и игровой лаунчер.
      Что мы разрабатываем:
       
      - Рейтинговый режим с подбором по ELO. Равные соперники, честные матчи, путь от новичка до вершины таблицы.
      - Полностью кастомный интерфейс (CEF): меню, лобби, магазин и статистика такого уровня, какого на SA-MP почти не встретишь.
      - Легионеры - уникальные оперативники с индивидуальным дизайном и редкостью, открываются через боевой пропуск или чёрные ячейки (кейсы).
      - Скины на оружие и кейсы - коллекционная система в духе CS. -> В активной разработке
      - Киберспортивные команды: теги, ростеры, матчи команда против команды.
      - Тренировка аима, система рангов, ежедневные награды и не только.
       
      Продуманный баланс и внимание к деталям ванильного сражения - то, ради чего мы за это взялись.
      Проект уже на серьёзной стадии разработки. Мы открываем сообщество раньше официального анонса, чтобы первые скриншоты, новости и дата старта достались тем, кто был с нами с самого начала. Мы всегда рады открытой критике, или советам - сделаем игру лучше для всех!
      Подписывайтесь, чтобы не пропустить официальное заявление о запуске и первые материалы проекта.
       
      Группа VK: https://vk.ru/verdictcs
      Официальная почта: verdictproject@mail.ru
    • Kevin_McCarthy
      By Kevin_McCarthy
      🔒 ОТКРЫТИЕ НАБОРА НА ЗАКРЫТОЕ БЕТА-ТЕСТИРОВАНИЕ (ЗБТ)!
      Друзья! Мы выходим на самый ответственный этап разработки Brilliant RP. Проект уже практически готов к полноценному запуску, но перед тем как открыть двери для всех игроков, нам нужно тщательно проверить каждую систему, каждую работу и каждую строчку кода.
      Именно поэтому мы объявляем о старте Закрытого Бета-Тестирования!
      🏆 ТОП-3 ТЕСТЕРА ПОЛУЧАТ КРУТЫЕ ПРИЗЫ!
      Мы высоко ценим время и вклад каждого участника. Тестеры, которые проявят наибольшую активность, найдут больше всего уникальных багов и подробно опишут их в нашей Google-форме, получат ценные награды:
      🥇 1 МЕСТО: 3000 рублей на кошелек, 100.000$ игровой валюты, и Diamond VIP на 30 дней
      🥈 2 МЕСТО: 2000 рублей на кошелек, 75.000$ игровой валюты, и Diamond VIP на 30 дней
      🥉 3 МЕСТО: 1000 рублей на кошелек, 50.000$ игровой валюты, и Diamond VIP на 30 дней
      📝 Как стать участником ЗБТ?
      Заполни заявку на участие: 👉 https://vk.ru/gtasamp_brilliantrp
      Дождись одобрения.
    • OOLOAIS
      By OOLOAIS
      Ищу скрипт для самп/crmp который может скопировать акссесуары с аризоны/родины пж помогите