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

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


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

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

Pir%40t%40s.gif

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

Как правильно достать профиль?

 

В первой функции Сохраняю npc:id() непися, затем

Во второй функции загружаю в npc_id и мне нужно получить его профиль, но НЕ через npc = level.object_by_id( npc_id ), ибо в оффлайне если нпс, то крашится игра

затем передать "npc" другой фунции, а там уже

В третьей функции она снова возьмёт из "npc" npc:id()

 

Пробовал после загрузки профиль вытаскивать через npc = alife():object(a), но он вроде как даёт сид, а в третьей фунции нужно передать "npc" и получить npc:id()

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

Всем добрый день! Вопрос с загвоздочкой..Есть какие-нибудь особенные настройки(логика) у рестириктора, чтобы в него не могли зайти мобы\НПС? Спасибо.

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

@naxac, из тестов получилось следующее:

Я выставил рестриктору этот тип.Закинул на карту пару плотей. Ну-с, начнём тест. Плоти меня увидели, побежали ко мне..я забежал в рестриктор..и плоти "зависли". Т.е., начали бежать на месте. Все схемы отрабатывают(combat, если подойти и прочее), но бегут они упорно на месте. Не двигаясь больше никуда. Не понимаю, в чём дело..

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

 

 

начали бежать на месте

Ну так это то самое и есть - in-рестриктор их не пускает к тебе. Ты лучше вместо указания типов рестриктору в СДК попробуй по другому: верни рестриктору тип по умолчанию "None default restrictor"(как-то так, извиняй, СДК не запущен чтоб точнее посмотреть), а затем задай этот рестриктор мобу\ам через ф-цию add_restrictions(string <out_restrictions_names>, string <in_restrictions_names>).

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

@UnLoaded, верно?

P.S.: если так - то мобы с момента спавне никуда не двигаются, живут в своём мирке, да бегают на месте.

post-22338-0-09299200-1445506468_thumb.jpg

post-22338-0-72516500-1445506475_thumb.jpg

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

@Lagos, всё правильно, так и будет.

Если нужно конкретным нпс/монстрам запретить входить в определённую зону, то либо делай как UnLoaded написал, либо в секции нпс в all.spawn укажи этот рестриктор, либо в функции загрузки логики гулага в скриптах.

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

naxac.gif

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

Я вот не могу понять.

У меня ситуация такая: нпс в оффлайне, я на этот момент знаю его ид, можно ли без вывода нпс в онлайн, получить из net_packet по ид нпс, его userdata

 

Или же мне придётся нпс выводить в онлайн, получить userdata через npc =level.object_by_id(id) и потом отправить его снова в оффлайн

 

Важно то, чтобы я получил userdata нпс в переменную "npc", передал "npc" в другую переменную, и там смог использовать npc:id()

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

@Lagos

По первому скрину: у тебя один и тот же рестриктор задан и как in и как out. Так нельзя - получается, что мобу запрещено одновременно и входить в него и выходить из него же. Оставь что-то одно.

 

@FonSwong

Я чет не пойму тебя: ты знаешь ID непися. Затем пытаешься получить по этому ID'у юзердату, чтоб затем из нее опять получить ID. А сразу этот ID использовать в чем проблема ? Или я не так понял, что-же тебе надобно ?

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

@Lagos, это по меньшей мере странно, кури справочник, потом что-нибудь из практики типа динамических аномалий, но скриптами все-же не советую, вроде где-то уже писал.

 

 

да бегают на месте.
неудивительно, ты логику своих действий проанализируй.

@FonSwong, изучи методы клиентских и серверных объектов, у серверного объекта тоже можно получить айди, в нет-пакете клиентской части разумеется нет.

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

Уже и не знаю как объяснить, но всё же попытаюсь, ибо самому интересно:D

 

 

проводится сбор npc:id() нпс подходящих под условие и записываются ид в tbl_sos, после сбора запускается функция

function start_sos()

выбирается рандомный ид

local npc_id=tbl_sos[math.random(#tbl_sos)]

получаем юзер дату

npc= --получить как серверный объект или клиентский? ведь нпс может быть оффлайн!

делаем нпс компаньоном

dialogs.companion_start_folowing(npc,db.actor

запуск таймера

ogse.g_start_timer("sms_sos_stop", 0,0,1)

end

 

В фунцию companion_start_folowing передаётся юзердата через "npc"

Вот начало этой функции:

function companion_start_folowing(npc, actor)

local st = db.storage[npc:id()]

Уже тут ошибка- попытка получить через npc:id() ид нпс у серверного объекта

 

 

 

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

Однако, оригинальный подход - делать компаньоном непися, который может быть и офф-лайн ! Ты в курсе, что в офф-лайне логика для мобов не работает ? Да и сама строка, в используемой тобой ф-ции

local st = db.storage[npc:id()]

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

 

ID от серверного объекта получают так: ser_obj.id

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

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

 

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

 

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

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

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

Добрый вечер. Скажите пожалуйста: можно ли заспавнить бармена раненым, чтобы он лежал и просил аптечку при заходе в бар?

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

NonGrande,

а у бармена есть вообще анимация "ранение"!? Изначально от этого нужно отталкиваться..., а затем уже спавнить его...

ed_rez.gif

c1f11b67ff360413e81b4e4dcf21eb41.jpg

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

 

 

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

Ни чего не понял ! Что ты вообще пытаешься сделать ? Пытаюсь по-ванговать: есть НПС-напарник, актер едет в машине и в это время происходит исключение НПСа из напарников ? И проблема в том, что при нахождении актера в машине, все его напарники находятся в офф-лайне ?

 

 

 

можно ли заспавнить бармена раненым

Проверь...

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

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

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

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

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

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

Войти

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

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

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