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

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

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

@FonSwong,  тебе вероятно для OGSE нужно? Там там есть

function relation_registry.get_goodwill(who_id, to_whom_id)
	return GetGoodwill(who_id, to_whom_id)
end

function relation_registry.set_goodwill(who_id, to_whom_id, goodwill)
	ASSERT(db.actor, "relation_registry.set_goodwill: cannot call function")
	return db.actor:set_goodwill_ex(who_id, to_whom_id, goodwill)
end

function relation_registry.change_goodwill(who_id, to_whom_id, goodwill_change)
	ASSERT(db.actor, "relation_registry.change_goodwill: cannot call function")
	return db.actor:change_goodwill_ex(who_id, to_whom_id, goodwill_change)
end

Посмотри в скриптах примеры использования.

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

@dsh, Эмм, а откуда цифры эти берутся? Написал:

log1(relation_registry.get_goodwill(1705,0)) 
Это Толик, вернуло 5000
выстрелом ранил, опять вызвал функцию, получил 00 зелёным цветом
Изменено пользователем FonSwong
Ссылка на комментарий

 

 

а откуда цифры эти берутся?

 

Из движка я полагаю. Собственно вот: http://www.amk-team.ru/forum/topic/10339-redaktirovanie-dvizhka-x-ray/page-47#entry910319

Под спойлером Рекомендации/relation_registry

 

 

 

вызвал функцию, получил 00 зелёным цветом

 

Что такое 00 зеленым цветом?

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

@dsh, ранил Толика, он стал врагом, запустил функцию 

log1(relation_registry.get_goodwill(1705,0))

В лог вывело "00" зелёным цветом

-------

Дальше взял ид патрульного военных

запустил:

log1(relation_registry.get_goodwill(825,0))

вывело в лог "0"

Ранил его, запустил снова, вывело в лог "00" зелёным цветом

Ссылка на комментарий
@FonSwong, ну шут его знает. Что знал - подсказал. Поэкспериментировать у меня сейчас нет возможности.
Ссылка на комментарий

Разобрался, благодарю:)

В консоли, когда выводилось "-5000" из-за "-" съедалась "5", и выводилось зелёным цветом "000", но в логе всё норм :)

Если написать:

log1(" "..relation_registry.set_goodwill(1705,0,-5000)) то "-" не первый, и всё хорошо видно

Читает, изменяет, и сохраняет репутацию правильно.

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

Доброго времени суток. Столкунулся с следующей довольно странной проблемой.

 

Заспавнил рестриктор (речь идет в рамках ТЧ) с такой вот логикой:

 

[7682]
; cse_abstract properties
section_name = space_restrictor
name = episode_msg
position = -106.76899719238,-16.4660987854,-82.759735107422
direction = -0.000350999995134771,-0.0109850000590086,0.0319279991090298
id = 65535
version = 118
script_version = 6
spawn_id = 2803

; cse_alife_object properties
game_vertex_id = 781
level_vertex_id = 780
object_flags = 0xffffff3e
custom_data = <

[logic]
active = sr_idle@one

[sr_idle@one]
on_actor_inside = nil %=aground_msg1%
END

; cse_shape properties
shapes = shape0
shape0:type = sphere
shape0:offset = 1,1,1
shape0:radius = 50

; cse_alife_space_restrictor properties
restrictor_type = 3


 

Как видно, при попадании в него должна вызываться ф-я, я и её приведу

 

 

function aground_msg1(actor, npc)
news_manager.send_tip(db.actor, "111111 ", 0, "ecolog", 10000)
end

 

 

 

Соответственно она прописана в xr_efeects.script

 

Но проблема в том, что ничего не происходит. Я грешил на радиус сферы рестриктора,сделал его больше - не помогло. Попробовал ради интереса такую логику

 

 

[logic]
active = sr_idle

[sr_idle]
on_timer = 100| %=start_small_reject% sr_idle2

[sr_idle2]
on_timer = 100| %=start_small_reject% sr_idle

 

 

 

Всё работает, (значит рестриктор по сути есть =)), но проблема то в другом, почему не регистрируеться попадание ГГ в него?

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

2 Winsor:

Про "чудеса дедукции" в данном случае замечено вполне уместно.

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

 

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

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

@Dennis_Chikin, я согласен, что куча ссылок. Вопрос в том и был - как корректно удалить нпс из онлайна? пробовал npc:kill(npc) а потом release(npc), просто release. пытался переводить в оффлайн, но судя по всему - это все происходило в рамках одного апдейта и поэтому вылазят странные глюки.

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

Ребят, как отловить момент активации артефакта? Есть ли какой то другой способ, кроме как смотреть какой объект в руках и ловить его выпадение коллбеком? К примеру, возможно ли как то отловить отыгрывание анимации активации и время её завершения?

... А наше дело маленькое - с ружьём да по болотам. (с)

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

Доброго времени суток. Небольшой вопрос, касательно скриптов(в рамках ТЧ)

 

Требуется между двумя сообщениями на ПДА ГГ сделать интервал, в 5 сек. реального времени, допустим.

Возможно, в LUA есть аналог sleep(); из C++ , сам просто не знаю.

Вот что теоретически должно получаться.

 

 

 

-- вызвали функцию
function aground_msg1(actor, npc)
-получаем мэссдж
news_manager.send_tip(db.actor, "сообщение 1", nil, nil, 20000)
--- тут надо подождать 5 сек,затем снова передать управление функции
news_manager.send_tip(db.actor, "сообщение 2", nil, nil, 20000)
end

 

 

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

@CRAZY__STALKER, попробуй использовать функцию  level.add_call . К примеру выдал первое сообщение, затем вызвал функцию-обработчик с проверкой на время. Условие по времени сработало - функция сама выдаст второе сообщение и вырубится. Главное правильно её написать.

 

 

нашёл вроде бы ответ на свой вопрос, мало ли кому надо: http://www.amk-team.ru/forum/topic/10538-x-ray-extensions/page-45#entry953293 .

... А наше дело маленькое - с ружьём да по болотам. (с)

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

@CRAZY__STALKER,

function aground_msg1(actor, npc)
-получаем мэссдж
news_manager.send_tip(db.actor, "сообщение 1", nil, nil, 20000)
--- тут надо подождать 5 сек,затем снова передать управление функции
news_manager.send_tip(db.actor, "сообщение 2", 5, nil, 20000)
end

Третий параметр - время задержки в секундах.

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

 

 

Требуется между двумя сообщениями на ПДА ГГ сделать интервал, в 5 сек. реального времен

Все просто(добавлю к сообщению Marafon6540): из одной ф-ции выдаешь подряд оба сообщения, только второе с задержкой в нужное кол-во секунд. Где ее указывать - уже подсказано...

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

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

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

 

 

Третий параметр - время задержки в секундах.

 

И действительно

 

function send_tip(actor, news_id, timeout, sender, showtime, sender_id)

...

if timeout == nil then timeout = 0 end

...

 

Сам тайм-аут по дефолту 0, что верно. 

Прописал 5, и действительно, всё работает. Всем большое спасибо.

Но есть еще вопрос - есть ли у кого нибудь небольшой сборник типовых ф-ций для диалогов(проверки на предмет,их выдача,удаление item-a из рюкзака,изм. отношение НПЦ к ГГ, и прочее,прочее...)? В свое время в одном моде(winter of dead quantum leap) нашел такой справочник от amik-а вроде, но я сменил ЖД давно. Был бы очень признателен за данную находку, т.к модификация в активной стадии разработки, а под рукой удобного справочника нет. И да, знаю что есть stalker inside wiki или вопросница на форуме, но донимать людей по каждой проблеме не хочется.

 


@Struck, несохранение переменной , в моем случае, роли не играет никакой, но все равно спасибо за подробный монолог о векторах и переменных фриза :D

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

@Marafon6540, именно оно,большое спасибо ;)

Добавлено  HellRatz,

Дабы не засорять тему/ы, "Спасибо" лучше выражать в посте того, кого хочется поблагодарить, там есть кнопка 'Рукопожатие'. Это так, на заметку :)

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

 

 

из одной ф-ции выдаешь подряд оба сообщения
, кстати когда из одной функции вызываешь две новости, у первой новости проигрывается звук а у второй нет, если поставить второй новости другой звук, то будет проигрываться от обеих новостей звук.

Вопрос: как сделать так чтобы одинаковый звук проигрывался из обеих новостей?

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

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

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

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

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

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

Войти

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

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

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

AMK-Team.ru

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