Случайная подборка модов
Call of Misery
4.1
FeaR Zone: История Холода
2.6
Вектор Отчуждения
4.2
Новый Арсенал 4.5
3.7
Равновесие
3.2
Под прикрытием смерти. Клондайк 2.0
4.0
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Архив - только для чтения
⚙ Модострой: Вопросница
Российская Федерация  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
Поиск: