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

Скриптование


Svoboда

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

sapsan

http://www.amk-team.ru/forum/index.php?showtopic=10244

Схроны теперь имеют физическую оболочку,
и так далее... Изменено пользователем 7.9

всё легко

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


Ссылка на сообщение
Непонял выражение, растолкуйте пожалуйста

 

Например: у объекта TRAMP14 есть свойство "количество пальцев на руках", и есть метод "хранение предметов в кармане"... итдитп.

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

всё легко

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


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

На время пропадания НПС (при смене визуала) можно ввести временного...

всё легко

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


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

Если 3DHUD, то 10 из 9 - нет.

Если 2DHUD - чуть позже будет "почти" полноценная система...

Пока можешь попробовать прототип (file.qip.ru/file/120871441/4910c4e0/docviewer_v203.html) - не совсем худ, но внешний вид... Хотя, - смотря, что именно требуется...

 

всё легко

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


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

Приехали... :(

В общем, тут такое дело...

 

Что делаем:

 

1. Создаём базовый CustomStatic с прикреплённым на него CUIStatic-ом, далее создаём ещё дополнительный CustomStatic.

2. Удаляем дополнительный CustomStatic, через апдейт удаляем прикреплённый CUIStatic, и удаляем базовый CustomStatic.

Не срабатывает удаление прикреплённого CUIStatic-а.

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

 

Мне такой затык "не по зубам". Прошу помощи.

 

1. начинаем "новую игру", получаем предмет, делаем сохранение на будущее.

2. активируем предмет (stco2) (клавиша "2").

3. по клавише "6" долны переключаться экраны этого предмета - нажимаем.

4. скрипт "d2hud" виснет на 68 строке.

5. не выходя в систему загружаем сохранение.

6. активируем предмет stco2 (клавиша "2").

7. всё работает как задумано.

 

Не помогает:

0. проверка скриптов на ошибки.

1. увеличение числа апдейтов в задержке перед удалением прикреплённого CUIStatic.

2. перемещение всех функций в один файл (мало-ли!)...

3. устранение "load_string"-ов - замена на if... (мало-ли!)...

4. переход на другую локацию.

5. пережидание времени.

 

 

"Проект" целиком (1.3МБ): _http://narod.ru/disk/24294526001/2DHUD(test).7z.html

 

Если сохранится с зависшим скриптом - сейв будет битый.

Вылет при загрузке такого сейва, если сразу после запуска игры:

... LUA error: i:\stalker1\gamedata\scripts\bind_stalker.script:397: attempt to concatenate field '?' (a nil value)

 

если такой сейв попытатся загрузить не сразу, а после загрузки здоровых сейвов - вылет уже другой:

! Unknown command: ОШИБКА:SAVE_FILE_IS_CORRUPT

... LUA error: i:\stalker1\gamedata\scripts\_g.script:1125: attempt to call global 'exit' (a nil value)

 

 

Добавлено:

Версия игры: ТЧ 1.006.

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

всё легко

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


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

Но тогда получается, что этот эффект обусловленный - ведь после второй загрузки всё находится и удаляется корректно. Почему? Возможно, что-бы такая ситуация была временной - до второй загрузки?

Не готов ответить. Причуд у движка сталкера немало ... Порой приходится эмпирически искать, и если решение есть - стОит ли тратить время на объяснения причуд? Все одно только предполагалки возможны. Будет время - подумаем ... поищем. :-)

--/ Artos

 

Точно, я ведь в динамическихиндикаторах так и делал...

hud_power = hud:GetCustomStatic("hud_power_level"):wnd()

но в этом случае так не сделал... Видимо, "не знал и забыл" :)

Буду пробовать...

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

всё легко

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


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

Нужна готовая функция изменения параметров объекта через нет-пакет.

 

Переписывать нужно параметры "position", "level_vertex_id", "game_vertex_id" и "parent_id" объектов находящихся в инвентарном боксе.

 

всё легко

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


Ссылка на сообщение
Zander_driver, "владельцы" находятся на разных локациях. Часть предметов - просто пересоздаётся, а функция нужна для (очень) "уникальных" предметов. Функция вызывается из actor_binder:save(packet). Изменено пользователем 7.9

всё легко

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


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

Artos

 

Чтение секции 'cse_abstract' нет-пакета, в котором и имеется 'parent_id', для каждого объекта не производится по-байтово, а получается автоматически в методе 'STATE_Read' в составе уже прочитанной части пакета.

По сути, возможно изменение (перепаковка) только в момент первичного спавна (появления) объекта при старте игры.

Значит-ли это, что после создания объекта доступны параметры не всех (его) серверных классов?

То-есть, например, прочитав где-нибудь в процессе игры, пакет объекта с серверным классом, например, cse_alife_item_pda, и начав его разбирать с начала, я уже не прочитаю данные класса cse_abstract ? Например, параметры section_name, position и прочие... Или спрошу так: "Какие параметры останутся доступными для чтения\записи в нет-пакете объекта с серверным классом cse_alife_item_pda после его создания?

 

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

Ладно, попробую переписать только вертексы, если position будет зафиксированным - его переписывать не надо будет.

всё легко

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


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

Darkscape

2. т.е при вызове ПДА (кнопкой P например) сам ПДА не открывать, а запускать скрипт

1. Освободить клавишу "Р" в user.ltx

2. используя, либо "кейлогер", либо "правленную длл", ловить нажатие "кнопки Р" и запускать скрипт.

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

всё легко

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


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

*Shoker*, Scarabay

... get_console():execute("unbind active_jobs"), и тогда кнопка PDA будет сброшена. Только учти, что люди, после удаления твоего мода, должны будут вручную занаво установить кнопку открытия ПДА в опциях.
Никого напрягать не надо - как "сбросите", так и опять "набросите".

всё легко

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


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

Есть доступ к "инвентарному весу" инвентарных объектов через нет-пакеты?

 

Вопрос хоть и не в тему, но всё-равно - уточни его, пожалуйста. Что значит "инвентарный вес"?

ColR_iT

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

всё легко

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


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

"Инвентарный вес" - имеется в виду "вес предмета в инвентаре ГГ" в "кг" - например: "медуза 5кг".

Есть "mass"-а у "cse_alife_object_physic"-а, но это, скорее всего, не то.

Задача такая: Скриптом изменять "инвентарный вес" объекта(предмета). Потом, если получиться, физическую массу то-же надо попробовать.

 

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

Darkscape, тебе нужно заменить xrGame.dll на r15 и выше.

http://www.amk-team.ru/forum/index.php?showtopic=10538

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

всё легко

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


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

200 - много!

 

У меня схожая задача, использую простой distance_to(), на производительность не проверял.

 

Суть: "Безобъектный сферический рестриктор" - БДС :) или ЦДС - "центр, дистанция, скрипт" :)

 

1. Вся локация разбита на зоны (до 20 проверок),

2. Скрипт зоны подключает\отключает ещё от 10 до 20 проверок.

3. Всего одновременных проверок: не более 50.

4. Главное при переключении между зонами - рестриктор должен быть активным в соседних зонах.

 

 

Но это не ускорение - оптимизация.

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

всё легко

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


Ссылка на сообщение
- в подходящий момент отправляем объект в оффлайн и обратно в онлайн, одновременно выставив разрешающий флаг для чтения из нет-пакета секции 'cse_abstract' объекта (?) и дав (запомнив) информацию по необходимым изменениям в координатах;

 

В целом понято, новость хорошая, но всё-таки:

- какие моменты являются "подходящими" (или "неподходящими")?

- куда и как выставлять флаг?

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

всё легко

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


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

AndreySol, тогда добавь ещё один "слешь":

local msg = string.format(" %02d:%02d\n%s", time_h, time_m, str)

local msg = string.format(" %02d:%02d\\n%s", time_h, time_m, str)

всё легко

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


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

Ulman, ну тогда напиши в 337 строке "local t = 0", но это - не очень, попробуй лучше так: в 343 строке "if t or t>0 then ..."

Если такие заплатки не помогут -дорабатывай алгоритм.

всё легко

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


Ссылка на сообщение
Ulman, ошибочка - не "if t or t>0 then ..." а "if t and t>0 then ..." Изменено пользователем 7.9

всё легко

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


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

Ulman, если мелких заплаток не хватило, значит - "всё серьёзно" - "косяк" где-то в алгоритме (или в адаптации) - в этом случае, подсказать не смогу... :(

Лучше откатиться к первому вылету...

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

всё легко

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


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

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