MasterGH Опубликовано 19 мая, 2015 Поделиться Опубликовано 19 мая, 2015 На CE Lua можно рисовать.Пример1. Рисование графика (без шкалы)Chart.CTПример2. Рисование с анимацией Классы для рисования (основные из main.lua). Примеры рисования ищите по аналогии по статьям Дельфи Рисование.function CEButton1Click(sender) ClBlack = 0x000000 ClRed = 0x0000FF ClGreen = 0x008000 ClWhite = 0xFFFFFF local CEImage1 = frmChartTool.CEImage1 local canvas = CEImage1.Canvas local pen = canvas.Pen local brush = canvas.Brush local x1 = -10.0 -- Начало оси Ox local x2 = 10.0 -- Конец оси Ox local m = 50.0 -- Масштаб графика -- Центры осей Ox и Oy local x0 = 0 local y0 = 0 -- Координаты, по которым отрисовывается график local x = 0.0 local y = 0.0 canvas.clear() x0 = CEImage1.Width / 2.0 -- x0 = центр Image1 по оси Ox y0 = CEImage1.Height / 2.0 -- y0 = центр Image1 по оси Oy pen.Color = ClGreen -- Цвет пера зеленый pen.Width = 1 -- Ширина пера = 1 canvas.setPenPosition(0, y0) -- Положение курсора = (0,y0) canvas.lineTo(CEImage1.Width, y0) -- Линия от (0,y0) до (width,y0) - линия оси Ox canvas.setPenPosition(x0, 0) -- Положение курсора = (x0,0) canvas.lineTo(x0, CEImage1.Height) -- Линия от (x0,0) до (x0,height) - линия оси Oy pen.Color = ClRed -- Цвет пера = красный pen.Width = 2 -- Ширина пера = 2 x = x1 -- Начальное положение курсора по оси Ox y = math.sin(x) -- Начальное положение курсора по оси Oy canvas.setPenPosition(x0+math.floor(x*m), math.floor(y0-y*m)) -- Переносим курсор на заданные while x < x2 do -- координаты относительно центра осей координат и масштаба x = x + 0.01 y = math.sin(x) canvas.lineTo(x0+math.floor(x*m), math.floor(y0-y*m)) endendfunction Draw() r = math.random(x0) y = y0-r u = u + 1 pen.Color = math.random(0xffffff) x = x0 + math.floor(r * math.sin(u * math.pi/180)) y = y0 - math.floor(r * math.cos(u * math.pi/180)) canvas.line(x0, y0, x, y) if(u > 360) then u = 0 endendif(UDF1 == nil) then UDF1 = createForm(true) UDF1.width = 800 UDF1.height = 800 UDF1.centerScreen() canvas = UDF1.getCanvas() pen = canvas.Pen x0 = UDF1.ClientWidth / 2 y0 = UDF1.ClientHeight / 2 u = 0 r = y0 - 20 x = x0 myTimer = createTimer(UDF1, true) myTimer.Interval = 10 myTimer.OnTimer = DrawendCanvas Class : (Inheritance: CustomCanvas->Object)properties Brush: Brush - The brush object Pen: Pen - The pen object Font: Font - The font object Width: integer - Width of the canvas Height: integer - Height of the canvasmethods getBrush(): Returns the brush object of this canvas getPen(): Returns the pen object of this canvas getFont(): Returns the font object of this canvas getWidth() getHeight() getPenPosition() setPenPosition(x,y) clear() - Clears the canvas line(sourcex, sourcey, destinationx, destinationy) lineTo(destinationx, destinationy) rect(x1,y1,x2,y2) fillRect(x1,y1,x2,y2) textOut(x,y, text) getTextWidth(text) getTextHeight(text) getPixel(x,y) setPixel(x,y,color) floodFill(x,y) ellipse(x1,y1,x2,y2) gradientFill(x1,y1,x2,y2, startcolor, stopcolor, direction) : Gradient fills a rectangle. Direction can be 0 or 1. 0=Vertical 1=Horizontal copyRect(dest_x1,dest_y1,dest_x2,dest_y2, sourceCanvas, source_x1,source_y1,source_x2,source_y2) : Draws an image from one source to another. Usefull in cases of doublebuffering draw(x,y, graphic) : Draw the image of a specific Graphic class getClipRect() : Returns a table containing the fields Left, Top, Right and Bottom, which define the invalidated region of the graphical object. Use this to only render what needs to be rendered in the onPaint event of objectsPen Class : (Inheritance: CustomPen->CanvasHelper->Object)properties Color: Integer - The color of the pen Width: integer - Thickness of the penmethods getColor() setColor(color) getWidth() setWidth(width)</Some><Some>Brush Class : (Inheritance: CustomBrush->CanvasHelper->Object)properties Color : Integermethods getColor() setColor()Font Class : (Inheritance: CustomFont->CanvasHelper->Object)createFont(): Returns a font object (default initialized based on the main ce window)properties Name: string Size: integer Color: integermethods getName(): Gets the fontname of the font setName(string): Sets the fontname of the font getSize(): Gets the size of the font setSize(integer): Sets the size of the font getColor(): Gets the color of the font setColor(integer): Sets the color of the font assign(font): Copies the contents of the font given as parameter to this font</Some>Graphic Class : (Inheritance: Object) : Abstract classproperties Width: integer Height: integer Transparent: booleanmethods getWidth(graphic): Gets the current width in pixels of this graphics object setWidth(graphic, width): Sets thw width in pixels getHeight(graphic) setHeight(graphic, height)</Some>RasterImage class: (Inheritance: Graphic->Object) : Base class for some graphical controlsproperties Canvas: Canvas PixelFormat: PixelFormat - the pixelformat for this image. Will clear the current image if it had one. Supported pixelformats: pf1bit, pf4bit, pf8bit, pf15bit, pf16bit, pf24bit, pf32bit (recommended) TransparentColor: integermethods getCanvas(): Returns the Canvas object for this image getPixelFormat(): Returns the current pixelformat getPixelFormat(pixelformat): Sets the pixelformat for this image. Will clear the current image if it had one. Supported pixelformats: pf1bit, pf4bit, pf8bit, pf15bit, pf16bit, pf24bit, pf32bit (recommended) setTransparentColor(integer): Sets the color that will be rendered as transparent when drawn getTransparentColor(): Returns the color set to be transparentBitmap class: (Inheritance: CustomBitmap->RasterImage->Graphic->Object) : Bitmap based Graphic objectcreateBitmap(width, height) - Returns a Bitmap object 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 20 мая, 2015 Поделиться Опубликовано 20 мая, 2015 Мастер,а как на пример сделать текст мигающий ??? вот я на пример пишу Gamehacklab[RU] а как сделать - что бы от мигал ?? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 20 мая, 2015 Автор Поделиться Опубликовано 20 мая, 2015 Мастер,а как на пример сделать текст мигающий ??? вот я на пример пишу Gamehacklab[RU] а как сделать - что бы от мигал ?? Здесь цвет меняется по таймеру с интервалом 100 мс от черного до красного на величину 0x10.Как сделать смену прозрачности я не знаю. Похоже нужно вызывать Windows API потоком чтобы делать прозрачность. У Дельфи или у Лазаря сложности с прозрачным текстом и эти сложности переходят в CE Lua. speedInterval = 100function Draw() font.Color = colorRed canvas.TextOut(10, 10, 'Gamehacklab[RU]') if(bForwardPathIncrement) then colorRed = colorRed - 0x10 else colorRed = colorRed + 0x10 end if(colorRed > 0xFF) then bForwardPathIncrement = true colorRed = 0xF0 end if(colorRed < 0x10) then bForwardPathIncrement = false colorRed = 0x10 endendif(myTimer == nil) then UDF1 = createForm(true) UDF1.width = 400 UDF1.height = 200 UDF1.centerScreen() canvas = UDF1.getCanvas() font = canvas.Font font.Size = 25 canvas.Brush.Style = 1 colorRed = 0x10 bForwardPathIncrement = false myTimer = createTimer(UDF1, true) myTimer.Interval = speedInterval myTimer.OnTimer = Drawend 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 20 мая, 2015 Поделиться Опубликовано 20 мая, 2015 Здесь цвет меняется по таймеру с интервалом 100 мс от черного до красного на величину 0x10.Как сделать смену прозрачности я не знаю. Похоже нужно вызывать Windows API потоком чтобы делать прозрачность. У Дельфи или у Лазаря сложности с прозрачным текстом и эти сложности переходят в CE Lua. Спасибо... попробую,а то мы с Игорем искали и не нашли Хотя это Игоря задумка - сделать так, что бы кнопка горела,якобы указывающая что на неё нужно жмакнуть speedInterval = 100function Draw() font.Color = colorRed canvas.TextOut(10, 10, 'Gamehacklab[RU]') if(bForwardPathIncrement) then colorRed = colorRed - 0x10 else colorRed = colorRed + 0x10 end if(colorRed > 0xFF) then bForwardPathIncrement = true colorRed = 0xF0 end if(colorRed < 0x10) then bForwardPathIncrement = false colorRed = 0x10 endendif(myTimer == nil) then UDF1 = createForm(true) UDF1.width = 400 UDF1.height = 200 UDF1.centerScreen() canvas = UDF1.getCanvas() font = canvas.Font font.Size = 25 canvas.Brush.Style = 1 colorRed = 0x10 bForwardPathIncrement = false myTimer = createTimer(UDF1, true) myTimer.Interval = speedInterval myTimer.OnTimer = Drawend Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 20 мая, 2015 Автор Поделиться Опубликовано 20 мая, 2015 Скорее всего, у Button или Label с обработкой события Клика будет другой код. Нужно получить ссылку на Font, Canvas, Brush. У меня же просто текст. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 20 мая, 2015 Поделиться Опубликовано 20 мая, 2015 MasterGH, собственно вот что я хочу - в самом низу статьи NullAlexа мой комментарий:http://nullalex.gamehacklab.ru/photoshop/photoshop_lessons/8-sozdaem-graficheskuyu-chast-dlya-treynerov-v-photoshop.html#comment Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 20 мая, 2015 Поделиться Опубликовано 20 мая, 2015 (изменено) MasterGH, собственно вот что я хочу - в самом низу статьи NullAlexа мой комментарий:http://nullalex.gamehacklab.ru/photoshop/photoshop_lessons/8-sozdaem-graficheskuyu-chast-dlya-treynerov-v-photoshop.html#commentИнтересно,а зачем это в фотошопе рисовать??? если и в самом СЕ рисуется всё это... даже форму после можно сохранить как исходник(для дальнейшего использования)... правда потом коды переписать надо на выход и переход по ссылке. Хотя у него там что то задумано не с проста... но такое наверное и без фотошопа сделать можно. А музыку Игорь я тебе показывал как включать,отключать и ставить на паузу - на самом СЕ форуме всё лежит. Я кстати Игорь видел у них на форуме исходник трейнера на СЕ там прям анимационная картинка ну как звезды на ночном небе летят... Видел,но не взял себе,а щас уже не знай где там искать. Вот подобия вот этого http://forum.cheatengine.org/viewtopic.php?p=5456905&sid=04e3dad77ff231830d5395a274decdd9 Изменено 20 мая, 2015 пользователем LIRW Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 20 мая, 2015 Поделиться Опубликовано 20 мая, 2015 Я и не писал про фотошоп, а именно про СЕ Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 20 мая, 2015 Автор Поделиться Опубликовано 20 мая, 2015 MasterGH, собственно вот что я хочу - в самом низу статьи NullAlexа мой комментарий:http://nullalex.gamehacklab.ru/photoshop/photoshop_lessons/8-sozdaem-graficheskuyu-chast-dlya-treynerov-v-photoshop.html#comment...Ну и т.д. Короче очень хочется научиться делать нормальный (не нубский) трейнер с помощью СЕ.А то уроков (видеоуроков) полноценных по данной теме не нашёл в инете. Если уроков по созданию трейнеров на CE нет, то значит учатся без них. Сначала добиваешься своих целей на Дельфи 7 с помощь поисковиков. Вот например не плхой тутор про рисованиеhttp://www.youtube.com/watch?v=BP8ao8tNdbQ После того как нашел документацию по Дельфи 7, немного на ней пописал программы по интерфейсу, то заходишь сюда main.lua и по аналогии на CE Lua пробуешь сделать. Будь то графика, музыка, нажатия эффекты и прочее. Если действительно хочешь научиться и есть сильный стимул, то научишься. Стоит начать и дело может пойти в гору. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 20 мая, 2015 Поделиться Опубликовано 20 мая, 2015 (изменено) MasterGH, Всё это понятно. В данном случае мне в начале нужно научиться писать на Дельфи 7. Я буду в будущем изучать С++ (выбрал его). Т.е. ты предлагаешь сперва изучить какой-то язык, немного научиться писать на нём, а потом вернуться к СЕ. Если я научусь писать на С++, то уже точно не вернусь к СЕ, т.к. размер ехе файла будет гораздо мегьше на С++.Я же хотел наоборот, пока не научусь писать на С++, писать трейнеры с помощью СЕ, тем более всё в ней уже есть, кроме к сожалению перевода main.Lua.Допустим как создать окно трейнера, как создать надпись, например Gamehacklab.ru и как сделать, чтобы при клике мыши на надписи, срабатывала ссылка LIRW мне всё показал (записал специально для меня видеоурок). В той же надписи есть события не только на клик мыши, уверен что там есть событие, когда мышь просто наводиться на надпись и если бы у меня был перевод всех кнопок и main.Lua я давно бы уже сделал всё что хотел. К сожалению с помощью Гугл-переводчика я текст не воспринимаю и ещё в самом начале (карьеры взломщика , в первый месяц после регистрации на форуме) создавал тему Есть ли перевод на русский main.lua, но конкретного ответа на вопрос не получил - видимо перевода нет.Дельфи изучать не хочется. Так что подожду либо урока Xipho, либо урока NullAlexa, либо потихоньку нарою нужную мне информацию в Гугле, а потом сам напишу урок для таких же как и я новичков. Изменено 20 мая, 2015 пользователем Garik66 Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 20 мая, 2015 Автор Поделиться Опубликовано 20 мая, 2015 1. Если выбрал С++, то тогда тебе не нужна генерация трейнеров на CE. CE тебе пригодится в лучшем случае для сбора данных и генерации исходников на С++. 2. Если выбрал трейнеры на CE да еще и с эффектами, то тогда CE AA, CE Lua и Дельфи. Ибо CE Lua это для тех, кто что-то когда-то писал на Дельфи. CE Lua это обертка Дельфи (особенно что касается визуальных эффектов). Если Дельфи не знаешь, а тем более принципа написания программ, будет довольно сложно или вообще никак. 3. Перевода main.lua скорее всего никогда не будет. Всем влом переводить. 4. С++ можно не учить, а сразу на нем писать. Самый простой пример// Если нажали на кнопку F4if( (GetAsyncKeyState(VK_F4) & 1) == 1){ HWND hWnd; DWORD dwID; HANDLE hProcess; // Ищем существующий hWnd по имени окна hWnd = FindWindow(NULL, "Test"); // Получаем id процесса по hWnd GetWindowThreadProcessId(hWnd, &dwID); // Создать hProcess, открывая по dwID с правами PROCESS_ALL_ACCESS hProcess = OpenProcess(PROCESS_ALL_ACCESS, NULL, dwID); // Значение 1000000 записать в адрес 0x45B5A4 int value = 1000000; WriteProcessMemory(hProcess, (void*)0x45B5A4, &value, sizeof(&value), NULL); // Закрыть hProcess (мы же его создали в системе, надо и закрыть) CloseHandle(hProcess);} Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 20 мая, 2015 Поделиться Опубликовано 20 мая, 2015 1. Согласен.2. Жаль.3. Очень жаль. 4. Я так не умею, мне всё-таки вначале нужно понять (хотя бы в общих чертах) о чём речь идёт. Если выбрал трейнеры на CEЯ их не выбирал, просто пока не знаю языков программирования, скрипты более менее получаются в СЕ Ассемблер, а для трейнеров осталось сделать только внешнюю оболочку с не которыми опциями, чтобы трейнер не выглядел слишком уж по нубски. Так что от Lua нужен для этого минимум, не так много. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 4 января, 2016 Автор Поделиться Опубликовано 4 января, 2016 Добавлен пример рисования графика в первый пост Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения