Случайная подборка модов
Sky anomaly
4.0
Холодная кровь
3.4
Зимний Снайпер
3.8
Контракт на хорошую жизнь
4.1
Old Episodes: Эпизод 1
2.9
NZK MOD 1.3
3.2
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Архив - только для чтения
⚙ Модострой: Вопросница
Российская Федерация  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
Коста Рика  Jargon
Воскресенье, 17.12.2017, 20:25 | Сообщение # 9511
X-Ray Multiplayer Extension
Статус:
Бывалый:
Сообщений: 1078
Награды: 3
Регистрация: 24.06.2012

Цитата alanbrose ()
Просто засомневался, почему там просто названия стволов, а не их модели. Вот решил спросить, может там нюансы какие-то.

можешь прописывать пути к визуалам в соответствующей секции пока не надоест
а можешь прописывать секции предметов и оружия и все что в них указано будет автоматически загружено во время загрузки локации.
  Злобная реклама
Воскресенье, 17.12.2017, 20:25
Статус:
Сообщений: 666
Регистрация: 24.06.2012
Российская Федерация  alanbrose
Воскресенье, 17.12.2017, 20:33 | Сообщение # 9512
Статус:
Отмычка:
Сообщений: 113
Награды: 4
Регистрация: 28.08.2015

Jargon, r viewer создаёт автоматом список файлов с путями, уже сделано. За пояснение с секциями спасибо.
  Злобная реклама
Воскресенье, 17.12.2017, 20:33
Статус:
Сообщений: 666
Регистрация: 28.08.2015
Российская Федерация  yobakun
Понедельник, 18.12.2017, 01:38 | Сообщение # 9513
Статус:
Новичок:
Сообщений: 270
Награды: 5
Регистрация: 30.07.2016

Код
  local zone = db.zone_by_name["yan_smart_terrain_6_4_sr_light"]
  printf("ZONE: %s", zone)

Объясните, пожалуйста, почему подобная конструкция внутри цикла while выдает "nil", а без него "userdata"? Как получить "yan_smart_terrain_6_4_sr_light"?
Сообщение отредактировал yobakun - Понедельник, 18.12.2017, 01:39
  Злобная реклама
Понедельник, 18.12.2017, 01:38
Статус:
Сообщений: 666
Регистрация: 30.07.2016
Российская Федерация  Graff46
Понедельник, 18.12.2017, 05:37 | Сообщение # 9514
Новое Время
Статус:
Бывалый:
Сообщений: 867
Награды: 7
Регистрация: 02.05.2013

Можно ли запустить анимацию худа предмета не ставя этот предмет в слот?

Добавлено (18.12.2017, 05:37)
---------------------------------------------
Цитата yobakun ()
Объясните, пожалуйста,

Нил - это то, что возвращает ф-ция, а юзердэйта - это тип данных. В Луа такое бывает, если какой то объект приводить к строке, то выведится его тип.
Сообщение отредактировал Graff46 - Понедельник, 18.12.2017, 05:38
  Злобная реклама
Понедельник, 18.12.2017, 05:37
Статус:
Сообщений: 666
Регистрация: 02.05.2013
Российская Федерация  denis2000
Понедельник, 18.12.2017, 09:22 | Сообщение # 9515
Время Альянса
Статус:
Ветеран:
Сообщений: 4070
Награды: 16
Регистрация: 19.07.2013

Цитата Graff46 ()
Можно ли запустить анимацию худа предмета не ставя этот предмет в слот?

Нет.
  Злобная реклама
Понедельник, 18.12.2017, 09:22
Статус:
Сообщений: 666
Регистрация: 19.07.2013
Российская Федерация  yobakun
Понедельник, 18.12.2017, 13:05 | Сообщение # 9516
Статус:
Новичок:
Сообщений: 270
Награды: 5
Регистрация: 30.07.2016

Graff46, ну вот есть функция:
Код
function generate_position( smart_name, max_offset_x, max_offset_y, max_offset_z )

    local zone_off = {"pri_sr_autovokzal", "sr_cinema_out_anomaly"} -- таблица со смартами

-- здесь различные проверки на валидность позиции
  pos = vector( ):set( pos_x, pos_y, pos_z )
  local lvid = level.vertex_id( pos )
  
  for k,v in pairs( zone_off ) do
   local zone = db.zone_by_name[ v ]
   if zone then -- всегда nil
    if not zone:inside( position ) then
     if ( lvid < 4294967295 ) then
      pos = level.vertex_position( lvid )
      valid_lvid = true
     end
    end
   end
  end
  
  -- либо выходим из цикла после определенного кол-ва попыток
  num_tries = (num_tries - 1)
  if ( (num_tries <= 0) and (valid_lvid ~= true) ) then
   printf( "DA: Unable to generate valid lvid pos, aborting" )
   return
  end
    end
    
    -- При успешном выполнении возвращаем позицию:
    return pos
end

Почему в данном случае zone = nil? Опечаток нет, скрипт полностью работает, кроме проверки на зону и позиции внутри нее.
  Злобная реклама
Понедельник, 18.12.2017, 13:05
Статус:
Сообщений: 666
Регистрация: 30.07.2016
Российская Федерация  atanda
Понедельник, 18.12.2017, 15:48 | Сообщение # 9517
Статус:
Бывалый:
Сообщений: 672
Награды: 7
Регистрация: 12.07.2017

yobakun, уверен, что нет ошибок? Чрезмерное количество end. Из-за чего твоё понимание сиего скрипта сводится на нет.

Какой, извините уж, к чёрту, выход из цикла?

Прямой выход из функции при удовлетворении условий.
Да и откуда мы берём переменную num_tries? Ладно, предположим, что она глобальная.

И если уж занимаетесь копированием скриптов, то хотя-бы вникайте в суть. На этом всё.

А по-поводу вопроса, вы уверены, что написанные вами названия зон существуют?
  Злобная реклама
Понедельник, 18.12.2017, 15:48
Статус:
Сообщений: 666
Регистрация: 12.07.2017
Российская Федерация  Overfirst
Понедельник, 18.12.2017, 16:01 | Сообщение # 9518
Статус:
Бывалый:
Сообщений: 1081
Награды: 19
Регистрация: 11.06.2015

Цитата yobakun ()
-- таблица со смартами

Со смартами или с рестрикторами?
  Злобная реклама
Понедельник, 18.12.2017, 16:01
Статус:
Сообщений: 666
Регистрация: 11.06.2015
Российская Федерация  atanda
Понедельник, 18.12.2017, 16:10 | Сообщение # 9519
Статус:
Бывалый:
Сообщений: 672
Награды: 7
Регистрация: 12.07.2017

Цитата Graff46 ()
Нил - это то, что возвращает ф-ция, а юзердэйта - это тип данных.

Не понял.
Функция может возвращать любые данные. По умолчанию, да это nil.
Userdata это любые, как я понял, не зарезервированные в луа данные, например классы(могу ошибаться).

Цитата Graff46 ()
В Луа такое бывает, если какой то объект приводить к строке, то выведится его тип.

Не бывает, а должен вывестись. Ну это в чистом луа.
Вообще при конкатенации движок будет пытаться, если это возможно, привести данные к строке.
Также, имхо, приведение типов к строке очень грамотно выполнено в Java, там developer сам решает, как преобразовать объект к строке. Путём добавления в класс метода toString, но это уже другая история. biggrin
При конкатенации нил к строке будет ошибка, так как мы не может прибавить ничего к чему-то. Это как что-то делить на ноль.

Добавлено (18.12.2017, 16:10)
---------------------------------------------
BoBaH_671, скорее всего рестрикторами.
Сообщение отредактировал buffy - Понедельник, 18.12.2017, 16:11
  Злобная реклама
Понедельник, 18.12.2017, 16:10
Статус:
Сообщений: 666
Регистрация: 12.07.2017
Российская Федерация  yobakun
Понедельник, 18.12.2017, 17:37 | Сообщение # 9520
Статус:
Новичок:
Сообщений: 270
Награды: 5
Регистрация: 30.07.2016

buffy, это не полная функция, неужели не очевидно? Вот полная:
Код
function generate_position( smart_name, max_offset_x, max_offset_y, max_offset_z )
    -- Get the smart terrain:
    local smart = SIMBOARD.smarts_by_names[smart_name]
    if not ( smart ) then
  printf( "DA: Unable to generate positional data, specified smart location does not exist!" )
  return
    end
    
    -- Try to generate valid positional data on the ground:
    local num_tries = 64  -- Prevents infinite loop
    local pos = vector( ):set( 0, 0, 0 )
    local valid_lvid = false
    local zone_off = {"pri_sr_autovokzal","pri_sr_dom_kult","pri_sr_stadion","pri_sr_hotel","pri_sr_kooptorg",
  "pri_sr_cinema","pri_sr_port","pri_sr_college","pri_sr_dom_byta","pri_sr_old_kbo",
  "pri_sr_hospital","pri_sr_berezka","pri_sr_laundry","pri_sr_school","pri_sr_book",
  "pri_sr_market","pri_sr_detsad","pri_sr_gastronom","pri_sr_technikum","pri_sr_kpss","pri_sr_killer",
    "sr_sklad_garag","sr_dom_kult_left","sr_cinema_out_anomaly"}
    while ( (valid_lvid ~= true) and (num_tries > 0) ) do
  -- Randomly offset anomaly x-position from center of smart terrain:
  local offset_x = (max_offset_x * math.random( ))
  if (math.random( ) < 0.5) then
   offset_x = -(offset_x)
  end
  local pos_x = (smart.position.x + offset_x)
  
  -- Randomly offset anomaly y-position from center of smart terrain:
  local offset_y = (max_offset_y * math.random( ))
  if (math.random( ) < 0.5) then
   offset_y = -(offset_y)
  end
  local pos_y = (smart.position.y + offset_y)
  
  -- Randomly offset anomaly z-position from center of smart terrain:
  local offset_z = (max_offset_z * math.random( ))
  if (math.random( ) < 0.5) then
   offset_z = -(offset_z)
  end
  local pos_z = (smart.position.z + offset_z)
  
  -- Set anomaly position at location vertex and check if valid:
  pos = vector( ):set( pos_x, pos_y, pos_z )
  local lvid = level.vertex_id( pos )
  
  for k,v in pairs( zone_off ) do
   local zone = db.zone_by_name[ v ]
   if zone then
    if not zone:inside( pos ) then
     if ( lvid < 4294967295 ) then
      pos = level.vertex_position( lvid )
      valid_lvid = true
     end
    end
    else
    log ("zone is nil!!!")    
   end
   
  end
  
  -- Decrement the number of tries left:
  num_tries = (num_tries - 1)
  if ( (num_tries <= 0) and (valid_lvid ~= true) ) then
   printf( "DA: Unable to generate valid lvid pos, aborting" )
   return
  end
    end
    
    -- Return the position vector:
    return pos
end

Верно, рестрикторы. Суть в том, что zone возвращает nil, соответственно скрипт не работает.
  Злобная реклама
Понедельник, 18.12.2017, 17:37
Статус:
Сообщений: 666
Регистрация: 30.07.2016
Украина  BozKurt
Понедельник, 18.12.2017, 19:46 | Сообщение # 9521
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

yobakun, ну коль zone внутри функции равно nil, значить такой зоны нет в онлайне - очевидно же. Таблицы в файле db хранят в себе онлайновые объекты.
buffy, не нужно плести паутину и сравнивать компилируемые типизированные языки, с интерпретируемыми и не типизированными. Отвратительная аналогия с Java. P.S. По секрету - классов в Lua нет.
  Злобная реклама
Понедельник, 18.12.2017, 19:46
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Российская Федерация  NEO
Понедельник, 18.12.2017, 21:23 | Сообщение # 9522
Статус:
Ветеран:
Сообщений: 4497
Награды: 11
Регистрация: 24.05.2012

Всем доброго времени. Вопрос по ЧН, нужно сделать 3х персов бессмертными, 2х торгашей и меха на барахолке. Известный способ с invulnerable не помогает. Какие ещё есть варианты ?
  Злобная реклама
Понедельник, 18.12.2017, 21:23
Статус:
Сообщений: 666
Регистрация: 24.05.2012
Российская Федерация  yobakun
Понедельник, 18.12.2017, 21:51 | Сообщение # 9523
Статус:
Новичок:
Сообщений: 270
Награды: 5
Регистрация: 30.07.2016

Цитата BozKurt ()
ну коль zone внутри функции равно nil, значить такой зоны нет в онлайне

Вообще всех? Я дописывал "yan_smart_terrain_6_4_att" и загружал сохранение в этой зоне, почему оно не работает?
  Злобная реклама
Понедельник, 18.12.2017, 21:51
Статус:
Сообщений: 666
Регистрация: 30.07.2016
Украина  BozKurt
Понедельник, 18.12.2017, 22:15 | Сообщение # 9524
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

yobakun, у тебя вообще все вписанные зоны не найдены (то беж nil)? Возможно yan_smart_terrain_6_4_att не рестриктор вовсе?

Добавлено (18.12.2017, 22:09)
---------------------------------------------
Хотя в zone_by_name всё пишется включая смарты и аномалии.

Добавлено (18.12.2017, 22:11)
---------------------------------------------
Ну исключая невозможное - ты не в той зоне находишься, как допущение.

Добавлено (18.12.2017, 22:15)
---------------------------------------------

Цитата denis2000 ()
Цитата Graff46 ()
Можно ли запустить анимацию худа предмета не ставя этот предмет в слот?

Нет.

Ну я бы не был так категоричен. Как то же анимация приёма всякого медикаментозного барахла сделана?
  Злобная реклама
Понедельник, 18.12.2017, 22:15
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Российская Федерация  atanda
Понедельник, 18.12.2017, 22:19 | Сообщение # 9525
Статус:
Бывалый:
Сообщений: 672
Награды: 7
Регистрация: 12.07.2017

BozKurt, да, да, luabind... Не учёл... Ну и тебе по 'секрету', любые типы данных в Java это объекты, будь то целочисленные, булевые, строки или числа с плавающей точкой. wink

Ну да ладно, окончим на этом дискуссию. Т.к. это здесь не к месту. Да и я, порой, несу бред.
  Злобная реклама
Понедельник, 18.12.2017, 22:19
Статус:
Сообщений: 666
Регистрация: 12.07.2017
Поиск: