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

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


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

хмм, похоже отвечает за формы, тестуры и размеры окна мессаджбокс в главном меню, ПЫСовцы делали его похожим на системное

118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий

Gonarh, а вот такой вопрос:

1. Как в Lua писать данные в файл, как читать данные из файла?

2. Что такое NET пакеты и зачем они нужны? (это случай не что-то по типу winAPI)

3. Что за Frect():set(0,658,83,47)?

4. В стандартном news_manager:

actor:give_game_news(news_caption, news_text, texture, timeout*1000, showtime)

 

У вас на месте таймаута стоит Frect():set(0,658,83,47)?

5. Расскажите о методах GetHolder() и start_stop_menu(self,true). (Как я понимаю, start_stop_menu (self,true) открывает или закрывает элемент self, в нашем случае инвентарь.)

Изменено пользователем IQDDD
Ссылка на комментарий

1. Писать нельзя только читать. По крайней мере в классе ini_file в lua_help.script

нет объявлений методов записи

  класс ini_file (Показать)
Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий
  IQDDD писал(а):
1. Как в Lua писать данные в файл, как читать данные из файла?

2. Что такое NET пакеты и зачем они нужны? (это случай не что-то по типу winAPI)

3. Что за Frect():set(0,658,83,47)?

1. Вообще говоря в стандартном Lua есть функции работы с файлами, но их наличие в конкретной реализации зависит от разработчика. Поскольку Lua фактически является частью хост-приложения, то в нём будут только те библиотеки, которые пожелает оставить разработчик. Вот в данном случае все стандартные библиотеки для работы с файлами были убраны. Если вопрос в том, есть ли способ записи в ltx файл, предоставленный в API самой игры, то походу тоже нет.

 

2. нетпакет - это класс движка игры, экспортированный в Lua. Каждый объект этого класса содержит буфер. Любой серверный объект можно записать в этот буфер и считать из него. Кроме того, в этом классе есть функции для последовательного разбора этого буфера. Техника работы с нетпакетом следующая:

а) создаем объект класса нетпакет, вот так:

local packet = net_packet()

б) читаем в него состояние объекта вот так:

sobj:STATE_Write(packet)

в) разбираем нетпакет на части, читая последовательно все его поля в переменные Lua. Здесь требуется знать внутреннее представление нетпакета для каждого класса. acdc в руки...

local game_vertex_id     = packet:r_u16()
local distance           = packet:r_float()
local direct_control     = packet:r_s32()
local level_vertex_id    = packet:r_s32()
...
и т.д.

г)меняем значения полученные переменных, как нам надо, и затем записываем обратно в нетпакет в том же порядке так:

res:w_u16(game_vertex_id)
res:w_float(distance)
res:w_s32(direct_control)
...
и т.д.

д) записываем нетпакет обратно в объект вот так:

local size  = res:w_tell()
res:r_seek(0)
sobj:STATE_Read(res,size)

Делать всё это можно только с объектами в оффлайне.

Если вдаваться в лирику, то нетпакет - это похоже часть движка, связанная с процессом синхронизации между клиентской и серверной частью. Можно предположить, что при синхронизации клиентской и серверной части объектов клиент записывает в этот самый нетпакет себя и затем посылает этот буфер на серверную сторону (потому и net-пакет). А может сервер клиенту... чёрт его знает.

 

3. Frect():set(0,658,83,47) - это синтаксис создания неименованного объекта пользовательского типа, экспортированного в Lua. В данном случае Frect. Это класс для хранения координат прямоугольника. Сразу после создания для объекта вызывается его метод set, который устанавливает его значения.

  Полезный утиль (Показать)
Ссылка на комментарий

malandrinus, Gonarh, в faction commander для ЧН как-то сделали запись в файл и чтение из него.

Вот кусок кода:

  Раскрывающийся текст (Показать)
Изменено пользователем Pxan
Ссылка на комментарий

Отключение монолога Сидоровича:

В файле config\scripts\esc_trader.ltx в самом начале заменить

 

[logic]

active = {+esc_trader_hello_played} mob_trader@new_idle1, mob_trader@new_start_wait

 

на

 

[logic]

active = mob_trader@new_idle1

 

Титры обучения - похоже, надо ковырять config\ui\game_tutorials.xml, но с ними я не разбирался

Мои работы:

Ночные прицелы + смена ножевого слота

AI вертолетов + ПЗРК

Soul Cube

 

Работаю только с ТЧ. С ковырянием ЧН/ЗП не связываюсь ни в какой форме. Совсем.

Ссылка на комментарий

За что отвечает эта функция?

  amk_anoms.script (Показать)
Изменено пользователем Borsalino
Ссылка на комментарий

У меня была такая ошибка, и у меня она была связана с файлом alife.ltx, так как я в нём пытался увеличить дистанцию алайфа до 2 км. Ну и даже 600 м. У тебя случаем не стоят новые локации?

Ссылка на комментарий

Borsalino, а эти самые новые локации добавлены в amk_anoms.script?

Если нет, то необходимо добавить в:

local level_vertexes (указать имя локации = вертекс уровня)

local level_number (указать имя локации = порядковый номер)

local game_vertexes (указать имя локации = вертекс игры от и до)

level_anoms (если нужны динамически спавнящиеся аномалии)

level_arts (если нужны динамически спавнящиеся артефакты)

local levelname

В items.ltx добавить псевдобинты с названиями лок вида testsak_имялокации

В sak.script в функцию add_tail добавить локи в исключения (на которых не планируется спавн артов)

Ссылка на комментарий

я сделал так:

packet = net_packet()
obj = db.actor
obj:STATE_Write(packet)
direction = packet:r_vector()

 

у меня ругается на то, что метод STATE_Write () неизвестен. Что делать? :(

Ссылка на комментарий

Скорее всего, вопрос не в тему, но не нашел где бы это еще спросить.

 

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

Ссылка на комментарий

я создал свой файл скриптов: MyScripts.script

там написал функцию:

BlaBlaBla(oneparam,twoparam)
...
end

вызвал её из другого скрипта вот так:

MyScripts.BlaBlaBla (oneargument,towargument)

у меня вылазит:

[error]Arguments : LUA error: .... - чистое небо\gamedata\scripts\ui_main_menu.script:117: attempt to index global 'MyScripts' (a nil value)

Ссылка на комментарий

Люди как из чн перегнать модельку в тч,пытался перегнать и получил вот такой лог

Expression : fatal error
Function : CSkeletonX::_Load
File : E:\stalker\patch_1_0004\xr_3da\SkeletonX.cpp
Line : 380
Description : <no expression>
Arguments : Invalid vertex type in skinned model 'dynamics\outfit\neutral_assault_outfit:1'

Ссылка на комментарий

IQDDD,

  Цитата
у меня ругается на то, что метод STATE_Write () неизвестен. Что делать?

Объект серверный?

  IQDDD писал(а):
в faction commander для ЧН как-то сделали запись в файл и чтение из него.

Ну значит в ЧН пространство имён io экспортировали. В ТЧ этого точно не было, я спецом проверял. Это как раз и есть стандартные функции Lua для работы с файлами. Смотри справочник по Lua, как с ними работать.

 

  Цитата
attempt to index global 'MyScripts' (a nil value)

Кроме банальной ошибки в какой-либо букве могу предположить, что не вышел из игры перед попыткой вызвать новый скрипт.

Изменено пользователем malandrinus
  Полезный утиль (Показать)
Ссылка на комментарий

камрады расскажите подробно о том как происходит лечение НПС когда ему дает аптечку ГГ и когда НПС , как отличается действие разных аптечек (если отличается ) в каком скрипте что отвечает ...

 

з.ы. читать шпаргалку не надо предлагать и так моя настольная книга :blush:

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

Свободу всем Даром!

Моя Зона Full Realism Mod STSoC by Wolkolak

"Безвыходных ситуаций не существует в принципе."(с) Ред Шухов

Ссылка на комментарий

Borsalino, Поставить activeperl, как легкий способ. Потом запустить, батник в папке который лежит скрипт и ехе перла. Если конечно таковой имеется.

http://strawberry-perl.googlecode.com/file...erl-5.8.8.4.exe к примеру, конечно я беру упакованный скрипт, вытряхиваю и пускай по своему усмотрению через батники.

Потом распакаются содержимое олл.спану, потом смотришь через блокнот или иной текстовый редактор.....

wolkolak, xr_wounded.script пример использования... в dialogs_escape.xml, диалоге с толиком <action>dialogs.transfer_medkit</action> / Надеюсь ясно и понятно.

IQDDD, показывай в спройлере, скрипт... Иначе не понятно почему у тебя там нулевая переменная. Мб, не передается, может не определяется..... Итп.

Изменено пользователем Taroz
Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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