แกะข้อมูล แผนที่ WL
#1
Posted 01 February 2008 - 02:05:31 AM
หลักการ แกะข้อมูล แบบนี้ มันเป็นยังไงครับ
นั่งแกะเองแล้ว ไม่เข้าใจ
(เลยไป capture ของเขามาใช้ ซะง้าน ปัญญามีแค่นั้น = =)
มันเป็นตัวเลขและ รหัสแมป แล้วมันเอาไปทำรูปภาพ ได้ยังไง
สาธุ ท่านผู้รู้ อาจารย์ทั้งหลาย
อธิบาย พร้อม สาธิต ซักหน่อยแน่......
#2
Posted 01 February 2008 - 03:13:58 AM
ปล. ขอบอทไต้หวันมาลองโหน่ย อยากรู้ว่ามันมีอะไรบ้าง
#3
Posted 01 February 2008 - 10:26:32 AM
Works: KoRnBot Project,TSLoadDatFile
Thanks X CroSs, Truebot, TSBot, Solars, JackY, some1, Storm24, AssertionFailed from www.skjune.com
#4
Posted 01 February 2008 - 11:46:55 AM
บอทไต้หวัน ของแท้
http://ezgame.myweb...._WL_TW_2.15.exe
http://down.365wg.co..._WL_TW_2.15.exe
บอทไต้หวัน ของคนไทย (ผมเอง = =)
#6
Posted 01 February 2008 - 08:39:18 PM
Works: KoRnBot Project,TSLoadDatFile
Thanks X CroSs, Truebot, TSBot, Solars, JackY, some1, Storm24, AssertionFailed from www.skjune.com
#7
Posted 02 February 2008 - 12:28:49 AM
#8
Posted 03 February 2008 - 02:02:13 PM
สาธุ ...
#9
Posted 04 February 2008 - 03:15:35 PM
unit MapPicUnit;
interface
uses classes, SysUtils, Graphics, ExtCtrls;
type
TListMapRecord = record
MapID : Word;
Positon : Longword;
end;
TOnShowMap = procedure (Sender: TObject; Pic: TBitMap)of Object;
TMapPic = Class(TComponent)
private
FMapList : Array of TListMapRecord;
FMapFile: String;
FShowMap: Word;
FOnShowMap: TOnShowMap;
procedure SetShowMap(const Value: Word);
procedure AddMapToList(const Value: String);
procedure SetMapFile(const Value: String);
public
Constructor Create(AOwner : TComponent); Override;
Destructor Destroy; Override;
function MapID(P: Integer):Word;
procedure DoOnShowMap(P: TBitMap);
published
property MapFile: String read FMapFile write SetMapFile;
property ShowMap: Word read FShowMap write SetShowMap;
//Event
property OnShowMap: TOnShowMap read FOnShowMap write FOnShowMap;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('WLBot',[TMapPic]);
end;
{ TMapPic }
procedure TMapPic.AddMapToList(const Value: String);
var F : File of Byte;
Len : Word;
D : Array of Byte;
I, II : Integer;
Fsize : Longint;
Name : String;
begin
assignfile(F,Value);
reset(F);
try
Fsize:=Filesize(f);
seek(F,Fsize-2);
setlength(D,2);
read(F,D[0]); read(F,D[1]);
move(d[0],Len,2);
setlength(FMapList,Len);
setlength(D,29);
Seek(F,Fsize-2-(Len*29));
setlength(Name,5);
for I := 0 to Len - 1 do
begin
for II := 0 to 28 do
read(F,D[iI]);
move(D[1],Name[1],5);
FMapList[I].MapID:=strtoint(Name);
move(D[21],FMapList[I].Positon,4);
end;
finally
closefile(F);
end;
end;
constructor TMapPic.Create(AOwner: TComponent);
begin
inherited;
FMapFile:='C:\Program Files\Onnud20\WLOnline\data\Ground.MMG';
FShowMap:=0;
end;
destructor TMapPic.Destroy;
begin
inherited;
end;
procedure TMapPic.DoOnShowMap(P: TBitMap);
begin
if assigned(FOnShowMap) then
FOnShowMap(self,P);
end;
function TMapPic.MapID(P: Integer): Word;
begin
Result := 0;
if Length(FMapFile)>0 then
Result := FMapList[P].MapID;
end;
procedure TMapPic.SetMapFile(const Value: String);
begin
FMapFile := Value;
if Fileexists(Value) then
begin
AddMapToList(Value)
end;
end;
procedure TMapPic.SetShowMap(const Value: Word);
var I, II,Ix, Iy:integer;
F:file of byte;
B:byte;
A:array[1..8]of byte;
X,Y:word;
Plus:byte;
P:tbitmap;
AX, AY: LongWord;
begin
if fileexists(FMapFile) then
begin
if length(FMapList)=0 then
addmaptolist(FMapFile);
FShowMap := Value;
P := Tbitmap.Create;
assignfile(f,FMapFile);
reset(f);
try
for I := 0 to length(FMapList)-1 do
if FMapList[I].MapID = Value then
begin
seek(f,FMapList[I].Positon);
for II:=1 to 8 do
read(F,A[i]);
move(A[1],AX,4); move(a[5],AY,4);
read(F,Plus);
Plus:=(Plus * 6)+1;
seek(F,FMapList[I].Positon+8+plus);
for II:= 1 to 4 do
read(f,a[II]);
move(A[1],X,2); move(A[3],Y,2);
P.Width:=X;
P.Height:=Y;
for Ix:=0 to X-1 do
for Iy:=0 to Y-1 do
begin
read(f,B);
with P do
case B of
0 : canvas.Pixels[Ix,Iy]:= clWhite;
1 : canvas.Pixels[Ix,Iy]:= clBlack;
2 : canvas.Pixels[Ix,Iy]:= clAqua;
end;
end;
DoOnShowMap(P);
end;
finally
P.Free;
CloseFile(F);
end;
end;
end;
end.
เป็น Component ของ Delphi ที่ผมทำเองครับ เอาไว้โชว์ map
เวลาใช้ก็ใส่ ชื่อ file Ground.MMG เข้าไปตรงช่อง MapFile
แล้วเวลาจะให้โชว์นะครับ ก็ใส่ เลข map ลงไป ที่ ShowMap (ตอน runtime นะครับ)
แล้วก็กำหนด event OnShowMap ให้เอา Pic ซึ่งเป็น TbitMap ไปใช้นะครับ
นอกนั้นจะทำอะไรก็ต่อยอดกันเองนะครับ
ปล. ขอบคุณ คุณ CodeGear ที่สอนผมทำ Component
#10
Posted 04 February 2008 - 03:44:31 PM
ขอบพระคุณมากๆครับ
สาธุ _-/|\-_
สูบ คำโตๆ ....
#11
Posted 04 February 2008 - 04:16:53 PM
คุ้นๆว่าคุณ solars เคยโพสไว้แล้วแหล่ะ ใช่ป่าว?
แต่ไม่มีเวลาไปคุ้ย log ของ board เก่าให้เลยอ่า งานยุ่งมักมาย T^T
#12
Posted 04 February 2008 - 04:22:24 PM
แต่อันนี้ทำใหม่หมดเลยเพราะของเก่า(TS) file มันหาย เพราะขโมยขี้นบ้าน เลยไม่ได้ ทำ TS ต่อ
พอตอนนี้จะทำ WL เลยมั่วสุดๆ ไม่มีข้อมูลอะไรเทียบเลย
#14
Posted 04 February 2008 - 04:50:04 PM
#15
Posted 04 February 2008 - 05:19:20 PM
นึกว่ามันจะใหญ่กว่านี้ อีกเยอะ
ตามที่ขออนุญาต คุณ Solars ไว้ครับ
ขอปรับแต่ง ไฟล์ คอมโพเนนท์ ให้เป็นไปตามหลัก นิดนึง (เท่าที่พอจะมีความรู้อยู่บ้างนิดหน่อย)
ผมเพิ่ม property และ Method เข้าไปให้ดู เป็น 2 แบบ
+ การอ้างถึง คอมโพเนท์ TImage โดยการกำหนดเป็น Property
และการกำหนด ค่า เมื่อ คอมโพเนนท์ ที่อ้างถึง หายไปจากโลก นี้
แนบไฟล์ให้ ดูครับ ผิดพลาดประการใด ขออภัยด้วยครับ
ได้ความรู้มากมายครับ จะพยายาม ศึกษา เพื่อพัฒนาความรู้ต่อไป
http://upload.mthai....0/47a6e6e80fefd
ปล- แนบไฟล์ไม่ได้ ซะงั้น
#17
Posted 10 February 2008 - 05:30:27 PM
1 pixel เป็น 4x4 pixel อะไรงี้ รูปมันก้อจะใหญ่ขึ้น 4 เท่า
#18
Posted 10 February 2008 - 06:00:59 PM
หลังจาก assign Tbitmap ลงไปแล้ว ก็ให้ทำการแก้ stretch := true; autosize := false; ค่า height := height * 2; weidth := weidth *2; ก็ได้ครับ
แต่ยิ่งโชว์ใหญ่ การคำนวนเอาตัว npc ลงไป ก็วุ่นวายขี้น และ กิน ram อีกด้วย
#19
Posted 11 February 2008 - 09:09:55 PM
ขอบคุณครับ
stretch := true; ภาพมันเบลอ
====================================
HDD ดังก๊องๆๆๆๆๆๆๆๆๆๆๆๆ แล้ว เครื่องก็ดับ
เปิดเข้าไม่ได้เลย
อ๊ากกกกกกกกกกก
เศร้ามากครับ
ต้องเริ่มใหม่ทั้งหมดเลย
#20
Posted 12 February 2008 - 09:11:30 AM
0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users