Случайная подборка модов
Припять. Точка отсчета
3.3
Зачистка
4.0
Old Good Stalker Mod v2.4 Gold
4.2
Mysterious Zone
4.0
Dead City Breakthrough
3.7
Возвращение Шрама
3.9
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Архив - только для чтения
⚙ Модострой: Вопросница
Российская Федерация  Wolfstalker
Среда, 24.02.2016, 00:25 | Сообщение # 1
Статус:
Легенда:
Сообщений: 2258
Награды: 15
Регистрация: 05.04.2010

В данной теме вы можете задавать любые вопросы касательно S.T.A.L.K.E.R. моддинга


• Не флудить
• Предварительно просматривайте раздел, ведь ответ на ваш вопрос может быть там
• В своем вопросе указывайте платформу моддинга — Тень Чернобыля, Чистое небо или Зов Припяти




F.A.Q

  Злобная реклама
Среда, 24.02.2016, 00:25
Статус:
Сообщений: 666
Регистрация: 05.04.2010
Украина  BozKurt
Четверг, 30.06.2016, 00:01 | Сообщение # 2236
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

ins33, без проблем.
Это не что иное, как паттер шаблона регулярного выражения.
(%a[%w_]+),(%d+%.?%d*)
Скобки определяют группу захвата. Т.е. весь шаблон находящийся внутри скобок будет помещён в так называемую группу. Функция gmatch как раз и возвращает все найденные группы либо всё совпадение, если групп в паттерне нет.
То, что в квадратных скобках - определяет набор возможных символов, которые должны быть найдены. Из набора будет выбран только один символ.
%a - любой символ латинского алфавита. По сути это набор символов: [a-zA-Z];
%d - любая арабская цифра. Тоже самое, это замена набора символов: [0-9];
%w - это комбинация %a и %d плюс символ нижнего подчёркивания: [a-zA-Z0-9_];
+ - это модификатор, который захватит предыдущий символ (или один из символов в наборе) один или больше раз, но как можно большее количество. Это так называемый "жадный" модификатор.
* - модификатор, который захватит предыдущий символ (или один из символов в наборе) ноль или большее раз, но как можно меньшее количество. Этот модификатор называют "не жадным".
? - модификатор, который захватит предыдущий символ (или один из символов в наборе) ноль или один раз. Это "ленивый" модификатор.
%. - это экранирование точки в регулярном выражении, нужно для того, чтобы найти эту самую точку. Дело в том, что если просто указать точку (не экранируя её, т.е. не ставя знак процентов в начале), то это будет означать один любой символ.
Запятая между группами в данном случае означает саму себя.

На словах смотрится диковато, если не сталкивался с шаблонами, но как-то же нужно начинать понимать, правильно? smile
Сообщение отредактировал BozKurt - Четверг, 30.06.2016, 00:04
  Злобная реклама
Четверг, 30.06.2016, 00:01
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Беларусь  Krachkovskii
Четверг, 30.06.2016, 00:09 | Сообщение # 2237
Статус:
Отмычка:
Сообщений: 149
Награды: 4
Регистрация: 21.11.2015

Как сделать чтобы при уменьшении eat_portions_num уменьшался и вес?
  Злобная реклама
Четверг, 30.06.2016, 00:09
Статус:
Сообщений: 666
Регистрация: 21.11.2015
Украина  BozKurt
Четверг, 30.06.2016, 00:12 | Сообщение # 2238
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

Krachkovskii, без движковых правок, кажется никак. Разве что сделать несколько секций того, что съедаешь, с разным весом и при использовании переспавнивать в рюкзак с меньшим.
Сообщение отредактировал BozKurt - Четверг, 30.06.2016, 00:15
  Злобная реклама
Четверг, 30.06.2016, 00:12
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Украина  TIGER_VLAD
Четверг, 30.06.2016, 00:17 | Сообщение # 2239
Оставшийся умирать
Статус:
Отмычка:
Сообщений: 158
Награды: 14
Регистрация: 17.07.2014

BozKurt, Какие люди))) Ну привет, давно я вас здесь не видел. Повторю свой вопрос :
Такую штуку заметил, напрягать стало: когда ГГ в присяде обыскивает труп, тайник или начинает диалог с НПС, он сам поднимается. Вот на видео видно:

Можно как-то это отключить? А то есть ситуации, где эта фишка очень мешает(например спрятался за что-то, хп на 0, в приседе идешь к трупу, обыскиваешь - а ГГ в этот момент сам встает и открывается для противника получая маслину).

Может знаете ?
Сообщение отредактировал TIGER_VLAD - Четверг, 30.06.2016, 00:17
  Злобная реклама
Четверг, 30.06.2016, 00:17
Статус:
Сообщений: 666
Регистрация: 17.07.2014
Российская Федерация  SanyaSuicide
Четверг, 30.06.2016, 10:33 | Сообщение # 2240
Статус:
Отмычка:
Сообщений: 115
Награды: 0
Регистрация: 10.08.2015

Подскажите как мне сделать чтобы сталкеры в офлайне отображались на карте в пда? А то у меня получилось отобразить только тех которые в онлайне

Добавлено (30.06.2016, 10:33)
---------------------------------------------

Цитата Krachkovskii ()
Как сделать чтобы при уменьшении eat_portions_num уменьшался и вес?

В мизери было сделано похожее , там когда использовался предмет , спавнился новый
  Злобная реклама
Четверг, 30.06.2016, 10:33
Статус:
Сообщений: 666
Регистрация: 10.08.2015
Российская Федерация  13Шустрый13
Четверг, 30.06.2016, 12:59 | Сообщение # 2241
Статус:
Отмычка:
Сообщений: 121
Награды: 2
Регистрация: 04.05.2016

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



И спавн уникального оружия:

  Злобная реклама
Четверг, 30.06.2016, 12:59
Статус:
Сообщений: 666
Регистрация: 04.05.2016
Украина  _S_k_i_F_
Четверг, 30.06.2016, 14:11 | Сообщение # 2242
Золотой Обоз
Статус:
Опытный:
Сообщений: 1311
Награды: 9
Регистрация: 09.08.2015

SanyaSuicide,
Код
Файл sim_squad_scripted.script функция sim_squad_scripted:show():
Код
if not(is_squad_monster[self.player_id]) then
  local relation = game_relations.get_squad_relation_to_actor_by_id(self.id)
  if(relation=="friends") then
   spot = "alife_presentation_squad_friend"
  elseif(relation=="neutral") then
   spot = "alife_presentation_squad_neutral"
   elseif(relation=="enemy") then                    
   spot = "alife_presentation_squad_enemy"  
  end
    else spot = "alife_presentation_squad_monster"
    end

Файл game_relations.script функция get_squad_relation_to_actor_by_id(squad_id) в самом конце вместо
Код
return "enemy"

писать
Код
return get_squad_goodwill_to_actor_by_id(squad_id)

Добавлено (30.06.2016, 14:11)
---------------------------------------------
Такая проблема: написал скрипт - если у ГГ есть какой-то из предметов - действие, и поставил на апдейт в биндер. Но даже если у ГГ есть какой-то из айтемов - ничего не происходит. Вот сам скрипт

Код

function has_any_arts()  
local timeact = time_global()
local particle = particles_object("anomaly2\\gravity_idle")
local pos = db.actor.position()
local x = pos.x
local y = pos.y + 3.0
local z = pos.z
if db.actor:object("af_medusa_act") ~= nil then
news_manager.send_tip(db.actor, "Внимание, пробуждение артефакта прошло успешно!", nil, nil, 5000)
particle:play_at_pos(vector():set(x,y,z))
if timeact >= timeact + 20 then
xr_effects.remove_item(nil, nil, {"af_medusa_act"})
give_object_to_actor("af_medusa_off")
end
elseif db.actor:object("af_cristall_flower_act") ~= nil then
news_manager.send_tip(db.actor, "Внимание, пробуждение артефакта прошло успешно!", nil, nil, 5000)
particle:play_at_pos(vector():set(x,y,z))
if timeact >= timeact + 20 then
xr_effects.remove_item(nil, nil, {"af_cristall_flower_act"})
give_object_to_actor("af_cristall_flower_off")
end
elseif db.actor:object("af_night_star_act") ~= nil then
news_manager.send_tip(db.actor, "Внимание, пробуждение артефакта прошло успешно!", nil, nil, 5000)
particle:play_at_pos(vector():set(x,y,z))
if timeact >= timeact + 20 then
xr_effects.remove_item(nil, nil, {"af_night_star_act"})
give_object_to_actor("af_night_star_off")
end
    end
end

Где накосячил? Зараннее спасибо!
  Злобная реклама
Четверг, 30.06.2016, 14:11
Статус:
Сообщений: 666
Регистрация: 09.08.2015
Российская Федерация  ins33
Четверг, 30.06.2016, 15:20 | Сообщение # 2243
Dream Reader Mod
Статус:
Опытный:
Сообщений: 2269
Награды: 1
Регистрация: 17.01.2012

  Злобная реклама
Четверг, 30.06.2016, 15:20
Статус:
Сообщений: 666
Регистрация: 17.01.2012
Российская Федерация  makdm
Четверг, 30.06.2016, 16:06 | Сообщение # 2244
Время Альянса
Статус:
Опытный:
Сообщений: 1787
Награды: 19
Регистрация: 22.11.2012

Цитата _S_k_i_F_ ()
Где накосячил? Зараннее спасибо!


local timeact = time_global()
.
.
.
if timeact >= timeact + 20 then

Всегда возвращает FALSE
  Злобная реклама
Четверг, 30.06.2016, 16:06
Статус:
Сообщений: 666
Регистрация: 22.11.2012
Российская Федерация  ins33
Четверг, 30.06.2016, 22:00 | Сообщение # 2245
Dream Reader Mod
Статус:
Опытный:
Сообщений: 2269
Награды: 1
Регистрация: 17.01.2012

Спавню тайник скриптом, пакетами меняю визуал, в итоге спавнится рюкзак (именно модель рюкзака) с текстурой модели которую передаёт пакет. Короче фигово выходит.
Код
local obj = alife():create(spawn_section, p,lv,gv)
    if obj then
  local pk = get_netpk(obj)
  if pk:isOk() then
   local data = pk:get()
     data.visual_name = visual
     pk:set(data)
     if obj.online == true then
      db.do_switchings(obj.id)
     end
  end
end

Добавлено (30.06.2016, 22:00)
---------------------------------------------
BozKurt,

Цитата BozKurt ()
tbl = {}
local str = system_ini():r_string("zone_witches_galantine", "artefacts");
for art, rpob in string.gmatch(str, "(%a[%w_]+),(%d+%.?%d*)") do
tbl[art] = rpob;
end
Что то могу понять, как будет выглядеть это "artefacts = af_electra_sparkler,0.7, af_electra_flash, 0.25, af_electra_moonlight, 0.05" на выходе.
  Злобная реклама
Четверг, 30.06.2016, 22:00
Статус:
Сообщений: 666
Регистрация: 17.01.2012
Украина  _S_k_i_F_
Четверг, 30.06.2016, 22:17 | Сообщение # 2246
Золотой Обоз
Статус:
Опытный:
Сообщений: 1311
Награды: 9
Регистрация: 09.08.2015

Такая ерунда: написал в xr_motivator скрипт, который, если ГГ убил НПС с помощью РПГ, Бульдога или М79, запускает партиклы и удаляет тело
Код
local act_slot = db.actor:active_slot()
local act_item = db.actor:active_item()
local weapon = act_item:section()
local particle = particles_object("anomaly2\\body_tear_01")
local npos = npc:position()
local x = npos.x
local y = npos.y + 2
local z = npos.z
if act_slot and act_item and db.actor:alive() then
if weapon == "wpn_rpg7" or weapon == "wpn_rg-6" or weapon == "wpn_m79" then
alife():release(alife():object(npc:id()), true)
particle:play_at_pos(vector():set(x,y,z))
end    
end

Но иногда при смерти ГГ происходит вылет, ругаясь на локальную act_item Уже кучу проверок поставил, но все равно не помогает. Может еще где ошибся? Зараннее спасибо!

Добавлено (30.06.2016, 22:17)
---------------------------------------------
Похоже проблему решил - поставил в самом начале проверку на то что ГГ жив.

  Злобная реклама
Четверг, 30.06.2016, 22:17
Статус:
Сообщений: 666
Регистрация: 09.08.2015
Украина  BozKurt
Четверг, 30.06.2016, 22:26 | Сообщение # 2247
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

ins33, во-первых, в str попадёт только "af_electra_sparkler,0.7, af_electra_flash, 0.25, af_electra_moonlight, 0.05". А результатом будет таблица следующего вида:
Код
tbl = {
    af_electra_sparkler = 0.7,
    af_electra_flash = 0.25,
    af_electra_moonlight = 0.05
}


Добавлено (30.06.2016, 22:26)
---------------------------------------------
_S_k_i_F_, так попробуй:
Код
local actor = db.actor
local weapons = {
    "wpn_rpg7" = true,
    "wpn_rg-6" = true,
    "wpn_m79" = true
}
local weapon = actor:active_item() and actor:active_item():section()
if actor:alive() and actor:active_slot() and weapon and weapons[weapon] then
    local particle = particles_object("anomaly2\\body_tear_01")
    local npos = npc:position()
    local x = npos.x
    local y = npos.y + 2
    local z = npos.z
    particle:play_at_pos(vector():set(x,y,z))
    alife():release(alife():object(npc:id()), true)
end
Сообщение отредактировал BozKurt - Четверг, 30.06.2016, 22:27
  Злобная реклама
Четверг, 30.06.2016, 22:26
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Беларусь  Krachkovskii
Четверг, 30.06.2016, 22:46 | Сообщение # 2248
Статус:
Отмычка:
Сообщений: 149
Награды: 4
Регистрация: 21.11.2015

Как сделать чтобы при использовании предмета актор не мог использовать другие предметы и оружие?
Сообщение отредактировал Krachkovskii - Четверг, 30.06.2016, 22:47
  Злобная реклама
Четверг, 30.06.2016, 22:46
Статус:
Сообщений: 666
Регистрация: 21.11.2015
Украина  _S_k_i_F_
Четверг, 30.06.2016, 22:50 | Сообщение # 2249
Золотой Обоз
Статус:
Опытный:
Сообщений: 1311
Награды: 9
Регистрация: 09.08.2015

BozKurt, спасибо, на заметку возьму. Я уже решил проблему
Код
if db.actor:alive() then
local act_slot = db.actor:active_slot()
local act_item = db.actor:active_item()
local weapon = act_item:section()
local particle = particles_object("anomaly2\\body_tear_01")
local npos = npc:position()
local x = npos.x
local y = npos.y + 2
local z = npos.z
if act_slot and act_item then
if weapon == "wpn_rpg7" or weapon == "wpn_rg-6" or weapon == "wpn_m79" or act_slot == 4 then
alife():release(alife():object(npc:id()), true)
particle:play_at_pos(vector():set(x,y,z))
end    
end
end
  Злобная реклама
Четверг, 30.06.2016, 22:50
Статус:
Сообщений: 666
Регистрация: 09.08.2015
Российская Федерация  ins33
Четверг, 30.06.2016, 22:52 | Сообщение # 2250
Dream Reader Mod
Статус:
Опытный:
Сообщений: 2269
Награды: 1
Регистрация: 17.01.2012

  Злобная реклама
Четверг, 30.06.2016, 22:52
Статус:
Сообщений: 666
Регистрация: 17.01.2012
Поиск: