CynicRus
2012-07-30 09:41:43
How Long have You Played Runescape?
8 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
What is your general programming knowledge?
Object Pascal and Pascal, C, C#, C++, some Asm.
Are you a member of any other communities?
Linux.org.ru; ubuntufotums.org; forum.ubuntu.ru
Tell us about yourself…
Please show us one (or multiple) of your scripts.
8 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
What is your general programming knowledge?
Object Pascal and Pascal, C, C#, C++, some Asm.
Are you a member of any other communities?
Linux.org.ru; ubuntufotums.org; forum.ubuntu.ru
Tell us about yourself…
From: CynicRus
Im system administrator from Moscow, my age 26 and i love life, programming, opensource community and many other-)
Please show us one (or multiple) of your scripts.
//I writing plugins and Form designer. But, if script wanted - then this is my test plugin script:
program new;
{$loadlib rwmem.dll}
var
trnForm:TForm;
lblPid,lblpvalue,lblHandle,lblhvalue,lblval,lbl1val,lbladdr2,lbladdr2val: TLabel;
TButton0: TButton;
Values: array of byte;//Values for memory writing
WinMine: integer;//WinMine PID
MineHandle: integer;//WinMine window handle
Addr1,Addr2: integer;
const
default = 'Comic Sans MS';
{Trainer procedures}
Procedure InitAndFill;
begin
SetLength(Values,1);
Values[0]:=StrToInt('$90');
Addr1:=StrToInt('$1003830');
Addr2:=StrToInt('$1002ff5');
WinMine:=GetProcessIdByName('WinMine.exe');
lblpvalue.Caption:=IntToStr(WinMine);
MineHandle:=GetWindowName('Minesweeper');
lblhvalue.CAPTION:=IntToStr(MineHandle);
lbl1val.CAPTION:=IntToStr(ReadFromMemory(MineHandle,addr1,1));
lbladdr2val.CAPTION:=IntToStr(ReadFromMemory(MineHandle,addr2,1));
end;
procedure Patch(Sender: TObject);
begin
WriteMemoryToPID(WinMine,Addr1,Values,1);
WriteMemoryToPID(WinMine,Addr2,Values,1);
lbl1val.CAPTION:=ToStr(ReadFromMemoryFromPID(WinMine,addr1,1));
lbladdr2val.CAPTION:=ToStr(ReadFromMemoryFromPID(WinMine,addr2,1));
end;
procedure InitForm;
begin
//trnForm\\
trnForm:=TForm.Create(nil);
with trnForm do
begin
Caption:='MineSweeper';
Left:=401;
Top:=201;
Width:=217;
Height:=149;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=0;
end;
//lblPid\\
lblPid:=TLabel.Create(trnForm);
with lblPid do
begin
Parent:=trnForm;
Caption:='Minesweeper PID:';
Left:=13;
Top:=7;
Width:=95;
Height:=16;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=0;
end;
//lblpvalue\\
lblpvalue:=TLabel.Create(trnForm);
with lblpvalue do
begin
Parent:=trnForm;
Caption:='lblpvalue';
Left:=150;
Top:=7;
Width:=49;
Height:=16;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=0;
end;
//lblHandle\\
lblHandle:=TLabel.Create(trnForm);
with lblHandle do
begin
Parent:=trnForm;
Caption:='MS handle:';
Left:=12;
Top:=25;
Width:=60;
Height:=16;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=0;
end;
//lblhvalue\\
lblhvalue:=TLabel.Create(trnForm);
with lblhvalue do
begin
Parent:=trnForm;
Caption:='lblhvalue';
Left:=130;
Top:=25;
Width:=49;
Height:=16;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=0;
end;
//lblval\\
lblval:=TLabel.Create(trnForm);
with lblval do
begin
Parent:=trnForm;
Caption:='Address 1 value:';
Left:=12;
Top:=42;
Width:=86;
Height:=16;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=0;
end;
//lbl1val\\
lbl1val:=TLabel.Create(trnForm);
with lbl1val do
begin
Parent:=trnForm;
Caption:='lbl';
Left:=130;
Top:=42;
Width:=14;
Height:=16;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=0;
end;
//lbladdr2\\
lbladdr2:=TLabel.Create(trnForm);
with lbladdr2 do
begin
Parent:=trnForm;
Caption:='Address 2 value:';
Left:=11;
Top:=58;
Width:=86;
Height:=16;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=0;
end;
//lbladdr2val\\
lbladdr2val:=TLabel.Create(trnForm);
with lbladdr2val do
begin
Parent:=trnForm;
Caption:='Addr2val';
Left:=130;
Top:=58;
Width:=48;
Height:=16;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=0;
end;
//TButton0\\
TButton0:=TButton.Create(trnForm);
with TButton0 do
begin
Parent:=trnForm;
Caption:='Modify';
Left:=11;
Top:=76;
Width:=75;
Height:=25;
OnClick:=@Patch;
Font.Name:='Arial Rounded MT Bold';
Font.Color:=clPurple;
Font.Size:=12;
end;
end;
procedure SafeInitForm;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('InitForm', v);
end;
procedure ShowFormModal;
begin
trnForm.ShowModal;
end;
procedure SafeShowFormModal;
var
v: TVariantArray;
begin
SetArrayLength(V, 0);
ThreadSafeCall('ShowFormModal', v);
end;
begin
SafeInitForm;
InitAndFill;
SafeShowFormModal;
end.
Program AnalogClock;
var
DsgnForm:TForm;
bkGrnd: TImage;
bmps0: TMufasaBitmap;
bmp0: TBitmap;
timer: TTimer;
angle: single;
sx1, sy1, mx1, my1, hx1, hy1: integer;
hour, minute, sec, oth: word;
const
default = 'Comic Sans MS';
ident = 20;
procedure Init;
var i, x, y, rad : integer;
a: single;
begin
// angle := (pi/180)*360;
hx1 := bkGrnd.Width div 2;
hy1 := hx1;
mx1 := hy1;
my1 := mx1;
sx1 := my1;
sy1 := sx1;
// Разметка циферблата
for i := 1 to 12 do begin
rad := bkGrnd.Width div 2;
a := pi/180 - (((pi/180)*30)*i);
x := Round((rad-ident) * sin(a)) + rad;
y := Round((rad-ident) * cos(a)) + rad;
x := (rad*2) - x;
y := (rad*2) - y;
case i of
12 : begin y := y - 15 end;
2 : begin x := x + 10 end;
1 : begin x := x + 15; y := y - 5 end;
3 : begin x := x + 3 end;
6 : begin y := y + 3; x := x - 3; end;
7 : begin y := y + 5 end;
8 : begin x := x - 7 end;
9 : begin x := x - 10; y := y - 10 end;
10 : begin y := y - 10; x := x - 15 end;
11 : begin y := y - 10; x := x - 15 end;
end;
bkGrnd.Canvas.TextOut(x, y, IntToStr(i));
end;
bkGrnd.Canvas.Brush.Color := clWhite;
end;
procedure DrawClock();
var rad, x1, y1: Integer;
ah, am, asec : extended;
r: TRect;
begin
r.Left:=0;
r.Right:=bkGrnd.Width;
r.Top:=0;
r.Bottom:=bkGrnd.Height;
bkGrnd.CANVAS.FillRect(r);
init;
rad := (bkGrnd.Width div 2);
//Смотрим дату и время
DecodeTime(Now, hour, minute, sec, oth);
//Определяем углы
ah := pi/180 - (((pi/180)*30)*hour);
am := pi/180 - (((pi/180)*6)*minute);
asec := pi/180 - (((pi/180)*6)*sec);
//Часы
bkGrnd.Canvas.MoveTo(rad, rad);
bkGrnd.Canvas.Pen.Color := clRed;
bkGrnd.Canvas.Pen.Width := 5;
bkGrnd.Canvas.LineTo(hx1, hy1);
bkGrnd.Canvas.Pen.Color := clBlack;
bkGrnd.Canvas.MoveTo(rad, rad);
// Радиус умножить на sin(x), округлить и прибавить к координате
x1 := Round((rad-40-ident) * sin(ah)) + rad;
y1 := Round((rad-40-ident) * cos(ah)) + rad;
x1 := (rad*2) - x1;
y1 := (rad*2) - y1;
bkGrnd.Canvas.LineTo(x1, y1);
hx1 := x1;
hy1 := y1;
//Минуты
bkGrnd.Canvas.MoveTo(rad, rad);
bkGrnd.Canvas.Pen.Color := clLime;
bkGrnd.Canvas.Pen.Width := 2;
bkGrnd.Canvas.LineTo(mx1, my1);
bkGrnd.Canvas.Pen.Color := clBlack;
bkGrnd.Canvas.MoveTo(rad, rad);
// Радиус умножить на sin(x), округлить и прибавить к координате
x1 := Round((rad-10-ident) * sin(am)) + rad;
y1 := Round((rad-10-ident) * cos(am)) + rad;
x1 := (rad*2) - x1;
y1 := (rad*2) - y1;
mx1 := x1;
my1 := y1;
bkGrnd.Canvas.LineTo(x1, y1);
//Секунды
bkGrnd.Canvas.MoveTo(rad, rad);
bkGrnd.Canvas.Pen.Color := clYellow;
bkGrnd.Canvas.Pen.Width := 1;
bkGrnd.Canvas.LineTo(sx1, sy1);
bkGrnd.Canvas.Pen.Color := clRed;
bkGrnd.Canvas.MoveTo(rad, rad);
// Радиус умножить на sin(x), округлить и прибавить к координате
x1 := Round((rad-2-ident) * sin(asec)) + rad;
y1:= Round((rad-2-ident) * cos(asec)) + rad;
x1 := (rad*2) - x1;
y1 := (rad*2) - y1;
bkGrnd.Canvas.LineTo(x1, y1);
sx1 := x1;
sy1 := y1;
end;
procedure Clock(Sender: TObject);
begin
If (Sender = Timer) then
DrawClock;
end;
procedure InitForm;
begin
//DsgnForm\\
DsgnForm:=TForm.Create(nil);
with DsgnForm do
begin
Caption:='DsgnForm';
Left:=0;
Top:=0;
Width:=225;
Height:=225;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=0;
end;
//bkGrnd\\
bkGrnd:=TImage.Create(DsgnForm);
with bkGrnd do
begin
Parent:=DsgnForm;
Left:=0;
Top:=0;
Width:=225;
Height:=225;
bmps0:=GetMufasaBitmap(BitmapFromString(225,225,' '));
bmp0:=bmps0.ToTBitmap;
Picture.Bitmap.handle:=bmp0.handle;
end;
Timer := TTimer.Create(DsgnForm);
with Timer do begin
Interval := 1000;
OnTimer := @Clock;
Enabled :=true;
end;
end;
procedure SafeInitForm;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('InitForm', v);
end;
procedure ShowFormModal;
begin
DsgnForm.ShowModal;
end;
procedure SafeShowFormModal;
var
v: TVariantArray;
begin
SetArrayLength(V, 0);
ThreadSafeCall('ShowFormModal', v);
end;
begin
SafeInitForm;
SafeShowFormModal;
end.