UnLoaded 313 Опубликовано 14 Января 2015 пстора нетуА разве так сложно добавить ? Поделиться этим сообщением Ссылка на сообщение
UnLoaded 313 Опубликовано 9 Февраля 2015 (изменено) при ранге ГГ скажем, более 5000, в окне разговора показывать его не мастером, а скажем, легендой? Позволю себе теоретическое предположение: если значение 5000 - это максимальная цифирь, выше которой движок или будет игнорировать или вытворять глупости, то можно в конфиге, где расписаны диапазоны, указать ...-4999 - мастер, 4999-5000 - легенда. Такой, типа финт ушами, вполне может прокатить... Изменено 9 Февраля 2015 пользователем UnLoaded Поделиться этим сообщением Ссылка на сообщение
UnLoaded 313 Опубликовано 20 Февраля 2015 1.Насколько вредно для движка использовать(выдавать актору/забирать) например 10-20 инфопорций каждые 5 минут? Движок выдержит? 2. Какие есть аналоги инфопорций , или как можна их имитировать? Заранее спасибо.Попытаюсь задать тебе вопрос чуток с другой позиции: а может тебе стоит рассказать участникам форума, какова цель выдавать\забирать 10-20 и-п каждые 5 мин. Т.е. когда присутствующие поймут цель этого действа - возможно они смогут предложить тебе более правильную альтернативу? Как ты думаешь? Поделиться этим сообщением Ссылка на сообщение
UnLoaded 313 Опубликовано 20 Февраля 2015 Инфо-порция однако - это сохраняемая переменная. Если нужно значение сохранять, то можно использовать системы хранения, коих уже немало (хотя бы АМК). Хм, а с каких это пор уже требуется самостоятельно сохранять "выданные"(активные) инфо-порции ? Движок уже этим не занимается ? И правильно ли использовать в этом случае se_stor ?Зачем, если "выданную"(активную) и-п движок сохранит сам и однозначно ? Или я отстал от жизни и уже чего-то не понимаю в современной системе обработки и-п ? Поделиться этим сообщением Ссылка на сообщение
UnLoaded 313 Опубликовано 21 Февраля 2015 Мы говорим о аналоге инфопорций - логических переменных , которые нужно сохранять . Извиняюсь не понял действительно, разговор вроде про и-п был сначала. А вообще-то, если нужна единичная переменная под хранение булевого(true\false) значения - то можно использовать под это и-п, тем самым не заморачиваясь на самостоятельное сохранение\загрузку ее при сэйв\лоад. Поделиться этим сообщением Ссылка на сообщение
UnLoaded 313 Опубликовано 1 Марта 2015 при проходе по строке как себя ведет с цифрами Так-же, как и с остальными строковыми символами - буква и цифра в строке равнозначны. Поделиться этим сообщением Ссылка на сообщение
UnLoaded 313 Опубликовано 26 Марта 2015 как сделать так, чтобы определённый НПС не использовал фонарик даже ночью?Может лучше глянуть в сторону enable_attachable_item - правда будет запрет и на батоны, гитары, водку. Но я думаю что навряд-ли непись, которому запрещено пользоваться фонариком, будет сидеть у костра в кампе. Поделиться этим сообщением Ссылка на сообщение
UnLoaded 313 Опубликовано 9 Апреля 2015 (изменено) как убрать закрытие диалогового окна кнопкой "Esc"? Решил поковыряться с этим вопросом, и вот чего наковырял. Доступ к окну диалога(разговора - так точнее ?) получить можно, хотя и коряво: <info_portion id="ui_talk"> <action>какой-то_скрипт.On_talk</action> <disable>ui_talk_hide</disable> </info_portion> <info_portion id="ui_talk_hide"> <action>какой-то_скрипт.On_talk_hide</action> <disable>ui_talk</disable> </info_portion> В этот самый какой-то_скрипт пропишем: talk_wnd = nil function On_talk() talk_wnd = CUIAddTalkControl() level.start_stop_menu(talk_wnd, true) end function On_talk_hide() talk_wnd = nil end ---------------- скриптовый класс для окна разговора -------------------------------- class "CUIAddTalkControl" (CUIScriptWnd) function CUIAddTalkControl:__init() super() self:InitControls() end function CUIAddTalkControl:InitControls() ----- Положение и размеры окна ----- self:Init(0,0,1024,768) end function CUIAddTalkControl:__finalize() end ------------------ обработка нажатий клавы ------------------ function CUIAddTalkControl:OnKeyboard(dik, keyboard_action) CUIScriptWnd.OnKeyboard(self,dik,keyboard_action) if keyboard_action == ui_events.WINDOW_KEY_PRESSED then local bind = dik_to_bind(dik) ----- перехватываем Esc и Действие ----- if dik == DIK_keys.DIK_ESCAPE then local text = "нажали - ESC" news_manager.send_tip(db.actor, text, nil, nil, 30000) return true elseif bind == key_bindings.kUSE then local text = "нажали - Действие" news_manager.send_tip(db.actor, text, nil, nil, 30000) return true end end return false end Запускаем игру, начинаем разговор с кем-то и переключаемся кнопкой "Торговать" в торговлю и сразу возвращаемся - и сработает On_talk(). Следовательно наше скрипт-окно будет прилеплено к диалоговому и нажатие "Esc" и назначенной в настройках кнопки "Действие" будут перехватываться. Вот только толку с этого вроде как ноль: сам способ через одно место и кроме перехвата ввода с клавы полностью отрубается ввод с мыша. Т.е. закрыть диалог с неписем с клавиатуры уже не получится, но и продолжить его до какой-нить фразы с <action>dialogs.break_dialog</action> чтоб его завершить то-же не получится. Вроде как тупик ? Изменено 9 Апреля 2015 пользователем UnLoaded Поделиться этим сообщением Ссылка на сообщение
UnLoaded 313 Опубликовано 9 Апреля 2015 (изменено) разбиндить экшены use и quit, а на последней фразе диалога забиндить обратно. А можно примерчик собственно как разбиндить\забиндить ? Изменено 9 Апреля 2015 пользователем UnLoaded Поделиться этим сообщением Ссылка на сообщение
UnLoaded 313 Опубликовано 9 Апреля 2015 Ага, разбиндить получается, но вот обратно - чтоб снова назначить указанную в настройках клавишу для "Действия", надо ее перед разбиндиванием получить и сохранить. Попробовал con:get_string("use") - не прокатывает, остальные get_... вообще к вылету приводят... Поделиться этим сообщением Ссылка на сообщение
UnLoaded 313 Опубликовано 9 Апреля 2015 (изменено) могут быть забиндены на другие кнопки? Однозначно, у меня всегда "use" переназначено так, как мне нравится... @Сталкер-Стрелок Однако толку мало от предложенного Вами - надо сразу указать то, что может быть переназначено. Вопрос остается открытым. Изменено 9 Апреля 2015 пользователем UnLoaded 1 Поделиться этим сообщением Ссылка на сообщение
UnLoaded 313 Опубликовано 9 Апреля 2015 Можно еще проверить, что возвращает get_console():execute("bind quit") В "Справочнике ..." - void execute(string <команда консоли>); // выполнить команду консоли Значит ничего не возвращает, плюс назначит на "quit" пустое значение(уже проверял). по идее можно грузить через ini_file Так ведь структура не ltx-кая, навряд-ли прочтет что-то. Да и все равно, даже если все срастется - нормально будет работать тока на правленом движке, где восстановлена выдача инфо-порций окна диалогов по нормальному. Так, что для AndrewMor и J.A.A: похоже на исходном движке ТЧ бессмысленная затея, так что смотреть в сторону правленного движка. Поделиться этим сообщением Ссылка на сообщение
UnLoaded 313 Опубликовано 9 Апреля 2015 Почему, unbind можно еще делать в коллбеке на юзе нпц Гм, неплохо бы, вот только есть ли такой ? Глянул сейчас в константы C++ class callback в lua_help, не вижу какой из них ? Или я не туда\не о том ? Поделиться этим сообщением Ссылка на сообщение
UnLoaded 313 Опубликовано 31 Мая 2015 (изменено) спавню объект, а вот как на все это дела повещать метку не знаю Ф-ции пространства имен level: level.map_add_object_spot_ser(...) level.map_add_object_spot(...) Подробности - как всегда в "Справочнике по ф-циям и классам"... Изменено 31 Мая 2015 пользователем UnLoaded Поделиться этим сообщением Ссылка на сообщение
UnLoaded 313 Опубликовано 2 Июня 2015 функцию для проверки расстояния от камеры до точки куда целится гг. Дальномер лазерный ? Поищи, где-то это обсуждалось, и вроде даже отдельной темой. Поделиться этим сообщением Ссылка на сообщение
UnLoaded 313 Опубликовано 8 Июня 2015 при заходе на локацию Янтарь, происходит спавн живности в лабе х-16 один раз. Помогите зациклить скрипт. Вообще-то, для этих целей - "зациклить спавн", ПЫСы придумали респавнеры... Пример скрипта - se_respawn.script. Смотрим в скрипт(включая его разновидности в различных модах), читаем на вики описание его работы(для базовой версии), рещаем свои проблемы\запросы... Поделиться этим сообщением Ссылка на сообщение
UnLoaded 313 Опубликовано 8 Июня 2015 таким образом при каждом заходе будет спавн. А еще при каждой загрузке сэйва... а, просто, чтобы спавн происходил каждый раз при посещении локации и живность при каждой загрузке добавлялась к уже существующей.Там реально несколько строк в коде нужно прописать - прошу подсказать опять же конкретно - где и что прописать/добавить. Это смотря кто как понимает "циклический" спавн: не буду пальцем тыкать, но есть приличное кол-во (говно)модов в которых происходит спавн по запрошенному Вами выше варианту. Т.е. зашел на локу - заспавнилась какая-то тварь, и если просто зайти\выйти 5 раз, будем иметь 5 этих тварей. Вы серьезно считаете это правильным вариантом спавна ? Поделиться этим сообщением Ссылка на сообщение
UnLoaded 313 Опубликовано 9 Июня 2015 Но мои скромные познания отнюдь не настолько обширны, чтобы использовать такой способ спавна. Тогда, видимо, Вам стоит переместиться из темы "Скриптование" в тему "Ищу файлы\моды\аддоны" ? Правильно изложить свою просьбу, и вполне реально получить искомое... P.S. Без обид, но если Вы задали вопрос в теме "Скриптование", то предполагается что Вы решили хоть как-то его освоить. Поделиться этим сообщением Ссылка на сообщение
UnLoaded 313 Опубликовано 16 Июня 2015 @Shkiper2012 Ф-ция set_condition() - это метод класса game_object, т.е. клиентских объектов в игре. А ты пытаешься применять ее к серверным объектам, alife():create и alife():object возвращают серверные объекты. Получи клиентский объект, допустим так: level.object_by_id(se_obj.id) и уже ему устанавливай состояние. 1 Поделиться этим сообщением Ссылка на сообщение
UnLoaded 313 Опубликовано 23 Июня 2015 (изменено) необходимо получить доступ к полю my_field биндера. local obj_bind = obj:binded_object() -- здесь obj - клиентский объект if obj_bind then .... obj_bind.my_field -- получаем нужные данные -- .... obj_bind:get_params() -- вариант с ф-цией -- end Точно не помню, но если напрямую не будет доступа к my_field, то добавь в нужном биндере ф-цию получения параметров: function my_binder:get_params() local ret_value = self.my_field return ret_value end Изменено 23 Июня 2015 пользователем UnLoaded 1 Поделиться этим сообщением Ссылка на сообщение