RU 📌 Pinned

Как сделать?

Dark[Ol(U23)leneri] #34 18.04.2010 22:57 6408 comments 2425287 views

Народ, а как сделать загрузку старого сохр, т.к. у меня длинная экономическая игра и за один прием ее не пройдешь.

SneakBug8,
если тебе нужно автоматическое сохранение, см. чекпойнты.

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

SneakBug8,
нажми на имя локации мышкой и перетащи вверх. Запускается всегда первая локация, самая верхняя.

А как сделать два разных предмета с одинаковыми названиями и чтобы они не считались за один предмет и действия с ними были разные, только название одно? Вы и так наверное поняли (скорее всего нет), но у меня два предмета с одним названием “Страница”. При взаимодействии из инвентаря, можно прочитать содержимое. Это две разные страницы, но название одно - отличаются содержимым и картинками.

RomaDova,
задача серьёзная и простым способом не решается.

Вот код для произвольного количества страниц.

Код для стартовой локации, на тестирование:

! Общее количество имеющихся в игре страниц.
количество_страниц = 4

! Массив с описаниями страниц.
$описание_страниц[0] = 'Страница из журнала "Мурзилка". Что тут? Паззл "проведи рыцаря через тёмный лес" к корзинке с едой, остерегайся злодеев и принцесс.'
$описание_страниц[1] = 'На этой странице ничего не разобрать.'
$описание_страниц[2] = 'Страница из газеты "Вести Эсгарота". Пишут, что цены на вино взлетели, с тех пор как дракон спалил винный завод. Бедные эсгаротцы. Мда.'
$описание_страниц[3] = 'Чья-то записка с рецептом. Щепотку соли, сок бурьяна... Брр.. Гадость какая-то.'

! Массив, в который мы записываем 1, когда нашли соответствующую страницу.
! То есть, если игрок нашёл страницу с описанием под индексом N, то мы выполняем код
! страница_найдена[N] = 1
! В целях тестирования заполняем этот массив, как будто игрок уже нашёл три страницы из четырёх.
страница_найдена[0] = 1
страница_найдена[2] = 1
страница_найдена[3] = 1
ADDOBJ 'Страница'
ADDOBJ 'Страница'
ADDOBJ 'Страница'

Локация ONOBJSEL:

! Запоминаем имя выбранного предмета.
$selected = $SELOBJ

! Проходим по всем предметам от конца списка к началу.
found = 0
i = COUNTOBJ
:loop1
$t = $GETOBJ(i)
KILLOBJ(i)
IF $SELOBJ = '':
    found = i
END
ADDOBJ $t, '', i
IF (found = 0) AND (i > 1):
    i = i - 1
    JUMP 'loop1'
END
! Теперь в переменной found хранится номер выбранного предмета.
! Нумерация с 1.

! Проходим по всем предметам, 
! считаем совпадающие с выбранным предметом.
i = 1
same_count = 0
:loop2
IF (i <= found) AND (i <= COUNTOBJ):
    IF $GETOBJ(i) = $selected:
        same_count = same_count + 1
    END
    i = i + 1
    JUMP 'loop2'
END
! Теперь в переменной same_count хранится 
! номер выбранного предмета из списка одинаковых.
! Нумерация с 1.

! Ищем описание для страницы, 
! которая находится в списке найденных
! под номером same_count.
IF $selected = 'Страница':
    i = 0
    count = 0
    :loop3
    IF страница_найдена[i] = 1:
        count = count + 1
    END
    IF same_count = count:
        CLR
        PL $описание_страниц[i]
    ELSE
        IF i < количество_страниц - 1:
            i = i + 1
            JUMP 'loop3'
        END
    END
END
Aleks Versus Moderator 19.05.2019 07:14 (6 years ago)

Самый простой способ создать тег, несуществующий в html, и давать его в названии предмета.
Например:

addobj 'яблоко<subjobj:1>'
addobj 'яблоко<subjobj:2>'

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

Намного правильнее не зацикливаться на “хранении” предметов в окне инвентаря, ибо окно инвентаря - это всего лишь область вывода информации, место организации меню. Для предметов (и объектов игры вообще) нужно завести условную базу и хранить в ней всю информацию о предметах. Например:

$id_obj[0]='0'
$name_obj[0]='яблоко'
kolvo_obj[0]=2
cost_obj[0]=5
$id_obj[1]='1'
$name_obj[1]='яблоко'
kolvo_obj[1]=45
cost_obj[1]=2
!...
! и т.д.

У такого способа тоже есть недостатки. Самый существенный: необходимость написать функции работы с базой “добавление предмета”, “удаление предмета” и пр. Однако при должном усердии всё это выльется в очень удобную организацию рюкзака.

Админы плиз, это моя первая тема, я не нашел где техподдержка и написал здесь, не баньте!
У меня появилась проблема я создаю действие “получить бонус” в коде пишу нужное и делакт этого действия, перехожу в другую локацию, возвращаюсь, а она вернулась!! Как мне сделат вечное удаление, в справке искал там нашел только этот код.

См. действие по условию.
Этот вопрос есть в FAQ, как и многие другие. Заглядывай туда.

Я читал уроки и выписывал коды, все коды переписал, сейчас решил применить использовал код $maindesk_backimage получил ответ “Не работает” так же со всеми кодами оформления кроме $ backimage. туда же размер окон, эффекты переходов, шрифты через хтмл.

SneakBug8,
какой плеер, номер версии?

Не тот, да. Нужен аеро плеер.

Как сделать систему инвентаря? Мучился всю ночь. Расскажите как сделать количество денег к примеру, как сделать деньги постоянными для всех локаций, магазин и подобную бурду. За ранее спасибо.

Edited at 24.07.2014 08:15 (11 years ago)

MasterJack,
прошу в названии темы указывать кратко конкретный вопрос.

Неправильно:
“Помогите новичку!”
“Ещё вопрос”

Правильно:
“Как можно вывести изображение напрямую из папки игры?”
“Как сделать систему инвентаря?”

Я переименовал твои темы, но хотелось бы, чтобы мне не приходилось вмешиваться.

Куча примеров всяких - особое внимание стоит обратить на “28в1”.
Справка
FAQ

Теперь конкретно по вопросу:
Библиотечка для инвентаря. В том числе считаемые предметы.

Будут более конкретные вопросы (например, по использованию библиотечки) - буду рад ответить.

Log in or Register to post comments.