Мистики

Lavas653

Активный участник
Регистрация
3 Май 2023
Сообщения
30
Привет помогите пж как сделать авто мистик
 

maxim34a

Эксперт
Регистрация
10 Июн 2023
Сообщения
551
скорей, он хочет чтобы циклом спавнился мистик с рандом лутом
Мистик - сундук? Если да, то вот код для спавна сундука
Блок цикла(mistikSpawn, 1200} -> Установить случайное значение(mistikSpawnCoord, ложишь кучу местоположений готовых) -> Установить блок(А тут не знаю, не имею возможность протестировать установку блока. Ну надо положить в местоположение mistikSpawnCoord и в блок сундук, наверное) -> Установить значение переменной(mistikIter = 0) -> Запустить цикл chtoTakoeMistik
Это спавн сундука раз в минуту, 1200 - время в тиках(20 тиков - 1 секунда)

Вот код для рандом лута:
Блок цикла(chtoTakoeMistik, 10) -> Установить случайное значение(mistikItem, ложишь кучу разных предметов в значения) -> Установить случайное значение(mistikItemSlot, от 0 до 26) -> Установить предмет в контейнер(В местоположение mistikSpawnCoord, в числа ложишь mistikItemSlot и в слот для динам. переменной ложишь mistikItem, слот для предмета оставляешь пустым) -> Прибавить к переменной(Может называется не так, но находится в Числах и там что-то с +=, в значения ложишь переменную mistikIter, число оставляешь пустым) -> Если значение(mistikIter = 10) { Остановить цикл(chtoTakoeMistik) }

Минусы моих вариантов - два сундука могут заспавниться на одном месте; два предмета могут установиться в один и тот же слот; предметы в сундуке могут повторяться.
Решается проверками, есть ли на месте спавна мистика какой-то блок и есть ли на месте слота какой-то предмет. Если надо - я распишу и проверки, и удаление мистика. (Хотя удаление мистика делается за 5 минут)
 

K0T_CAP0GAX

Новичок
Регистрация
11 Июн 2023
Сообщения
17
Мистик - сундук? Если да, то вот код для спавна сундука
Блок цикла(mistikSpawn, 1200} -> Установить случайное значение(mistikSpawnCoord, ложишь кучу местоположений готовых) -> Установить блок(А тут не знаю, не имею возможность протестировать установку блока. Ну надо положить в местоположение mistikSpawnCoord и в блок сундук, наверное) -> Установить значение переменной(mistikIter = 0) -> Запустить цикл chtoTakoeMistik
Это спавн сундука раз в минуту, 1200 - время в тиках(20 тиков - 1 секунда)

Вот код для рандом лута:
Блок цикла(chtoTakoeMistik, 10) -> Установить случайное значение(mistikItem, ложишь кучу разных предметов в значения) -> Установить случайное значение(mistikItemSlot, от 0 до 26) -> Установить предмет в контейнер(В местоположение mistikSpawnCoord, в числа ложишь mistikItemSlot и в слот для динам. переменной ложишь mistikItem, слот для предмета оставляешь пустым) -> Прибавить к переменной(Может называется не так, но находится в Числах и там что-то с +=, в значения ложишь переменную mistikIter, число оставляешь пустым) -> Если значение(mistikIter = 10) { Остановить цикл(chtoTakoeMistik) }

Минусы моих вариантов - два сундука могут заспавниться на одном месте; два предмета могут установиться в один и тот же слот; предметы в сундуке могут повторяться.
Решается проверками, есть ли на месте спавна мистика какой-то блок и есть ли на месте слота какой-то предмет. Если надо - я распишу и проверки, и удаление мистика. (Хотя удаление мистика делается за 5 минут)
Распиши проверки и удаление миста плиз если не сложно
 

YouRaiBad

Гость
Регистрация
4 Июн 2023
Сообщения
62
Удаление можно сделать циклом

Цикл 20 (mistdelete)
[ Если переменная значение равно НЕ ( misticdelete, 0 )
Присв. Отнять ( misticdelete , 1 ) ]
[ Если переменная значение равно ( misticdelete, 0 )
Игровое Действие Поставить блок ( Динам. Переменная: mistikSpawnDelete , Блок: Пусто, Число: Пусто, Местоположение: mistikSpawnCoord ) Игровое действие остановить цикл ( misticdelete ) ]

Если что когда заспанится мистик запускай цикл удаления.
и для красоты можешь еще обновлять голограмму и вставлять туда Значнеие переменной misticdelete
А при создании мистика пиши вот так

Присв. Переменную ( misticdelete, 100 )
вместо 100 можешь любое число это как таймер

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

maxim34a

Эксперт
Регистрация
10 Июн 2023
Сообщения
551
Удаление можно сделать циклом

Цикл 20 (mistdelete)
[ Если переменная значение равно НЕ ( misticdelete, 0 )
Присв. Отнять ( misticdelete , 1 ) ]
[ Если переменная значение равно ( misticdelete, 0 )
Игровое Действие Поставить блок ( Динам. Переменная: mistikSpawnDelete , Блок: Пусто, Число: Пусто, Местоположение: mistikSpawnCoord ) Игровое действие остановить цикл ( misticdelete ) ]

Если что когда заспанится мистик запускай цикл удаления.
и для красоты можешь еще обновлять голограмму и вставлять туда Значнеие переменной misticdelete
А при создании мистика пиши вот так

Присв. Переменную ( misticdelete, 100 )
вместо 100 можешь любое число это как таймер

Надеюсь помог и максиму в лишний раз трудится ненадо)
Спасибо <3. Чуть дальше напишу кое-что по твоему коду.
Распиши проверки и удаление миста плиз если не сложно
Так как мы будем все равно удалять мистик - способ удаления от YouRaiBad подразумевает то, что на карте может находится одновременно только 1 мистик, то нам не понадобится проверка на нахождения блока на этом месте. Если ты хочешь много мистиков сразу - тебе надо сохранять координаты всех мистиков в массив, у каждого мистика должна быть своя переменная с таймером... Муторно это.

Насчёт кода YouRaiBad: по моей идеи нужно два удаления, когда игрок забирает все предметы из мистика и просто удаление по таймеру. Да, у YouRaiBad хороший код, если тебе помимо обычного удаления нужны всякие финтифлюшки с таймерами. Если не нужны - просто сделай цикл на 600 тиков(т.е спавн у нас идёт 1200:20=600 секунд, а тут у нас удаление 600:20=300 секунд) и делай "Поставить блок" из кода YouRaiBad. Ну и при спавне мистика ты точно так же запускаешь этот цикл на 600 тиков. Если мистик пуст - к сожалению нельзя никак это проверить, поэтому и удаления тут никак не сделать

Проверка, чтобы предмет не мог попасть в один и тот же слот - только костылем. На майнленде нельзя получать предмет, лежащий в определенном слоте, поэтому придётся делать костылем:
Функция(chtoTakoeMistik) -> Установить случайное значение(mistikItemSlot, от 0 до 26) -> Вывести массив в строку(масив mistikItems, mistikItemsString) -> Объединить текст(Динамическая переменная: mistikItemSlotString. Тексты: Текстовая переменная со значение ', mistikSlot, текстовая переменная со значение .0') -> Если текст НЕ содержит(mistikItemsString, mistikItemSlotString) -> { Установить случайное значение(mistikItem, ложишь кучу разных предметов в значения) -> Установить предмет в контейнер(В местоположение mistikSpawnCoord, в числа ложишь mistikItemSlot и в слот для динам. переменной ложишь mistikItem, слот для предмета оставляешь пустым) -> Добавить в конец массива(mistikItems, mistikItem) -> Прибавить к переменной(Может называется не так, но находится в Числах и там что-то с +=, в значения ложишь переменную mistikIter, число оставляешь пустым) -> Если значение НЕ(mistikIter = 10) { Ждать(1 тик) -> Вызвать функцию(chtoTakoeMistik) } } Иначе -> { Ждать(1 тик) -> Вызвать функцию(chtoTakoeMistik) }

Вот такое. Что я сделал:
1. Заменил цикл на функцию. Зачем - до этого заполнение мистика длилось 100 тиков, сейчас в идеале оно будет длится 1 тик, иногда оно будет идти дольше, но намного меньше чем до этого.
2. Добавил массив mistikItems. Этот массив тебе надо создавать в цикле создания мистика, прямо перед запуском функции chtoTakoeMistik(Функции заполнения этого самого мистика). В этом массиве будут хранится все слоты, куда мы уже поставили предметы.
3. Проверка, содержится ли число в массиве mistikItems. Если число содержится - значит в этот слот мы уже ставили предмет и надо заново запустить функцию - то есть заново сгенерировать число. Если оно не содержится - значит слот пуст и мы можем поставить на это место предмет
4. Зачем нужно "Объединить текст": 1690455229915.png если мы просто будем искать в этом тексте число "1", то оно найдётся у нас два раза: #1 и '1.0'. По этому мы объединим цифру mistikItemSlot с двумя кавычками ' ', превратив просто 1 в '1'. Как видишь, само число у нас хранится в формате 1.0, но если мы объединяем число со строкой, то .0 магическим образом исчезает. Поэтому нам надо превратить 1 не просто в '1', а в '1.0'

Вроде всё объяснил. Если не понятно что-то - пиши
 

K0T_CAP0GAX

Новичок
Регистрация
11 Июн 2023
Сообщения
17
Спасибо <3. Чуть дальше напишу кое-что по твоему коду.

Так как мы будем все равно удалять мистик - способ удаления от YouRaiBad подразумевает то, что на карте может находится одновременно только 1 мистик, то нам не понадобится проверка на нахождения блока на этом месте. Если ты хочешь много мистиков сразу - тебе надо сохранять координаты всех мистиков в массив, у каждого мистика должна быть своя переменная с таймером... Муторно это.

Насчёт кода YouRaiBad: по моей идеи нужно два удаления, когда игрок забирает все предметы из мистика и просто удаление по таймеру. Да, у YouRaiBad хороший код, если тебе помимо обычного удаления нужны всякие финтифлюшки с таймерами. Если не нужны - просто сделай цикл на 600 тиков(т.е спавн у нас идёт 1200:20=600 секунд, а тут у нас удаление 600:20=300 секунд) и делай "Поставить блок" из кода YouRaiBad. Ну и при спавне мистика ты точно так же запускаешь этот цикл на 600 тиков. Если мистик пуст - к сожалению нельзя никак это проверить, поэтому и удаления тут никак не сделать

Проверка, чтобы предмет не мог попасть в один и тот же слот - только костылем. На майнленде нельзя получать предмет, лежащий в определенном слоте, поэтому придётся делать костылем:
Функция(chtoTakoeMistik) -> Установить случайное значение(mistikItemSlot, от 0 до 26) -> Вывести массив в строку(масив mistikItems, mistikItemsString) -> Объединить текст(Динамическая переменная: mistikItemSlotString. Тексты: Текстовая переменная со значение ', mistikSlot, текстовая переменная со значение .0') -> Если текст НЕ содержит(mistikItemsString, mistikItemSlotString) -> { Установить случайное значение(mistikItem, ложишь кучу разных предметов в значения) -> Установить предмет в контейнер(В местоположение mistikSpawnCoord, в числа ложишь mistikItemSlot и в слот для динам. переменной ложишь mistikItem, слот для предмета оставляешь пустым) -> Добавить в конец массива(mistikItems, mistikItem) -> Прибавить к переменной(Может называется не так, но находится в Числах и там что-то с +=, в значения ложишь переменную mistikIter, число оставляешь пустым) -> Если значение НЕ(mistikIter = 10) { Ждать(1 тик) -> Вызвать функцию(chtoTakoeMistik) } } Иначе -> { Ждать(1 тик) -> Вызвать функцию(chtoTakoeMistik) }

Вот такое. Что я сделал:
1. Заменил цикл на функцию. Зачем - до этого заполнение мистика длилось 100 тиков, сейчас в идеале оно будет длится 1 тик, иногда оно будет идти дольше, но намного меньше чем до этого.
2. Добавил массив mistikItems. Этот массив тебе надо создавать в цикле создания мистика, прямо перед запуском функции chtoTakoeMistik(Функции заполнения этого самого мистика). В этом массиве будут хранится все слоты, куда мы уже поставили предметы.
3. Проверка, содержится ли число в массиве mistikItems. Если число содержится - значит в этот слот мы уже ставили предмет и надо заново запустить функцию - то есть заново сгенерировать число. Если оно не содержится - значит слот пуст и мы можем поставить на это место предмет
4. Зачем нужно "Объединить текст": Посмотреть вложение 1962 если мы просто будем искать в этом тексте число "1", то оно найдётся у нас два раза: #1 и '1.0'. По этому мы объединим цифру mistikItemSlot с двумя кавычками ' ', превратив просто 1 в '1'. Как видишь, само число у нас хранится в формате 1.0, но если мы объединяем число со строкой, то .0 магическим образом исчезает. Поэтому нам надо превратить 1 не просто в '1', а в '1.0'

Вроде всё объяснил. Если не понятно что-то - пиши
У меня много багов
 

YouRaiBad

Гость
Регистрация
4 Июн 2023
Сообщения
62
Если мистик пуст - к сожалению нельзя никак это проверить, поэтому и удаления тут никак не сделать
Можно очистить сундук если у тебя не мега крутой супер продуманный как на фантайме или лайнтайме мистик.
 

maxim34a

Эксперт
Регистрация
10 Июн 2023
Сообщения
551
Может ты зайдёшь? 627055. У меня код выдаёт ошибку еще предметы не ставяться в сундук
Предметы не ставятся - вероятно ты виноват в этом, потому что мой код чист: по логике не должно быть ошибок. Насчет зайти - нет.
Можно очистить сундук если у тебя не мега крутой супер продуманный как на фантайме или лайнтайме мистик.
И как? Нельзя же узнать, пуст ли сундук или пуст ли слот.
 

pj ne bante work

Участник
Регистрация
9 Дек 2023
Сообщения
0
Я ничего не понял, можно нормально рассказать как сделать код на мистик?
 
Сверху