Модостроение (вопросы и ответы)
Модераторы: by.@ztek, Постигший истину, Модераторы
Re: Модостроение (вопросы и ответы)
Я дам ссылку на урок в 2-х частях от автора мода Mayhem(дополнение для мода LU(litcube Universe)) . В нем он подробно показывает, как написать скрипт захвата сектора игроком с учетом всех тонкостей. Урок на англ. ссылка: Learn To Program With X3 (Part 1)
- Lift2011
- Newbie
- Сообщений: 30
- Зарегистрирован: 12 июл 2011, 15:33
- DSP:
2
- Благодарил (а): 4 раз.
- Поблагодарили: 1 раз.
Re: Модостроение (вопросы и ответы)
Lift2011 писал(а):Я дам ссылку на урок в 2-х частях от автора мода Mayhem(дополнение для мода LU(litcube Universe)) . В нем он подробно показывает, как написать скрипт захвата сектора игроком с учетом всех тонкостей. Урок на англ. ссылка: Learn To Program With X3 (Part 1)
Когда у тебя аудирование никак




- GoodLF13
- Newbie
- Сообщений: 7
- Зарегистрирован: 22 апр 2017, 13:55
- DSP:
0
- Благодарил (а): 0 раз.
- Поблагодарили: 0 раз.
Re: Модостроение (вопросы и ответы)
GoodLF13 писал(а):Когда у тебя аудирование никак
"Ты по русски чукча скажи, куда русские поплыли ?..."
Помнишь этот анекдот, вот я и спрашиваю, что конкретно не устроило в моей ссылке ? Там же видео, он код скриптов показывает. Мне показалось, что это то, что тебя интересовало, причем в подробном изложении. Плюс он там еще показывает, как писать плагины искусственной жизни (AI life plugin), как привязывать горячие клавиши к скриптам и еще, как в скриптах связывать текстовые ресурсы(кодовые страницы) с телом самого скрипта. Целый комплексный урок, единственное про сигналы там почти ничего нет. Только пример с таймером можно разглядеть.
Добавлено спустя 8 минут 50 секунд:
Вот у меня вопрос к профи: как "перехватить" нажатие кнопок в каком то меню, например пользователь покупает корабль. Как перехватить своим скриптом момент нажатия кнопки покупки на станции ? Есть идея использовать его чтобы не изменяя исходной игры сделать для игрока на его станциях покупку кораблей только за ресурсы без денег. Если еще апгрейды кораблей подвязать к чепухе какой то( кристаллы древних или еще какие добываемые в космосе) , то можно получить то, о чем я в теме ТОТТ писал. Возможность развития и постройки без денег, только ресурсы. Как вам такой вариант ?
- Lift2011
- Newbie
- Сообщений: 30
- Зарегистрирован: 12 июл 2011, 15:33
- DSP:
2
- Благодарил (а): 4 раз.
- Поблагодарили: 1 раз.
Re: Модостроение (вопросы и ответы)
Lift2011 писал(а):Там же видео, он код скриптов показывает.
Реально, шляпа. Для новичков непонятно вообще.

Lift2011 писал(а):Вот у меня вопрос к профи: как "перехватить" нажатие кнопок в каком то меню, например пользователь покупает корабль.
Попробуй написать скрипт, где есть "твои" меню. Вот и отследишь.
п.с. скрипт пишешь, который отслеживает собственность игрока, если +1 корабль стало - то то-то делать. это так, навскидку.

п.п.с. тут по-моему проще (архив там почитать). viewtopic.php?f=4&t=12&start=340#p36922
Совершенству нет предела...
-
by.@ztek - Admin
- Сообщений: 1587
- Изображения: 2
- Зарегистрирован: 06 фев 2011, 00:24
- DSP:
207
- Откуда: Минск, Беларусь
- Благодарил (а): 231 раз.
- Поблагодарили: 689 раз.
Re: Модостроение (вопросы и ответы)
by.@ztek писал(а):Попробуй написать скрипт, где есть "твои" меню. Вот и отследишь.
Когда все свое и меню и скрипт, то в целом понятно.
by.@ztek писал(а):скрипт пишешь, который отслеживает собственность игрока, если +1 корабль стало - то то-то делать
Вот тут не понятно: до момента совершения покупки до этого момента в коде не дойти. А я хочу "перехватить событие", когда пользователь уже нажал на кнопку покупки и дальше начинается код связанный с ее стандартным меню. Мне хотелось бы "добавиться" в качестве следующего обработчика этого события. По типу, как в современных языках программирования(например, в C# подписка на обработчик события нажатия кнопки путем добавления в очередь обработчиков нового делегата). Основная идея это добавить функциональность без переписывания и изменения исходного содержимого. Тогда можно реализовать это в виде плагина в меню AI life. и в любой момент включать или отключать ее в игре без никаких дополнительных манипуляций. Боюсь, я как то не так объясняю чтобы мне хотелось узнать или все-таки понятно ?
Уточню так:
1. Игрок нажал в стандартном меню станции кнопку покупки корабля.
2. Обычно списываются деньги с его счета( с предварительными проверками)
3. Теперь идет регистрация новой собственности игрока (+1 корабль, к примеру)
Я же хочу вклиниться в код в п.1 и самостоятельно выполнить пункты с 2 по 3.
Так, надеюсь, понятней ?
P.S. by.@ztek, спасибо за интерес к моему вопросу и попытку ответа на него.
- Lift2011
- Newbie
- Сообщений: 30
- Зарегистрирован: 12 июл 2011, 15:33
- DSP:
2
- Благодарил (а): 4 раз.
- Поблагодарили: 1 раз.
Re: Модостроение (вопросы и ответы)
Lift2011 писал(а):Вот тут не понятно: до момента совершения покупки до этого момента в коде не дойти. А я хочу "перехватить событие", когда пользователь уже нажал на кнопку покупки и дальше начинается код связанный с ее стандартным меню.
Игрок покупает корабль ему возвращают деньги и забирают ресурсы, если ресурсов не хватает возвращают деньги и уничтожают корабль
Lift2011 писал(а):как в современных языках программирования
По моему это не так делается
Lift2011 писал(а):Я же хочу вклиниться в код в п.1 и самостоятельно выполнить пункты с 2 по 3
На много проще написать скрипт
Игрок покупает корабль ему возвращают деньги и забирают ресурсы, если ресурсов не хватает возвращают деньги и уничтожают корабль
Не нужно копаться в много километровом коде проще сделать дополнительное условие. Да и если ты изменишь код как ты будешь его людям давать?
-
Gvozdoyatel - Pilot
- Сообщений: 192
- Зарегистрирован: 31 май 2016, 11:01
- DSP:
4
- Благодарил (а): 10 раз.
- Поблагодарили: 18 раз.
Re: Модостроение (вопросы и ответы)
Gvozdoyatel,
1.
Алгоритм я тоже приблизительно такой вижу. Разница между моим вариантом и твоим в том, что у тебя деньги изначально должны быть на счету игрока(чтобы что то купить). В моем варианте проверяются только ресурсы. Если все в порядке на счет игрока заносится требуемая сумма и передается управление стандартному скрипту-покупке. Он вычитает эту сумму из счета игрока и передает ему товар. Как видно: 1) в таком варианте у игрока вообще может быть счет 0. 2) не нарушается стандартная процедура покупки и нет вмешательства в стандартные скрипты игры. 3) все манипуляции выполняются добавочным скриптом(ами).
2.
Я спорить не буду, в С# это так. В Delphi XE... это почти так(там делегатов нет, там указатели используются на ф-ии). В VC++ через карту сообщений и указатели. В Python ближе к здешнему скриптовому механизму(внутри интерпретатора все-равно так же по сути через указатели). В QT уже через слоты и сигналы(а внутри все теже указатели на ф-ии).
3.
В некотором смысле это я и пытаюсь сделать с помощью инструментария этой игры и подсказок более опытных скриптеров.
4.
Вот тут я не понял: я не горю желанием строчить километровые коды(хотя и понимаю, что иногда и это необходимость привет конструкции GO TO
.). Я уже много раз писал, что хотел бы такой вариант, где стандартный код не нужно менять, а возможности добавлять только дополнительными скриптами. В этом по сути все мои последнии вопросы к знатокам.
1.
Игрок покупает корабль ему возвращают деньги и забирают ресурсы, если ресурсов не хватает возвращают деньги и уничтожают корабль
Алгоритм я тоже приблизительно такой вижу. Разница между моим вариантом и твоим в том, что у тебя деньги изначально должны быть на счету игрока(чтобы что то купить). В моем варианте проверяются только ресурсы. Если все в порядке на счет игрока заносится требуемая сумма и передается управление стандартному скрипту-покупке. Он вычитает эту сумму из счета игрока и передает ему товар. Как видно: 1) в таком варианте у игрока вообще может быть счет 0. 2) не нарушается стандартная процедура покупки и нет вмешательства в стандартные скрипты игры. 3) все манипуляции выполняются добавочным скриптом(ами).
2.
По моему это не так делается
Я спорить не буду, в С# это так. В Delphi XE... это почти так(там делегатов нет, там указатели используются на ф-ии). В VC++ через карту сообщений и указатели. В Python ближе к здешнему скриптовому механизму(внутри интерпретатора все-равно так же по сути через указатели). В QT уже через слоты и сигналы(а внутри все теже указатели на ф-ии).
3.
На много проще написать скрипт
В некотором смысле это я и пытаюсь сделать с помощью инструментария этой игры и подсказок более опытных скриптеров.
4.
Не нужно копаться в много километровом коде проще сделать дополнительное условие. Да и если ты изменишь код как ты будешь его людям давать?
Вот тут я не понял: я не горю желанием строчить километровые коды(хотя и понимаю, что иногда и это необходимость привет конструкции GO TO

- Lift2011
- Newbie
- Сообщений: 30
- Зарегистрирован: 12 июл 2011, 15:33
- DSP:
2
- Благодарил (а): 4 раз.
- Поблагодарили: 1 раз.
Re: Модостроение (вопросы и ответы)
Lift2011 писал(а):В некотором смысле это я и пытаюсь сделать с помощью инструментария этой игры и подсказок более опытных скриптеров
Ну вообще вот
Lift2011 писал(а):Алгоритм я тоже приблизительно такой вижу. Разница между моим вариантом и твоим в том, что у тебя деньги изначально должны быть на счету игрока(чтобы что то купить).
Если денег не хватает вычислить необходимое кол во добавить его а потом отнять если деньги переполняют лимит, то сначала отнять потом вернуть
Lift2011 писал(а):Я уже много раз писал, что хотел бы такой вариант, где стандартный код не нужно менять, а возможности добавлять только дополнительными скриптами. В этом по сути все мои последние вопросы к знатокам.
Не могу назвать себя знатоком, но и новичком тоже, но помогу чем смогу.
-
Gvozdoyatel - Pilot
- Сообщений: 192
- Зарегистрирован: 31 май 2016, 11:01
- DSP:
4
- Благодарил (а): 10 раз.
- Поблагодарили: 18 раз.
Re: Модостроение (вопросы и ответы)
Gvozdoyatel писал(а):Если денег не хватает вычислить необходимое кол во добавить его
Вот тогда ты и приходишь к моему варианту. А он требует умения "вклиниться" в стандартный скрипт покупки товара на станции(когда пользователь жмет кнопку "ОК"), а как туда подцепиться я пока в ответах не увидел. Похоже одна надежда на то, что тов. by.@ztek найдет время и подскажет, как это провернуть. У меня есть еще надежда, что кто то кроме него(например, тов. DNA78) сможет прояснить это(но тут у меня сомнения). Я начинаю подозревать, что это вообще не реализовать в рамках стандартной скриптовой системы. Иначе зачем тогда у многих скриптов и модов способ установки основан на перекрывании стандартных файлов(т.н. метод фальш-патча). Если бы была возможность добавлять к имеющимся(а не заменять) скриптам новые, то и фальш-патч становился бы не актуальным(тут я не уверен).
- Lift2011
- Newbie
- Сообщений: 30
- Зарегистрирован: 12 июл 2011, 15:33
- DSP:
2
- Благодарил (а): 4 раз.
- Поблагодарили: 1 раз.
Re: Модостроение (вопросы и ответы)
Не, фальш-патч это совсем другое.
Огорчу.
Часть в ехе, часть в обже. Ехе договорились не трогать, ибо нарушаются права. Обж доступен.
Добавлено спустя 3 минуты 52 секунды:
Рассмешил. Не, всё нормально, всё правильно.
Добавлено спустя 51 минуту 47 секунд:
За знание делфи и си шарпа от меня плюс в дсп.

Огорчу.
Lift2011 писал(а):Уточню так:
1. Игрок нажал в стандартном меню станции кнопку покупки корабля.
2. Обычно списываются деньги с его счета( с предварительными проверками)
3. Теперь идет регистрация новой собственности игрока (+1 корабль, к примеру)
Я же хочу вклиниться в код в п.1 и самостоятельно выполнить пункты с 2 по 3.
Так, надеюсь, понятней ?
Часть в ехе, часть в обже. Ехе договорились не трогать, ибо нарушаются права. Обж доступен.
Добавлено спустя 3 минуты 52 секунды:
Lift2011 писал(а):Я спорить не буду, в С# это так. В Delphi XE...

Добавлено спустя 51 минуту 47 секунд:
За знание делфи и си шарпа от меня плюс в дсп.

Совершенству нет предела...
-
by.@ztek - Admin
- Сообщений: 1587
- Изображения: 2
- Зарегистрирован: 06 фев 2011, 00:24
- DSP:
207
- Откуда: Минск, Беларусь
- Благодарил (а): 231 раз.
- Поблагодарили: 689 раз.
Re: Модостроение (вопросы и ответы)
by.@ztek,
Я так понял(из твоего ответа выше), что в движке Х3 не имеется варианта взаимодействия с элементами интерфейса по типу добавления в очередь нового подписчика со своим скриптом(ну как то так, терминологии в этом движке не знаю). Т.е. то, что я описывал выше требует иного подхода, так ? Можешь подсказать, как обычно принято взаимодействовать с движком этой игры? Неужели только ковырять бинарник или обж(это часом не dll ?) напильником ? Выходит что то не очень тогда. Вот если бы тебе нужно было создать что то похожее, как бы ты сделал ? Мне казалось, что "привязаться" к стандартной кнопке это достаточно логично. Ведь есть же принцип не трогай то, что уже работает(не изменяй стандартные скрипты), добавляй понемногу своего к тому, что уже есть. Теперь не вижу способа, как следовать ему не нарушая его. Самое плохое, что читая информацию и всякие мануалы не вижу за что зацепиться...
Я так понял(из твоего ответа выше), что в движке Х3 не имеется варианта взаимодействия с элементами интерфейса по типу добавления в очередь нового подписчика со своим скриптом(ну как то так, терминологии в этом движке не знаю). Т.е. то, что я описывал выше требует иного подхода, так ? Можешь подсказать, как обычно принято взаимодействовать с движком этой игры? Неужели только ковырять бинарник или обж(это часом не dll ?) напильником ? Выходит что то не очень тогда. Вот если бы тебе нужно было создать что то похожее, как бы ты сделал ? Мне казалось, что "привязаться" к стандартной кнопке это достаточно логично. Ведь есть же принцип не трогай то, что уже работает(не изменяй стандартные скрипты), добавляй понемногу своего к тому, что уже есть. Теперь не вижу способа, как следовать ему не нарушая его. Самое плохое, что читая информацию и всякие мануалы не вижу за что зацепиться...
- Lift2011
- Newbie
- Сообщений: 30
- Зарегистрирован: 12 июл 2011, 15:33
- DSP:
2
- Благодарил (а): 4 раз.
- Поблагодарили: 1 раз.
Re: Модостроение (вопросы и ответы)
Lift2011 писал(а):Можешь подсказать, как обычно принято взаимодействовать с движком этой игры?
Есть Exscriptor
Lift2011 писал(а):Самое плохое, что читая информацию и всякие мануалы не вижу за что зацепиться...
В Exscriptor`е есть справа все команды которые можно использовать, всё на английском, осталось только перевести
-
Gvozdoyatel - Pilot
- Сообщений: 192
- Зарегистрирован: 31 май 2016, 11:01
- DSP:
4
- Благодарил (а): 10 раз.
- Поблагодарили: 18 раз.
Re: Модостроение (вопросы и ответы)
Gvozdoyatel,
Ну я так понял, что X-Studio это уже более совершенный инструмент, чем Exscriptor. Или нет ? Тем более на него пока не катили бочку, как на Exscriptor(что то он с командами не устраивал народ на форуме егософта)
Видимо я еще не удачно выразился, под взаимодействием предполагалось в части связки стандартного GUI( я все про ту злосчастную кнопку "OK" в консоли торговли) и своих скриптов. Когда свой GUI и свои скрипты примеры есть много где(например, чит- пак Сайкроу). А по варианту о котором я описывать пытался в своих вопросах, не попадалось мне.
Ну я так понял, что X-Studio это уже более совершенный инструмент, чем Exscriptor. Или нет ? Тем более на него пока не катили бочку, как на Exscriptor(что то он с командами не устраивал народ на форуме егософта)
Видимо я еще не удачно выразился, под взаимодействием предполагалось в части связки стандартного GUI( я все про ту злосчастную кнопку "OK" в консоли торговли) и своих скриптов. Когда свой GUI и свои скрипты примеры есть много где(например, чит- пак Сайкроу). А по варианту о котором я описывать пытался в своих вопросах, не попадалось мне.
- Lift2011
- Newbie
- Сообщений: 30
- Зарегистрирован: 12 июл 2011, 15:33
- DSP:
2
- Благодарил (а): 4 раз.
- Поблагодарили: 1 раз.
Re: Модостроение (вопросы и ответы)
Lift2011 писал(а):Ну я так понял, что X-Studio это уже более совершенный инструмент, чем Exscriptor. Или нет ? Тем более на него пока не катили бочку, как на Exscriptor(что то он с командами не устраивал народ на форуме егософта)
Видимо я еще не удачно выразился, под взаимодействием предполагалось в части связки стандартного GUI( я все про ту злосчастную кнопку "OK" в консоли торговли) и своих скриптов. Когда свой GUI и свои скрипты примеры есть много где(например, чит- пак Сайкроу). А по варианту о котором я описывать пытался в своих вопросах, не попадалось мне.
Exscriptor нормальный и свои задачи выполняет и ещё раз скажу не нужно менять саму кнопку ОК нужно менять последствия нажатия не нужно изменять игру нужно добавить действие так что бы оно работало не мешая другим я и сам хочу сделать покупку кораблей за ресы только в отдельном старте (весь сюжет на этом будет завязан) но пока что это невозможно из-за нехватки времени, как только будет время всё сделаю
-
Gvozdoyatel - Pilot
- Сообщений: 192
- Зарегистрирован: 31 май 2016, 11:01
- DSP:
4
- Благодарил (а): 10 раз.
- Поблагодарили: 18 раз.
Re: Модостроение (вопросы и ответы)
Gvozdoyatel,
я про
я про
и говорю. Я и не думал кнопку менять, я хотел "прицепиться" к последствиям ее нажатия. Вот и я изпоследствия нажатия
исхожу. Но никто еще не показал, как это сотворить. Создается впечатление, что у меня не выходит доходчиво описать свой вопрос. Для меня он кажется понятным: как "присоединиться" к обработке нажатия на стандартную кнопку "ОК" в меню покупки ? Неужели нужно лезть в обж или еще хуже в екзешник или вообще хук в глобальном окружении винды вешать ? Поясните, "на пальцах", пожалуйста. Уже сколько раз вопрос этот в различных вариациях изложить пытаюсь...не нужно изменять игру нужно добавить действие так что бы оно работало не мешая другим
- Lift2011
- Newbie
- Сообщений: 30
- Зарегистрирован: 12 июл 2011, 15:33
- DSP:
2
- Благодарил (а): 4 раз.
- Поблагодарили: 1 раз.
Re: Модостроение (вопросы и ответы)
Lift2011 писал(а):... Создается впечатление, что у меня не выходит доходчиво описать свой вопрос. Для меня он кажется понятным: как "присоединиться" к обработке нажатия на стандартную кнопку "ОК" в меню покупки ? Неужели нужно лезть в обж или еще хуже в екзешник или вообще хук в глобальном окружении винды вешать ? Поясните, "на пальцах", пожалуйста. Уже сколько раз вопрос этот в различных вариациях изложить пытаюсь...
Всё можно сделать. Наверно придется влезть в OBJ или EXE. Но есть вопрос. ЗАЧЕМ? Что-то напоминает поговорку про кота...
- XXXL
- Pilot
- Сообщений: 206
- Зарегистрирован: 08 фев 2011, 20:39
- DSP:
26
- Благодарил (а): 62 раз.
- Поблагодарили: 49 раз.
Re: Модостроение (вопросы и ответы)
Ответы намекают, что решать задачу: покупать корабли на своей верфи только за ресурсы, с привязкой к кнопке "ОК" это тупик. А можно по другому? Только мониторить в цикле появление в собственности нового корабля ? Но он же может появиться не только в следствии покупки, а например, игрок подобрал брошенный корабль. Как тогда узнать, что он именно с верфи игрока сошел ? Или на каждый корабль игрока вешать флаг-признак какой то для отслеживания причины его появления в собственности игрока ?
- Lift2011
- Newbie
- Сообщений: 30
- Зарегистрирован: 12 июл 2011, 15:33
- DSP:
2
- Благодарил (а): 4 раз.
- Поблагодарили: 1 раз.
Re: Модостроение (вопросы и ответы)
А какой стандартный скрипт обрабатывает сигнал SIGNAL_BUYWARE ? И как посылаются сигналы этого типа ? Может, сразу после получения признака окончания покупки ? И что используется в качестве такого признака ? Как игра узнает, что что то купили ? Я подозреваю, что этот сигнал и его обработка может дать решение в моем вопросе.
Еще вопрос: можно добавлять свои сигналы или они жестко зашиты в ехе ?
Еще вопрос: можно добавлять свои сигналы или они жестко зашиты в ехе ?
- Lift2011
- Newbie
- Сообщений: 30
- Зарегистрирован: 12 июл 2011, 15:33
- DSP:
2
- Благодарил (а): 4 раз.
- Поблагодарили: 1 раз.
Re: Модостроение (вопросы и ответы)
Пишешь if <сигнал> и действие которое идёт после и ставишь в цикл
-
Gvozdoyatel - Pilot
- Сообщений: 192
- Зарегистрирован: 31 май 2016, 11:01
- DSP:
4
- Благодарил (а): 10 раз.
- Поблагодарили: 18 раз.
Re: Модостроение (вопросы и ответы)
Lift2011 писал(а):Ответы намекают, что решать задачу: покупать корабли на своей верфи только за ресурсы, с привязкой к кнопке "ОК" это тупик. А можно по другому? Только мониторить в цикле появление в собственности нового корабля ? Но он же может появиться не только в следствии покупки, а например, игрок подобрал брошенный корабль. Как тогда узнать, что он именно с верфи игрока сошел ? Или на каждый корабль игрока вешать флаг-признак какой то для отслеживания причины его появления в собственности игрока ?
Я же писал ужо.


Сигналы свои можно писать, !init.ship.globalscriptmap отвечает за сигналы. Там (у себя скрипт сделать, и добавить свой сигнал) просто upgrade прописать.
п.с. Можно мои скрипты глянуть, где защита станций (когда игрок атакует станцию, там сигналы тоже обрабатываются). Вот отсюда начинается - TOTT.station.attacked.pl
Добавлено спустя 3 минуты 18 секунд:
п.п.с. Да я ленюсь просто.


Совершенству нет предела...
-
by.@ztek - Admin
- Сообщений: 1587
- Изображения: 2
- Зарегистрирован: 06 фев 2011, 00:24
- DSP:
207
- Откуда: Минск, Беларусь
- Благодарил (а): 231 раз.
- Поблагодарили: 689 раз.
Вернуться в X3: Time Of The Truth
Кто сейчас на форуме
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3