PDA

Просмотр полной версии : вопрос о модуле Graphics!!!


skymanrus
31.12.2007, 00:56
вопрос следующий:
я написал скрипт бота который бегает в кружке и мочит всех мобов в этом круге и подберает дроп при этом не бегает за обычными нпц типа гуардов и не цепляется к игрокам

вот хочется ещё видеть всех мобов которые добавленны в базу данных чтоб они отображались наглядно в форме
по типу старого доброго волкера

не подскажете как создать форму и нарисовать в ней точку или загрузить в форму картинку??

как создать я понял
f := TForm.Create(nil);
f.Caption := 'Test it!';
f.BorderStyle := bsDialog;
f.Position := poScreenCenter;

я чесно пытался там мудрить как то но у меня то ошибку выдаёт то вообще ничего не происходит :(
как Из модуля Graphics чет вытащить и нарисовать с помощью координат точку в форме или картинку туда грузануть?
подскажите плиз!

Добавлено спустя 8 часов 27 минут 21 секунду:
люди ну подскажите плиз !!
я весь инет облазил в поисках примеров
ничего нету!

в документации написанно только

Из модуля Graphics:

TFont
TPen
TBrush
TCanvas
procedure TCanvas.Draw(X, Y: Integer; Graphic: TGraphic)
procedure TCanvas.Ellipse(X1, Y1, X2, Y2: Integer)
procedure TCanvas.LineTo(X, Y: Integer)
procedure TCanvas.MoveTo(X, Y: Integer)
procedure TCanvas.Rectangle(X1, Y1, X2, Y2: Integer)
procedure TCanvas.RoundRect(X1, Y1, X2, Y2, X3, Y3: Integer)
procedure TCanvas.StretchDraw(X1, Y1, X2, Y2: Integer; Graphic: TGraphic)
function TCanvas.TextHeight(const Text: string): Integer
procedure TCanvas.TextOut(X, Y: Integer; const Text: string)
function TCanvas.TextWidth(const Text: string): Integer
property TCanvas.Pixels

TGraphic
procedure TGraphic.LoadFromFile(const Filename: string)
procedure TGraphic.SaveToFile(const Filename: string)
property TGraphic.Height
property TGraphic.Width

TMetafile
TMetafileCanvas
TBitmap
property TBitmap.Canvas

type TFontStyles
type TFontPitch
type TPenStyle
type TPenMode
type TBrushStyle

и НИ ОДНОГО ПРИМЕРА ИСПОЛЬЗОВАНИЯ ЭТОГО МОДУЛЯ НЕТУ !!!
ну покажите хоть 1 примерчик !!! как квадратик размеравми 2 на 2 пикселя в форме нарисовать по координатам и все мне, этого будет по горло хватать :)

VORON
01.01.2008, 03:35
думаю что можно создать форму и на ней вместо рисования на канвасе создать мелкие объектики TShape (вроде так както)- которые особой смысловой нагрузки не несут но своим телом визуализируют квадратик или кружок на форме..

проблема форму создать?
ну можно глянуть стандартный скрипт любой.. а объект на форме разместить там тожэ есть..

var
frm:Tform;
memo:Tmemo;

procedure Init; //Вызывается при включении скрипта
begin
frm := TForm.Create(nil);
frm.Caption := 'Chat';
frm.BorderStyle := bsSizeable;
frm.Position := poScreencenter;
frm.Width:=600;
frm.Height:=700;
frm.FormStyle:=FsStayOnTop;
frm.Show;

memo :=TMemo.create(nil);
memo.parent:=frm;
memo.align:=alClient;

end;

procedure Free; //Вызывается при выключении скрипта
begin
memo.free; //тут вот главное очередность не перепутать- сначала объекты созданные на фОРМЕ
frm.Free; //А потом саму форму кил..
end;

skymanrus
01.01.2008, 04:43
спасибо что ответили но у меня нет проблем с созданием форм а вот можете пример создания TShape показать?
с одним квадратиком таким пример скрипта покажите плиз :) буду очень благодарен :)

VORON
01.01.2008, 12:24
var
frm:Tform;
shape:Tshape;

procedure Init; //Вызывается при включении скрипта
begin
frm := TForm.Create(nil);
frm.Caption := 'Chat';
frm.BorderStyle := bsSizeable;
frm.Position := poScreencenter;
frm.Width:=600;
frm.Height:=700;
frm.FormStyle:=FsStayOnTop;
frm.Show;

shape :=Tshape.create(nil);
shape.parent:=frm;

shape.left:=100; //координаты
shape.top:=150;
shape.width:=30; //размеры
shape.height:=40;

end;

procedure Free; //Вызывается при выключении скрипта
begin
shape.free; //тут вот главное очередность не перепутать- сначала объекты созданные на фОРМЕ
frm.Free; //А потом саму форму кил..
end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin

end.

Добавлено спустя 3 минуты 47 секунд:
хотя думаю что для динамичково удаления и создания новых точек визуализирующих мобов нужно применять массив из ТШАПЕ:
var
frm:Tform;
shape: array [1..100] of Tshape;

procedure Init; //Вызывается при включении скрипта
begin
frm := TForm.Create(nil);
frm.Caption := 'Chat';
frm.BorderStyle := bsSizeable;
frm.Position := poScreencenter;
frm.Width:=600;
frm.Height:=700;
frm.FormStyle:=FsStayOnTop;
frm.Show;

shape[1]:=Tshape.create(nil);
shape[1].parent:=frm;

shape[1].left:=100; //координаты
shape[1].top:=150;
shape[1].width:=30; //размеры
shape[1].height:=40;

end;

procedure Free; //Вызывается при выключении скрипта
begin
shape[1].free; //тут вот главное очередность не перепутать- сначала объекты созданные на фОРМЕ
frm.Free; //А потом саму форму кил..
end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin

end.

Добавлено спустя 8 минут 52 секунды:
по мере работы скрипта можно будет динамически удалять елементы из массива SHAPE[1..100] и создовать новые екземпляры.. а такжэ изменять у уже созданных екземпляров свойства TOP и LEFT (если моб перемешается)

skymanrus
01.01.2008, 16:06
УРА!!! это гениально!!
СПАСИБО ОГРОМНОЕ !!!!!!!
щас забацаю такого бота :))

а ещё 2 вопросика можно ? :)
последние чесна чесна :)
1 а можете пример скриптика показать где в форму картинку вставляют из какого то bmp, gif или jpg файла ??? хочу зади ещё карту пришпандорить :))))))
2 можно как то поменять цвет квадратов Tshape ??? чтоб я мог как то различать тех мобов которые гуляют просто так от тех кто меня атакует и вообще мог отличить себя и мобов :))

Добавлено спустя 21 минуту 57 секунд:
с цветом уже разобрался :)

shape.Brush.Color:= fsBold ;

а вот что с картинками делать пока не знаю

Добавлено спустя 14 минут 19 секунд:
с картинкой тоже разобрался :)))))

Image1 :=TImage.create(nil);
Image1.parent:=frm;
Image1.Picture.LoadFromFile('1.bmp');
Image1.Stretch:=True;
Image1.width:=611;
Image1.height:=611;
Image1.left:=100;
Image1.top:=150;

в общем спасибо ещё раз что наставили меня на путь истинный :))

xkor
22.01.2008, 04:27
ммм, хоть скрин покажи что получилось), заинтриговал) и кста с какой скоростью это всё пашет?)

skymanrus
22.01.2008, 14:28
хех да я уже забросил это дело :)
потому что если чисто на скриптах все писать такие тормоза что пока скрипт выполняет все вычисления чара в игре уже убивают
реально нечто подобное можно только с dll организовать

пробывал писать скрипты в WPP но там так все запутанно... для того чтоб подрубить скрипт надо вначале зайти в меню выбора сервака затем врубить минипроксификатор затем wpp и там ещё всякие кнопки включения прокси поврубать затем только после загрузки мира можно загружать скрипты и подключать dll к WPP...
а так как немодальные окна из dll вызывать не умею приходится ещё через ини файл подрубать exe который показывает всю инфу о боте...
в результате для того чтоб только начать писать скрипт в WPP который смог бы пахать с dll надо открыть около 8 окон :( постоянно в них путаешся...
короч я попробывал и понял что с таким гемороем я жить не смогу :))

у пакет хака просто все ГЕНИАЛЬНО ПРОСТО по сравнению с wpp

так что буду ждать релиза твоей новой проги которая dll поддерживает нормально :)