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

Hardtmuth

Модераторы
  • Публикаций

    4 126
  • Зарегистрирован

  • Посещение

  • Победитель дней

    107

Весь контент Hardtmuth

  1. X-Ray engine [1.0006, 1.5.10, 1.6.02] - GOG version В архиве папки bin (движок игр) версий: S.T.A.L.K.E.R. - Shadow of Chernobyl 1.0006 S.T.A.L.K.E.R. - Clear Sky 1.5.10 S.T.A.L.K.E.R. - Call of Pripyat 1.6.02 Особенность GOG-версии в отсутствии защиты StarForce (для проверки диска). СКАЧАТЬ: https://drive.google.com/open?id=0BxyMHV_eCaxQQi1McE52dnQ0ZU0
  2. Как создать самый простой путь path_walk Автор: BadQvik Здравствуйте. По просьбе одного знакомого на форуме, решил написать «тутор» о том: Как создавать пути path_walk. Попытаюсь объяснить довольно понятно, по крайней мере на сколько это мне возможно. Итак, думаю можно приступить. Для того чтобы создать так называемые path_walk точки путей, нам понадобится: Распакованный all.spawn (что это такое даже объяснять не буду!). Когда мы смотрим на распакованный файл all.spawn мы видим довольно обширную структуру из файлов типа “ltx”. Есть файлы с аббревиатурой “alife_название локации”, а есть “way_название локации”. На данный момент нам понадобится файл way_*** (для примера я беру Болота из ЧН), то есть way_marsh. Открыв его, мы видим не знакомые буквы и числа: Как мы видим данная секция представляется из себя путь из двух точек: (р0) и (р1), сейчас попытаюсь кратко объяснить где что: Вроде с секциями разобрались, теперь можно пробовать создать путь. Для примера я создам путь из двух точек, в которых нпс будет ходить туда-сюда. То есть от 1-й ко 2-й от 2-й к 1-й. Приступим. В файле way_mars.ltx (у вас например кордон) создаем секцию: Внимание! Предварительно вам нужно снять координаты точек, например 2-х, у меня координаты не рабочие*взяты для примера! Если задать p1:links = p2(2), то нпс останется в точке 2, так что всегда будьте внимательны с это строкой. После того как пути созданы, осталось прицепить этот путь к НПС (надеюсь вы создали нового? Если нет то создайте). Делается это путем не сложной логики. В папке gamedata\configs\scripts\название вашего файла.ltx делаем так: Все, после закрываем, сохраняем и например если вы спавнили нпс через all.spawn ищите секцию с вашим неписем, находим там: custom_data = <<END пишем: [logic] cfg = scripts\название вашего файла.ltx END Все закрываем, компилируем all.spawn и идем смотреть творение. Наш непись должен ходить туда сюда до бесконечности, конечно пока его не убьют. Я преподнес вам самый простой пример того, как можно создавать пути path_walk, можно сделать очень сложный с анимацией и звуком. Но это будет в следующем уроке. Спасибо за внимание. С вами был BadQvik, статья написана BadQvik из личных источников.
  3. [CoP] Показываем здоровье ГГ в процентах Автор: Akella-96© Всем добра. В данном уроке я покажу вам способ вывода на экран процентное состояние здоровья ГГ. Нам не понадобится куча текстур, используемых в качестве custom_static и не потребуется писать громадные скрипты на обработку этих статиков. Мы просто создадим новый файл в папке gamedata\scripts\ и назовем его, например, percent_health.script. В него мы добавим следующий код: function show_health_percent() local a local h a = db.actor h = a.health* 100 local hud = get_hud() local StatCS=hud:GetCustomStatic("actor_health") if StatCS == nil then hud:AddCustomStatic("actor_health",true) StatCS=hud:GetCustomStatic("actor_health") end local StatText = "" StatText = StatText.. string.format("%1.0f\\n",h) if StatCS ~= nil then StatCS:wnd():TextControl():SetText(StatText) end if db.actor:is_talking() then hud:RemoveCustomStatic("actor_health") elseif Info("inv_is_open") then hud:RemoveCustomStatic("actor_health") end if not db.actor:alive() then hud:RemoveCustomStatic("actor_health") end end Теперь разберем все по полкам: show_health_percent – название вашей функции local a – объявляем переменную «а» local h – объявляем переменную «h» a = db.actor – задаем значение переменной «а» (в данном случае «а» равняется «db.actor», то есть ГГ h = a.health* 100 - задаем значение переменной «h» (здесь «h» равняется значению health*100, то бишь, состояние здоровья ГГ, умноженное на 100 (если не умножать, здоровье будет показываться форматом 1, 0.9 и т.п.) local hud = get_hud() – задаем значение переменной hud if StatCS == nil then – (грубый «перевод») если худ StatCS пуст (отсутствует), то hud:AddCustomStatic("actor_health",true) – создаем custom_static с названием «actor_heatlh» StatCS=hud:GetCustomStatic("actor_health") – приравниваем StatCS к созданному статику end – конец проверки (не функции) local StatText = "" – объявляем переменную StatText StatText = StatText.. string.format("%1.0f\\n",h) – приравниваем созданную переменную к прописанному формату показа значения ранее объявленной переменной «h» Подробно о формате показа : %1.0f – указываем, сколько цифр будет выводиться после запятой (нам не нужны дробные значения, поэтому мы ставим 1.0) Это условия для отображения нашего статика if db.actor:is_talking() then – если ГГ разговаривает, то hud:RemoveCustomStatic("actor_health") – удаляем статик elseif Info("inv_is_open") then – если инвентарь ГГ открыт, то hud:RemoveCustomStatic("actor_health") – удаляем статик end if not db.actor:alive() then – если ГГ мертв, то hud:RemoveCustomStatic("actor_health") – удаляем статик end Дополнительно по проверке открытого инвентаря: Чтобы игра проверяла открытие инвентаря, нужно в файл actor_menu.script, (возьмите из распакованной игры) в функции «function inventory_wnd_opened()» перед «end» вставить вот этот код: db.actor:give_info_portion("inv_is_open") И в функции «function inventory_wnd_closed()» (тоже перед «end») добавить: db.actor:disable_info_portion("inv_is_open") Теперь нам надо поставить нашу функцию на вызов. Для этого в файле gamedata\scripts\bind_stalker.script, в функции «function actor_binder:update(delta)», после «object_binder.update(self, delta)», добавляем: percent_health.show_health_percent() На этом со скриптами покончено. Теперь перейдем к конфигу. Открываем файл gamedata\configs\ui\ui_custom_msgs.xml, в конец, но перед «</header>» добавляем: <actor_health x="24" y="47" width="36" height="24" complex_mode="1"> <text font="graffiti22" r="255" g="255" b="255" a="255" align="l"/> </actor_health> Здесь прописаны координаты расположения статика на экране, шрифт отображаемого текста и его цвет. В данном куске кода поставлены координаты левого верхнего угла (у меня измененный ХУД), вы можете указать свои. На этом все. Таким же способом, можно вывести в процентах любое значение параметров ГГ, например, чтобы вывести выносливость, нужно h = a.health* 100 поменять на h = a.power* 100 В общем, можно поэкспериментировать с этой функцией. Вот список остальных операторов параметров ГГ: 1. db.actor.bleeding - степень кровотечения 2. db.actor.radiation - уровень облученности 3. db.actor.radiation - сытость
  4. [CoP] Выводим часы на Hud Автор: Steelrat Для этого нам понадобятся стандартные файлы: configs/ui/ui_custom_msgs.xml scripts/bind_stalker.script 1. Создаём файл ваше_название_скрипта.script в папке gamedata/scripts и пишем в него: function show_time() local hud = get_hud() local cs = hud:GetCustomStatic("hud_show_time") if cs == nil then hud:AddCustomStatic("hud_time_static", true) hud:AddCustomStatic("hud_show_time", true) cs = hud:GetCustomStatic("hud_show_time") end[/color] [color=green]local time_h = level.get_time_hours() local time_m = level.get_time_minutes() local msg if time_m >= 10 then msg = string.format(" %02d:%02d\n", time_h, time_m) else msg = string.format(" %02d:%02d\n", time_h, time_m) end if cs ~= nil then cs:wnd():SetText(msg) end end 2. Далее открываем файл ui_custom_msgs.xml в configs/ui/ и пишем туда: <hud_time_static x="852" y="17" width="156" height="52"> <text complex_mode="0" x="65" y="0" font="letterica16" r="255" g="255" b="255" a="130">Time</text> <texture>ui_hud_frame_clock</texture> </hud_time_static> <hud_show_time x="862" y="38" width="156" height="52"> <text x="0" y="0" font="graffiti19" r="255" g="255" b="255" a="140" align="c"/> </hud_show_time> 3. Открываем файл bind_stalker.script и пишем после: function actor_binder:update(delta) object_binder.update(self, delta) local time = time_global() game_stats.update (delta, self.object) следующее: ваше_название_скрипта.show_time()
  5. [SoC] Снятие денег с трупов Автор статьи: RETRIX Способ создания фишки "Снятие денег с трупов" для S.T.A.L.K.E.R.-Тень Чернобыля. Находим в распакованном каталоге gamedata файл по адресу GameData/Scripts/treasure_manager.script. *Файл можно править Notepad, Wordpad, Windows OfficeWord и другими текстовыми редакторами (прост. "Блокнот") В файле treasure_manager.script находим следующую конструкцию кода: --' Юзание инициатора (возможность выдать тайник) function CTreasure:use(npc) printf("TREASURE USE") end После строки "TREASURE USE" пишем следующий код: if (npc and db.actor) then lootmoney.lootmoney(npc) end В результате проделанной работы у нас получается в файле treasure_manager.script вот такая конструкция: --' Юзание инициатора (возможность выдать тайник) function CTreasure:use(npc) printf("TREASURE USE") if (npc and db.actor) then lootmoney.lootmoney(npc) end Теперь в каталоге деректории игры по адресу gamedata/scripts создаём новый текстовый документ lootmoney.txt. Открываем файл блокнотом или другим текстовым редактором и сохраняем его как lootmoney.script c кодировкой ANSI. Можно взять готовый скрипт LUA, подчистить его и переименовать. Это значения мало имеет. В файл gamedata/scripts/lootmoney.script пишем вот такую конструкцию: function lootmoney(npc) if npc ~= nil and not string.find(npc:section(),"arena") and npc:character_community()~="arena_enemy" then local money = npc:money() if money ~= nil and money ~=0 then local deadmoney = money local npc_rank npc_rank = ranks.get_obj_rank_name(npc) if npc_rank ~= nil then if npc_rank == "novice" and deadmoney >=400 then deadmoney=math.random(25,400) elseif npc_rank == "experienced" and deadmoney >=500 then deadmoney=math.random(50,500) elseif npc_rank == "veteran" and deadmoney >=600 then deadmoney=math.random(100,600) elseif npc_rank == "master" and deadmoney >=700 then deadmoney=math.random(200,700) end end local news_texti = "\\n%c[255,255,0,0]Мёртвый сталкер: %c[default]"..npc:character_name().."\\n%c[255,255,0,0]Обнаружено денег: %c[default]"..game.translate_string(tostring(deadmoney).."руб.") db.actor:give_game_news(news_texti, "ui\\ui_iconsTotal", Frect():set(0,0,83,47), 1, 4000) db.actor:give_money(deadmoney) game_stats.money_quest_update(deadmoney) npc:give_money(-money) game_stats.money_quest_update(-money) end end end Теперь всё необходимо сохранить и закрыть файлы. Способ должен работать. При обыске трупов сталкеров будет автоматически сниматься определённая сумма денег, подобно тому, как поступает информация о тайниках и статьи в энциклопедию. Приятной игры. Структура данной фишки выдрана из LootMoney MOD.
  6. Имя NPC в игровых сообщениях "Зова Припяти" Кто шарит в логике, подскажите, как тут дописать правильно, чтобы в сообщении указывалось имя NPC, а не писалось "Сообщение". [sr_idle@20] on_game_timer = 10000 | sr_idle@30 %+sad_artefuck_ready =send_tip(sad_artefact_upgr_ready:sad_atr_trader) -sad_atr_trader_go_kitchen% send_tip - понятно, что это функция в xr_effects.script Есть даже такой комментарий: --[[ send_tip(news_id:sender:sender_id) 1. news_id 2. sender* 3. sender_id* * - not necessary --]] news_id - это текст сообщения, т.е. string id. В моей логике имя sad_artefact_upgr_ready sender - это иконка в секции tips_icons news_manager.script. В моей логике имя sad_atr_trader sender_id - а это заголовок сообщения, story_id NPC. story_id моего персонажа прописан в файле по пути: gamedata\configs\creatures\spawn_sections_sad.ltx И выглядит так: [sad_atr_trader]:stalker $spawn = "respawn\sad_atr_trader" character_profile = sad_atr_trader story_id = sad_atr_trader Т.е. в логике я указал как: [sr_idle@20] on_game_timer = 10000 | sr_idle@30 %+sad_artefuck_ready =send_tip(sad_artefact_upgr_ready:sad_atr_trader:sad_atr_trader) -sad_atr_trader_go_kitchen% Дело в том, что хоть story_id и указан, заголовок все также остается как "Сообщение". Я все-таки думаю, что story_id читается, но не отображается. Потому что, если указать другое имя, не являющееся story_id - игра вылетит. Думаю, дело в функции send_tip в news_manager.script. Там не прописано отображение имени. Возможно, что-то со времен прошлых игр удалили из скриптов, т.к. я действительно не помню чтобы в ЗП игрок получал сообщения с подписанным именем NPC.
  7. [COP] Новый ранг - Легенда Это адаптация урока на Тень Чернобыля для Зов Припяти. Идем в gamedata/configs/creatures/game_releations.ltx и ищем: ;реальное разделение на группы репутаций на шкалы rating = novice, 300, experienced, 600, veteran, 900, master Меняем на: ;реальное разделение на группы репутаций на шкалы rating = novice, 300, experienced, 600, veteran, 900, master, 1200, legend Ищем: ;рейтингов, репутаций и благосклонности в интерфейсе rating_names = novice, 30, experienced, 60, veteran, 90, master Меняем на: ;рейтингов, репутаций и благосклонности в интерфейсе rating_names = novice, 30, experienced, 60, veteran, 90, master, 120, legend Ищем: [rank_relations] ; novice, experienced, veteran, master ;================================================================ novice = 0, 0, 0, 0 experienced = 0, 0, 0, 0 veteran = 0, 0, 0, 0 master = 0, 0, 0, 0 Меняем на: [rank_relations] ; novice, experienced, veteran, master, legend ;================================================================ novice = 0, 0, 0, 0, 0 experienced = 0, 0, 0, 0, 0 veteran = 0, 0, 0, 0, 0 master = 0, 0, 0, 0, 0 legend = 0, 0, 0, 0, 0 Ищем: ;очки рейтинга, получаемые за убийство персонажа ;с определенным статусом [rank_kill_points] novice = 0 experienced = 0 veteran = 0 master = 0 Меняем на: ;очки рейтинга, получаемые за убийство персонажа ;с определенным статусом [rank_kill_points] novice = 0 experienced = 0 veteran = 0 master = 0 legend = 0 Идем в gamedata\configs\text\rus и открываем любой файл и добавляем туда: <string id="legend"> <text>Легенда зоны</text> </string> Все, готово. Можно прописывать любому персонажу в строчку <rank>...</rank>
  8. Valve выпустит новую сюжетную кампанию для Left 4 Dead 2. Об этом сообщил автор канала Valve News Network Тайлер МакВикер со ссылкой на собственные источники. Ранее он уже рассказывал, что в Left 4 Dead 2 есть приватные серверы, на которых используются недоступные в игре карты, в частности одна из локаций кампании The Last Stand из первой части серии. Источники VNN заявили, что активность в таких лобби связана с работой Valve над новым контентом. По информации МакВикера, крупное обновление для Left 4 Dead 2 выйдет до конца 2020 года. Valve использует новую кампанию, чтобы оценить заинтересованность геймеров во франшизе. Инсайдер предположил, что студия может портировать в L4D2 обновленную сюжетную линию The Last Stand или же выпустить ее продолжение. МакВикер добавил, что Valve не планирует переносить Left 4 Dead 2 на Source 2 в ближайшее время. Студия также не готовит третью частью зомби-шутера, несмотря на то, что она уже была в разработке. Источни
  9. [CoP] Создание излома и кошки 1. Подготовnте файлы: Возьмите из Чистого Неба, папки creatures и файл, например кошки (m_cat.ltx). Файл (из ЗП) creatures\monsters.ltx. И возьмите модельки, текстуры из оригинала ТЧ. 1. Адаптирование конфига: Кошка: Вставляем в файл m_cat.ltx следующюю запись: vision_free_section = cat_vision_free vision_danger_section = cat_vision_danger Значения visibility_threshold ДОЛЖНЫ БЫТЬ РАВНЫ для денжера и фри, иначе возникают артефакты с потерей видимости при переходе от денжера во фри. [cat_vision_free] min_view_distance = 0.5 ; коэффициент, который множится на eye_range, в зависимости от угла max_view_distance = 1.0 ; коэффициент, который множится на eye_range, в зависимости от угла visibility_threshold = 100.0 ; значение, при достижении суммой которого объект считается видимым always_visible_distance = 0.3 time_quant = 0.001 decrease_value = 0.01 ; значение, на которое уменьшается вес, если объект попал в фрустум, но отсёкся по каким-то причинам velocity_factor = 0.5 luminocity_factor = 0.5 ; фактор освещения (только для Актёра) transparency_threshold = 0.25 [cat_vision_danger] min_view_distance = 0.5 ; коэффициент, который множится на eye_range, в зависимости от угла max_view_distance = 1.0 ; коэффициент, который множится на eye_range, в зависимости от угла visibility_threshold = 100.0 ; значение, при достижении суммой которого объект считается видимым always_visible_distance = 0.3 time_quant = 0.001 decrease_value = 0.01 ; значение, на которое уменьшается вес, если объект попал в фрустум, но отсёкся по каким-то причинам velocity_factor = 0.5 luminocity_factor = 0.5 ; фактор освещения (только для Актёра) transparency_threshold = 0.25 Излом: В файл "m_facture.ltx" вставляем: vision_free_section = izlom_vision_free vision_danger_section = izlom_vision_danger Значения visibility_threshold ДОЛЖНЫ БЫТЬ РАВНЫ для денжера и фри, иначе возникают артефакты с потерей видимости при переходе от денжера во фри. [izlom_vision_free] min_view_distance = 0.4 ; коэффициент, который множится на eye_range, в зависимости от угла max_view_distance = 1.0 ; коэффициент, который множится на eye_range, в зависимости от угла visibility_threshold = 100.0 ; значение, при достижении суммой которого объект считается видимым always_visible_distance = 0.3 time_quant = 0.001 decrease_value = 0.01 ; значение, на которое уменьшается вес, если объект попал в фрустум, но отсёкся по каким-то причинам velocity_factor = 0.5 luminocity_factor = 0.5 ; фактор освещения (только для Актёра) transparency_threshold = 0.25 [izlom_vision_danger] min_view_distance = 0.4 ; коэффициент, который множится на eye_range, в зависимости от угла max_view_distance = 1.0 ; коэффициент, который множится на eye_range, в зависимости от угла visibility_threshold = 100.0 ; значение, при достижении суммой которого объект считается видимым always_visible_distance = 0.3 time_quant = 0.001 decrease_value = 0.01 ; значение, на которое уменьшается вес, если объект попал в фрустум, но отсёкся по каким-то причинам velocity_factor = 0.5 luminocity_factor = 0.5 ; фактор освещения (только для Актёра) transparency_threshold = 0.25 2. Вписка в список читаемых файлов: В файл monsters.ltx вписываем строчку: #include "m_cat.ltx" - если добавили кошку. #include "m_fracture.ltx" - если добавили излома. Обе строчки если добавили и кошку и излома. 3. Добавление моделек и текстур: Модельки кошки поместить в meshes\monsters\cat Излома в meshes\monsters\izlom Текстуры поместить в папку textures\act 4. Создание сквады: В файл configs\misc\squad_descr.ltx вносим: Кошка: [simulation_cats_weak]:online_offline_group faction = monster_predatory_day npc_random = cat_weak npc_in_squad = 2, 4 [simulation_cats_strong]:online_offline_group faction = monster_predatory_day npc_random = cat_normal, cat_strong npc_in_squad = 5, 7 У вас получились 2 сквады кошек: simulation_cats_weak - слабая и simulation_cats_strong - сильная Их можно расставить на карте Излом: [simulation_izloms_mix]:online_offline_group faction = monster_predatory_day npc_random = fracture_weak npc_in_squad = 6, 10 [simulation_izloms_pisec]:online_offline_group faction = monster_predatory_day npc_random = fracture_weak npc_in_squad = 12, 20 Получились сквады: simulation_izloms_mix - Среднее число изломов и simulation_izloms_pisec 0 Огромное число изломов (до 20 штук) Эти сквады можно поставить на карты. Все! Можно играть. В конец файла m_facture.ltx впиши: [fracture_weak]:m_fracture_e $spawn = "monsters\fracture" ; option for Level Editor monster_type = indoor rank = 0 spec_rank = weak community = fracture Tele_Time_To_Hold = 200 А в конец m_cat.ltx это: ;--/=== weak === [cat_weak]:m_cat_e $spawn = "monsters\cat_01_weak" monster_type = indoor rank = 0 spec_rank = weak community = cat Tele_Time_To_Hold = 200 immunities_sect = cat_immunities_weak ;--Имунитеты: [cat_immunities_weak]:cat_immunities burn_immunity = 0.4 strike_immunity = 0.4 shock_immunity = 0.4 wound_immunity = 0.1 radiation_immunity = 0.01 telepatic_immunity = 1.0 chemical_burn_immunity = 1.0 explosion_immunity = 0.5 fire_wound_immunity = 0.7 ;--/=== normal === [cat_normal]:m_cat_e $spawn = "monsters\cat_02_normal" monster_type = indoor rank = 0 spec_rank = normal community = cat Tele_Time_To_Hold = 200 immunities_sect = cat_immunities_normal ;--Имунитеты: [cat_immunities_normal]:cat_immunities burn_immunity = 0.4 strike_immunity = 0.4 shock_immunity = 0.4 wound_immunity = 0.1 radiation_immunity = 0.01 telepatic_immunity = 1.0 chemical_burn_immunity = 1.0 explosion_immunity = 0.4 fire_wound_immunity = 0.6 ;--/=== strong === [cat_strong]:m_cat_e $spawn = "monsters\cat_03_strong" monster_type = indoor rank = 0 spec_rank = strong community = cat Tele_Time_To_Hold = 200 immunities_sect = cat_immunities_strong ;--Имунитеты: [cat_immunities_strong]:cat_immunities burn_immunity = 0.4 strike_immunity = 0.4 shock_immunity = 0.4 wound_immunity = 0.1 radiation_immunity = 0.0 telepatic_immunity = 1.0 chemical_burn_immunity = 1.0 explosion_immunity = 0.3 fire_wound_immunity = 0.5 Вылетов не должно быть.
  10. Прототип динамических новостей В общем для этого нужно создать скрипт с названием типа ваше_название.script и нужно иметь чистый файл bind_stalker.script. Сделаем свой скрипт и запишем сюда нечто типо этого: -- Прототип динамичеких новостей local ant_spam ={ "Слышал что на АТП с Темной Долины зомбаки ходят. Осторожнее там.", "Тимыч: Кто флудить будет тому оторву кой-чего.", "Кто нибудь знает куда Стрелок делся?", "Военные вообще оборзели! Две тысячи рублей за проход на север кордона - это не хило!", "Завелся Чак Норрис в наших местах. Бандос это с прозвищем таким. Дебил полный.", "Комбат как-то говорил что Тополь пропал. Неизвестно куда. Разминулись в подземке Агропрома", "Долг: Блин переходите на свою волну. А то запалите Свободе планы", "Свобода: Секач опять на Кота наехал. Кого-то скоро по закону Зоны на бой вызывать будут.", "Похоже мне еще в лагере сидеть. Блин долг когда я этот Сидоровичу то отдам?!" } time_news = 0 -- переменная промежутка времени function time_update_spam() -- функция промежутка времени local time = time_global() -- переменная времени if time_news < time then time_news = time + 30000 -- время через которое будет вызываться сообщение ваше_название.update_spam() end end function update_spam() news_manager.send_tip(db.actor, (ant_spam[math.random(9)]), nil, nil, 30000) end Теперь зайдем в файл bind_stalker.script и после строки: xr_sound.update_actor() пишем ваше_название.time_update_spam() Теперь в игре будет через несколько секунд приходить новости. Чем больше время в строке time_news = time + 30000, тем дольше будет промежуток. Еще можно добавлять свои новости - после строки "Мод Antdiablon freeplay 2.0 - самый крутой" ставьте запятую и пишите свой текст на новой строке, в кавычках но в конце после кавычки ставьте запятую. а если это последний текст, то не ставьте. Потом высчитывайте сколько сообщение всего и в строчке: news_manager.send_tip(db.actor, (ant_spam[math.random(9)]), nil, nil, 30000) вместо 9 ставьте соответствующее количество.
  11. X-Ray engine [1.5.00-1.5.10] Дата: 15.04.2012 Собрал в архив: Earthworm-Jim В архиве папки bin (движок игры S.T.A.L.K.E.R. - Clear Sky) версий: 1.5.00, 1.5.03, 1.5.04, 1.5.05, 1.5.07, 1.5.08, 1.5.09, 1.5.10. СКАЧАТЬ: https://yadi.sk/d/59j1FfuS3CwShd
  12. X-Ray engine [1.6.00-1.6.02] Дата: 15.04.2012 Собрал в архив: Earthworm-Jim В архиве папки bin (движок игры S.T.A.L.K.E.R. - Call of Pripyat) версий: 1.6.00, 1.6.01, 1.6.02. СКАЧАТЬ: https://yadi.sk/d/ZGT5KJKj3CwTFU
  13. [SOC] Мелкие правки движка Ковыряемся в исходниках SoC. На данный момент тема ориентирована в большей степени на новичков. Здесь будут собираться готовые решения по мелкому ковырянию исходников движка SoC. Собственно приглашаю всех желающих присоединиться. P.S. обсуждение также приветствуется.
  14. Hardtmuth

    Обзор DayZ

    Это были самые увлекательные и запоминающиеся тысячи часов.
  15. Интересное предложение. Нужно написать Алексею. @Wolfstalker
  16. Так всё уже основное сделано. Людей для того и позвали, что основное было сделано и был смысл дозированной подачи ссылок юзерам. ну и очередь же там... ?
  17. Используйте отдельное окно чата, если вам нужна ориентация конкретно на чат.
  18. Добрый вечер. Думаю, они уже в восторге от того, что их ежедневно душат за дизайн и отсутствие сталкерской стилистики. "Сделайте это, тут подправьте, это не так сделано."
  19. Стандартная процедура. Если что-то нужно сохранить, можно самому себе отправить.
  20. vooslich сейчас по быстрому придумаем вопрос и решение этого вопроса.
  21. @vooslich давай включайся в решение вопроса.
  22. Алексей сделал. Можно видео с динозавриками кидать.
  23. Привет. Добро пожаловать!) ?‍♀️