Страница 27 из 33

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

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

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

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

Когда у тебя аудирование никак :D :( :( :(

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

СообщениеДобавлено: 28 апр 2017, 22:16
Lift2011
GoodLF13 писал(а):Когда у тебя аудирование никак

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

Добавлено спустя 8 минут 50 секунд:
Вот у меня вопрос к профи: как "перехватить" нажатие кнопок в каком то меню, например пользователь покупает корабль. Как перехватить своим скриптом момент нажатия кнопки покупки на станции ? Есть идея использовать его чтобы не изменяя исходной игры сделать для игрока на его станциях покупку кораблей только за ресурсы без денег. Если еще апгрейды кораблей подвязать к чепухе какой то( кристаллы древних или еще какие добываемые в космосе) , то можно получить то, о чем я в теме ТОТТ писал. Возможность развития и постройки без денег, только ресурсы. Как вам такой вариант ?

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

СообщениеДобавлено: 28 апр 2017, 22:48
by.@ztek
Lift2011 писал(а):Там же видео, он код скриптов показывает.

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

Попробуй написать скрипт, где есть "твои" меню. Вот и отследишь.
п.с. скрипт пишешь, который отслеживает собственность игрока, если +1 корабль стало - то то-то делать. это так, навскидку. ;)
п.п.с. тут по-моему проще (архив там почитать). viewtopic.php?f=4&t=12&start=340#p36922

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

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

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

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

P.S. by.@ztek, спасибо за интерес к моему вопросу и попытку ответа на него.

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

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

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

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

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

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

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

СообщениеДобавлено: 29 апр 2017, 10:24
Lift2011
Gvozdoyatel,
1.
Игрок покупает корабль ему возвращают деньги и забирают ресурсы, если ресурсов не хватает возвращают деньги и уничтожают корабль

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

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

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

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

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

СообщениеДобавлено: 29 апр 2017, 13:38
Gvozdoyatel
Lift2011 писал(а):В некотором смысле это я и пытаюсь сделать с помощью инструментария этой игры и подсказок более опытных скриптеров

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

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

Не могу назвать себя знатоком, но и новичком тоже, но помогу чем смогу.

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

СообщениеДобавлено: 29 апр 2017, 17:45
Lift2011
Gvozdoyatel писал(а):Если денег не хватает вычислить необходимое кол во добавить его

Вот тогда ты и приходишь к моему варианту. А он требует умения "вклиниться" в стандартный скрипт покупки товара на станции(когда пользователь жмет кнопку "ОК"), а как туда подцепиться я пока в ответах не увидел. Похоже одна надежда на то, что тов. by.@ztek найдет время и подскажет, как это провернуть. У меня есть еще надежда, что кто то кроме него(например, тов. DNA78) сможет прояснить это(но тут у меня сомнения). Я начинаю подозревать, что это вообще не реализовать в рамках стандартной скриптовой системы. Иначе зачем тогда у многих скриптов и модов способ установки основан на перекрывании стандартных файлов(т.н. метод фальш-патча). Если бы была возможность добавлять к имеющимся(а не заменять) скриптам новые, то и фальш-патч становился бы не актуальным(тут я не уверен).

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

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

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

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

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

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

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

СообщениеДобавлено: 29 апр 2017, 21:29
Lift2011
by.@ztek,
Я так понял(из твоего ответа выше), что в движке Х3 не имеется варианта взаимодействия с элементами интерфейса по типу добавления в очередь нового подписчика со своим скриптом(ну как то так, терминологии в этом движке не знаю). Т.е. то, что я описывал выше требует иного подхода, так ? Можешь подсказать, как обычно принято взаимодействовать с движком этой игры? Неужели только ковырять бинарник или обж(это часом не dll ?) напильником ? Выходит что то не очень тогда. Вот если бы тебе нужно было создать что то похожее, как бы ты сделал ? Мне казалось, что "привязаться" к стандартной кнопке это достаточно логично. Ведь есть же принцип не трогай то, что уже работает(не изменяй стандартные скрипты), добавляй понемногу своего к тому, что уже есть. Теперь не вижу способа, как следовать ему не нарушая его. Самое плохое, что читая информацию и всякие мануалы не вижу за что зацепиться...

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

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

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

В Exscriptor`е есть справа все команды которые можно использовать, всё на английском, осталось только перевести

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

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

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

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

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

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

Exscriptor нормальный и свои задачи выполняет и ещё раз скажу не нужно менять саму кнопку ОК нужно менять последствия нажатия не нужно изменять игру нужно добавить действие так что бы оно работало не мешая другим я и сам хочу сделать покупку кораблей за ресы только в отдельном старте (весь сюжет на этом будет завязан) но пока что это невозможно из-за нехватки времени, как только будет время всё сделаю

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

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

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

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

Всё можно сделать. Наверно придется влезть в OBJ или EXE. Но есть вопрос. ЗАЧЕМ? Что-то напоминает поговорку про кота...

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

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

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

СообщениеДобавлено: 30 апр 2017, 14:09
Lift2011
А какой стандартный скрипт обрабатывает сигнал SIGNAL_BUYWARE ? И как посылаются сигналы этого типа ? Может, сразу после получения признака окончания покупки ? И что используется в качестве такого признака ? Как игра узнает, что что то купили ? Я подозреваю, что этот сигнал и его обработка может дать решение в моем вопросе.
Еще вопрос: можно добавлять свои сигналы или они жестко зашиты в ехе ?

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

СообщениеДобавлено: 01 май 2017, 16:35
Gvozdoyatel
Пишешь if <сигнал> и действие которое идёт после и ставишь в цикл

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

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

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

Добавлено спустя 3 минуты 18 секунд:
п.п.с. Да я ленюсь просто. :D Написать скрипт, отслеживающий появление в собственности игрока корабля просто, именно при покупке (только не забыть, что на верфи можно купить сразу 10 кораблей ;) ).