Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2011, 02:14   #11
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Цитата:
вобщем давно интересовал вопрос,как можна из игры "вытянуть" какой то файлик,типа текстуру,или систему АИ или что то в таком роде,чтобы переделать,или даже добавить полносью новое что то свое,неочень в этом разбираюсь,но как такой род деятельности называеться?)
Берешь IDA pro, исследуешь код игры, и переписываешь в C++... Однако там нужен не слабый опыт, знания ассемблера, и не забывайте про Идеологию, также Венгерская нотация...
VintProg вне форума Ответить с цитированием
Старый 24.09.2011, 02:15   #12
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

а вот собственно пример:

код из IDA pro:

[CODE].text:004C3C80 ; int __cdecl createMarker(int type, float x, float y, float z, int flag1, int flag2)
.text:004C3C80 _createMarker proc near ; CODE XREF: CScriptThread__opcodeHandler_03+A08 p
.text:004C3C80 ; CScriptThread__opcodeHandler_03+156 6p
.text:004C3C80 ; CScriptThread__opcodeHandler_03+163 4p
.text:004C3C80 ; CScriptThread__opcodeHandler_06+408 p ...
.text:004C3C80
.text:004C3C80 type = dword ptr 4
.text:004C3C80 x = dword ptr 8
.text:004C3C80 y = dword ptr 0Ch
.text:004C3C80 z = dword ptr 10h
.text:004C3C80 flag1 = dword ptr 14h
.text:004C3C80 flag2 = dword ptr 18h
.text:004C3C80
.text:004C3C80 000 xor edx, edx
.text:004C3C82 000 xor eax, eax
.text:004C3C84 000 fld [esp+z]
.text:004C3C88 000 fld [esp+y]
.text:004C3C8C 000 jmp short loc_4C3C94
.text:004C3C8C ; ---------------------------------------------------------------------------
.text:004C3C8E 000 align 10h
.text:004C3C90
.text:004C3C90 loc_4C3C90: ; CODE XREF: _createMarker+20j
.text:004C3C90 000 add eax, 38h
.text:004C3C93 000 inc edx
.text:004C3C94
.text:004C3C94 loc_4C3C94: ; CODE XREF: _createMarker+Cj
.text:004C3C94 000 cmp ds:_radarBlips.inUse[eax], 0
.text:004C3C9B 000 jz short loc_4C3CA2
.text:004C3C9D 000 cmp edx, 75
.text:004C3CA0 000 jb short loc_4C3C90
.text:004C3CA2
.text:004C3CA2 loc_4C3CA2: ; CODE XREF: _createMarker+1Bj
.text:004C3CA2 000 cmp edx, 75
.text:004C3CA5 000 jnb loc_4C3D70
.text:004C3CAB 000 mov ecx, edx
.text:004C3CAD 000 mov eax, [esp+type]
.text:004C3CB1 000 imul ecx, 38h
.text:004C3CB4 000 fld [esp+x]
.text:004C3CB8 000 mov ds:_radarBlips.type[ecx], eax
.text:004C3CBE 000 mov dword ptr ds:_radarBlips.id_color[ecx], 5
.text:004C3CC8 000 mov ds:_radarBlips.field_26[ecx], 1
.text:004C3CCF 000 mov ds:_radarBlips.inUse[ecx], 1
.text:004C3CD6 000 mov ds:_radarBlips.field_28[ecx], 0
.text:004C3CDD 000 mov ds:_radarBlips.field_2C[ecx], 3F800000h
.text:004C3CE7 000 fstp ds:_radarBlips.pos.x[ecx]
.text:004C3CED 000 fst ds:_radarBlips.pos.y[ecx]
.text:004C3CF3 000 fld st(1)
.text:004C3CF5 000 fstp ds:_radarBlips.pos.z[ecx]
.text:004C3CFB 000 fld [esp+x]
.text:004C3CFF 000 mov eax, [esp+flag2]
.text:004C3D03 000 fstp ds:_radarBlips.field_18.x[ecx]
.text:004C3D09 000 fst ds:_radarBlips.field_18.y[ecx]
.text:004C3D0F 000 fld st(1)
.text:004C3D11 000 fstp ds:_radarBlips.field_18.z[ecx]
.text:004C3D17 000 mov ds:_radarBlips.entityHandle[ecx], 0
.text:004C3D21 000 mov ds:_radarBlips.field_30[ecx], 1
.text:004C3D2A 000 mov ds:_radarBlips.field_32[ecx], ax
.text:004C3D31 000 mov eax, edx
.text:004C3D33 000 imul eax, 38h
.text:004C3D36 000 mov ds:_radarBlips.iconID[ecx], 0
.text:004C3D3F 000 cmp ds:_radarBlips.field_24[eax], 0FFFEh
.text:004C3D47 000 jnb short loc_4C3D52
.text:004C3D49 000 inc ds:_radarBlips.field_24[eax]
.text:004C3D50 000 jmp short loc_4C3D5B
.text:004C3D52 ; ---------------------------------------------------------------------------
.text:004C3D52
.text:004C3D52 loc_4C3D52: ; CODE XREF: _createMarker+C7j
.text:004C3D52 000 mov ds:_radarBlips.field_24[eax], 1
VintProg вне форума Ответить с цитированием
Старый 24.09.2011, 02:15   #13
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

.text:004C3D5B
.text:004C3D5B loc_4C3D5B: ; CODE XREF: _createMarker+D0j
.text:004C3D5B 000 movzx eax, ds:_radarBlips.field_24[eax]
.text:004C3D62 000 fcompp
.text:004C3D64 000 shl eax, 10h
.text:004C3D67 000 or eax, edx
.text:004C3D69 000 retn
.text:004C3D69 ; ---------------------------------------------------------------------------
.text:004C3D6A 000 align 10h
.text:004C3D70
.text:004C3D70 loc_4C3D70: ; CODE XREF: _createMarker+25j
.text:004C3D70 000 or eax, 0FFFFFFFFh
.text:004C3D73 000 fcompp
.text:004C3D75 000 retn
.text:004C3D75 _createMarker endp[/CODE]

а вот его в C++ перевел:

Код:
DWORD CBlips::createBlip (DWORD dwEntityType, float fX, float fY, float fZ, WORD wFlags1, WORD wFlags2) {
  CBlip * pBlip = m_blips; 
  for (DWORD i = 0; i < 75; i++, pBlip++) 
    if (!pBlip->m_bInUse) {
      pBlip->m_dwColor = 5;
      pBlip->m_dwEntityType = dwEntityType;
      pBlip->m_hEntity = 0;
      pBlip->m_vPos.x = pBlip->_f18.x = fX;
      pBlip->m_vPos.y = pBlip->_f18.y = fY;
      pBlip->m_vPos.z = pBlip->_f18.z = fZ;
      pBlip->_f26 = 1;
      pBlip->m_bInUse = 1;
      pBlip->_f28 = 0;                        
      pBlip->_f2C = 1.f;
      pBlip->m_wScale = 1;
      pBlip->m_wFlag2 = wFlags2;
      pBlip->m_wIconId = 0;
      if (pBlip->m_wGenerationId < 0xFFFE)
        pBlip->m_wGenerationId++;
      else
        pBlip->m_wGenerationId = 1;
      return (pBlip->m_wGenerationId << 16)|i;
    }
  return 0xFFFFFFFF;  
}
VintProg вне форума Ответить с цитированием
Старый 24.09.2011, 08:26   #14
Gandfil
Пользователь
 
Регистрация: 17.08.2011
Сообщений: 17
По умолчанию

Неа, СДК всякие это не то. Они только конфиги правят, и то криво, лучше самому в конфигах лазить, это не трудно. Но вообще ты не правильно начал. Определи какую игру ты хочешь моддить. Лично я предлагаю Старкрафт 2, и Сталкер.
Если помог, жми на весы слева
Gandfil вне форума Ответить с цитированием
Старый 25.09.2011, 17:10   #15
ололошенько
Заблокирован
 
Регистрация: 10.08.2010
Сообщений: 566
По умолчанию

ну начать хочу с любой игры,желательно максимально простой,марио например,или какуето флеш игру)
ололошенько вне форума Ответить с цитированием
Старый 25.09.2011, 19:39   #16
Gandfil
Пользователь
 
Регистрация: 17.08.2011
Сообщений: 17
По умолчанию

А смысл? В каждой новой игре заново переучиваться придется. Хотя может и подойдет, на сам я примеров моддинга простых игр не видел.
Если помог, жми на весы слева
Gandfil вне форума Ответить с цитированием
Старый 25.09.2011, 20:04   #17
ололошенько
Заблокирован
 
Регистрация: 10.08.2010
Сообщений: 566
По умолчанию

проще игра-проще разобраться,ну по крайне мере я так думаю
ололошенько вне форума Ответить с цитированием
Старый 26.09.2011, 18:21   #18
Gandfil
Пользователь
 
Регистрация: 17.08.2011
Сообщений: 17
По умолчанию

Попробуй старкрафт 2. Крутой редактор(в нем собственно все и делается), ошибки не такие частые как в сталкере(но часто), много примеров, много мануалов(правда большинство английские, но есть и русские), можно реализовать игру практически любого жанра. Но за нормальную версию игры и редактора надо платить(абонен.плата), но можно купить безлимит.
Если помог, жми на весы слева

Последний раз редактировалось Gandfil; 26.09.2011 в 18:28.
Gandfil вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переделывание Кода Flammed C/C++ Базы данных 1 01.07.2011 13:21
Создание игр... quarty Общие вопросы Delphi 14 17.01.2011 20:01
Выкидывает с игр Agent3004 Операционные системы общие вопросы 13 31.07.2009 06:23
Создание игр ГОСЕАН Мультимедиа в Delphi 6 07.02.2009 16:17
Переделывание текста Hotwire Microsoft Office Excel 11 27.08.2007 09:17