[SoC] Ковыряемся в файлах - Страница 736 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

[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

 

 

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

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

@FonSwong, в самой функции плеера есть возможность поставить фриз на начало. смотри CSoundSingle структуру.

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

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

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

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

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

Войти

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

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

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