XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Желтая пресса: обучающие статьи
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

 
remal
нечто
offline
Опыт: 2,087
Активность:
Цитата:
Сообщение от Toadcop
Код:
for (a=0; a<BLOCK_SIZE; a+=8*sizeof(int))
{
x+=*(int *)((int)p+a);
x+=*(int *)((int)p+a+1*sizeof(int));
x+=*(int *)((int)p+a+2*sizeof(int));
x+=*(int *)((int)p+a+3*sizeof(int));
x+=*(int *)((int)p+a+4*sizeof(int));
x+=*(int *)((int)p+a+5*sizeof(int));
x+=*(int *)((int)p+a+6*sizeof(int));
x+=*(int *)((int)p+a+7*sizeof(int));
}работает вдвое быстрее конструкции

Код:
for (a=0; a<BLOCK_SIZE; a+=sizeof(int))
{
x+=*(int *)((int)p+a);
}
при каждой итерации вычисляется sizeof(int) достаточно это дело поместить в переменную.
Старый 10.04.2006, 00:56
NETRAT

offline
Опыт: 83,712
Активность:
remal вообщето sizeof - это макродифинишн
Старый 10.04.2006, 07:48
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
Цитата:
Думаю, что можно, хотя придётся постараться. Для этого нужно:
1. Самостоятельно открыть новый архив (с помощью storm.dll)
2. Отслеживать открытие файла, находящегося в недрах MPQ.
3. Пробовать открыть этот файл в новом MPQ. Если он там есть - возвращать его данные, иначе - передавать управление стандартной SFileFileOpen.
4. По окончании работы - закрыть архив.

Можно примерчик :)
Я работал только с SFmpq.dll там надо перед тем как открыть файл из архива, надо открыть архив и получить его хэндл. А большинство процедур работает с последним(или нет?) открытым архивом и не позволяют указать хэндл напрямую. Т.е. Вар читает файл из war3patch.mpq, мы прерываем, ищем файл в свем архиве, находим, и дальше что? Ведь в Варе то наш архив не открыт?
Старый 17.04.2006, 19:42
Алексей
Где кошачья мята?!
offline
Опыт: 26,303
Активность:
  1. Открываем архив самостоятельно (получив при этом его хэндл).
  2. Ждём вызова SFileOpenFileEx.
  3. Пытаемся открыть нужный файл в нашем архиве (подставив в эту функцию наш хэндл вместо хэндла war3patch.mpq)
  4. Если открылся, возвращаем хэндл открытого файла. Нет - продолжаем выполнение стандартной SFileOpenFileEx.
.
Пример лень делать - пара дней уйдёт на отладку. Видимо, тут проще сплайсингом, т.к. только этот метод позволяет анализировать значение, возвращаемое оригинальной функцией. Но отлаживать такие программы ну ОЧЕНЬ трудно (в случае любых глюков "упадёт" вся система).
Старый 17.04.2006, 20:48
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
Еще одна идейка меня посетила... вот например мы можем из внешнего отладчика посылать данные в Варкрафт. А если нам например нужно чтобы внешняя программа сделала какое либо действие (например поглядев в slk таблицу возвратила тип брони определенного юнита). Т.е. нам нужно спровоцировать с помощью jass вызов функции в Варкрафт и при этом чтобы в этом вызове были наши параметры(ID юнита например и тип поля которое мы хотим узнать). Все это можно реализовать (или нельзя?) с помощью jass функции Preload. Т.е. движок после вызова функции пытается открыть ресурс забитый в параметр. Тут то мы его и ловим. Прерываемся. Извлекаем строку-параметр в которой стоит некий признак, что это имеено "наш" искуственный прелоад. Дальше по вкусу, интерпретируем строку, делаем то что нужно и забиваем данные в переменную слот (можно конечно еще и посылать значение для поиска переменной в памяти, но можно и проинициализировать сразу штучек 5, нати их при первом запуске отладчика и в них и посылать результат работы... прям переменные-аккумуляторы :)=).
Старый 30.04.2006, 18:25
NETRAT

offline
Опыт: 83,712
Активность:
exploder идея интересная... думаю, что вполне реально
а можно просто флаг опрашивать, который будет отвечать за готовность данных к обработке и сигнализировать о возвращенном результате

NETRAT добавил:
но твой вариант инетересней
Старый 30.04.2006, 20:40
Dragoon

offline
Опыт: 544
Активность:
А кто-нибудь знает, каким образом варик использует j файл из карты ? Мне представляется, что вар в памяти хранит j код . Но так как это всего лишь скрипты, то вполне вероятно, что они хранятся в исходном виде. Если все это так, то получается возможно изменить содержимое скриптов в памяти на лету ? Скорее всего я где то неправ, проясните плиз сию ситуацию
Старый 30.04.2006, 21:45
NETRAT

offline
Опыт: 83,712
Активность:
нет, код парсится в самом начале - при инициализации, пожалуй, выход - код, выполнение которого основано на переменных-регистрах
Старый 30.04.2006, 22:50
ARHUI

offline
Опыт: 3,341
Активность:
Я не много не в теме но появился вопрос -
1 можно ли с помощью jass управлять mpq да и игрой в целом
2 правда ли что весь вар функционирует на jass а движок игры переводит jass для компьютера ?
Старый 01.05.2006, 08:49
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
exploder, NETRAT, идея конечно интересная, но куда ее можно приспособить? :?
Старый 01.05.2006, 09:28
MPI3
Хм...
offline
Опыт: 24,597
Активность:
ARHUI
AI и триггеры Вара -это и есть jass, но в более у добном фармате.
Старый 01.05.2006, 09:35
Dragoon

offline
Опыт: 544
Активность:
ARHUI,
  1. нет
  2. Вар написан на Си, равно как и интерпретатор JASS'a
Старый 01.05.2006, 10:52
ARHUI

offline
Опыт: 3,341
Активность:
Dragoonthanks
Старый 01.05.2006, 12:30
NETRAT

offline
Опыт: 83,712
Активность:
FellGuard я подумывал о динамической карте - внешний вид которой изменяется в процессе игры при чем с помощью внешних воздействий. Вроде как с сервера. теоретически можно даже подключение к такой карте сделать с помощью тонкого(thick) клиента - то есть как в обычных онлайн-играх - понадобится только сервер и невероятно развитый моск
Старый 01.05.2006, 14:53
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
FellGuard ну например узнавать данные из слк таблиц которые нельзя узнать непосредственно через джасс... да много чо можно еще напридумывать...

exploder добавил:
Цитата:
Вроде как с сервера. теоретически можно даже подключение к такой карте сделать с помощью тонкого(thick) клиента - то есть как в обычных онлайн-играх - понадобится только сервер и невероятно развитый моск

А во это реально круто... только ресурсов моска и человекочасов потребуется много... а так вполне даже осуществимо... конечно MMORPG вряд ли получится сделать, ибо передача данных клиент-вар реализована через жопу и медленна. Но например мульти плэерную кампанию можно реализовать...
Старый 02.05.2006, 17:19
Sky

offline
Опыт: 1,605
Активность:
Какие грандиозные идеи :)
Что если я буду через прогу менять значения вара типа золото, дерево и т.д.?
Каким образом это отражается на других игроках?

Отредактировано Harakternyk, 17.01.2008 в 16:18.
Старый 17.01.2008, 01:31
Toadcop

offline
Опыт: 54,313
Активность:
это отразитьса десинком... вот и всё
Старый 17.01.2008, 16:42
ZLOBICH
Kicked by XimikS
offline
Опыт: 4,727
Активность:
смотря что менять, у меня временами вар выдавал критические ошибки при смене хп/голда в шахте/лвл героев и тд
Старый 17.01.2008, 17:11
Sky

offline
Опыт: 1,605
Активность:
Toadcop
десинком???
по подробней можно?

в варике все клиенты синхронизируются между собой и при изменении у одного клиента какого-то значения не по правилам карты, происходит разрыв игры на 2
если так, значит у себя в процессах можно найти адрес в памяти, где хранится значение других игроков?
а можно как-нить сделать так, чтоб эти значений менялись и других клиентов?
ну вот если вставить читы в карту на голд, то можно спокойно делать золото без последствий, значит как-то можно заставить варик думать, что изменение значения в памяти правомерно)
Старый 17.01.2008, 18:01
S

offline
Опыт: 43,833
Активность:
  1. Найти конечно можно значение, но изменится оно на твоем компьютере ТОЛЬКО (если ты не сервер конечно... да и то вероятность десинка)
  2. Конечно можно чтобы эти значения менялись - влиять на них через сервер...
  3. ИМХО, эти читы передаются на сервер, а потом уже всем игрокам меняются по отдельности... геморрой в общем.
Старый 17.01.2008, 18:31

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 09:35.