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

[SoC] Ковыряемся в файлах


Halford

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

Всем привет.

Очень нужны ответы на два вопроса:

 

1. Как из скрипта отобразить только часть текстуры? Сейчас приходится менять параметры в xml-файле.

и 2. Как вращать текстуры?

 

Всё это должно работать только на худе.

Спасибо.

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

всё легко

Поделиться этим сообщением


Ссылка на сообщение

С вопросом вращения текстур разобрались.

Кому интересно, это метод SetHeading... короче вот так:

(если окно через кастомстатик)

get_hud():GetCustomStatic("имя кастом статика"):wnd():SetHeading(число)

Вращает в радианах. Что-бы текстура вращалась в xml-файле надо указать параметр heading = "1".

 

 

Вопрос про "обрезание" текстур из скрипта - остаётся актуальным. Прошу, кто знает отозваться.

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

всё легко

Поделиться этим сообщением


Ссылка на сообщение

lekzd

 

SetHeading() - проимер из рабочего скрипта.

 

1. Должен быть конфиг статика с параметром heading="1".

вроде такого:

<hud_compass_arrow x="512" y="484" width="137" height="137" stretch="1" heading="1" complex_mode="1" alignment="c">

<texture>текстура</texture>

</hud_compass_arrow>

 

2. Создаёшь этот статик.

примерно так:

compass_arrow = hud:AddCustomStatic("hud_compass_arrow"):wnd()

 

3. И вращаешь:

compass_arrow:SetHeading(значение в радианах).

всё легко

Поделиться этим сообщением


Ссылка на сообщение

Заспавнил "инвентори бокс" - alife():create(item,vector():set(X,Y,Z),lvid,gvid) - всё как положено.

Как его повернуть вокруг Y-а?

всё легко

Поделиться этим сообщением


Ссылка на сообщение

... :)

Я,Ч,М,Б,Ю,Ы,Ж,Э,Й,Ц,К,Е,Н,З,Х,Ъ

- эти клавиши наверняка движком перехвачены... однако.

Освободи их и используй.

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

всё легко

Поделиться этим сообщением


Ссылка на сообщение

Дегтярёв

У меня вопрос по папкам ... в fsgame покывырятся надо, но я не нашёл, помогите пожалуста, а то мне надоело сохранки переименовывать

Вот мой fsgame.ltx, может тебе такое больше понравиться...

 

$game_data$     = true  | false | $fs_root$       | gamedata\     
$mod_dir$       = false | false | $fs_root$       | mods\         
$app_data_root$ = true  | false | $game_data$     | STALKER-SHOC\ 
$game_ai$       = true  | false | $game_data$     | ai\           
$game_spawn$    = true  | false | $game_data$     | spawns\       
$game_anims$    = true  | true  | $game_data$     | anims\        
$game_levels$   = true  | false | $game_data$     | levels\       
$game_meshes$   = true  | true  | $game_data$     | meshes\       
$game_dm$       = true  | true  | $game_data$     | meshes\       
$game_shaders$  = true  | true  | $game_data$     | shaders\      
$game_sounds$   = true  | true  | $game_data$     | sounds\       
$game_textures$ = true  | true  | $game_data$     | textures\     
$game_scripts$  = true  | false | $game_data$     | scripts\      
$game_config$   = true  | false | $game_data$     | config\       
$game_saves$    = true  | false | $app_data_root$ | savedgames\   
$logs$          = true  | false | $app_data_root$ | logs\         
$screenshots$   = true  | false | $app_data_root$ | screenshots\  
$downloads$     = false | false | $app_data_root$ | downloads\    
$level$         = false | false | $game_levels$

всё легко

Поделиться этим сообщением


Ссылка на сообщение

У меня в одном месте есть глюк с текстурой.

Вид снаружи:

thumb.png

Вид изнутри:

thumb.png

Похоже, что что на поверхности текстуры есть "зеркальный" эффект...

Кстати, может кто знает причину такого?

всё легко

Поделиться этим сообщением


Ссылка на сообщение

Вопрос, ответ на который может-быть уже давно все знают. Но вот потребовалось.

 

Какие предметы можно таскать по Shift+F, а какие не получится?

Даже если их прописать в файле system.ltx в секции ph_capture_visuals.

Например, wpn_ak74 - прописал, не берётся.

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

всё легко

Поделиться этим сообщением


Ссылка на сообщение

У меня не получилось с оружием, антирадами, консервы. Кажется, что в роде они динамические - катятся когда бросишь... Или они не "динамические"? Что определяет "динамизм" объекта?

С ящиками, например, всё работает (всплывает надпись и их можно захватить), а с некоторыми другими объектами - нет.

всё легко

Поделиться этим сообщением


Ссылка на сообщение

Хочу запомнить информацию (строку) для "инвентарного ящика".

Как сделать так, что-бы в pstor, сохранялись не только данные НПС, но и данные моего "инвентарного ящика". Или может это надо делать не через pstor?

 

Делаю так:

1. Создаю: sobj = alife():create("inventory_box",vector():set(24.540,16.526,678.405),3,9)
2. Получаю: cobj = level.object_by_id(sobj.id)
3. Пишу: xr_logic.pstor_store(cobj, "data_name", "data_value")
4. Читаю: xr_logic.pstor_retrieve(cobj, "data_name", "data_default_value")
--Данные есть.
5. save-load
6. Получаю: cobj = level.object_by_id(sobj.id)
7. Читаю: xr_logic.pstor_retrieve(cobj, "data_name", "data_default_value")
--Ничего нет.

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

всё легко

Поделиться этим сообщением


Ссылка на сообщение

Добавил через секцию логику своему ящику - pstor сохраняется. Но только при "ручном" сейве. При переходе между локациями (туда и сразу обратно) ящик не "биндится".

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

всё легко

Поделиться этим сообщением


Ссылка на сообщение

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

 

Более подробная информация:

 

Воспроизведение ситуации:

начать новую игру

создать ящик

записать данные

прочитать данные -> пстор на месте, данные читаются

уйти на другую локацию

сразу вернуться

прочитать данные -> пстора не будет, данных соответственно, то-же

записать данные

прочитать данные -> пстор на месте, данные читаются

сохраниться в "ручную"

загрузиться

прочитать данные -> пстор на месте, данные читаются

 

сейв для удобства (начало игры, кордон, переход на свалку, рядом с ящиком)

(_http://narod.ru/disk/22390122001/test_pstor.7z.html)

 

 

Секция ящика.

     [inv_box]
      GroupControlSection    = spawn_group
      discovery_dependency = 
      $spawn                 = "devices\inventory box"
      class                = O_INVBOX
      cform                = skeleton
      script_binding      = bind_physic_object.init
      custom_data         = scripts\test_pstor_custom_data.ltx
      visual                = physics\box\expl_dinamit.ogf
      description            = "описание"
      radius                = 1

 

Логика ящика.

[logic]
      active = ph_idle@enable
      
      [ph_idle@enable]
      tips = "?"

 

Скрипт (функции вызывались кнопками кейлогера)

     local string_test = "string_elrment1, string_elrment2, string_elrment3, string_elrment4"
      
      function create()
          local sobj = alife():create("inv_box",vector():set(24.540,16.526,678.405),3,9)
          msg("создан ящик: "..tostring(sobj.id))
          db.storage[0].pstor.inv_box_id = sobj.id
          msg("записан id ящика: "..db.storage[0].pstor.inv_box_id)
      end
      
      function write()
          local obj_id = db.storage[0].pstor.inv_box_id
          if obj_id then
              local cobj = level.object_by_id(obj_id)
              if not db.storage[obj_id].pstor then
                  db.storage[obj_id].pstor = {}
              end
              db.storage[obj_id].pstor.data = string_test
              local tmp = tostring(db.storage[obj_id].pstor.data).."->"..tostring(obj_id)
              msg("записано: "..tmp)
          else
              msg("нет ящика")
          end
      end
      
      function read()
          local obj_id = db.storage[0].pstor.inv_box_id
          if obj_id then
              local cobj = level.object_by_id(obj_id)
              if db.storage[obj_id].pstor then
                  local tmp2 = tostring(obj_id).."->"..tostring(db.storage[obj_id].pstor.data)
                  msg("прочитано: "..tmp2)
              else
                  msg("нет pstor-a для "..tostring(obj_id))
              end
          else
              msg("нет ящика")
          end
      end
      
      
      --\\//
      function msg(text)
          if text then
              db.actor:give_game_news(text, "ui\\ui_iconsTotal", Frect():set(0,188,83,47), 0, 5000)
          end
      end

 

Версия игры 1.006

Изменено пользователем Cyclone
Вставил в спойлер.

всё легко

Поделиться этим сообщением


Ссылка на сообщение

Artos.

Все действия совершались в радиусе 10 метров от ящика, в том числе и уход-заход на локацию - всё в этом радиусе. Домик на выходе с Кордона: там точка ухода, точка прихода, и сам ящик, около стола. Но поисследовать влияние переходов онлайн-офлайн надо.

всё легко

Поделиться этим сообщением


Ссылка на сообщение

Если есть имя скрипта и функции в виде строки, например такие:

local script_name = "scriptname"
local function_name = "functionname"

Как проверить существуют такие скрипт и функция или нет?

 

 

Добавлено через 2 мин.:

sergi1901, добавь в систему русский язык.

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

всё легко

Поделиться этим сообщением


Ссылка на сообщение

http://www.amk-team.ru/forum/index.php?sho...st&p=620621

 

Как я понял, есть 3 способа проверить скрипт и функцию в Сталкере:

 

1. pcall() --присоветовали в ЛС

2. проверка глобальной таблицы _G -- предложил Артос

3. loadstring() -- пока ждал ответов - сам поэкспериментировал.

 

Сама задача такая:

 

Есть некие предметы, по имени их секции надо проверять: "нет-ли к предмету скрипта", если есть - выполнять, если нет - ничего не делать. Имена секций непредсказуемы, но имя скрипта имеет правило - соответствует имени секции. Какой способ предпочтительней для реалий Сталкера, под такую задачу? Проверять скрипт и функцию на ошибки - это по возможности.

 

"Способ loadstring-a":

if loadstring("return scriptname")() and loadstring("return scriptname.functionname")() then
    return  loadstring("return scriptname.functionname()")()
end

** return-ы в проверкеобязательны.

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

всё легко

Поделиться этим сообщением


Ссылка на сообщение

Artos, :(:) ...

 

Метод чтения глобальной таблицы, признан менее затратным, лоадстринг - не совсем ясно, но вроде то-же приемлемо. В общем: вопрос - закрыли, уверенность - обрели :)

Спасибо.

Всем.

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

всё легко

Поделиться этим сообщением


Ссылка на сообщение

Wookie

 

Я увидел запятую в строке human...

всё легко

Поделиться этим сообщением


Ссылка на сообщение

Юрa

 

файл: gamedata\config\ui\inventory_new.xml

тег: dragdrop_bag

параметр: group_similar = "0"

 

ЗЫ:

Если там-же добавишь в тег "dragdrop_belt" параметр "group_similar="1"" - на поясе похожие предметы будут собираться в "стопку", но в пределах общего допустимого кол-ва предметов на поясе. У меня так: рюкзак - всё врозь, пояс - одинаковые в стопках.

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

всё легко

Поделиться этим сообщением


Ссылка на сообщение
alex5773, попробуй сейв-лоад - может их отпустит...

всё легко

Поделиться этим сообщением


Ссылка на сообщение

m_army.ltx, m_bandit.ltx - эти файлы не используются.

"m_fracture.ltx" - в файле monsters.ltx

 

 

ЗЫ:

Я то-же в своё время "повеселился" пытаясь понять зачем в некоторых модах правили m_army.ltx не подключая его к игре...

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

всё легко

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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