Перейти к контенту

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

@_Sk8_AsTeR_, нет, и так не сработает. Раздели на два экшена из разных фраз: в первом передаём водку, во втором бухаем.

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

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий
13 часов назад, BossBoroda сказал:

чистый тч(ну как почти), ну вроде там же трупы исчезают?

Точно не помню, в каком файле, но что-то связанное с временем исчезновения трупов монстров. Меняешь его - и все трупы (и монстров, и НПС) исчезают либо дольше, либо быстрее. В оригинале время уборки трупов вроде 36 часов.

 

Упс, оказывается dsh уже ответил :)

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

Сталкер - наше всё!

Ссылка на комментарий
23 часа назад, dsh сказал:

@BossBoroda если нет уборщика трупов, то движок убирает, ориентируясь на эти параметры


	corpse_remove_game_time_interval	= 12 ; in hours
	stay_after_death_time_interval		= 12 ; in hours

 

А не подскажешь в каких файлах их искать?

 

Ссылка на комментарий

Всем добра! У меня вопрос: Недавно в одном моде увидел такую функцию в bind_stalker.script

Скрытый текст

---------------------------------------------------------------------------
function actor_binder:net_spawn(data)

-- Случайный спавн мутантов при заходе на локацию:
    spawn_sluchainji.random_spawn()

    printf("actor net spawn")        

    level.show_indicators()

    self.bCheckStart = true
    self.weapon_hide = false--     спрятано или нет оружие при разговоре.
    weapon_hide = false--     устанавливаем глобальный дефолтовый флаг.

    if object_binder.net_spawn(self,data) == false then
        return false
    end

    db.add_actor(self.object)
    
    if self.st.disable_input_time == nil then
        level.enable_input()
    end

    self.weather_manager:reset()
--    game_stats.initialize ()

    if(actor_stats.add_to_ranking~=nil)then
        actor_stats.add_to_ranking(self.object:id())
    end

    --' Загружаем настройки дропа
    death_manager.init_drop_settings()
    ogsm_funcs.on_game_load()
--==================================================================
    if level.name() == "l03u_agr_underground" then
get_console():execute("start_my_script_level_name_=_"..level.name())
spawn_sluchainji.podz_agro_rats()
end
    if level.name() == "l10u_bunker" then
get_console():execute("start_my_script_level_name_=_"..level.name())
spawn_sluchainji.podz_vjzhigatelya_rats()
end
--===============================================================
              return true
end
-----------------------------------------------------------------------

Подскажите возможно ли вынести эту функцию в отдельный скрипт или она должна быть именно здесь? Если это возможно, то как это делать что бы не поймать вылет? Платформа ТЧ 1.004. Заранее большое спасибо за ответ

Pir%40t%40s.gif

Ссылка на комментарий

@Pir@t@s Она у тебя уже вынесена в отдельный скрипт, вроде как. Смотри в скрипте spawn_sluchainji.script функцию random_spawn()

Здесь она только опрашивается постоянно.

И лишь в подземках в самом низу прописан спавн крыс, почему-то отдельно. Скорее всего это доспавн.

  • Спасибо 1

"Кругом зомби.....у меня кончаются патроны...."

Ссылка на комментарий
13 минут назад, BFG сказал:

Она у тебя уже вынесена в отдельный скрипт, вроде как. Смотри в скрипте spawn_sluchainji.script функцию random_spawn()

Вы совершенно правы, так и есть. Просто,я хотел при помощи этой функции аномалии на локациях заспавнить.

Потому что, у меня получается так.

Скрытый текст

Если я спавню аномалию через скрипт на болоте, то при переходе к примеру на кордон эта аномалия появляется так же на кордоне. А по планам, хотелось бы заспавнить конкретные аномалии на конкретных локациях. К примеру "Туман" только на болотах и янтаре, а не по всей зоне.

 

Pir%40t%40s.gif

Ссылка на комментарий

@AndreySol

Цитата

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

Прости за долгий ответ и за мою приставучесть. Я понял о чем ты только сейчас. когда перечитал переписку. Сделать руками табличку существующих ИМЯ+ПРОЗВИЩЕ нпсей. Но в таком случае получается, что автором отправленных сообщений является великий рандом, случайно выдергивая ИМЯ+ПРОЗВИЩА из таблички. Как вариант... Но все равно немного не то. 

А вот я имел в виду, чтобы игра сама подставляла имя+прозвища реальных существующих нпс. Я проштудировал насклько мог скрипт news_main соляночный. Там существующие неписи спамят в чат о событиях. Там все ясно. Если в радиусе от нпс было событие, он спамит. Однако была функция, описывающая спам от нпс, которые кидали предложения о продаже в чат. То есть рядом с ними не было никаких событий. То есть игра сама как-то выбирает рандомно СУЩЕСТВУЮЩЕГО нпс и отправляет от его имени сообщение. Пробовал перебрать его функцию и из нее слепить свою, но вместо имени и прозвища была пустота. То есть в теории как-то сделать можно, но моих мозгов на это не хватает. :(

Ссылка на комментарий

@_Sk8_AsTeR_ Игра(а правильнее - движок) ничего подобного сам не делает.

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

Насчет нехватки мозгов - ты вот написал. что пытался переработать что-то под свои нужды. Вот и выложи, то что сделал, а уж кто смогет\захочет - поправят\подскажут\и т.д.

Ссылка на комментарий

Всем привет! Подскажите пожалуйста есть ли функция для SoC позволяющая поссорить между собой 2 нейтральные группировки через скрипт?

Я нашел что то подобное в интернете, но только для Зова Припяти. 

Скрытый текст

источник : http://st-md.ru/viewtopic.php?id=317
-------------------------------------------------
Николай ввёл несколько новых группировок в дополнение к имеющимся:
bandit_alies - бандиты из группы Чапая 
killer_alies - Юпитерские наймы 
rasvet - Рассвет 
monolith_alies - Монолит в кинотеатре на Припяти 
alfa_force - Альфа
Старые группировки:
actor - единственный член группировки - ГГ 
dolg - Долг 
freedom - Свобода 
bandit - бандиты 
killer - наймы 
stalker - сталкеры 
monolith - Монолит
Кроме того Николай прописал функцию изменения взаимоотношений между группировками.
set_faction_to_faction_relation(from_faction,to_faction,type_relation) 
где from_faction - наименование группировки, которая будет менять отношение 
to_faction - наименование группировки, к которой будет изменяться отношение 
type_relation - отношение. Можно задавать следующие значения: 
"e" - установить вражеские отношения 
"n" - установить нейтральные отношения 
"f" - установить дружеские отношения
Тут возникает широкое поле деятельности. Например, геймерам, истомлённым Альфой поссорить её с бандитами. Рисуем:
set_faction_to_faction_relation("bandit","alfa_force","e")
После выполнения функции, при встрече бандитов с Альфой "Кушай лимончик, падла!" - гарантирую. 
Но мы о краснухе. 
Краснуха возникает при отстреле члена группировки, заступе на территорию группы без разрешения и глючков игры. Вот этот последний случай и попробуем лечить. Рисуем лечение отношений между Чапаевцами и ГГ:
set_faction_to_faction_relation("bandit_alies","actor","n")
После выполнения функции Чапа и его команда станут жёлто-равнодушными к ГГ. 
Всё? Неа...А куда вписать эту функцию и как её запустить? Не буду изобретать паровоз: в файл меню, забиндив её на F6. 
Открываем \scripts\ui_main_menu.script 
Ищем
elseif db.actor~=nil and dik==DIK_keys.DIK_F5 then 
self:mod_options()
Ниже вставляем
elseif db.actor~=nil and dik==DIK_keys.DIK_F6 then 
set_faction_to_faction_relation("bandit_alies","actor","n")
Сохраняем, закрываем, запускаем игру.
В игре Esc-F6-Esc
Что мы сделали? Теперь все вновь рождённые бандиты на Лесничестве (неудачный пример: эти не спавнятся) будут нейтральны к ГГ. А эти, уже рождённые? Будут красными. А их надо примирять с ГГ персонально. Надо перебрать все объекты на уровне, отфильтровать сталкеров с нужной группировкой и каждого примирить с ГГ. Постреляем, к примеру в Долговцев - они стали красными. Лечим. Находим в томже файле меню:
elseif db.actor~=nil and dik == DIK_keys.DIK_F5 then 
self:mod_options()
--после вставляем фрагмент:
elseif db.actor~=nil and dik == DIK_keys.DIK_F6 then 
local id, obj, kto 
for id=0, 65535 do 
obj = level.object_by_id(id) 
if obj and IsStalker(obj) then 
kto = obj:character_community() 
if (kto == "dolg") then 
obj:force_set_goodwill(0, db.actor) --0 - нейтрал, 5000 - друг, -5000 - враг 
end 
end 
end
Видим красных долговцев - жмём Esc-F6-Esc 
Можно перекрашивать и другие кланы, заменив "dolg" на, например "bandit" 
Всё!

 

Pir%40t%40s.gif

Ссылка на комментарий

@_Sk8_AsTeR_, тебе же написали:

В Tuesday, September 12, 2017 в 01:37, AndreySol сказал:

перебрать все объекты в игре, которые являются сталкерами, и заполнить таблицу реально существующими(заспавненными) неписями

Только таблицу заполняй не неписями, а их именами, получить которые можно из их нет-пакетов.

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

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий

Господа, выручайте!

Подскажите, знатоки, как через функцию get_npc_name в скрипте news_main, например, вернуть имя абсолютно любого рандомного СУЩЕСТИВУЮЩЕГО нпс? Онлайнового или оффлайнового...

Сама функция:

Скрытый текст

function get_npc_name(obj)
 local m_s_name = ""
 if (obj) then
  if (isGameObject(obj)) then
   if (obj.character_name) then
    m_s_name = obj:character_name()
   end
  else
   local ob = get_obj(obj.id)
   if (ob and ob.character_name) then
    m_s_name = ob:character_name()
   else
    if (amk and amk.read_stalker_params and IsNpcStalker(obj)) then
     local tbl = amk.read_stalker_params(obj)
     if(tbl and tbl.charname) then
      m_s_name = tbl.charname
     end
    end
   end
  end
 end
 if (m_s_name == nil) then
  m_s_name = ""
 end
 if (m_s_name == "") then
  --m_s_name = get_npc_community(obj)
 end
 return m_s_name
end

Посмотрел много примеров, как имена возвращаются из этой функции для разных других функций. Это все касается сообщений от НПС в чат. Торговля, увидели кого-то, увидели как мы сделали что-то и тдтп. Везде идет обращение к этой функции. 

У меня была идея сделать так, чтобы через эту функцию имя возвращалось для любого нпс, который находится от нас на определенном радиусе. Но по идее это будет касаться только онлайновых НПС, да и то у меня имена так и не возвращались. Вместо отправителя на экране была пустота. Приходило пустое сообщение ни от кого. Есть идеи, хорошие мои?

Изменено пользователем _Sk8_AsTeR_
Ссылка на комментарий
В ‎14‎.‎09‎.‎2017 в 10:53, naxac сказал:

@_Sk8_AsTeR_, тебе же написали:

Только таблицу заполняй не неписями, а их именами, получить которые можно из их нет-пакетов.

Черт, да, понял. Блин, это будет наверное слишком сложно для моих мозгов, тк я только погружаюсь в пучину скриптования. А жаль, вышла бы неплохая фишка. Ладно, спасибо 

Ссылка на комментарий

Всем привет! Скажите,возможно ли поссорить две нейтральных клана с помощью этого:

function limansk(community1, community2)
relation_registry.set_community_goodwill ("bandit", "killer", -500)
end

Или это работает только относительно актера?

Pir%40t%40s.gif

Ссылка на комментарий

Написали такую фразу:

Цитата

опасный объект заносится в дэнжер менеджер

Я так понимаю, связано с xr_danger.script ?

 

Как это в игре выглядит? Тут имеется ввиду реакция AI на звук.

 

Предполагаю, что NPC начинает искать врага, пока не убьет. Так ли это?

Ссылка на комментарий

Привет нужна помощь STALKER Clear Sky remake v 1.1.5.7 . Переносимый вес изменил везде и в system  и в actor и в античит файле . Но не знаю как отключить ограничение по переносимому обьему инвентаря . как сделать какой скрипт? 

Пожалуйста помогите памагите. Прошу вас

  • Не нравится 2
Ссылка на комментарий

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

В чём проблема.

В скрипте есть тонна local. Например:


local wave_bloodsucker1_l4 = {
mob = {"bloodsucker_game1", "bloodsucker_game2", "bloodsucker_game3"},
pos = {39,-2.13,7.9,20578,3232} }

Всё это нужно думаю понятно зачем. Однако при большом количестве таких штуковин появляется вот такая ошибка:

main function has more 200 local variables

И как бороться с этой дичью? 

  • Сомнительно 1
Ссылка на комментарий
В 17.09.2017 в 13:19, KERABITE сказал:

как отключить ограничение по переносимому обьему инвентаря

Объём инвентаря это скриптовый мод. В скрипте очевидно будет выключатель вида: true/false

Ссылка на комментарий
Цитата

main function has more 200 local variables

...как бороться...?

@power-cat, написано же: главная функция имеет более 200 локальных переменных. Уменьшай их количество.

Изменено пользователем naxac
  • Согласен 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

Ссылка на комментарий
12 часов назад, power-cat сказал:

main function has more 200 local variables

 - как выше подсказали - уменьшай кол-во локальных переменных;

 - распределить функционал в несколько скрипт-файлов, соответственно +200 переменных с каждым файлом.

А вообще, чтоб дать тебе дельный совет, необходимо видеть код скрипта\тов, чтоб понять на кой там объявляется 200+ локальных таблиц и как они потом используются...

Изменено пользователем AndreySol
Ссылка на комментарий

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

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   1 пользователь

AMK-Team.ru

×
×
  • Создать...