Program New;
function ReadGump(GumpType:Cardinal;var GumpIndex:Word;var GumpSerial:Cardinal):Boolean;
var
fIndex : Word;
fCount : Word;
begin
fCount := GetGumpsCount();
if(fCount > 0)then
begin
for fIndex := 0 to fCount - 1 do
begin
if(GetGumpID(fIndex) = GumpType)then
begin
GumpIndex := FIndex;
GumpSerial := GetGumpSerial(FIndex);
Result := True;
exit;
end;
end;
end;
Result := False;
GumpIndex := $0;
GumpSerial := $0;
end;
Procedure HandleIncomingGump(Serial,GumpID,X,Y:Cardinal);
var
Index_A : Array of Cardinal;
Index_B : Array of Cardinal;
Pic_A : Cardinal;
Pic_B : Cardinal;
fSerial : Cardinal;
fIndex : Word;
fInfo : TGumpInfo;
i : Cardinal;
begin
if(GumpID = $47D09E42)then
begin
if(ReadGump(GumpID,fIndex,fSerial))then
begin
Pic_A := 0;
Pic_B := 0;
GetGumpInfo(fIndex,fInfo);
for i := 0 to Length(fInfo.TilePicHue) - 1 do
begin
if(Pic_A = 0)then
begin
Pic_A := fInfo.TilePicHue[i].ID
end else if (fInfo.TilePicHue[i].ID <> Pic_A) and ( Pic_B = 0)then
begin
Pic_B := fInfo.TilePicHue[i].ID
end;
if(fInfo.TilePicHue[i].ID = Pic_A)then
begin
SetLength(Index_A,(Length(Index_A) + 1));
Index_A[Length(Index_A) - 1] := i;
end else begin
SetLength(Index_B,(Length(Index_B) + 1));
Index_B[Length(Index_B) - 1] := i;
end;
if(Length(Index_A) = 1)then
begin
NumGumpButton(fIndex,fInfo.RadioButtons[Index_A[0]].return_value);
end else begin
NumGumpButton(fIndex,fInfo.RadioButtons[Index_B[0]].return_value);
end;
end;
end;
end;
end;
begin
SetEventProc(evIncomingGump,'HandleIncomingGump');
while(Connected())do
begin
Wait(100);
end;
end.