Перейти к содержанию

Рекомендуемые сообщения

 
 

Alex Kireev нужно сначала перебрать предметы в инвентаре, потом уже рандомом выбирать (ссылку я скидывал). Иначе случится такая ситуация: рандомом выберется, например, консерва, а у актора её не будет, и игра вылетит. Поэтому через iterate_inventory сначала составить таблицу нужных предметов, которые есть у актора, и уже из неё рандомом выбирать. У вас в коде вот что происходит: есть просто таблица  medik_table, в которой секции предметов, которые могут не быть у актора. Дальше идёт перебор таблицы, секции проверяются на наличие у актора. Вот попалась секция, которая есть у актора-и вызывается функция с рандомом, которая может вернуть секцию, которой нет у актора. То есть, в переборе таблицы нашлась существующая секция, а потом рандомно выбирается что-то другое. Тут или без рандома есть то, что попалось в переборе, или через iterate inventory делать рабочий рандом.

Return нужен или если надо вернуть какую-то переменную или значение или оборвать исполнение функции, но у вас это конец функции, и обрывать нечего. Надо использовать break.

Насчёт функции рандома в коде. В math.random должно быть число, а в коде variable - это таблица.

Это на первый взгляд, с телефона вообще неудобно


Дополнено 1 минуту спустя
2 часа назад, Alex Kireev сказал:

Ребята профаны в lua подскажите

Не, я, конечно, не скриптер, но за профана обидно немного)


В беге за рассветом приближаешь свой закат

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


Ссылка на сообщение
Поделиться на другие сайты
 
4 часа назад, vader_33 сказал:

за профана обидно немного)

Извини, не хотел обидеть, просто мои знания по сравнению с вашими на нуле. Спасибо за ответ на днях попробуй разобраться

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


Ссылка на сообщение
Поделиться на другие сайты
 
9 часов назад, Alex Kireev сказал:

Функции рандом принимает 2 параметра 1й это название секции, артефакты, еда, медикаменты, 2й колличество

то есть, не одну штуку надо есть, а несколько? Или что вторым аргументом передается, не очень понял


Дополнено 42 минуты спустя

Alex Kireev 

Спойлер



function eat_rand()
	local medik_table = {   
				["bread"] = "true",
				["conserva"] = "true",
				["kolbasa"] = "true"
			}
						
	local actor_items = {}
	
	db.actor:iterate_inventory(function (tmp, item)
					if medik_table[item:section()] then
						table.insert(actor_items, item)
					end
				end,obj)
								
	
		if table.getn(actor_items) ~= 0 then
			local rnd = randome(actor_items)
			db.actor:eat(rnd)
			actor_items = {}
		end
end

function randome(medik_table)
	local rnd = medik_table[math.random(#medik_table)]
		return rnd
end

 

 

 


В беге за рассветом приближаешь свой закат

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


Ссылка на сообщение
Поделиться на другие сайты
 
6 часов назад, vader_33 сказал:

что вторым аргументом передается

Смотри например есть колбаса, и батон в рюкзаке, то тогда рандомно выбираем что ГГ будет есть, колбасу или батон, если будет ещё энергетик и консерва, то тогда рандомно выбираем из 4х позиций


Дополнено 9 минуты спустя

Я это так представляю

Есть 2 массива 

1й хранит например список еды, 2й список медикаментов. В самом массиве несколько позиций, ну то есть колбаса, хлеб, энергетик и вот команда рандом принимает параметр секция, то есть еда, 2й колличество находившихся в рюкзаке типов продуктов (например есть 2 колбасы, и 1 банка энергетика) и вот в конечном итоге это выглядит приблизительно так функция рандом генерирует случайное число которое может быть равно или 1 или 2, где 1 это колбаса, 2 энергетик


Дополнено 10 минуты спустя

Извините если плохо объяснил, я не очень хорошо понимаю принцип работы программирования

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


Ссылка на сообщение
Поделиться на другие сайты
 

Alex Kireev тогда достаточно просто таблицу передать без второго аргумента, если я правильно понял


В беге за рассветом приближаешь свой закат

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


Ссылка на сообщение
Поделиться на другие сайты
 

vader_33 то есть как в примере с предыдущего поста?

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


Ссылка на сообщение
Поделиться на другие сайты
 

Alex Kireev скинул уже рабочий код, проверил у себя. Но как по-мне, лучше не нагружать игру лишними переборами, и есть без рандома первый попавшийся объект

Изменено пользователем vader_33

В беге за рассветом приближаешь свой закат

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 31.05.2021 в 12:37, ian98 сказал:

artefacts = af_medusa,0.8, af_cristall_flower, 0.2,af_night_star, 0.0

BirthProbability = 0.1

;----------- Anomaly settings -----------------------

min_artefact_count = 0

max_artefact_count = 1

artefact_spawn_idle = 24 ;насколько часто спонить артефакты в офлайне, в часах

artefact_spawn_rnd = 50 ;вероятность заспавнить артефакт в процентах.

К вопросу порождения артов аномалиями - выше ключевые строки в конфигах аномалий. Медузы, выверты, всякие огнешары, капли и прочее в чистом ТЧ порождаются именно аномалиями в момент старта НИ

Изменено пользователем Mopa
  • Хабар 1

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


Ссылка на сообщение
Поделиться на другие сайты
 

Mopa т.е, если я не хочу их спавнить, то мне выкрутить пропы на 0? Я уже замучался с этим спавном. Удалить из него ничего не получается - в 100% случаев вылет. Прятать под землю, блин, оно иногда вылазит в разных местах. Ужас. В зп почему-то не было таких проблем вообще. Удалил что-то из спавна и удалил. Здесь же... Хотя, вот прям сейчас мысль пришла, можно ли прописывать всему в спавне вот такое, как с машинами:

[spawner]
cond = never

Может хоть так уберу эти горы лута по всей чзо?


76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 

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

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


Ссылка на сообщение
Поделиться на другие сайты
 

Askar или в старых версиях Нового арсенала или как аддон для него было авторазряжение оружия ts mod

Изменено пользователем vader_33

В беге за рассветом приближаешь свой закат

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


Ссылка на сообщение
Поделиться на другие сайты
 
22 часа назад, ian98 сказал:

Хотя, вот прям сейчас мысль пришла, можно ли прописывать всему в спавне вот такое, как с машинами:

[spawner]
cond = never

Может хоть так уберу эти горы лута по всей чзо?

Это сработает только для: НПС, мутантов, сматров, респавнов, машин ииии.... все.
Артефакты, патроны, ящики, оружие, броня, еда, статические объекты, разные предметы в т.ч. квестовые, аномалии, физ. объекты и тд не читают условие спавна, так как оно не предусмотрено для них в движке.
Так что нет, это не сработает.

  • Жму руку 1
  • Спасибо 1

Внимание! Ищу любые фиксы/исправления для оригинального ТЧ.

Спойлер

Или людей, которые желают помочь с этим делом.

 

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


Ссылка на сообщение
Поделиться на другие сайты
 
23 часа назад, ian98 сказал:

Mopa т.е, если я не хочу их спавнить, то мне выкрутить пропы на 0? Я уже замучался с этим спавном. Удалить из него ничего не получается - в 100% случаев вылет. Прятать под землю, блин, оно иногда вылазит в разных местах. Ужас. В зп почему-то не было таких проблем вообще. Удалил что-то из спавна и удалил. Здесь же... Хотя, вот прям сейчас мысль пришла, можно ли прописывать всему в спавне вот такое, как с машинами:

[spawner]
cond = never

Может хоть так уберу эти горы лута по всей чзо?

Да, в конфигах нужных аномалий прописать  BirthProbability = 0.0. Можно до кучи строку 

artefacts = af_medusa,0.8, af_cristall_flower, 0.2,af_night_star, 0.0 укоротить:

 artefacts = 

 

А в спавне останутся только арты, там прописанные. И как тебе правильно подсказали, секция [spawner] для артов не работает.

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


Ссылка на сообщение
Поделиться на другие сайты
 

Mopa Хорошо, что я и не пробовал с 

[spawner]

cond = never

А по аномалиям, то обязательно нужно менять строчку

spawn_blowout_artefacts = on/off

В случае, если просто выкрутить все пропы на ноль, игра будет крашить ссылаясь на нулевые значения в спавне.


76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 
В 03.06.2021 в 09:34, ian98 сказал:

А по аномалиям, то обязательно нужно менять строчку

spawn_blowout_artefacts = on/off

Может быть, уже запамятовал.

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


Ссылка на сообщение
Поделиться на другие сайты
 

Mopa А может и нет. У меня все равно вылеты) 


76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 
12 часов назад, ian98 сказал:

У меня все равно вылеты) 

Выложи весь конфиг целиком, и лог вылета. Кстати, возможно, нужна новая игра.

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


Ссылка на сообщение
Поделиться на другие сайты
 

Mopa Я посносил их. Попробую внимаиельнее все выключить еще раз. Новая игра была. Я ее постоянно начинаю после каждой правки.


76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 

Добрый вечер, возникла такая проблема, глючит моделька Акс74У подобным вот образом в милке моделька отображается правильно, а в игре вот такая вот проблемка. Кто нибудь в курсе как решить эту проблему?1002834974_XR_3DA2021-06-0523-31-39.thumb.jpg.eb3c532753c81bbccb3bd4f4d7f098d3.jpg

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


Ссылка на сообщение
Поделиться на другие сайты
 
7 часов назад, ian98 сказал:

Новая игра была. Я ее постоянно начинаю после каждой правки.

И это правильно

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


Ссылка на сообщение
Поделиться на другие сайты
 

А знает кто как цветным текстом писать? Вот, я делаю так: <text>\n%c[01,255,128,0]ТЕКСТ%c[01,255,128,0]</text>

Ловлю вылет. Что не так?

 

Спойлер

 

 

 

Изменено пользователем ian98
Нашел решение
  • Аплодисменты 1

76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 

Подскажите пожалуйста сделал порт ТОZ-106 из EFT pack на ТЧ но анимации выстрелов не проигрываются 
Хотя в конфиге и анимациях из добавлял
Подскажите в чем проблема.
Вот пример проблемы

 

Изменено пользователем AsuraH

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


Ссылка на сообщение
Поделиться на другие сайты
 
Спойлер

 


function remove_random_item()
  local important_objects = {  -- Здесь предметы, которые нельзя удалять
    [ "bolt"       ] = true,
    [ "device_pda" ] = true,
  }
  local tbl = {}
  local cnt = 0
  db.actor:iterate_inventory(
    function( dummy, obj )
      if obj and not important_objects[ obj:section() ] then
        cnt = cnt + 1
        table.insert( tbl, obj:id() )
      end
    end
  )
  if cnt == 0 then return end
  local rnd  = tbl[ math.random( table.getn( tbl ) ) ]
  local sobj = alife():object( rnd )
  if sobj then
    news_manager.relocate_item( db.actor, "out", sobj:section_name() )
    alife():release( sobj, true )
  end
end

 

подскажите, как удалить сразу 10 предметов этим скриптом? Прощупать не могу, а по знаниям 0. Умею только таблицы заполнять, если они есть)

Изменено пользователем ian98

76561198152189716.png

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


Ссылка на сообщение
Поделиться на другие сайты
 

ian98 alife():release( sobj, true ) это строка отвечает за удаление, можно попробовать обернуть этот участок кода

if sobj then
    news_manager.relocate_item( db.actor, "out", sobj:section_name() )
    alife():release( sobj, true )
  end

в цикл, главное что бы точно было предметов больше 10

 

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


Ссылка на сообщение
Поделиться на другие сайты
 

ian98 10 штук одного предмета? Или 10 разных предметов?


В беге за рассветом приближаешь свой закат

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


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

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