Current time: 26.11.2024, 00:03 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
ГСЧ - Генератор случайных чисел & ЕРМ
» Готовые решения, вопросы, обсуждение и т.п.
Author Message
SergOz Offline

Posts: 1315
Post: #76

Berserker, да я понял, спасибо.
Я изначально и имел ввиду не ГСЧ самой игры, а возможность обеспечить некий гарантированный результат выпадания "плюшек" в скриптах.


Карта-мод "Война на Холсте"
13.02.2021 22:51
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5422
Post: #77

JC_coffee // вопросы/решения, связанные с ГСЧ, теперь будут в отдельной теме для удобства
03.03.2021 22:05
Visit this user's website Find all posts by this user Quote this message in a reply
Demon_dante Offline

Posts: 2
Post: #78

Можно ли из данного примера узнать какое было выбранное случайное число и исключить его дальше из случайной генерации??
Чтобы каждое заклинание точно сработало

!!VRv600:C0/3/5/15/27/31/32/35/37/41/42/43/46/53/54;
- таблица номеров заклинания первого уровня
!!VRy1:S600 R14; - случайное число в интервале 600..614
!!VRv1:Svy1; - теперь v1 хранит случайное заклинание первого уровня
25.05.2022 17:52
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #79

Demon_dante, тогда лучше использовать массив с последующим удалением элемента из списка

либо пройтись по текущему списку, как по массиву


Image: widget.png?style=banner2

Новейший Heroes Launcher
25.05.2022 19:57
Visit this user's website Find all posts by this user Quote this message in a reply
Raistlin Away
Moderators

Posts: 1349
Post: #80

Как вариант - запоминать номер элемента (индекс v-переменной), который уже выпадал. Это можно сделать через массив флагов, массив других переменных или с помощью !!SN:W.


Создал новый глобальный мод: WoG Ultra Edition
25.05.2022 21:39
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #81

просто создать массив через SN:M или уже готовую ф-цию NewIntArray
или:

брать последнее заклинание из этого списка
ставить его на место выпавшего
уменьшить диапазон рандома на 1

данный алгоритм выглядит самым оптимальным здесь, мне кажется


Image: widget.png?style=banner2

Новейший Heroes Launcher
25.05.2022 21:44
Visit this user's website Find all posts by this user Quote this message in a reply
SergOz Offline

Posts: 1315
Post: #82

Demon_dante, в этой теме есть готовый код здесь


Карта-мод "Война на Холсте"
26.05.2022 00:06
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #83

SergOz, на самом деле массив уже есть
работать здесь надо с v600-v614, уменьшая лишь !!VRy1 S600 R[этоЗначение];


Image: widget.png?style=banner2

Новейший Heroes Launcher
26.05.2022 00:20
Visit this user's website Find all posts by this user Quote this message in a reply
SergOz Offline

Posts: 1315
Post: #84

daemon_n, вся проблема в переменных v: нужен контроль использования.
С массивом SN:M такой опасности нет.


Карта-мод "Война на Холсте"
26.05.2022 00:46
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #85

Можно массив y-переменных.
Отдельная переменная — размер списка/длина массива. В цикле генерируем число 0..размер списка - 1. Запоминаем результат из соответствующей y-переменной массива. После чего устанавливаем массив[выпавший_индекс] = массив[размера списка - 1] и уменьшаем на один размер списка.

Или проще говоря. Стоят 14 человек в очереди. Выходит врач, бросает кубик 1-14. Выпало 3. Третий идёт на приём, 14-й занимает его место, а новый размер очереди — 13.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
26.05.2022 01:33
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #86

SergOz, где проблема-то? у нас уже зарезервирован массив
в v615 можно записать то самое число с текущим размером массива

Вот, Berserker, понял, что я имел в видуYes


Image: widget.png?style=banner2

Новейший Heroes Launcher
26.05.2022 01:50
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #87

daemon_n, понял, но если макс. размер небольшой (до 70, скажем), то можно и с y-переменными на ЕРМ 2.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
26.05.2022 19:50
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4343
Post: #88

Berserker, я понял задачу так, что данные надо сохранить после выхода из ф-ции:
Либо создаётся нелокальный массив SN:M, либо используются sn:W / v-переменные

Если я ошибся в цели, то конечно подойдут y-переменные.


Image: widget.png?style=banner2

Новейший Heroes Launcher
26.05.2022 21:08
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16657
Post: #89

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


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
27.05.2022 01:54
Find all posts by this user Quote this message in a reply
Demon_dante Offline

Posts: 2
Post: #90

Всем спасибо, сделал по коду с прошлой странице. Работает как часы !!! Ab
27.05.2022 23:06
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group