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

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

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

  Информация (Показать)

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

  Читать рекомендуется. (Показать)

И последнее: очень рекомендовано к прочтению Правила форума
 


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий
  Malandrinus писал(а):

Большинство неписей получают логику из гулага. Бандиты на АТП очевидно в гулаге.

Я вроде бы ясно указал, что в логике бандитов-NPC на АТП в оригинальной ТЧ нет секции on_death. Логика - это всё, что есть у NPC в кастом + всё, что прописано в гулаге смарттеррейна, если, конечно, NPC под гулагом - по-моему, это очевидно.

Я и не думал, что нужно именно сохранить идентификатор убийцы, а всего лишь получить его - прямо сейчас, онлайн. Разумеется, для первого случая придётся воспользоваться pstor. Что же касается

  Malandrinus писал(а):

Неужели ради этого кому-то милее лезть в богомерзкие нетпакеты?

Соглашусь.

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

Столкнулся с проблемой. Стоит версия X-ray Extensions 232. Есть 2 одинаковых ствола. На одном установлен прицел. Я пытаюсь с помощью функций изменения значений в памяти объектов (get_wpn_int , set_wpn_int) установить на втором стволе прицел. А именно: копирую значения по смещению 936 ( флаги установленных аддонов) и по смещению 1008 ( зум фактор ). Вроде бы всё нормально: прицел стоит на стволе, но как будто не используется - нету текстуры прицела, а так же не срабатывает смещение худа как в режиме прицеливания . К примеру с подствольником таких проблем не возникло. Вообщем, как активировать на втором стволе нормальное функционирование прицела? Чего не хватает?

... А наше дело маленькое - с ружьём да по болотам. (с)

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

Решил поработать над скриптами. Вот есть такая дефолтная функция.

  Код (Показать)
Изменено пользователем vampirnik77
Ссылка на комментарий

В параллельной теме обсуждалось только что. Целесообразнее. Но следует еще доработать.

А потом провести ревизию собственно звуков.

 

Как минимум - local snd_ini = ini_file("misc\\script_sound.ltx") вынести из функции.

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

Да, вот только сохранить у меня пока не получилось. se_stor вызванный из start_game_callback напрочь отказывается сохранять что либо.

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

Доброго времени суток, есть такой код:

  Показать


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

Я пытался убрать под спойлер, но не получилось - код делился пополам и без спойлера. Спасибо.

Изменено пользователем Romann
Добавлено  HellRatz,

Не плохо бы такие полотна под спойлер прятать.

  железо (Показать)
Ссылка на комментарий

@Romann, код, конечно, страшный))

Для начала надо бы кэшировать секцию перед проверкой, чтобы столько раз ее не получать.

И еще, лучше составить таблицу, где секция = количество денег, чтобы столько раз не перебирать elseif...or...then, а брать значения оттуда.

И чтобы было имя из характера, надо делать character_name().

  • Спасибо 1

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

naxac.gif

Ссылка на комментарий
  Romann писал(а):
как можно исправить?

Я бы переписал так:

 

 

  Показать

 

Изменено пользователем Serge!
  • Спасибо 1
Ссылка на комментарий

 

 

  Serge! писал(а):
Я бы переписал так:

Вылетает по вызову этой функции:

 

  Показать

 

  железо (Показать)
Ссылка на комментарий
  Romann писал(а):
Вылетает

Возможно надо попробовать переписать фрагмент кода 

local zom_sec = victim:section()
    if victim and tbl_zom[zom_sec] then
        if who:id() == db.actor:id() then
            dialogs.relocate_money(db.actor,tbl_zom[zom_sec],"in")
        elseif not IsMonster(who) then
            who:give_money(tbl_zom[zom_sec])
            game_stats.money_quest_update(tbl_zom[zom_sec])
            news_manager.send_tip(db.actor,who:character_name().." получил "..tostrng(tbl_zom[zom_sec]).." рублей", nil, nil, 2000)
        end
    end

вот так

if victim then
        local zom_sec = victim:section()
        if tbl_zom[zom_sec] then
            if who:id() == db.actor:id() then
                dialogs.relocate_money(db.actor,tbl_zom[zom_sec],"in")
            elseif not IsMonster(who) then
                who:give_money(tbl_zom[zom_sec])
                game_stats.money_quest_update(tbl_zom[zom_sec])
                news_manager.send_tip(db.actor,who:character_name().." получил "..tostrng(tbl_zom[zom_sec]).." рублей", nil, nil, 2000)
	    end
        end
    end

а вообще лучше бы знать куда Вы это хотите вставить. Я ориентируюсь на оригинал ТЧ. В нём bind_monster.script содержит всего 187 строк, а у Вас ошибка в 611 строке. Очень большая модификация!

Хотя проблема может быть и другая, например в глобальной функции IsMonster? Я глубоко не лез, а только чуть пригладил явную непристойность.

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

 

 

  Romann писал(а):
Вылетает по вызову этой функции:

 

 

  Serge! писал(а):
Возможно надо попробовать переписать фрагмент кода 

В общем максимум, до работоспособности, получилось сделать так:

 

  Показать

 

 

 

  Serge! писал(а):
а вообще лучше бы знать куда Вы это хотите вставить. Я ориентируюсь на оригинал ТЧ. В нём bind_monster.script содержит всего 187 строк, а у Вас ошибка в 611 строке. Очень большая модификация!

ОП-2 это ).

П.С.: Подскажите как поменять цвет текста, выводимых сообщений?

  железо (Показать)
Ссылка на комментарий

 

 

  Romann писал(а):
В общем максимум, до работоспособности, получилось сделать так:

Нет комментариев.

 

 

  Romann писал(а):
Подскажите как поменять цвет текста, выводимых сообщений?

Не знаю, но думаю что никак, т.к. это функция движка.

Ссылка на комментарий
  Romann писал(а):
Подскажите как поменять цвет текста, выводимых сообщений?

news_manager.send_tip(db.actor, "%c[255,255,128,128]Текст 1:\n%c[default]Текст 2", nil, nil, 1000) 

 

где:

%c[255,255,128,128] - это цвет сообщения. 

%c[default]- это конец кода цвета сообщения, дальше текст идёт в стандартном цвете.

\n - перенос строки.

Изменено пользователем TIGER_VLAD
  • Спасибо 1
  • Полезно 1
Ссылка на комментарий

@TIGER_VLAD, Спасибо! (модераторам, про кнопочку спасибо я знаю), век живи - век учись.

Изменено пользователем Serge!
  • Нравится 1
Ссылка на комментарий

Привет ребята! Сам в Lua мало понимаю, так что спрошу тут)

Требуется сделать небольшую вещь - нужно выполнять произвольный код 3 раза за игровые сутки. Без условий.

И да, 3 раза рандомно за 24 часа, т.е в какой час - только math.random.

 

Я максимум что смогу время игровое получить, но как потом проверку в игре делать, в bind_stalker.update() записать -  не всегда прокатывает...

В общем жду от вас помощи :)  

Не соответствует правилам.

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

@vampirnik77, а зачем, простите, сохранять в se_stor? неужели недостаточно собрать таблицу один раз при запуске игры / нетспавне актора и просто в памяти ее хранить.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

@Zander_driver, Я еще плохо разбираюсь, но разве при загрузке сохранок память не очищается? 

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

Всем привет, подскажите пожалуйста скрипт для пропуска квестовых нпс. Ну к примеру есть определённая схема, и нужно чтоб она не применялась к квестовикам (ну вот как уборщик не убирает трупы квестовиков), есть таблица квест. нпс:

local quest_nps = {
...,
...,
...
}

Подскажите код, чтобы схема пропускала эту таблицу, и не срабатывала на кв. нпс..

  железо (Показать)
Ссылка на комментарий

@Romann, могу только предположить, что в таблице квестовых NPC будут указаны их имена. Тогда, если нам требуется обработка всех сталкеров (серверных объектов, на всех локациях):

local quest_npc = {}
for a=1,65535 do
local obj = alife():object(a)
  if obj then
   if IsStalker(obj) then
    if not quest_npc[obj:name()] then
     -- обработчик сталкера - серверного объекта
    end
   end
  end
end

Если же требуется обработка именно сталкеров-NPC (они доступны только на текущей локации), тогда:

local quest_npc = {}
for a=1,65535 do
local obj=level.object_by_id(a)
  if obj then
   if IsStalker(obj) then
    if not quest_npc[obj:name()] then
     -- обработчик сталкера - NPC
    end
   end
  end
end
  • Спасибо 1
Ссылка на комментарий

Помогите с похожей проблемой: добавил авторазряжалку в ТТ2 и она весьма не кстати разряжает гравипушку(wpn_gravigun) на классе WP_SVD и  огнемет(wpn_flame) на классе WP_LR300. Как понял, скрипт работает именно с классами оружия, а не по названию.  Поправте, пожалуста, код, чтобы он не разряжал гравипушку и огнемет. 

Авторазряжалка:

  Показать

 

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

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

Отношения между людьми- главная ценность в человеческом обществе.
Любая полученная информация- это только повод для размышлений, а не побуждение к действию.
Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAE
Накопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt

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

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

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

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

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

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

Войти

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

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

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...