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

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

У меня вопрос по m_netpk.script. Когда устанавливаю дирекшн машин, то вроде оси сбиваются (вращать машинку по плоскости террейна это ось z). Это косяк скрипта, машин или вообще не косяк? И еще, когда вывожу через pk:dumpDesc() содержание пакетов объекта, то ни позишн, ни дирекшена там нет, но в скрипте работают...

Изменено пользователем Graff46
Ссылка на комментарий
  05.10.2017 в 21:00, Graff46 сказал:

(вращать машинку по плоскости террейна это ось z). Это косяк скрипта, машин или вообще не косяк?

Это разница между "по" и "вокруг".

Вращать по Х - это когда точка движется ПО плоскости X, соответственно ВОКРУГ оси Z.

всё легко

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

Псевдо JSON  для Cталкера, будет использован в новой логике для машин. Автор я.

function jsn_wr (a) -- Псевдо джейсон
  a = a:gsub('%s+','') 
  local b,c, e
  for b,c in a:gmatch('([:])(%S)') do
    if c~='{' and c~='[' then
      a = a:gsub(b..c, string.format('%s"%s',b,c)) 
    end
  end
  
  for b,c in a:gmatch('([:]["]%S-)(%p)') do
    a = a:gsub(b..c, string.format('%s"%s',b,c))
  end
  
  a=a:gsub('[[]','{')
  a=a:gsub('[]]','}')
  a=a:gsub(':','=')
  return loadstring ('return'..a)() 
end

Работает, проверено, но с расширением Lua до 5.1, как на родном пойдёт - не знаю, смущает loadstring()

Принимает строку JSON без кавычек (синтаксис объектов в JS), выдаёт таблицу...

Пример строки:

local str = '{aa:     {gh   :fg,tt:{gg:jj}},zz:xx}'

 

Изменено пользователем Graff46
  • Полезно 1
Ссылка на комментарий
  24.10.2017 в 02:08, Graff46 сказал:

Псевдо JSON  для Cталкера

Исправленный и дополненный код

  Показать

 

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

Командное меню.
https://yadi.sk/d/JaMDyEHy3RCEHs
Используется для управление напарниками, нанокостюмом, хенами и так далее.

Управление в игре:
Нажмите клавишу вызова конкретного меню, далее выберете номер команды цифрами на основной клавиатуре. Повторное нажатие на клавишу открытия меню, закрывает меню без вызова команды.

Управление сходно с движковым меню. В скритах номера меню и команд задаётся от 1. Так же можно задать озвучку команды, по легенде ГГ даёт команды напарникам именно по радио голосом, через радиогарнитуру, которую используют СпН.
Как подключить?, смотрите в файле Подключения.txt

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

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

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

Оставлю это тут. Функция для xr_effects.script, Вам не нужно больше писать ф-ции именно в xr_effects.script, теперь из логики можно вызывать любые ф-ции из любых скриптов, но переданы могут быть этим ф-циям только 3 значения, это клиентский актор, клиентский НПС от которого вызвали, и таблица с числами и (или) строками которые можно задать в логике.

Листинг:

function myfunc_exec (actor, npc, p)
	_G[p[1]] [p[2]] (actor, npc, p[3] or 0)
end

Пример логики:

[smart_terrains]
none = true

[logic]
active = remark

[remark]
on_info = {+my_infoporshen} nil %=myfunc_exec(escape_task:myFuncName:param1:1986)%

; escape_task - имя скрипта
; myFuncName - имя функции
; param1 и 1986 - параметры(только строки и числа(возможно булев тип будет работать) ) которые будут переданы в ф-цию в таблице после объектов НПС и ГГ (3 аргумент). 

 

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

Жуткий велосипед. Полезнее xr_logic.script научить распарсивать полные имена функций, с учетом имени скрипта. Я бы показал это, но у меня нет этого в виде отдельного изменения. А так, тут можно посмотреть, например

https://github.com/dsh2dsh/op2ogse/blob/master/gamedata/scripts/xr/xr_logic.script

 

  • Согласен 1
Ссылка на комментарий
  24.01.2018 в 21:08, dsh сказал:

Жуткий велосипед.

 Я вызываю ф-цию по её имени полученной из строки через глобальное пространство _G,  это вполне закономерно. Имена скриптов и ф-ций + параметры, передаю ИХ методами (разрабов), как эл-ты массива. Где тут велосипед - не знаю. Даже если велосипед, то он не плохо так ездит и выручает где-то год.

  24.01.2018 в 21:08, dsh сказал:

распарсивать полные имена функций, с учетом имени скрипта.

Я не понял, либо я плохой кодер либо чего-то недогоняю....

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

@Graff46 зачем делать вот так "=myfunc_exec(escape_task:myFuncName:param1:1986)", если можно делать "=escape_task.myFuncName(param1:1986)"

Вот что я имел ввиду, что полезнее xr_logic.script этому научить.

 

И прекратите уже говорить "кодер" и прости господи "скриптер". Не бывает таких существ. Есть программисты, разработчики, софтверные инженеры. Но из кодеров я знаю только быдлокодеров.

 

Что-то я разбурчался.

 

  • Согласен 3
  • Смешно 1
Ссылка на комментарий
  24.01.2018 в 22:11, Graff46 сказал:

Я попробую может быть так сделать.

Заменить в xr_logic.script функцию pick_section_from_condlist на эту:

  Показать

Я у себя потестил - вроде работает.

В логике вызывать в таком виде: %=имяСкрипта.имяФункции(парам1:парам2)%

  • Нравится 1
Ссылка на комментарий

@Graff46 только я б либо оставил аборт с выводом в лог, как он был в оригинале (а также добавил проверку наличия распарсенной функции, и туда тоже аборт), либо убрал аборт во всей функции pick_section_from_condlist (если ты в принципе от них избавляешься и потому как вылет и без аборта будет на отсутствующих функциях).

Ну и ещё в _G[spc][fname](actor, npc, infop.params or nil) "or nil" - лишнее, так как там и без того либо таблица, либо nil.

 

Upd: раз здесь "сборочный цех", будет неплохо представить исправленные функции для всех трёх частей игры, так как они хоть и незначительно, но емнип отличаются.

Изменено пользователем Kirgudu
  • Согласен 1

Свои работы и совместные проекты: ИнструментOGSM CSFinal StrokeHARDWARMOD

Полезное: модули АртосаXML парсер

Ссылка на комментарий
  25.01.2018 в 14:32, Kirgudu сказал:

будет неплохо представить исправленные функции для всех трёх частей игры

У меня нет ничего кроме ТЧ сейчас + днями пишу свой мод, идею подал, а там смотрите. пишите....

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

Как можно получить нэт-пакет net_cse_abstract, если класс объекта не перегружен в class_registrator.script? Я пробовал через obj:STATE_Write(packet), пакет получаю, но net_cse_abstract не извлекается... И вообще можно ли менять позицию и поворот объекта, если его класс не перегружен в class_registrator.script?

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

Ф-ция для записи в файл "свободных" story_id. Написано под ТЧ, можно доработать для ЗП (добавить сканирование по спавн-секциям)

Код:

  Показать

Для функции nt.logfile - Нужен модуль nt.script, это скриптовый модуль из мода "Новое время".

Если Вы не хотите устанавливать модуль, то вот ф-ция:

  Показать

Для работы этого всего нужно что бы у LUA игры были открыты области видимости: io, file! Для этого можно скачать расширения Lua  от разных авторов или такой функционал может быть у модифицированных движков.

 

Файл с результатами (free_sids.txt) будет  в папке gamedata.

Строка вида: Free > [Story_Id] - свободный Сид - под сидом нет объекта на момент сканирования,

строка вида: In_list as: [СекцияИзStory_ids.ltx] > [Story_Id] - свободный Сид, но отмечены секцией в файле story_ids.ltx,

строка вида: [СекцияИзStory_ids.ltx] > [Story_Id] - Занятый Сид (под сидом есть объект на момент сканирования).

Изменено пользователем Graff46
  • Нравится 1
  • Полезно 1
Ссылка на комментарий
  05.04.2018 в 21:26, Graff46 сказал:

Ф-ция для записи в файл "свободных" story_id.

Я как-то решил задействовать свободное значение в [story_ids] - 20(чистая ТЧ). Получил вылет, по дублированию, оказалось, что в all.spawn'е это значение было занято, чисто в цифровом виде, без сета в вышеозначенном конфиге... Как-то так.

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

Не давно, с момента написания данного поста, я спорил на форуме, о том что код распарсивания строк условий переключения схем логики, достаточно громоздкий и и ресурсозатратный.

Сейчас я опубликую новую систему, алгоритм достаточно специфичный, требуются тесты.

Внимание! Старые схемы логики работать не будут! Вам нужно создать только своих НПС с логикой по новому стандарту.

  Стандарт (Показать)

Версия очень сырая, выкладываю для тестов, в скриптах есть 2 вида перебора переключателей, по таблице и по условиям. Возможно есть решения улучшить код. Хотелось бы узнать падение\прирост производительности...

Есть возможность заменить унарный минус строк для инфопоршней на разность, для аналогии со сложением.

Версия под ТЧ


Гибкая версия. Сама распознает старые переключатели и новые. Ссылка

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

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

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

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

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

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

Войти

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

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

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

×
×
  • Создать...