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

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

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


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

 
 

Stalkerin. Там есть много хороших статей касательно данной темы.
Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения.

 

Справочное руководство по языку Lua 5.1
https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ru
Справочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены.

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

 

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

 

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

 

Вопросы которые будут удалятся, следовательно их задавать не нужно:
-- Где находится та или иная функция?
Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;
-- Как сделать что-то/то-то?
С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;
-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.
-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.
Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов?
В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос.

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


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

Приветствую товарищи, объясните мне недалекому человеку:

Есть две одинаковые секции в рюкзаке ГГ.

 

 

---это в апдейте

local slot_1
local slot_2
local full_slots

 

local tab = { --- таблица с секциями
    "...",
}

 

if slot_1 ~= nil and slot_2 ~= nil then
full_slots = true
else
full_slots = false
end


----- раздаем id

     for _, section in pairs (tab) do
           local item = db.actor:object(section)
                   if item then

                   if full_slots == false then

                      if slot_1 == nil then
                           slot_1 = item:id()
                           db.actor:give_game_news("Слот 1 занят", "ui\\ui_pda_news", Frect():set(0,300,180,100), 0, 10000)
 
                     end
                     if slot_2 == nil and item:id() ~= slot_1 then   -- ПОЧЕМУ ПРИ НАЛИЧИИ ОДНОГО ПРЕДМЕТА СРАБАТЫВАЕТ И ЭТО???
                           slot_2 = item:id()
                           db.actor:give_game_news("Слот 2 занят", "ui\\ui_pda_news", Frect():set(0,300,180,100), 0, 10000)
                      end

                   else

                      if item:id() ~= slot_1 and  item:id() ~= slot_2 then
                          alife():release(alife():object(item:id()), true)
                      end
                   end

                   end
     end

 

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

Спасибо за понимание...


Вообще, можно ли присвоить предмету индивидуальный номер, и по этому номеру удалить предмет???

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

kmsk

 

  if slot_2 == nil and item:id() ~= slot_1 then

Потому что item:id() будет давать одно и то же число, при выполнении цикла для каждого отдельного элемента вашей таблицы, то есть:

1 item -  item:id() = постоянное id что бы вы там не присваивали

2 item - аналогично, только id уже другой.

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

Как можно сделать динамическм указание [[путь\]], то есть к [[]] добавить окончание из переменной со строковым значением perem_string = "дин.окончание пути"?

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

к [[]] добавить окончание из переменной со строковым значением

Так же, как и к любой другой строке:

[[string1]]..'string2'

 

почему при нахождении одного предмета, срабатывает как два?

Потому что ты пытаешься получить объект из инвентаря по секции и функция возвращает один и тот же объект.

Используй либо iterate_inventory, либо цикл "for i=0, db.actor:object_count()-1 do...".

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

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

naxac.gif

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

Извиняюсь за глупый вопрос, просто первый раз к звукам притронулся.

Так вот, а зачем пути к звукам используют как [[abc/def]] ?

А не просто строкой "abc/def" ?

 

И ещё один вопрос в догонку, реально ли сделать так, чтобы при прокрутке игрового времени, допустим во время сна, чтобы вокруг(на тек. левеле) все действия ускорялись- то есть нпс быстрее бегали, физика ускоряла движения объектов и т.д и т.п., чтобы после того же сна, мы видели что было реальное увеличение скорости течения времени(а не как сейчас- всего лишь прокрутка циферок времени)

Понятное дело, что для этого придётся изменять двиг+ такое кратковременное ускорение течения времени повлечёт в такие моменты колоссальную нагрузку

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

@FonSwong,

обычно так пишут, когда в пути имеется "бэкслэш", т.е. символ "\". Этот символ специальный, в комбинации со следующим за ним он имеет определённый эффект. Например "\n" - это перевод строки, "\t" - символ табуляции и т.д. Набери в гугле "escape последовательности" и узнаешь больше. Так вот эти специальные комбинации в Lua работают только если строка заключена в кавычки. Чтобы не использовать эти специальные комбинации, а трактовать каждый символ строго как он есть в Lua можно заключить строку в двойные квадратные скобки. Для путей, где обратные слэши встречаются постоянно, это особенно удобно.

 

По второму вопросу. Нет, как ты хочешь не сделать. Кстати, и обратное тоже не сделать, т.е. замедлить все процессы, физику, анимацию, партиклы и т.п., тоже не получится. Т.е. сломо, буллеттайм и т.п. на текущем движке не выйдет.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

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

Уточню: офлайн-события вполне можно ускорить. То есть, неписи, которые куда-то бегут в офлайне - добегут, стэйты гулагов изменятся, и т.д.

В онлайне - отработают те события, которые привязаны к game_time.

 

Передвижения неписей в онлайне и бои между ними - нет.

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

Приветствую уважаемых специалистов. 

Сам ни разу не скриптёр\программер. Поэтому прошу помощи. Есть мод на ТЧ - "Ремкомплект" - там три скрипта:

https://cloud.mail.ru/public/EzpC/A5f3UbsKV

 

Хотел уменьшить количество деталей после "разборки" стволов, но не смог. Я так понял, что кол-во деталей зависит от кондиции ствола. Но не нашёл ту дельту которую нужно уменьшать. Буду очень признателен за помощь.

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

@FonSwong, так же можно использовать и путь в кавычках, только экранируя спец. символ "бэкслэш" еще одним "бэкслэшем":

строки из sound_theme.script

ph_snd_themes["prapor_music"] = {"characters_voice\\scenario\\prapor\\prapor_music_1",
				 "characters_voice\\scenario\\prapor\\prapor_music_2",
...}

ph_snd_themes["dolg_speech"] = {[[characters_voice\scenario\bar\barman_megafon\megaphone_barman_1]],
				[[characters_voice\scenario\megafon\megafon_music_1]],
...

Т.е. "characters_voice\\scenario..." идентичен [[characters_voice\scenario...]]

  • Полезно 1
 

10.png

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

@Kondr48, можно добавить в класс окна метод обновления.

function class_name:Update()
	CUIScriptWnd.Update(self)

	local h = level.get_time_hours()
	local m = level.get_time_minutes()
	self.st_time:SetText(string.format("%02d:%02d", h, m))
end
  • Спасибо 1
  • Полезно 1
Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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