#1 17-02-2007 12:33

Sub
Registered: 17-02-2007
Posts: 30

Выключение путей

Кто знает, подскажите адрес памяти, который блокирует абсолютно все пути в SA. Дело в том, что есть такая команда (опкод), но тем не менее в некоторых местах транспорт остается (деревня Сан Фиеро). можно очистить пути, но желательно все сделать через скрипты.
Плюс почистив все пути транспорт пропал полностью, но самолеты по прежнему летают + при убийстве актера или поджеге приезжает Скорая и полиция.
В общем, нужно заблокировать весь транспорт на карте (как в SAMP, ведь кроме игроков на карте никого нет).

Offline

#2 17-02-2007 16:00

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Выключение путей

Не совсем понял насчет путей, имеется в виду отключить траффик?

072C: generate_police_bikes 0 
099E: unknown_toggle_police_patrols 0 
06D0: unknown_toggle_ambulances_firetrucks_traffic 0
06D7: toggle_train_traffic 0 
0923: unknown_toggle_air_traffic 0 
01EB: set_traffic_density_multiplier_to 0.0

думаю, этим можно отключить все.


Если не помогает, есть и другие способы, разной степени экстремальности.

Самый простой (правда пешеходов тоже не будет):

0@ = -228223
&0(0@,1i) = 1 // выключаем траффик, 0 - включить

Посложнее - эмулировать работающую кутсцену (во время нет траффика и еще много чего):

  0@ = 0xB5F851 //  ADDRESS
  2@ = 1        //  VALUE
  3@ = 1        //  LENGTH (Byte)
  gosub @MemoryWrite

Процедура MemoryWrite есть в примерах к SB (файл MemoryHandling.txt).

Offline

#3 18-02-2007 11:10

Sub
Registered: 17-02-2007
Posts: 30

Re: Выключение путей

Seemann wrote:

Не совсем понял насчет путей, имеется в виду отключить траффик?

072C: generate_police_bikes 0 
099E: unknown_toggle_police_patrols 0 
06D0: unknown_toggle_ambulances_firetrucks_traffic 0
06D7: toggle_train_traffic 0 
0923: unknown_toggle_air_traffic 0 
01EB: set_traffic_density_multiplier_to 0.0

думаю, этим можно отключить все.


Если не помогает, есть и другие способы, разной степени экстремальности.

Самый простой (правда пешеходов тоже не будет):

0@ = -228223
&0(0@,1i) = 1 // выключаем траффик, 0 - включить

Посложнее - эмулировать работающую кутсцену (во время нет траффика и еще много чего):

  0@ = 0xB5F851 //  ADDRESS
  2@ = 1        //  VALUE
  3@ = 1        //  LENGTH (Byte)
  gosub @MemoryWrite

Процедура MemoryWrite есть в примерах к SB (файл MemoryHandling.txt).

Спасибо, это то что надо!

Offline

#4 26-02-2007 22:40

xnsnet
From: CLN.RU
Registered: 24-02-2007
Posts: 19
Website

Re: Выключение путей

К сожалению это не выключает всех объектов и сцен, а всего лишь часть, хоть и большую, а вот как добится полного подобия SAMP чтобы не одного лишнего объекта, не говоря уж о людях и машинах и т.д. Этого я пока не понимаю...

Offline

#5 27-02-2007 07:58

xnsnet
From: CLN.RU
Registered: 24-02-2007
Posts: 19
Website

Re: Выключение путей

Это способ для вырезания путей, смотрите в теме на этой странице привязку saapack_10.zip: http://gtamaps.net/forum/index.php?show … 638&st=120

Исходные файлы в которых конфиги сконфигурированы без сцен и других ненужных объектов, все это распаковываем из клиентского файла samp.saa и получаем то чего вы так мучительно пытались обойти стандартными способами. На самом деле это путь к редактированию SAMP режима, но если смотреть дальше, то это путь к написанию мультиплеера или других полезностей:) А главное это то чего мне нехватало:) Спасибо этому форуму за поддержание направления действий и боевого духа:)

Last edited by xnsnet (27-02-2007 08:06)

Offline

#6 27-02-2007 08:51

xnsnet
From: CLN.RU
Registered: 24-02-2007
Posts: 19
Website

Re: Выключение путей

Что за дела товарищи, неизвестный опкод 4209 по адресу 63262 у сампового файлика:) Мне казалось бильдер знает все опкоды:) Ага понятно, это опкод SAMPa или вернее их модификации, потому как в базе данных таких опкодов нет:)

Last edited by xnsnet (27-02-2007 09:04)

Offline

#7 27-02-2007 09:08

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Выключение путей

2xnsnet:

Что за дела товарищи, неизвестный опкод 4209 по адресу 63262 у сампового файлика

Это давно известный факт. Майн.скм у них использует один опкод, который отличается от стандартного по количеству параметров (что-то с гаражами связано). Видимо сделано для защиты от декомпиляции, либо они редактировали опкоды в exe под себя.

Offline

#8 27-02-2007 09:23

xnsnet
From: CLN.RU
Registered: 24-02-2007
Posts: 19
Website

Re: Выключение путей

Seemann wrote:

2xnsnet:

Что за дела товарищи, неизвестный опкод 4209 по адресу 63262 у сампового файлика

Это давно известный факт. Майн.скм у них использует один опкод, который отличается от стандартного по количеству параметров (что-то с гаражами связано). Видимо сделано для защиты от декомпиляции, либо они редактировали опкоды в exe под себя.

Ясно, спасибо! А этот факт излечим? Есть ли информация по этому вопросу или только самому влезть в HEX и излечить эту проблемму?

Это вставка очевидно по четырем словам в хексе, а так как скрипт опознается игрой в порядке вещей без самой библиотеки сампа, которая в памяти игру под себя меняет, в этом случае обязательно было бы крушение игры, а раз его нет, значит надо определять что это вообще, но это явно не здоровый опкод, который является частью слова в одном байте:)))) Кроме того тогда их пять, а не один:) Бредят люди, ладно сломаем, дело терпения:) В крайнем случае, не так уж это и важно, важнее пожалуй сам факт чистоты игры, но ради интереса, взломать конечно важно:)

Last edited by xnsnet (27-02-2007 11:46)

Offline

#9 27-02-2007 14:19

xnsnet
From: CLN.RU
Registered: 24-02-2007
Posts: 19
Website

Re: Выключение путей

Да ты был прав, это дейтвительно гаражи, переменные для повторного использования
об этом здесь уже писали: http://www.gtaforums.com/index.php?show … 020&st=40#

Но как это тогда характеризовать, либо это объявленные переменные в самой игре или других имиджах? Почему их нет в GXT, что это вообще тогда такое и как это использовать в таком случае. Я конечно понимаю, можно подменить их другими именами, но суть то в чем получается? Или я опять что-то непонимаю? На мой вопрос есть ответ?

Ага вот что я еще нашел: http://www.gtaforums.com/index.php?showtopic=207114

Значит это активация и деактивация гаражей... Опкоды 0299 активация гаража, 02B9 деактивация и они уже прописаны в бильдере, так в чем же тогда причина... Ладно, пока пытаюсь разобраться:)

Last edited by xnsnet (27-02-2007 14:47)

Offline

#10 27-02-2007 14:46

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Выключение путей

2xnsnet:
ммм, малопонятно что ты имел в виду. Декомпилировать скрипт можно через режим отладки в саннике. Как это делается, написано и в хелпе и на форуме.

Там будет несколько опкодов типа

09C6: (unknown) 5 'BODLAWN' 0 0

который в оригинале имеет 0 параметров. Почему так сделано - не знаю.

'BODLAWN' - имя гаража, почитай хелп про них.

Offline

#11 27-02-2007 19:31

xnsnet
From: CLN.RU
Registered: 24-02-2007
Posts: 19
Website

Re: Выключение путей

Ставил этому опкоду от одного до десяти параметров, на шести вставал на себе подобном. На четырех говорил что адресация в ноль испорченый имидж. Для таких вещей нужно редактор опкодов делать что бы каждый раз прогу не рестартить чтобы инициализировалась, а для автоматизма переборщик, чтобы хоть варианты предлогал. Я прекрасно понимаю что указанная комбинация параметров абсолютно верна, но проблемма в адресации, которая судя по всему задается при старте программы с внедренной библиотекой сампа, скорее всего. Но на что она ссылается нулевым адресом мне не понятно... Потому что я не знаю как устроен Имидж файл, можно было бы узнать по неиспользуемым адресам.

К сожалению он его не декомпилирует хотябы частично, показал бы хоть то что сумел разобрать декомпилятор, я бы все прекрасно понял где стопорится, но все время грешит на то что имидж неверный, переправил все что только можно и ини файлы многократно переделывал, увеличивал размерность параметров уменьшал, хоть на имидж не грешит зато грешит то на другое, то на совсем непонятно что, байтовая позиция совсем не меняется в этом случае или вообще полный бред... И дебуг включал выключал и параметры отладки самые разные задавал через консоль. И байты перебирал по близким подобиям. На других скриптах конечно работает, те что декомпилятся только с отладкой и незвестным... Это да все как надо... Но здесь заведомо что-то совсем неверно.

Как ты говорил защита, да защита, но любая защита ломается, даже самая непонятная, тем более проблемма в адресации а не в шифровании, но я непойму что и куда неправельно адресуется, вижу только ошибка, то не так, это не так, а что конкретно непонятно...

Короче я понял одно, матерьяла и информации предостаточно, а пока сам не напишешь то, что надо, работать как надо не будет, потому что пока не напишешь не поймешь внутренню сущность скрипта, вплоть до значения каждого байта в идеале на память, а вообще это только для писателя нужно, а не для того кто ищет проблемму, а раз проблемму выяснить не удалось придется стать писателем, ну не сидеть же и гадать что там может декомпилятор с толку сбивать...

P.S.: Я про то, что мне досталось из: samp.saa Вобщем ладно, спасибо вам всем за посильную помощь, дальше я буду пробовать это дело на корню заломать своими методами с помощью вашей информации, заодно и обертку напишу все равно надо, чтобы генерация скрипта автоматическая была. За информацию, прежде всего огромная благодарность!:)

P.P.S.: Извиняюсь за бардакт в посте, просто в таких ситуациях у меня бардакт в голове начинается:)

Last edited by xnsnet (27-02-2007 20:41)

Offline

#12 28-02-2007 09:13

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Выключение путей

Да, пока что та версия SB, которая умеет декомпилировать без учета IMG, еще не выпущена (есть только у меня).

Offline

#13 28-02-2007 11:43

xnsnet
From: CLN.RU
Registered: 24-02-2007
Posts: 19
Website

Re: Выключение путей

Да это все понятно:)

Last edited by xnsnet (28-02-2007 11:53)

Offline

#14 28-02-2007 11:58

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Выключение путей

Я не могу понять, какова цель вашего "ковыряния" сампа? Чего вы хотите достичь?

Offline

#15 28-02-2007 12:33

xnsnet
From: CLN.RU
Registered: 24-02-2007
Posts: 19
Website

Re: Выключение путей

Я хочу сделать его более открытым для программирования, написать .NET адаптер для использования, от него уже и идти.
Не SAMP разуется, а GTA SA самповый исходник мне разве что посредственно нужен чтобы понять что надо повырубать чтобы вообще все очистить, как это и сделано, мне до SAMP и до MTA глубоко фиолетово, что у них сделано, если бы они сделали как мне надо, таких бы проблемм не возникало.

Почему .NET очень просто, потому что он открыт даже скомпилированный, ну скажем все на таких же опкодах, только масса умельцем давно написали таки программы как рефлектор, декомпилятор, я тоже когда-то писал. Короче, хоть компиль хоть не компиль, только вот есть и приэмущества, управляемая среда. А значит ошибки легко отследить. Да и структура позволяет детально описывать все, все это прекрасно видно, короче я на этом деле сижу уже около шести лет, ну а в программировании около десяти лет. Короче я знаю одно, .NET как не закрывай, он все равно открыт, это его плюс, хотя тоже есть масса ухищирений для запутывания следов, но ломать его бесполезно, в памяти все постоянно двигается, нет ничего постоянного, поэтому все только методом разбора.

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

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

Короче цель, ядро, которое так же можно будет легко увидеть в исходном коде и при желании даже повторить или сделать лучше, но думаю как раз этого никто делать не станет. Сколько надо знать чтобы написать подобное ядро, вот в чем вопрос, кому это дано, у кого достаточно терпения для этого, вот о чем я, развитие всего этого идет очень медленно, мы не имеем контроля, мы имеем куски отрытого исходного кода который еще попробуй урвать, в большинстве для того чтобы чего-то достич в разработке приходится много всего изучать, чтобы что-то написать, то что например хотелось бы сделать мне. Написать тот же мультиплеер, не на основе C++ скриптов павна или люа, которые даются серверному разработчику, и при этом невозможно усовершенствовать сам сервер, чтобы он не глючил. Открытый код, именно открытый код сложнее всего взломать, читерить использовать, потому что всегда найдется тот кто его усовершенствует.

Мы находимся в условиях пользователей игры в которую не только хочется всем поиграть, но и доработать, сделать лучше.

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

Например представь мультиплеер, который не грузит скрипт, который сохранен предварительно в архиве и не руководствуется его правилами, на сервере в зависимости от потребностей этот скрипт сам сгенерируется и передаст начальные параметры для запуска, а все остальное уже только напрямую, по факту обработки команды, то бишь опкода.

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

Last edited by xnsnet (28-02-2007 13:26)

Offline

#16 28-02-2007 14:24

xnsnet
From: CLN.RU
Registered: 24-02-2007
Posts: 19
Website

Re: Выключение путей

Кстати знаешь как я вижу скриптинг smile

Например, то что у тебя реализовано это накладно для разработки, фактически твоя программа и декомпилятор и компилятор, проверка синтаксиса компилятором, упирается в возможности разработчика. А если проверку возложить
на сам код, то есть обеспечить классами и возможностями для компиляции самому коду. А значит все что нужно сделать это декомпилятор в исходный код .NET который обеспечен возможностями компиляции, то есть в единую структуру, которая будет лишь дополнением. А значит и придумывать язык программирования не понадобится, декомпилируй хоть в C#, VB, MС++ и не паришься с изучением новых языков. А просто изучаешь возможности класса, просто один класс имеет процедуры, функции, операторы и другие классы, которые либо в реальном времени работают, либо обеспечивают слепок для компиляции. Рефлекторные возможности .NET позволяют делать слепок кода из самого кода, вот в чем разница. Единственное условие этого, это иметь внутренние возможности, а раз игровой скрипт не имеет этих возможностей, значит нужно сделать обертку в том языке который имеет эти возможности и все само собой образуется.

Last edited by xnsnet (28-02-2007 14:40)

Offline

#17 28-02-2007 14:44

Seemann
Registered: 07-08-2006
Posts: 2,155

Re: Выключение путей

все что нужно сделать это декомпилятор в исходный код .NET

Сделай. Я .NET не знаю

Offline

#18 28-02-2007 15:13

xnsnet
From: CLN.RU
Registered: 24-02-2007
Posts: 19
Website

Re: Выключение путей

Seemann wrote:

Сделай. Я .NET не знаю

Все определяется желанием и необходимостью smile

Я не говорю о том что твоя программа плохая, она отличная, ты молодец, твой труд ценится, для меня тем, что это хороший пример для разбора и последующего развития, забирать место под солцем у кого-то и в мыслях нет, но развитие есть и должно быть, кроме того всегда найдутся люди которые воспользуются именно твоей разработкой, а не моей например smile Да и важно ли вообще кто и что написал, главное полезность и удовлетворение потребностей для нас самих, а заодно и для всех кто мимо проходил и решил поучавствовать, вот что важно:)

Для начала надо это еще разработать, чтобы это вообще могло с чем то или кем то конкурировать, а вот для развития это надо поддерживать и развивать, а кто это будет развивать кроме нас, все участники хороши, если они полезны, поэтому мое дело начать, а уже за поддержкой и развитием мне не к кому на данный момент обратится кроме как к вам, поэтому надеюсь что лично Ты и посетители этого форума, сможем плодотворно сотрудничать:)

Мне нужны мнения спецов по поводу того что я сделаю, правельно я это делаю или неправельно, а лучших спецов кроме как здесь мне не найти, с англоязычным и другим населением мне трудно общаться, я всех могу лишь учитывать, лишь способом написания, например поддерживая Unicode и другие стандарты и т.д.

Вот:) Вобщем, это все что я хотел сказать на данный момент:)

Last edited by xnsnet (28-02-2007 15:38)

Offline

#19 04-03-2007 00:06

xnsnet
From: CLN.RU
Registered: 24-02-2007
Posts: 19
Website

Re: Выключение путей

Продолжение: http://gtamaps.net/forum/index.php?show … t&p=210354
Не стал писать здесь, дабы совсем не отходить от темы в другую сторону... Декомпилер клепаю, в бильдер заодно:)

Offline

Board footer

Powered by FluxBB