Wednesday, July 31, 2013

เปิดบอทหลายจอ

  1. ===================================
  2. 1. วิธีเปิดบอทหลายตัวโดยใช้โฟลเดอร์บอทหลักแค่ 1 โฟลเดอร์
  3. ===================================
  4. 1.1 ให้เอาไฟล์ profiles.pl ไปใส่ในโฟลเดอร์ plugins\
  5. 1.2 สร้างโฟลเดอร์ใหม่ชื่อ profiles\ ไว้ในโฟลเดอร์ของบอทหลัก (สร้างไว้ข้างๆโฟลเดอร์ control\ นั่นแหละ)
  6. 1.3 เข้าไปข้างในโฟลเดอร์ชื่อ profiles\ แล้วทำการสร้างโฟลเดอร์ย่อย หลายๆโฟลเดอร์ ตามจำนวนบอทที่จะสร้าง
  7. 1.4 Copy ไฟล์จากโฟลเดอร์ control\ ก็คือพวกไฟล์ config / mon_control / pickupitems.txy / timeouts / อื่นๆ
  8. 1.5 เอาไป Paste ใส่ลงในโฟลเดอร์บอทแต่ละตัว (แล้วก็เซ็ตบอทแต่ละตัวให้เสร็จ)
  9. 1.6 เวลาจะเปิดบอทให้กด Run ไฟล์ start.exe หรือ wxstart.exe แล้วมันจะมีให้เราเลือกชื่อบอทตัวที่เราต้องการ Run
  10.         - start.exe > ต้องพิมพ์ตัวเลขข้างหน้าชื่อบอทตัวที่เราจะเปิด แล้วค่อยกด Enter
  11.         - wxstart.exe > จะมีหน้าต่างเด้งขึ้นมา เอาเม้าส์ไปดับเบิ้ลคลิกที่ชื่อบอทตัวที่เราจะเปิดได้เลย
  12. ===================================
  13. 2. วิธีทำให้บอทสามารถเลือก map เริ่มต้นได้ (กรณี map มีปัญหา)
  14. ===================================
  15. 2.1 เพิ่มคำสั่ง escapeMap ใน config.txt (Copy 3 บรรทัดข้างล่างใส่ลงใน config.txt)
  16. #รายชื่อเมืองที่สามารถเลือกไปโผล่ได้ ในกรณีที่แผนที่เดิมมีคนออนไลน์เยอะเกินไป หรือเกิดปัญหาไม่สามารถเข้าได้
  17. #1.prontera / 2.payon / 3.geffen / 4.aldebaran / 5.comodo / 6.veins / 7.ayothaya / 8.lighthalzen / 9.mora
  18. escapeMap geffen
  19. 2.2 เปิดไฟล์ src\network\receive\ServerType0.pm ขึ้นมา
  20. - ให้ Copy บรรทัดข้างล่างไปใส่เพิ่มลงในส่วนของ Packet List
  21.         '0840' => ['escape_map_select', 'v a*', [qw(len mapInfo)]],
  22. - แล้ว Copy ฟังก์ชั่น escape ข้างล่างไปใส่ลงในช่วงล่างสุดของไฟล์
  23. sub escape_map_select {
  24.         return if ($net->getState() == Network::IN_GAME);
  25.         my ($self, $args) = @_;
  26.         my @cities;
  27.         my $Odr = 0;
  28.         my $idx = 0;
  29.         my $nSav = -1;
  30.         my $mlist = '';
  31.         return unless exists $args->{mapInfo};
  32.         for (my $i = $args->{RAW_MSG_SIZE} % 20; $i < $args->{RAW_MSG_SIZE}; $i += 20) {
  33.                 my ($flag, $baseName) = unpack('V Z*', substr($args->{RAW_MSG}, $i, 20));
  34.                 if ($flag == 0) {
  35.                         $baseName =~ s/\.gat$//;
  36.                         $nSav = $idx if ($config{'escapeMap'} && $config{'escapeMap'} eq $baseName);
  37.                         my $mapName = (defined $maps_lut{$baseName.'.rsw'} ? $maps_lut{$baseName.'.rsw'} : T('Unknown Area'));
  38.                         push @cities, $Odr;
  39.                         $idx++;
  40.                         $mlist .= TF("%2d. %s\n", $idx, $mapName);
  41.                 }
  42.                 $Odr++;
  43.         }
  44.         if ($idx > 0) {
  45.                 message TF("---------------- Map List ----------------\n" .
  46.                 "%s" .
  47.                 "------------------------------------------\n", $mlist);
  48.                 $nSav = int(rand($idx)) if ($nSav < 0);
  49.                 # Send the select back to RO server
  50.                 my $msg = pack("C*", 0x41, 0x08, $config{char}, $cities[$nSav]);
  51.                 $messageSender->sendToServer($msg);
  52.         }
  53. }
  54. ===================================
  55. 3. วิธีทำให้บอทมองเห็นผู้เล่นใช้สกิล Snap หรือ Jump เคลื่อนที่
  56. ===================================
  57. 3.1 เปิดไฟล์ src\network\receive\ServerType0.pm ขึ้นมา
  58. หาบรรทัด                '08D2' => ['high_jump', 'a4 v2', [qw(ID x y)]],
  59. แก้เป็น           '08D2' => ['player_jump', 'a4 v2', [qw(ID x y)]],
  60. 3.2 แล้ว Copy ฟังก์ชั่น ข้างล่างไปใส่ลงในช่วงล่างสุดของไฟล์
  61. sub player_jump {
  62.         my ($self, $args) = @_;
  63.         my $actor = Actor::get($args->{ID});
  64.         message TF("%s jump to (%d, %d)\n", $actor, $args->{x}, $args->{y});
  65. }
  66. ===================================

No comments:

Post a Comment