Случайная подборка модов
Ф.О.Т.О.Г.Р.А.Ф
4.2
Сюжетное продолжение Чистого неба
4.1
Darkest Time
3.5
S.T.A.L.K.E.R. Complete 2009
4.0
Оставшийся умирать
4.3
Время перемен v2.0
4.1
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Архив - только для чтения
⚙ Модострой: Вопросница
Российская Федерация  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
Поиск: