------------------------------------------- 1. Внедрение скринсейвера в игру -------------------------------------------
Ну что присаживаемся поудобней, запускаем Delphi и выбираем new->Other...->DLL Wizard, это будет у нас динамическая библиотека, и сразу даем ей название Scr_saver, директиву {$E asi} добавить чтобы у нас сразу компилировались плагины с нужным расширением *.asi.В прошлых статьях мы использовали свой загрузчик плагинов который загружал все *.dll из папки Bin\\\\, нет необходимости его использовать, это была просто тренировка, все свои библиотеки *.asi, достаточно положить возле gta-vc.exe, либо в папку Mss\\\\, и они будут работать.Далее удаляем не нужный модуль Classes, и добавляем следующие Forms, Graphics, Windows.
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}
Видите как элементарно сделать такой плагин самому, код не сильно длинный всего 50 строк. правда мало? Также хочу заметить что данный плагин идет как под GTA vice city так и под GTA San Andreas, для любой абсолютно версии, знаете почему? Да потому что наш плагин не выполняет не каких-либо действий и изменений в динамической памяти игры, где в разных игр GTA, и в разных версиях разное смещение в памяти, и GTA San Andreas тоже поддерживает загрузку *.asi библиотек. Также можно по получить интересный снимок если указать формат пикселя Bitmap_File.PixelFormat := pf4bit либо pf8bit; обратите на рис:
ну как забавно? .
И еще будьте бдительны с версиями игры так как ваш плагин может работать под одну версию а под другую нет! Помните что данный код можно модифицировать своей фантазией, можно сделать чтобы в формате *.jpeg сохранялись скрины, использую класс TJPEGImage он находится в модуле jpeg. Пример расположен в каталоге scr\\\\Delphi 7\\\\examples\\\\
взят из моего учебника Искусство изменения gta продолжения. GTA сайт
надо по больше информировать о самом дельфи, его классах и подобных вещах, что да как писать(это же всё таки програмирование). Если инфы нет, то и толку особого не будет. До меня вообще не допёр принцип создания элементарного плагина(скринсейфера).
Но а дельфи учил? Сколько лет программишь? Я думаю что не более пол-года. Тем более класс не мой, если бы был мой то про информировал, надо в справках от борланда смотреть чешь теперь... GTA сайт
Я начинал все со скриптинга, когда инета у меня вообще не было, был еще тогда VC Builder, вот на нем я и сам научился делать миссии без всяких документаций, о программирование даже и речи не было, я даже и не знал тогда что с помошью программирование создаются файлы exe dll... Но я догадывался тогда что все самое вкусное находится в gta-vc.exe :). GTA сайт
Ну то что самое вкусное в exe это да, хотя вот учить дельфи терь точно придётся(мозгов больно не хватает, простые вещи порой доходят на столько туго, что энтузиазма учить бывает не хватает просто) Смешно канешн звучит, но самый боле менее понятный мне язык это турбопаскаль(да да, старенький и добренький турбопаскаль)