ไปที่เนื้อหา


รูปภาพ

แกะข้อมูล แผนที่ WL


  • กรุณาลงชื่อเข้าใช้เพื่อตอบกระทู้
มี 23 โพสต์ตอบกลับกระทู้นี้

#1 CodeGeaR

CodeGeaR

    Exclusive Member

  • Exclusive Programmer
  • 10218 โพสต์

โพสต์เมื่อ 01 February 2008 - 02:05:31 AM

คือ เห็นในบอท ของ ไต้หวัน/จีน มีแผนที่ เล็กๆ ในแต่ละแมป
หลักการ แกะข้อมูล แบบนี้ มันเป็นยังไงครับ

นั่งแกะเองแล้ว ไม่เข้าใจ
(เลยไป capture ของเขามาใช้ ซะง้าน ปัญญามีแค่นั้น = =)
มันเป็นตัวเลขและ รหัสแมป แล้วมันเอาไปทำรูปภาพ ได้ยังไง

สาธุ ท่านผู้รู้ อาจารย์ทั้งหลาย
อธิบาย พร้อม สาธิต ซักหน่อยแน่......

onion36.gif

#2 X CroSs

X CroSs

    Truebot Co-Developer

  • Root Administrator
  • 102427 โพสต์
  • Gender:Male

โพสต์เมื่อ 01 February 2008 - 03:13:58 AM

เหมือนเคยมีคนแปะวิธีแกะไฟล์ mini map ไว้แล้วนะ ไว้จะลองหาให้อีกทีละกันงับ

ปล. ขอบอทไต้หวันมาลองโหน่ย อยากรู้ว่ามันมีอะไรบ้าง onion36.gif

ts.gif

manutd18wm.png


#3 KoRnRoom99

KoRnRoom99

    Exclusive Member

  • Exclusive Programmer
  • 10104 โพสต์

โพสต์เมื่อ 01 February 2008 - 10:26:32 AM

เอามาใช้ม่างค้าบ ^^
IPB Image
IPB Image
Works: KoRnBot Project,TSLoadDatFile
Thanks X CroSs, Truebot, TSBot, Solars, JackY, some1, Storm24, AssertionFailed from www.skjune.com
IPB ImageIPB ImageIPB ImageIPB ImageIPB ImageIPB Image

#4 CodeGeaR

CodeGeaR

    Exclusive Member

  • Exclusive Programmer
  • 10218 โพสต์

โพสต์เมื่อ 01 February 2008 - 11:46:55 AM


บอทไต้หวัน ของแท้
http://ezgame.myweb...._WL_TW_2.15.exe

http://down.365wg.co..._WL_TW_2.15.exe


บอทไต้หวัน ของคนไทย (ผมเอง = =)

IPB Image

#5 CodeGeaR

CodeGeaR

    Exclusive Member

  • Exclusive Programmer
  • 10218 โพสต์

โพสต์เมื่อ 01 February 2008 - 11:48:39 AM

QUOTE(X CroSs @ Feb 1 2008, 03:13 AM) View Post

เหมือนเคยมีคนแปะวิธีแกะไฟล์ mini map ไว้แล้วนะ ไว้จะลองหาให้อีกทีละกันงับ

ปล. ขอบอทไต้หวันมาลองโหน่ย อยากรู้ว่ามันมีอะไรบ้าง onion36.gif


ขอบคุณครับ สาธุ

#6 KoRnRoom99

KoRnRoom99

    Exclusive Member

  • Exclusive Programmer
  • 10104 โพสต์

โพสต์เมื่อ 01 February 2008 - 08:39:18 PM

สูบบบ อิอิ
IPB Image
IPB Image
Works: KoRnBot Project,TSLoadDatFile
Thanks X CroSs, Truebot, TSBot, Solars, JackY, some1, Storm24, AssertionFailed from www.skjune.com
IPB ImageIPB ImageIPB ImageIPB ImageIPB ImageIPB Image

#7 X CroSs

X CroSs

    Truebot Co-Developer

  • Root Administrator
  • 102427 โพสต์
  • Gender:Male

โพสต์เมื่อ 02 February 2008 - 12:28:49 AM

ชอบ interface ของคุง codegear จิงๆ เห็นกี่ทีก็งาม แถมดูง่ายด้วย ^^

ts.gif

manutd18wm.png


#8 CodeGeaR

CodeGeaR

    Exclusive Member

  • Exclusive Programmer
  • 10218 โพสต์

โพสต์เมื่อ 03 February 2008 - 02:02:13 PM

ขอบคุณครับ
สาธุ ...

#9 Solars

Solars

    Exclusive Member

  • Exclusive Programmer
  • 10037 โพสต์

โพสต์เมื่อ 04 February 2008 - 03:15:35 PM

CODE

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 ไปใช้นะครับ
นอกนั้นจะทำอะไรก็ต่อยอดกันเองนะครับ onion52.gif

ปล. ขอบคุณ คุณ CodeGear ที่สอนผมทำ Component onion25.gif

#10 CodeGeaR

CodeGeaR

    Exclusive Member

  • Exclusive Programmer
  • 10218 โพสต์

โพสต์เมื่อ 04 February 2008 - 03:44:31 PM


ขอบพระคุณมากๆครับ

สาธุ _-/|\-_


สูบ คำโตๆ ....

monkey-18.gif



#11 X CroSs

X CroSs

    Truebot Co-Developer

  • Root Administrator
  • 102427 โพสต์
  • Gender:Male

โพสต์เมื่อ 04 February 2008 - 04:16:53 PM

ขอบคุณเช่นกันค้าบบ _/\_

คุ้นๆว่าคุณ solars เคยโพสไว้แล้วแหล่ะ ใช่ป่าว?
แต่ไม่มีเวลาไปคุ้ย log ของ board เก่าให้เลยอ่า งานยุ่งมักมาย T^T

ts.gif

manutd18wm.png


#12 Solars

Solars

    Exclusive Member

  • Exclusive Programmer
  • 10037 โพสต์

โพสต์เมื่อ 04 February 2008 - 04:22:24 PM

ครับผมเคย post ไว้แต่ไม่ได้อธิบาย แต่คุณ jacky เป็นคนอธิบาย
แต่อันนี้ทำใหม่หมดเลยเพราะของเก่า(TS) file มันหาย เพราะขโมยขี้นบ้าน เลยไม่ได้ ทำ TS ต่อ
พอตอนนี้จะทำ WL เลยมั่วสุดๆ ไม่มีข้อมูลอะไรเทียบเลย

#13 CodeGeaR

CodeGeaR

    Exclusive Member

  • Exclusive Programmer
  • 10218 โพสต์

โพสต์เมื่อ 04 February 2008 - 04:44:04 PM



ทำยังไง แมปก็ได้มาเท่านี้ = =

IPB Image

#14 Solars

Solars

    Exclusive Member

  • Exclusive Programmer
  • 10037 โพสต์

โพสต์เมื่อ 04 February 2008 - 04:50:04 PM

ได้แค่นั้นแหละครับ มันไม่ได้ใหญ่ครับ อัตราส่วน น่าจะมีการย่อครับ เพราะในเกมส์ มันเดินทีละ 1 จุดไม่ได้กดข้างๆยัง xy เปลี่ยนเยอะเลยครับ

#15 CodeGeaR

CodeGeaR

    Exclusive Member

  • Exclusive Programmer
  • 10218 โพสต์

โพสต์เมื่อ 04 February 2008 - 05:19:20 PM

งั้น แสดงว่า ผม เข้าใจผิด 555+
นึกว่ามันจะใหญ่กว่านี้ อีกเยอะ

ตามที่ขออนุญาต คุณ Solars ไว้ครับ
ขอปรับแต่ง ไฟล์ คอมโพเนนท์ ให้เป็นไปตามหลัก นิดนึง (เท่าที่พอจะมีความรู้อยู่บ้างนิดหน่อย)

ผมเพิ่ม property และ Method เข้าไปให้ดู เป็น 2 แบบ
+ การอ้างถึง คอมโพเนท์ TImage โดยการกำหนดเป็น Property
และการกำหนด ค่า เมื่อ คอมโพเนนท์ ที่อ้างถึง หายไปจากโลก นี้


แนบไฟล์ให้ ดูครับ ผิดพลาดประการใด ขออภัยด้วยครับ
ได้ความรู้มากมายครับ จะพยายาม ศึกษา เพื่อพัฒนาความรู้ต่อไป

http://upload.mthai....0/47a6e6e80fefd

ปล- แนบไฟล์ไม่ได้ ซะงั้น

#16 CodeGeaR

CodeGeaR

    Exclusive Member

  • Exclusive Programmer
  • 10218 โพสต์

โพสต์เมื่อ 10 February 2008 - 05:09:10 PM

ใช้โปรแกรม ขยายรูปแผนที่ ทำไมมันเบลอ ครับ
แปลกใจ
ทำไมแผนที่ ของบอทไต้หวัน ใหญ่จัง
:: รูปจากบอท ไต้หวัน ::
IPB Image

หรือว่า มีเทคนิค อื่น ครับ
ผู้รู้ช่วย ตอบทีครับ

#17 X CroSs

X CroSs

    Truebot Co-Developer

  • Root Administrator
  • 102427 โพสต์
  • Gender:Male

โพสต์เมื่อ 10 February 2008 - 05:30:27 PM

ลองขยายแบบ mannual สิคับ
1 pixel เป็น 4x4 pixel อะไรงี้ รูปมันก้อจะใหญ่ขึ้น 4 เท่า

ts.gif

manutd18wm.png


#18 Solars

Solars

    Exclusive Member

  • Exclusive Programmer
  • 10037 โพสต์

โพสต์เมื่อ 10 February 2008 - 06:00:59 PM

ง่ายมากครับเวลาเราใส่ไปใน Timage ใช่ไหมครับ ก็กำหนดให้มัน ปรับ size เป็น x2 แล้วก็ตั้งในส่วนของ stretch ให้เป็น true แล้วเอา autosize ออกก็ได้แล้วครับ จะให้ใหญ่แค่ไหนก็ x เข้าไปเช่น
หลังจาก assign Tbitmap ลงไปแล้ว ก็ให้ทำการแก้ stretch := true; autosize := false; ค่า height := height * 2; weidth := weidth *2; ก็ได้ครับ

แต่ยิ่งโชว์ใหญ่ การคำนวนเอาตัว npc ลงไป ก็วุ่นวายขี้น และ กิน ram อีกด้วย

#19 CodeGeaR

CodeGeaR

    Exclusive Member

  • Exclusive Programmer
  • 10218 โพสต์

โพสต์เมื่อ 11 February 2008 - 09:09:55 PM


ขอบคุณครับ
stretch := true; ภาพมันเบลอ

====================================
HDD ดังก๊องๆๆๆๆๆๆๆๆๆๆๆๆ แล้ว เครื่องก็ดับ
เปิดเข้าไม่ได้เลย
อ๊ากกกกกกกกกกก
เศร้ามากครับ

onion12.gif
ต้องเริ่มใหม่ทั้งหมดเลย

#20 Solars

Solars

    Exclusive Member

  • Exclusive Programmer
  • 10037 โพสต์

โพสต์เมื่อ 12 February 2008 - 09:11:30 AM

งั้นมีอีกวิธีครับ ตัวที่ผมทำไป มัน อ่าน มา 1 จุด ก็เขียน 1 จุด แต่ถ้าอ่าน 1 จุด เขียนเป็น สี่เหลี่ยมขนาด 2x2 ก็ได้ครับขนาดก็จะเพิ่มเป็น 2 เท่า




1 สมาชิกกำลังอ่านกระทู้นี้

0 สมาชิก, 1 ผู้เยี่ยมชม, 0 ผู้ใช้งานที่ซ่อนตัว