Случайная подборка модов
Clear Sky - Remake
3.8
Old Episodes: Эпизод 1
2.9
Call of Misery
4.1
Долина Шорохов
4.5
Пространственная аномалия (Update 3)
4.0
NEYA Online
3.1
Последние обновленные темы Прямой эфир Самые популярные темы Последние новости
Модератор форума: FanG, Аdmin, FantomICW, Overfirst  
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » Скрипты (Небольшие уроки для новичков, но с углубленным объяснением.)
Скрипты
Украина  BozKurt
Вторник, 18.02.2014, 14:30 | Сообщение # 46
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

Цитата Max_Warlock ()
А чем "<>" лучше "~="?
Ничем, даже более того - это не правильно. Просто я сейчас на работе над VBScript чахну, а в нём "не равно" пишется именно так "<>". В Lua, конечно же это не прокатит - нужно поставить "~=".
  Злобная реклама
Вторник, 18.02.2014, 14:30
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Казахстан  Max_Warlock
Вторник, 18.02.2014, 14:32 | Сообщение # 47
Clear Sky - Remake
Статус:
Опытный:
Сообщений: 1552
Награды: 4
Регистрация: 18.01.2013

От этой функции в результате никакого толку - она делает то же самое тем же методом. Мне нужно считывать строку без учёта секций.
  Злобная реклама
Вторник, 18.02.2014, 14:32
Статус:
Сообщений: 666
Регистрация: 18.01.2013
Украина  BozKurt
Вторник, 18.02.2014, 14:35 | Сообщение # 48
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

В таком случае - на ТЧ (и кажется ЧН) это невозможно.
Сообщение отредактировал ColR_iT - Вторник, 18.02.2014, 14:35
  Злобная реклама
Вторник, 18.02.2014, 14:35
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Российская Федерация  DukeKAn
Вторник, 18.02.2014, 16:44 | Сообщение # 49
Статус:
Неопытный:
Сообщений: 491
Награды: 8
Регистрация: 25.11.2012

Честно говоря, я не знаю способа, как работать с файлами в тч (про другие ничего сказать не могу) без учёта секций. Можно было бы попробовать "внешним" способом - в любом языке программирования проверять корректность нужных вам данных, а потом запускать сам сталкер (вроде бы, так сделано в NLC). Но тогда надо как-то запретить сам запуск игры напрямую, через XR_3DA.exe. Или позволять запускать, но отрубать все клавиши.

Способ совсем уж бредовый, но если совсем уж очень требуется...
Создаём exe-шник, к примеру, на C++, который и проверяет корректность всех нужных вам данных (его и будет запускать пользователь). Этот exe-шник ещё и изменяет какое-то из значений в user.ltx и запускает игру. В главном меню (скрипт ui_main_menu.script) проверяем то самое значение из user.ltx. Если игру запускал exe-шник, а не пользователь, то всё путём, все кнопки работают. А если юзер запустил XR_3DA.exe, т.е. значение в user.ltx не изменилось, то блокировать все кнопки загрузки и пр.
В общем, трудностей можно создать для "нехорошего" пользователя очень много, другой вопрос, нужно ли это, и стоит ли потраченного времени. Потому что почти любую защиту можно обойти. Даже здесь - пользователю можно будет просто загружаться через консоль
  Злобная реклама
Вторник, 18.02.2014, 16:44
Статус:
Сообщений: 666
Регистрация: 25.11.2012
Казахстан  Max_Warlock
Вторник, 18.02.2014, 17:01 | Сообщение # 50
Clear Sky - Remake
Статус:
Опытный:
Сообщений: 1552
Награды: 4
Регистрация: 18.01.2013

DukeKAn, напрямую у меня игру и так не запустить. Любой выход в главное меню обернётся полным фейлом. А разберётся там далеко не каждый, сложная система им. камрада Шокера. Но игра уже и так запускается через лаунчер, исходника которого у меня нет, к сожалению.
Ладно, хотя бы вес в систем.лтх проверяет без проблем, с актёром только фигня такая.
  Злобная реклама
Вторник, 18.02.2014, 17:01
Статус:
Сообщений: 666
Регистрация: 18.01.2013
Российская Федерация  DukeKAn
Вторник, 18.02.2014, 17:29 | Сообщение # 51
Статус:
Неопытный:
Сообщений: 491
Награды: 8
Регистрация: 25.11.2012

Max_Warlock, попроси у авторов исходники. Есть исходники - есть всё)
  Злобная реклама
Вторник, 18.02.2014, 17:29
Статус:
Сообщений: 666
Регистрация: 25.11.2012
Российская Федерация  Pro100The-Best
Понедельник, 06.10.2014, 22:47 | Сообщение # 52
Статус:
Зевака:
Сообщений: 7
Награды: 0
Регистрация: 06.10.2014

Спасибо за статью конечно но я почти перестал создавать скрипты
Кстати кому надо разборы секций в bind_stalker.scripts смотрите в спойлере


Скрипты дверей(всё ясно и понятно)

Скрипт спавна трупа без использования функции AMK
  Злобная реклама
Понедельник, 06.10.2014, 22:47
Статус:
Сообщений: 666
Регистрация: 06.10.2014
Украина  BozKurt
Вторник, 07.10.2014, 11:53 | Сообщение # 53
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

Цитата Pro100The-Best ()
local obj=alife():create("секция_обьекта",vector():set(-81.4560,-0.2423,157.2334),186914,163) --спавнит обьект и приравнивает его к локальной obj
--тоесть после спавна с обьектом можно проделать какие либо действия(нанести хит, изменить группировку, заспавнить ему оружие\предмет, изменить состояние(кондицию)
Ну-ну. Интересно посмотреть, как ты будешь серверному объекту изменять состояние или изменять группировку. create возвращает серверный объект, поэтому пример ниже с фиксацией кости работать не будет. Причина таже get_phisycs_shell - это метод клиентского объекта.

Цитата Pro100The-Best ()
local string = tostring(string) --конвертируем string в строку string
Зачёт! biggrin Строку в строку конвертировать...

P.S. Оформление в край отвратительное.
Сообщение отредактировал BozKurt - Вторник, 07.10.2014, 11:53
  Злобная реклама
Вторник, 07.10.2014, 11:53
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Российская Федерация  DukeKAn
Среда, 24.12.2014, 15:23 | Сообщение # 54
Статус:
Неопытный:
Сообщений: 491
Награды: 8
Регистрация: 25.11.2012

Ребзя, может стрим перед новым годом провести?

Я так посмотрел, уроки получились мягко говоря не для новичков. А в стриме можно прямо с основ начать - создание файла скрипта, значение переменных, функций, таблиц в Lua и тут же запускать сталк., показывать. А уж к концу, можно показать, как связаны скрипты с конфигами, с логикой, а то часто бывает непонимание, чем же вообще скриптеры занимаются.

Добавлено (24.12.2014, 15:23)
---------------------------------------------
Pro100The-Best,
Есть у меня этот файлик-шпаргалка, да ещё и сильно расширенный. Вот только, как заметил BozKurt, ошибок там навалом, и рекомендовать кому-то я его не стал бы, только если знаешь как делать, но забыл самую мелочь - точное имя метода, или порядок аргументов.

  Злобная реклама
Среда, 24.12.2014, 15:23
Статус:
Сообщений: 666
Регистрация: 25.11.2012
Российская Федерация  DaaGuda
Среда, 31.12.2014, 02:25 | Сообщение # 55
Статус:
Неопытный:
Сообщений: 479
Награды: 4
Регистрация: 09.03.2014

DukeKAn, ++++
  Злобная реклама
Среда, 31.12.2014, 02:25
Статус:
Сообщений: 666
Регистрация: 09.03.2014
Российская Федерация  ScriptMaker
Пятница, 02.01.2015, 23:12 | Сообщение # 56
Статус:
Зевака:
Сообщений: 7
Награды: 0
Регистрация: 02.01.2015

Лучше возьмите литературу по Lua, C, C++, почитайте месяц-другой, и разберетесь как и что устроено.

Цитата BozKurt ()
Интересно посмотреть, как ты будешь серверному объекту изменять состояние или изменять группировку.

Если будем спавнить вблизи ГГ, то есть коллбек на выход в онлайн, с помощью него можно без нет пакетов изменить группировку.
  Злобная реклама
Пятница, 02.01.2015, 23:12
Статус:
Сообщений: 666
Регистрация: 02.01.2015
Российская Федерация  DukeKAn
Суббота, 03.01.2015, 13:58 | Сообщение # 57
Статус:
Неопытный:
Сообщений: 491
Награды: 8
Регистрация: 25.11.2012

Цитата ScriptMaker ()
Лучше возьмите литературу по Lua, C, C++, почитайте месяц-другой, и разберетесь как и что устроено.

Вообще-то человеку, который хочет разобраться со скриптами, вовсе не нужно лезть в такие дебри, как С и С++. Исключение - необходимость править движок. Но за пару месяцев с этими языками никак не разберёшься до такого уровня. А заходить в тему, чтобы показать, как вы хорошо разбираетесь в языках, и как их надо учить - не надо. Есть чем поделиться - делитесь, нужно спросить - спрашивайте. Нет - проходите мимо.

Цитата ScriptMaker ()
Если будем спавнить вблизи ГГ, то есть коллбек на выход в онлайн, с помощью него можно без нет пакетов изменить группировку.

Есть - показывайте код. Что за коллбэк, как использовать для смены группировки. Почему этот подход лучше, чем просто (если в онлайне) получить клиентский объект с помощью функции
Код

sobj = alife():create(...)
obj = level.object_by_id(sobj.id)
obj: set_character_community("freedom", 0, 0)
  Злобная реклама
Суббота, 03.01.2015, 13:58
Статус:
Сообщений: 666
Регистрация: 25.11.2012
Молдова  6poHR777
Суббота, 03.01.2015, 14:57 | Сообщение # 58
Статус:
Опытный:
Сообщений: 1480
Награды: 0
Регистрация: 05.01.2012

Камрады.
Тут вопрос возник, где можно скачать прогу-дебаг для LUA?
  Злобная реклама
Суббота, 03.01.2015, 14:57
Статус:
Сообщений: 666
Регистрация: 05.01.2012
Украина  BozKurt
Суббота, 03.01.2015, 15:00 | Сообщение # 59
Статус:
Опытный:
Сообщений: 1753
Награды: 3
Регистрация: 25.05.2012

ScriptMaker, речь шла именно про серверный объект, который возвращает метод create, а не о способе изменить группировку онлайновому объекту, да ещё и нет-пакетами.

DukeKAn, способ хорош тем, что не заставляет выдумывать велосипеды с поимкой онлайнового объекта. Метод create возвращает серверный объект, а клиентский становится доступен только на следующем апдейте. Колбек client_spawn_manager срабатывает как раз тогда, когда клиентский объект становится доступен. Пример очень простой:
Код
local object = alife():create("wpn_ak74u", vector(), 0, 0, db.actor:id())
level.client_spawn_manager:add(object.id, -1, OnObjectExitOnline)

local OnObjectExitOnline = function (objectId, gameObject)
   gameObject:set_condition(0.8)
end
Где в функции OnObjectExitOnline, objectId - id переданного объекта, gameObject - уже клиентский объект.

Добавлено (03.01.2015, 15:00)
---------------------------------------------
6poHR777, для чистого Lua 5.1 - вот: https://yadi.sk/d/nkygbzVLdm928 . С вопросами о проблемах установки и запуска - в лс.
Сообщение отредактировал BozKurt - Суббота, 03.01.2015, 15:01
  Злобная реклама
Суббота, 03.01.2015, 15:00
Статус:
Сообщений: 666
Регистрация: 25.05.2012
Российская Федерация  ScriptMaker
Суббота, 03.01.2015, 22:24 | Сообщение # 60
Статус:
Зевака:
Сообщений: 7
Награды: 0
Регистрация: 02.01.2015

DukeKAn, я в таком случае не вижу смысла вообще человеку лезть в скрипты. Метод тыка - плохой метод. Куда мне заходить, и что мне делать - я решу сам, хорошо? Я тебе пока не мешаю писать статьи по типу 52 поста.

Цитата DukeKAn ()
Почему этот подход лучше, чем просто (если в онлайне) получить клиентский объект с помощью функции

Выше читай.

BozKurt, ладно, я подумал, что не помешает указать и на коллбек выхода в онлайн, т.к. видно о нем немногие знают, а применение (даже не повсеместное) я редко где видел.
  Злобная реклама
Суббота, 03.01.2015, 22:24
Статус:
Сообщений: 666
Регистрация: 02.01.2015
Форум » S.T.A.L.K.E.R. Модификации » Помощь в моддинге » Скрипты, конфиги, логика, движок » Скрипты (Небольшие уроки для новичков, но с углубленным объяснением.)
Поиск: