Суббота, 22.07.2017, 01:53
GTA-EXE
Приветствую Вас Гость | RSS
Главная Внедрение скринсейвера в игру. - Форум Регистрация Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум » GTA Vice City » Справочная информация » Внедрение скринсейвера в игру.
Внедрение скринсейвера в игру.
VintProgДата: Вторник, 05.07.2011, 05:14 | Сообщение # 1
Новичок
Группа: Администраторы
Сообщений: 193
Репутация: 9
Статус: Offline
Для новичков тутор, учитесь на здоровье.


-------------------------------------------
1. Внедрение скринсейвера в игру
-------------------------------------------


Ну что присаживаемся поудобней, запускаем Delphi и выбираем new->Other...->DLL Wizard, это будет у нас динамическая библиотека, и сразу даем ей название Scr_saver, директиву {$E asi} добавить чтобы у нас сразу компилировались плагины с нужным расширением *.asi.В прошлых статьях мы использовали свой загрузчик плагинов который загружал все *.dll из папки Bin\\\\, нет необходимости его использовать, это была просто тренировка, все свои библиотеки *.asi, достаточно положить возле gta-vc.exe, либо в папку Mss\\\\, и они будут работать.Далее удаляем не нужный модуль Classes, и добавляем следующие Forms, Graphics, Windows.

Далее пишем следующий код:

Code
ibrary Scr_saver;

uses
        SysUtils,
        Classes, Forms, Graphics, Windows;

{$R *.res}
{$E asi}

var
Screen      : TScreen;
Bitmap_File : Graphics.TBitmap;
Press_F12   : Boolean = true;
File_id     : Integer = 1;

procedure Update;
begin

if not (GetKeyState(VK_F12) < 0)  then   //Если клавиша f12 отпущена
            Press_F12 := true;                  //то разрешаем делать следующий снимок

if (GetKeyState(VK_F12) < 0) and Press_F12 = true  then
          begin
            Bitmap_File.Width := Screen.Width;
            Bitmap_File.Height := Screen.Height;
            BitBlt(Bitmap_File.Canvas.Handle, 0, 0, Bitmap_File.Width,
              Bitmap_File.Height, GetDC(0), 0, 0, SRCCOPY);
            Bitmap_File.SaveToFile(\\\'Screenshots\\\\Screenshot_\\\' +
               IntToStr(File_id) + \\\'.bmp\\\');
            Inc(File_id);         //Увеличиваем на 1
            Press_F12 := false;
          end;

end;

begin
Screen  := TScreen.Create(nil);
Bitmap_File := Graphics.TBitmap.Create;  //Создаем объект класса Битмапа
Bitmap_File.PixelFormat := pf24bit;      //Устанавливаем формат пикселя
SetTimer(0,0,16,@Update);              {Устанавливаем цикл 16 мс, который
                         будет переодический вызывать процедуру
                         UpDate}
                    
CreateDir(\\\'Screenshots\\\');                //Создаем обыкновенную папку
end.


Видите как элементарно сделать такой плагин самому, код не сильно длинный всего 50 строк. правда мало?
Также хочу заметить что данный плагин идет как под GTA vice city так и под GTA San Andreas, для любой
абсолютно версии, знаете почему? Да потому что наш плагин не выполняет не каких-либо действий и изменений
в динамической памяти игры, где в разных игр GTA, и в разных версиях разное смещение в памяти, и GTA San Andreas тоже поддерживает загрузку *.asi библиотек. Также можно по
получить интересный снимок если указать формат пикселя Bitmap_File.PixelFormat := pf4bit либо pf8bit;
обратите на рис:



ну как забавно? smile .

И еще будьте бдительны с версиями игры так как ваш плагин может работать под одну версию а под другую нет!
Помните что данный код можно модифицировать своей фантазией, можно сделать чтобы в формате *.jpeg сохранялись скрины, использую класс TJPEGImage он находится в модуле jpeg. Пример расположен в каталоге scr\\\\Delphi 7\\\\examples\\\\

взят из моего учебника Искусство изменения gta продолжения.


GTA сайт
 
LEXДата: Понедельник, 11.07.2011, 15:46 | Сообщение # 2
Дух сети
Группа: Пользователи
Сообщений: 79
Репутация: 3
Статус: Offline
мало чё понятно, мало информировано в самом коде и т.п. Чё за классы до меня вообще не допёрло....
 
VintProgДата: Вторник, 12.07.2011, 10:43 | Сообщение # 3
Новичок
Группа: Администраторы
Сообщений: 193
Репутация: 9
Статус: Offline
А что тут не понятного???
Screen : TScreen; //Класс экрана
Bitmap_File : Graphics.TBitmap; //Класс картинки Bitmap


GTA сайт
 
LEXДата: Вторник, 12.07.2011, 11:40 | Сообщение # 4
Дух сети
Группа: Пользователи
Сообщений: 79
Репутация: 3
Статус: Offline
надо по больше информировать о самом дельфи, его классах и подобных вещах, что да как писать(это же всё таки програмирование). Если инфы нет, то и толку особого не будет.
До меня вообще не допёр принцип создания элементарного плагина(скринсейфера).
 
VintProgДата: Вторник, 12.07.2011, 11:44 | Сообщение # 5
Новичок
Группа: Администраторы
Сообщений: 193
Репутация: 9
Статус: Offline
Но а дельфи учил? Сколько лет программишь? Я думаю что не более пол-года. Тем более класс не мой, если бы был мой то про информировал, надо в справках от борланда смотреть чешь теперь...

GTA сайт
 
LEXДата: Вторник, 12.07.2011, 11:52 | Сообщение # 6
Дух сети
Группа: Пользователи
Сообщений: 79
Репутация: 3
Статус: Offline
Если чесно я тока скриптер) Но по немногу учу програмирование.
 
VintProgДата: Вторник, 12.07.2011, 11:54 | Сообщение # 7
Новичок
Группа: Администраторы
Сообщений: 193
Репутация: 9
Статус: Offline
Ты наверное читал, с чего я начинал и научился программировать?

GTA сайт
 
LEXДата: Вторник, 12.07.2011, 11:57 | Сообщение # 8
Дух сети
Группа: Пользователи
Сообщений: 79
Репутация: 3
Статус: Offline
Эммм, нет. Зато прочитал учебник "Искусство моддинга гта", где 3 примера создания плагина есть(ну там трейнер, лоадер...)
 
VintProgДата: Вторник, 12.07.2011, 12:02 | Сообщение # 9
Новичок
Группа: Администраторы
Сообщений: 193
Репутация: 9
Статус: Offline
Я начинал все со скриптинга, когда инета у меня вообще не было, был еще тогда VC Builder, вот на нем я и сам научился делать миссии без всяких документаций, о программирование даже и речи не было, я даже и не знал тогда что с помошью программирование создаются файлы exe dll... Но я догадывался тогда что все самое вкусное находится в gta-vc.exe :).

GTA сайт
 
LEXДата: Вторник, 12.07.2011, 12:08 | Сообщение # 10
Дух сети
Группа: Пользователи
Сообщений: 79
Репутация: 3
Статус: Offline
Ну то что самое вкусное в exe это да, хотя вот учить дельфи терь точно придётся(мозгов больно не хватает, простые вещи порой доходят на столько туго, что энтузиазма учить бывает не хватает просто)
Смешно канешн звучит, но самый боле менее понятный мне язык это турбопаскаль(да да, старенький и добренький турбопаскаль)
 
VintProgДата: Вторник, 12.07.2011, 12:11 | Сообщение # 11
Новичок
Группа: Администраторы
Сообщений: 193
Репутация: 9
Статус: Offline
Ну дельфи такой же синтаксис имеет (Pascal). C++ кстати тоже вешь очень хорошая...

GTA сайт
 
LEXДата: Вторник, 12.07.2011, 12:18 | Сообщение # 12
Дух сети
Группа: Пользователи
Сообщений: 79
Репутация: 3
Статус: Offline
Сишку смотрел как то, мало чё допёрло. По моему дельфи даже чем то легче...
 
VintProgДата: Вторник, 12.07.2011, 12:23 | Сообщение # 13
Новичок
Группа: Администраторы
Сообщений: 193
Репутация: 9
Статус: Offline
Дельфи легче, но код у нее не оптимизированый выходит, по этому на ней крутые игры не делают, а вот MSVC это да!

GTA сайт
 
Форум » GTA Vice City » Справочная информация » Внедрение скринсейвера в игру.
Страница 1 из 11
Поиск:

Copyright by StingerVX888 © 2017