Модостроение (вопросы и ответы)

Модераторы: by.@ztek, Постигший истину, Модераторы

Re: Модостроение (вопросы и ответы)

Сообщение Lift2011 » 28 апр 2017, 16:37

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

Re: Модостроение (вопросы и ответы)

Сообщение GoodLF13 » 28 апр 2017, 20:22

Lift2011 писал(а):Я дам ссылку на урок в 2-х частях от автора мода Mayhem(дополнение для мода LU(litcube Universe)) . В нем он подробно показывает, как написать скрипт захвата сектора игроком с учетом всех тонкостей. Урок на англ. ссылка: Learn To Program With X3 (Part 1)

Когда у тебя аудирование никак :D :( :( :(
GoodLF13
Newbie
Newbie
 
Сообщений: 7
Зарегистрирован: 22 апр 2017, 13:55
DSP: 0
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Модостроение (вопросы и ответы)

Сообщение Lift2011 » 28 апр 2017, 22:16

GoodLF13 писал(а):Когда у тебя аудирование никак

"Ты по русски чукча скажи, куда русские поплыли ?..."
Помнишь этот анекдот, вот я и спрашиваю, что конкретно не устроило в моей ссылке ? Там же видео, он код скриптов показывает. Мне показалось, что это то, что тебя интересовало, причем в подробном изложении. Плюс он там еще показывает, как писать плагины искусственной жизни (AI life plugin), как привязывать горячие клавиши к скриптам и еще, как в скриптах связывать текстовые ресурсы(кодовые страницы) с телом самого скрипта. Целый комплексный урок, единственное про сигналы там почти ничего нет. Только пример с таймером можно разглядеть.

Добавлено спустя 8 минут 50 секунд:
Вот у меня вопрос к профи: как "перехватить" нажатие кнопок в каком то меню, например пользователь покупает корабль. Как перехватить своим скриптом момент нажатия кнопки покупки на станции ? Есть идея использовать его чтобы не изменяя исходной игры сделать для игрока на его станциях покупку кораблей только за ресурсы без денег. Если еще апгрейды кораблей подвязать к чепухе какой то( кристаллы древних или еще какие добываемые в космосе) , то можно получить то, о чем я в теме ТОТТ писал. Возможность развития и постройки без денег, только ресурсы. Как вам такой вариант ?
Lift2011
Newbie
Newbie
 
Сообщений: 30
Зарегистрирован: 12 июл 2011, 15:33
DSP: 2
Благодарил (а): 4 раз.
Поблагодарили: 1 раз.

Re: Модостроение (вопросы и ответы)

Сообщение by.@ztek » 28 апр 2017, 22:48

Lift2011 писал(а):Там же видео, он код скриптов показывает.

Реально, шляпа. Для новичков непонятно вообще. :D
Lift2011 писал(а):Вот у меня вопрос к профи: как "перехватить" нажатие кнопок в каком то меню, например пользователь покупает корабль.

Попробуй написать скрипт, где есть "твои" меню. Вот и отследишь.
п.с. скрипт пишешь, который отслеживает собственность игрока, если +1 корабль стало - то то-то делать. это так, навскидку. ;)
п.п.с. тут по-моему проще (архив там почитать). viewtopic.php?f=4&t=12&start=340#p36922
Совершенству нет предела...
Аватар пользователя
by.@ztek
Admin
Admin
 
Сообщений: 1585
Изображения: 2
Зарегистрирован: 06 фев 2011, 00:24
DSP: 207
Откуда: Минск, Беларусь
Благодарил (а): 231 раз.
Поблагодарили: 688 раз.

Re: Модостроение (вопросы и ответы)

Сообщение Lift2011 » 28 апр 2017, 23:35

by.@ztek писал(а):Попробуй написать скрипт, где есть "твои" меню. Вот и отследишь.

Когда все свое и меню и скрипт, то в целом понятно.
by.@ztek писал(а):скрипт пишешь, который отслеживает собственность игрока, если +1 корабль стало - то то-то делать

Вот тут не понятно: до момента совершения покупки до этого момента в коде не дойти. А я хочу "перехватить событие", когда пользователь уже нажал на кнопку покупки и дальше начинается код связанный с ее стандартным меню. Мне хотелось бы "добавиться" в качестве следующего обработчика этого события. По типу, как в современных языках программирования(например, в C# подписка на обработчик события нажатия кнопки путем добавления в очередь обработчиков нового делегата). Основная идея это добавить функциональность без переписывания и изменения исходного содержимого. Тогда можно реализовать это в виде плагина в меню AI life. и в любой момент включать или отключать ее в игре без никаких дополнительных манипуляций. Боюсь, я как то не так объясняю чтобы мне хотелось узнать или все-таки понятно ?
Уточню так:
1. Игрок нажал в стандартном меню станции кнопку покупки корабля.
2. Обычно списываются деньги с его счета( с предварительными проверками)
3. Теперь идет регистрация новой собственности игрока (+1 корабль, к примеру)
Я же хочу вклиниться в код в п.1 и самостоятельно выполнить пункты с 2 по 3.
Так, надеюсь, понятней ?

P.S. by.@ztek, спасибо за интерес к моему вопросу и попытку ответа на него.
Lift2011
Newbie
Newbie
 
Сообщений: 30
Зарегистрирован: 12 июл 2011, 15:33
DSP: 2
Благодарил (а): 4 раз.
Поблагодарили: 1 раз.

Re: Модостроение (вопросы и ответы)

Сообщение Gvozdoyatel » 29 апр 2017, 06:42

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

Игрок покупает корабль ему возвращают деньги и забирают ресурсы, если ресурсов не хватает возвращают деньги и уничтожают корабль
Lift2011 писал(а):как в современных языках программирования

По моему это не так делается
Lift2011 писал(а):Я же хочу вклиниться в код в п.1 и самостоятельно выполнить пункты с 2 по 3

На много проще написать скрипт
Игрок покупает корабль ему возвращают деньги и забирают ресурсы, если ресурсов не хватает возвращают деньги и уничтожают корабль

Не нужно копаться в много километровом коде проще сделать дополнительное условие. Да и если ты изменишь код как ты будешь его людям давать?
Аватар пользователя
Gvozdoyatel
Pilot
Pilot
 
Сообщений: 192
Зарегистрирован: 31 май 2016, 11:01
DSP: 4
Благодарил (а): 10 раз.
Поблагодарили: 18 раз.

Re: Модостроение (вопросы и ответы)

Сообщение Lift2011 » 29 апр 2017, 10:24

Gvozdoyatel,
1.
Игрок покупает корабль ему возвращают деньги и забирают ресурсы, если ресурсов не хватает возвращают деньги и уничтожают корабль

Алгоритм я тоже приблизительно такой вижу. Разница между моим вариантом и твоим в том, что у тебя деньги изначально должны быть на счету игрока(чтобы что то купить). В моем варианте проверяются только ресурсы. Если все в порядке на счет игрока заносится требуемая сумма и передается управление стандартному скрипту-покупке. Он вычитает эту сумму из счета игрока и передает ему товар. Как видно: 1) в таком варианте у игрока вообще может быть счет 0. 2) не нарушается стандартная процедура покупки и нет вмешательства в стандартные скрипты игры. 3) все манипуляции выполняются добавочным скриптом(ами).
2.
По моему это не так делается

Я спорить не буду, в С# это так. В Delphi XE... это почти так(там делегатов нет, там указатели используются на ф-ии). В VC++ через карту сообщений и указатели. В Python ближе к здешнему скриптовому механизму(внутри интерпретатора все-равно так же по сути через указатели). В QT уже через слоты и сигналы(а внутри все теже указатели на ф-ии).
3.
На много проще написать скрипт

В некотором смысле это я и пытаюсь сделать с помощью инструментария этой игры и подсказок более опытных скриптеров.
4.
Не нужно копаться в много километровом коде проще сделать дополнительное условие. Да и если ты изменишь код как ты будешь его людям давать?

Вот тут я не понял: я не горю желанием строчить километровые коды(хотя и понимаю, что иногда и это необходимость привет конструкции GO TO :al: .). Я уже много раз писал, что хотел бы такой вариант, где стандартный код не нужно менять, а возможности добавлять только дополнительными скриптами. В этом по сути все мои последнии вопросы к знатокам.
Lift2011
Newbie
Newbie
 
Сообщений: 30
Зарегистрирован: 12 июл 2011, 15:33
DSP: 2
Благодарил (а): 4 раз.
Поблагодарили: 1 раз.

Re: Модостроение (вопросы и ответы)

Сообщение Gvozdoyatel » 29 апр 2017, 13:38

Lift2011 писал(а):В некотором смысле это я и пытаюсь сделать с помощью инструментария этой игры и подсказок более опытных скриптеров

Ну вообще вот
Lift2011 писал(а):Алгоритм я тоже приблизительно такой вижу. Разница между моим вариантом и твоим в том, что у тебя деньги изначально должны быть на счету игрока(чтобы что то купить).

Если денег не хватает вычислить необходимое кол во добавить его а потом отнять если деньги переполняют лимит, то сначала отнять потом вернуть
Lift2011 писал(а):Я уже много раз писал, что хотел бы такой вариант, где стандартный код не нужно менять, а возможности добавлять только дополнительными скриптами. В этом по сути все мои последние вопросы к знатокам.

Не могу назвать себя знатоком, но и новичком тоже, но помогу чем смогу.
Аватар пользователя
Gvozdoyatel
Pilot
Pilot
 
Сообщений: 192
Зарегистрирован: 31 май 2016, 11:01
DSP: 4
Благодарил (а): 10 раз.
Поблагодарили: 18 раз.

Re: Модостроение (вопросы и ответы)

Сообщение Lift2011 » 29 апр 2017, 17:45

Gvozdoyatel писал(а):Если денег не хватает вычислить необходимое кол во добавить его

Вот тогда ты и приходишь к моему варианту. А он требует умения "вклиниться" в стандартный скрипт покупки товара на станции(когда пользователь жмет кнопку "ОК"), а как туда подцепиться я пока в ответах не увидел. Похоже одна надежда на то, что тов. by.@ztek найдет время и подскажет, как это провернуть. У меня есть еще надежда, что кто то кроме него(например, тов. DNA78) сможет прояснить это(но тут у меня сомнения). Я начинаю подозревать, что это вообще не реализовать в рамках стандартной скриптовой системы. Иначе зачем тогда у многих скриптов и модов способ установки основан на перекрывании стандартных файлов(т.н. метод фальш-патча). Если бы была возможность добавлять к имеющимся(а не заменять) скриптам новые, то и фальш-патч становился бы не актуальным(тут я не уверен).
Lift2011
Newbie
Newbie
 
Сообщений: 30
Зарегистрирован: 12 июл 2011, 15:33
DSP: 2
Благодарил (а): 4 раз.
Поблагодарили: 1 раз.

Re: Модостроение (вопросы и ответы)

Сообщение by.@ztek » 29 апр 2017, 19:55

Не, фальш-патч это совсем другое. :)
Огорчу.
Lift2011 писал(а):Уточню так:
1. Игрок нажал в стандартном меню станции кнопку покупки корабля.
2. Обычно списываются деньги с его счета( с предварительными проверками)
3. Теперь идет регистрация новой собственности игрока (+1 корабль, к примеру)
Я же хочу вклиниться в код в п.1 и самостоятельно выполнить пункты с 2 по 3.
Так, надеюсь, понятней ?

Часть в ехе, часть в обже. Ехе договорились не трогать, ибо нарушаются права. Обж доступен.

Добавлено спустя 3 минуты 52 секунды:
Lift2011 писал(а):Я спорить не буду, в С# это так. В Delphi XE...

:D Рассмешил. Не, всё нормально, всё правильно.

Добавлено спустя 51 минуту 47 секунд:
За знание делфи и си шарпа от меня плюс в дсп. ;)
Совершенству нет предела...
Аватар пользователя
by.@ztek
Admin
Admin
 
Сообщений: 1585
Изображения: 2
Зарегистрирован: 06 фев 2011, 00:24
DSP: 207
Откуда: Минск, Беларусь
Благодарил (а): 231 раз.
Поблагодарили: 688 раз.

Re: Модостроение (вопросы и ответы)

Сообщение Lift2011 » 29 апр 2017, 21:29

by.@ztek,
Я так понял(из твоего ответа выше), что в движке Х3 не имеется варианта взаимодействия с элементами интерфейса по типу добавления в очередь нового подписчика со своим скриптом(ну как то так, терминологии в этом движке не знаю). Т.е. то, что я описывал выше требует иного подхода, так ? Можешь подсказать, как обычно принято взаимодействовать с движком этой игры? Неужели только ковырять бинарник или обж(это часом не dll ?) напильником ? Выходит что то не очень тогда. Вот если бы тебе нужно было создать что то похожее, как бы ты сделал ? Мне казалось, что "привязаться" к стандартной кнопке это достаточно логично. Ведь есть же принцип не трогай то, что уже работает(не изменяй стандартные скрипты), добавляй понемногу своего к тому, что уже есть. Теперь не вижу способа, как следовать ему не нарушая его. Самое плохое, что читая информацию и всякие мануалы не вижу за что зацепиться...
Lift2011
Newbie
Newbie
 
Сообщений: 30
Зарегистрирован: 12 июл 2011, 15:33
DSP: 2
Благодарил (а): 4 раз.
Поблагодарили: 1 раз.

Re: Модостроение (вопросы и ответы)

Сообщение Gvozdoyatel » 30 апр 2017, 00:44

Lift2011 писал(а):Можешь подсказать, как обычно принято взаимодействовать с движком этой игры?

Есть Exscriptor
Lift2011 писал(а):Самое плохое, что читая информацию и всякие мануалы не вижу за что зацепиться...

В Exscriptor`е есть справа все команды которые можно использовать, всё на английском, осталось только перевести
Аватар пользователя
Gvozdoyatel
Pilot
Pilot
 
Сообщений: 192
Зарегистрирован: 31 май 2016, 11:01
DSP: 4
Благодарил (а): 10 раз.
Поблагодарили: 18 раз.

Re: Модостроение (вопросы и ответы)

Сообщение Lift2011 » 30 апр 2017, 00:58

Gvozdoyatel,
Ну я так понял, что X-Studio это уже более совершенный инструмент, чем Exscriptor. Или нет ? Тем более на него пока не катили бочку, как на Exscriptor(что то он с командами не устраивал народ на форуме егософта)

Видимо я еще не удачно выразился, под взаимодействием предполагалось в части связки стандартного GUI( я все про ту злосчастную кнопку "OK" в консоли торговли) и своих скриптов. Когда свой GUI и свои скрипты примеры есть много где(например, чит- пак Сайкроу). А по варианту о котором я описывать пытался в своих вопросах, не попадалось мне.
Lift2011
Newbie
Newbie
 
Сообщений: 30
Зарегистрирован: 12 июл 2011, 15:33
DSP: 2
Благодарил (а): 4 раз.
Поблагодарили: 1 раз.

Re: Модостроение (вопросы и ответы)

Сообщение Gvozdoyatel » 30 апр 2017, 01:05

Lift2011 писал(а):Ну я так понял, что X-Studio это уже более совершенный инструмент, чем Exscriptor. Или нет ? Тем более на него пока не катили бочку, как на Exscriptor(что то он с командами не устраивал народ на форуме егософта)

Видимо я еще не удачно выразился, под взаимодействием предполагалось в части связки стандартного GUI( я все про ту злосчастную кнопку "OK" в консоли торговли) и своих скриптов. Когда свой GUI и свои скрипты примеры есть много где(например, чит- пак Сайкроу). А по варианту о котором я описывать пытался в своих вопросах, не попадалось мне.

Exscriptor нормальный и свои задачи выполняет и ещё раз скажу не нужно менять саму кнопку ОК нужно менять последствия нажатия не нужно изменять игру нужно добавить действие так что бы оно работало не мешая другим я и сам хочу сделать покупку кораблей за ресы только в отдельном старте (весь сюжет на этом будет завязан) но пока что это невозможно из-за нехватки времени, как только будет время всё сделаю
Аватар пользователя
Gvozdoyatel
Pilot
Pilot
 
Сообщений: 192
Зарегистрирован: 31 май 2016, 11:01
DSP: 4
Благодарил (а): 10 раз.
Поблагодарили: 18 раз.

Re: Модостроение (вопросы и ответы)

Сообщение Lift2011 » 30 апр 2017, 01:40

Gvozdoyatel,
я про
последствия нажатия
и говорю. Я и не думал кнопку менять, я хотел "прицепиться" к последствиям ее нажатия. Вот и я из
не нужно изменять игру нужно добавить действие так что бы оно работало не мешая другим
исхожу. Но никто еще не показал, как это сотворить. Создается впечатление, что у меня не выходит доходчиво описать свой вопрос. Для меня он кажется понятным: как "присоединиться" к обработке нажатия на стандартную кнопку "ОК" в меню покупки ? Неужели нужно лезть в обж или еще хуже в екзешник или вообще хук в глобальном окружении винды вешать ? Поясните, "на пальцах", пожалуйста. Уже сколько раз вопрос этот в различных вариациях изложить пытаюсь...
Lift2011
Newbie
Newbie
 
Сообщений: 30
Зарегистрирован: 12 июл 2011, 15:33
DSP: 2
Благодарил (а): 4 раз.
Поблагодарили: 1 раз.

Re: Модостроение (вопросы и ответы)

Сообщение XXXL » 30 апр 2017, 09:41

Lift2011 писал(а):... Создается впечатление, что у меня не выходит доходчиво описать свой вопрос. Для меня он кажется понятным: как "присоединиться" к обработке нажатия на стандартную кнопку "ОК" в меню покупки ? Неужели нужно лезть в обж или еще хуже в екзешник или вообще хук в глобальном окружении винды вешать ? Поясните, "на пальцах", пожалуйста. Уже сколько раз вопрос этот в различных вариациях изложить пытаюсь...

Всё можно сделать. Наверно придется влезть в OBJ или EXE. Но есть вопрос. ЗАЧЕМ? Что-то напоминает поговорку про кота...
XXXL
Pilot
Pilot
 
Сообщений: 206
Зарегистрирован: 08 фев 2011, 20:39
DSP: 26
Благодарил (а): 62 раз.
Поблагодарили: 49 раз.

Re: Модостроение (вопросы и ответы)

Сообщение Lift2011 » 30 апр 2017, 09:59

Ответы намекают, что решать задачу: покупать корабли на своей верфи только за ресурсы, с привязкой к кнопке "ОК" это тупик. А можно по другому? Только мониторить в цикле появление в собственности нового корабля ? Но он же может появиться не только в следствии покупки, а например, игрок подобрал брошенный корабль. Как тогда узнать, что он именно с верфи игрока сошел ? Или на каждый корабль игрока вешать флаг-признак какой то для отслеживания причины его появления в собственности игрока ?
Lift2011
Newbie
Newbie
 
Сообщений: 30
Зарегистрирован: 12 июл 2011, 15:33
DSP: 2
Благодарил (а): 4 раз.
Поблагодарили: 1 раз.

Re: Модостроение (вопросы и ответы)

Сообщение Lift2011 » 30 апр 2017, 14:09

А какой стандартный скрипт обрабатывает сигнал SIGNAL_BUYWARE ? И как посылаются сигналы этого типа ? Может, сразу после получения признака окончания покупки ? И что используется в качестве такого признака ? Как игра узнает, что что то купили ? Я подозреваю, что этот сигнал и его обработка может дать решение в моем вопросе.
Еще вопрос: можно добавлять свои сигналы или они жестко зашиты в ехе ?
Lift2011
Newbie
Newbie
 
Сообщений: 30
Зарегистрирован: 12 июл 2011, 15:33
DSP: 2
Благодарил (а): 4 раз.
Поблагодарили: 1 раз.

Re: Модостроение (вопросы и ответы)

Сообщение Gvozdoyatel » 01 май 2017, 16:35

Пишешь if <сигнал> и действие которое идёт после и ставишь в цикл
Аватар пользователя
Gvozdoyatel
Pilot
Pilot
 
Сообщений: 192
Зарегистрирован: 31 май 2016, 11:01
DSP: 4
Благодарил (а): 10 раз.
Поблагодарили: 18 раз.

Re: Модостроение (вопросы и ответы)

Сообщение by.@ztek » 01 май 2017, 17:24

Lift2011 писал(а):Ответы намекают, что решать задачу: покупать корабли на своей верфи только за ресурсы, с привязкой к кнопке "ОК" это тупик. А можно по другому? Только мониторить в цикле появление в собственности нового корабля ? Но он же может появиться не только в следствии покупки, а например, игрок подобрал брошенный корабль. Как тогда узнать, что он именно с верфи игрока сошел ? Или на каждый корабль игрока вешать флаг-признак какой то для отслеживания причины его появления в собственности игрока ?

Я же писал ужо. :) viewtopic.php?p=36922#p36922 Где-то на elite-games.ru можно посмотреть, может там новее данные. ;)
Сигналы свои можно писать, !init.ship.globalscriptmap отвечает за сигналы. Там (у себя скрипт сделать, и добавить свой сигнал) просто upgrade прописать.
п.с. Можно мои скрипты глянуть, где защита станций (когда игрок атакует станцию, там сигналы тоже обрабатываются). Вот отсюда начинается - TOTT.station.attacked.pl

Добавлено спустя 3 минуты 18 секунд:
п.п.с. Да я ленюсь просто. :D Написать скрипт, отслеживающий появление в собственности игрока корабля просто, именно при покупке (только не забыть, что на верфи можно купить сразу 10 кораблей ;) ).
Совершенству нет предела...
Аватар пользователя
by.@ztek
Admin
Admin
 
Сообщений: 1585
Изображения: 2
Зарегистрирован: 06 фев 2011, 00:24
DSP: 207
Откуда: Минск, Беларусь
Благодарил (а): 231 раз.
Поблагодарили: 688 раз.

Пред.След.

Вернуться в X3: Time Of The Truth

Кто сейчас на форуме

Сейчас этот форум просматривают: Yandex [Bot] и гости: 4