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

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

Тема для обсуждения скриптов всего и всех в серии игр STALKER.


Задавая вопрос (!):
1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего;
2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме);
3. Изучите информацию которая может вам помочь:

  Информация (Показать)

4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос;
5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе;
6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода;
7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины.
8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ.
9. И помните: «Правильно заданный вопрос – половина ответа».

 

Какие вопросы следует задавать, а какие нет...

  Читать рекомендуется. (Показать)

И последнее: очень рекомендовано к прочтению Правила форума
 


  • Спасибо 1
  • Полезно 2
Ссылка на комментарий

@FonSwong,

  Цитата

 

Можно ли скриптом собрать смарты на локации и узнать их координаты?

Смотря что ты подразумеваеш под смартами.

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

Ну а если координаты работ и путей смарта то

  Цитата

 

6) Работы могут находиться на разных уровнях.
7) Скриптовая зона СТ теперь не используется для захвата персонажей.
8) Симуляция заключается в миграции персонажей между разными СТ.

http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B8._%D0%A7%D0%B0%D1%81%D1%82%D1%8C_4#3.11.3._.D0.9D.D0.BE.D0.B2.D1.8B.D0.B5_.D0.BE.D1.81.D0.BE.D0.B1.D0.B5.D0.BD.D0.BD.D0.BE.D1.81.D1.82.D0.B8_.D1.81.D0.BC.D0.B0.D1.80.D1.82.D1.82.D0.B5.D1.80.D1.80.D0.B5.D0.B9.D0.BD.D0.BE.D0.B2

 

PS. Не заблуждайтесь

Радиус смарта используеться только в СДК для визуализации.

И ни на что не влияет.

Главное что бы от нуля отличался :P .

PSS.  Распакуйте алл спавн  и измените радиус любого смарта (шейпы тойсть формы).

Типа тест хоть на 00000000000.1

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

Вот тебе бабушка и Юрьев день.

 

@AKKK1, данные любых поинтов ты можешь узнать где угодно. Вот например я сделал дамп барного пути на Кордоне:

 

  Показать

 

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

 

Еще есть у юзеров SDK забава подгонять респавнер для ящиков по миллиметрам. Прямо говорить, ящикам нужен другой подход, респавнеры (для ящиков) в том виде, в каком они есть совершенно не нужны. Сиды оставим, сидом мы ассоциируем смарту ящик, как смарт там разрождается у нас, так мы в этот ящик и суем барахло, откуда дровишки? А прямо из кастом даты ящика.

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

@Карлан,

Извени забыл добавить что

  Цитата

 

Ну а если координаты работ и путей смарта то

Тоже можно только другим способом.

И да я не разу не скриптер.

Еще раз радиус

(размер) абсолютно не важен.

Шейп это и есть сфера или бокс.

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

Я просто сделал так:

local gg = game_graph():vertex(smart.m_game_vertex_id)
local lvid = gg:level_vertex_id()
local pos = level.vertex_position(lvid)
Изменено пользователем FonSwong
Ссылка на комментарий
  Карлан писал(а):

в ЗП есть лаконичный метод:

а как он работает? Мне надо название визуала использовать как ключ в таблице.

  Карлан писал(а):

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

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

@Sla-Sla, я вот как-то так делаю:

 ['stalker_zombie8'] = {'$outfit|stalker_zombi', 37, 48},
    local visual = string.split(npc:get_visual_name(), '\\');
    visual = drop_outfit_base[visual[3]]; local section = visual[1]
Ссылка на комментарий

В чём проблема?

 

  Показать

 

Но на смарте с id 12871 почему-то скрипт зависает при попытке получения level.vertex_position(lvid)

http://imgdepo.com/id/i9875518

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

@FonSwong, а не проще позицию получать непосредственно из объекта?

local pos = smart.position

  П.С.: (Показать)
Изменено пользователем naxac
  • Полезно 1

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

@naxac, дык спрашивал какие параметры можно из смарта достать, сам не догадался и не подсказал никто :)

 

 

Почему у некоторых левел вериксов нельзя нельзя узнать позицию, если не существует, значит я неправильно узнаю?

Вот так узнаю кол-во левел вертиксов на уровне:

 

  Показать

 

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

@Sla-Sla, сделай функцию для серверного объекта, в нет-пакет же пишется визуал. Класс CSE_Visual, там, как это принято здесь говорить, все интуитивно понятно.

 

@FonSwong, тебе уже ответили, потому-что функция только для текущего левел графа, и доступна только при загруженном уровне, что логично.

  • Спасибо 1
Ссылка на комментарий

В ОП-2 есть код для проверки зависшей логики вертушек и физ. объектов:

  Показать

 

Добавил код для проверки спейс-рестрикторов

Сообщения приходят, в лог тоже пишется:

0404948001478001698.jpg 0411819001478002154.png

А меня терзают смутные сомнения - правильно ли я написал и работает ли код для спейс-рестрикторов...

Зы. почему спрашиваю - некоторые рестрикторы (в логе они есть) не отрабатывают свою логику. Побилась?

И если побилась, то в чем может быть причина?

AMD Athlon II X2 250, NVIDIA GTS 450, RAM 8.0 GB, WIN 7/64  правки Золотой Шар

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

Уважаемые скриптеры, просьба прокомментировать следующий код (что делает и в каком случае вызывается). Предположительно, что делает - очищает хранилище актора: так ли это.

 

  код (Показать)
  • Нравится 1

Сталкер - наше всё!

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

@AndrewMor,я не скриптер, но:

Получаем размер хранилища. Выводим его в консоль. Если оно привышает определенный размер, то очищаем его.

З.ы. Не пинайте если не так.

  • Спасибо 1
Ссылка на комментарий

Практически так и есть, но дополню.

Вызывается при любом сохранении (это ответ на выделенный жирным вопрос). Если в функциях self:save_old() и ogsm_debug.clean_pstor() содержится то, что можно предположить (OGSM для ТЧ нет под рукой), служит в качестве своеобразного контроля переполнения pstor актора во избежание появления битых сейвов. А именно: производится запись pstor (или что там делает save_old()) в чистый net-пакет, проверяется его размер, если всё в порядке, тогда pstor пишется в net-пакет сейва как есть, если же превышен допустимый для ТЧ максимум - предварительно очищается.

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

  • Спасибо 1

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

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

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

 

 

  Kirgudu писал(а):
кастомные объекты для сохранения большого объёма данных.

А поподробнее можно про это?

  • Нравится 1

Не соответствует правилам.

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

@CRAZY_STALKER666, например se_stor от , который сохраняет данные как раз в таких объектах. Подробную информацию можно найти в постах автора модуля.

Если не ошибаюсь, @Malandrinus тоже делал подобный модуль.

Изменено пользователем Kirgudu
  • Спасибо 1
  • Нравится 1

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

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

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

 

 

  Kirgudu писал(а):
Вызывается при любом сохранении

Включая и автосейв? Или просто сейвы, в т.ч. и квик?

 

 

 

  Kirgudu писал(а):
Если в функциях self:save_old() и ogsm_debug.clean_pstor() содержится то, что можно предположить (OGSM для ТЧ нет под рукой

 

  self:save_old() (Показать)
  • Спасибо 1

Сталкер - наше всё!

Ссылка на комментарий
  AndrewMor писал(а):

Включая и автосейв?

При любом сохранении.

 

Разумеется, хранилище может переполняться от того, что туда пишется слишком много данных. Максимальный размер net-пакета (в том числе актора) в ТЧ равен 8192 байта, в ЧН/ЗП вдвое больше. Обрати внимание на содержимое скопированной тобой функции save_old(): в net-пакет актора что-то пишут менеджеры погоды, тайников и заданий, радара и детектора. Много? Без детального изучения неизвестно. Плюс запись текущих настроек. Плюс pstor, то есть хранилище, в которое пихали данные все, кому не лень. Посмотри в твоей же clean_pstor(): из pstor вычищаются аномалии, таймеры, прочие служебные переменные - на всё это нужно место в net-пакете актора. А сколько в твоём моде других, неучтённых здесь мест использования штатных функций записи/чтения xr_logic.pstor_store() и xr_logic.pstor_retrieve()? То-то и оно. Увлёкся, записал лишнее - опаньки, вышли за 8 килобайт.

 

Потому и начали придумывать альтернативные варианты. Подробнее о разных скриптовых способах записи данных можно прочитать здесь: http://www.amk-team.ru/forum/topic/6185-skriptovanie/page-209#entry694323

Изменено пользователем Kirgudu
  • Спасибо 3

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

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

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

 

 

  Kirgudu писал(а):
таймеры,

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

  • Спасибо 1

Сталкер - наше всё!

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

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

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

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

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

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

Войти

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

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

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