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

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


Svoboда

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

Похоже, или только первый раз срабатывают. Или - по времени. Но явно - не получится нормально отслеживать и использовать.

Выдается только в первый раз потому, что в последующие разы она уже есть у ГГ. Можно при получении инфопорции дизейблить ее, тогда она будет выдаваться и во второй раз, и в третий. Или в декларацию инфопорций прописать дизейбл остальных.
  • Нравится 1

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


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

news_manager.send_tip(db.actor, "%c[255,255,255,128]Невозможно отремонтировать оружие. Ремкомплект в плохом состоянии!", nil, nil, 3000)

 

а вот этот кошмар

По правильному строку "%c[255,255,255,128]Невозможно отремонтировать оружие. Ремкомплект в плохом состоянии!" надо вынести в text/rus/*.xml и грузить в скрипте через game.translate_string()

Или можешь просто сменить кодировку в файле скрипте с utf-8 на вин1251

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


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

Почему вылет ?

Потому что у тебя не net_dummy? :)

Ну и используешь setCallback соооовсем не по назначению.

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


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

@AndreySol,

для начала найди как вернуть именно net_cse_absract. В примере Artos`а указано m_netpk.net_cse_abstract(sobj), почему так не делаешь?

 

local pk = m_netpk.get(obj_add) -- запрос нет-пакета
Возвращает обычные нет-пакеты типа net_se_stalker или net_cse_alife_item

 

Чтобы setcallback нормально работал, у тебя в нужном классе se_*.script должен быть прописан его вызов.

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


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

но этого похоже мало - self.cb_netpk видимо нужно объявить где-то в районе se_outfit:__init() и инициализировать ? Как это сделать правильно ?

Это как раз и делает net_cse_abstract:setCallback

 

То есть логика следующая должна быть, ставишь setCallback, ждешь пока движок вызовет STATE_Write, а там уже твоя функция сработает и запишет, что надо. Ну и движок можно подтолкнуть - потасовать онлайн/оффлайн. Может быть у Artos`а все это уже есть в setCallback...

А тебе кстати нужна именно cse_abstract часть? А то если нет, то все это и не нужно.

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


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

Спавн в инвентарь онлайнового объекта в движке обрабатывается отдельным "ускоренным" образом. Итем выводится сразу же в онлайн. Поэтому запись нет-пакетов и не срабатывает.

По идее после строчки alife():create уже можно запросить клиентский объект.

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


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

Мог.

Проверить-то легко: добавь вывод в лог в начало net_spawn и после db.add_actor

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


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

@BlooderDen,

так почему ты не хочешь/не можешь сделать так:

db.actor.power = my_script_power_restore_speed * delta

Пусть движок сам обсчитывает свое движковое, тебе только остается учесть твою добавку.

  • Спасибо 1

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


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

Собственно Desertir все расписал. В "формуле" нет ничего сложного - 3-й класс: путь равен скорость помноженное на время. my_script_power_restore_speed - это просто переменная, которую можно менять в зависимости от каких-либо условий, а delta аргумент binder:update.

 

вот прямо следующей строкой и дописываем банально: db.actor.power = db.actor.power + 0.1

это будет полное восстановление выносливости за 10 секунд.

2 abramcumner: разве дельта, а не абсолютное значение ?

С дельтой можно без уродца, а простой и понятной формулой.
  • Нравится 1

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


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

Не acr, а arc. Это сам себе мод - контейнеры для артефактов, дневники контролеров и еще какие-то стимуляторы.

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

 

"И это единственно верный вариант для моделирования более мене реального поведения системы." - случайны интервалы от 20 до 70 ms, да еще их все учитывать и хранить ? Когда надо одно действие раз в n секунд ?

Ничего хранить не надо. Просто одно умножение и одно присваивание. Прямой аналог - равномерное прямолинейное движение - чтобы посчитать путь надо просто умножить скорость на прошедшее время.

 

Ландавшиц смотрит на этот пост с удивлением.

Так и есть - он непонимает, зачем его приплели :)

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


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

Попробуй посмотреть, как сделано управление кострами в последнем OGSE - там совершенно точно они прямо перед ГГ разжигались.

Там костры онлайн/оффлайн не переключаются специально, только включается/выключается аномалия.

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


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

self:AttachChild( w )

Кнопку мы после каждого нажатия перерисовываем, но как бы вроде разве недостаточно w = CUIButton(), чтобы старая удалилась ?

Это надо еще какое-то волшебное слово сказать ?

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

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


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

Правда зачем тебе сохранять условные константы мне не ясно.

Возможно за тем, что у игрока "quit" и "use" могут быть забиндены на другие кнопки?

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


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

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

У каждого игрока они могут быть свои и надо восстановить именно их, а не абстрактные. А так в движке хранятся, еще в user.ltx

 

Можно разобрать user.ltx и запомнить оттуда настройки. Вроде папка к нему в fsgame.ltx прописана - по идее можно грузить через ini_file

Можно еще проверить, что возвращает get_console():execute("bind quit")

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

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


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

плюс назначит на "quit" пустое значение(уже проверял).

Насколько я помню, если в консоли набрать "bind quit", то вернется забинденная клавиша.

 

Так ведь структура не ltx-кая, навряд-ли прочтет что-то.

Читать по строке и искать bind quit.

 

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

Почему, unbind можно еще делать в коллбеке на юзе нпц, а обратный бинд в функции на выходе из диалога.

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


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

,

так на какой строчке биндер вешается?

 

Может у тебя в биндере дальше переменная s используется? :)

  • Согласен 1

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


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

Причем именно на апдейте надо это делать. При единичном вызове все нормально работает почему-то.

Проверь перед зависанием вызывался Add или Get.

 

И что будет, если вариант 2 переписать в виде:

local s = get_hud():AddCustomStatic("static", true)
s:wnd():SetText("text")

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


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

P.S. Таймеры - не нужны ! ™ На самом деле тот же actor:give_game_news() задержку сам умеет, без всяких таймеров. Так что здесь осталось только по тому, что переносилось когда-то незадумываясь над смыслом переносимого.

А give_game_news() с задержкой переживает сейв/лоад? А то так смс "доходить" не будут :)

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


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

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