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


รูปภาพ

ทำไมถึงเดิน 2 จุดแค่รอบเดียว


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

#1 Berry

Berry

    จอมยุทธใหม่

  • Members
  • 1 โพสต์

โพสต์เมื่อ 14 January 2007 - 10:55:20 AM

ทำไมถึงเดิน 2 จุด แค่รอบเดียวคะ พอเดิน 2 จุดครบ 1 รอบ บอทจาอยู่กับที่ ไม่ยอมเดินไปไหนเลย นี่อ่ะค่ะ สคริป

var Point1X,Point1Y,Point2X,Point2Y: Word;

procedure Init;
begin
SetIsNotEat('ยาคืนวิญญาณ');
SetIsNotEat('ยาวิญญาณม่วง');
echoChat('KoRn Bot โหลดเสร็จแล้วครับ',clRed);
end;

procedure LogOn;
begin
Point1X := 982;
Point1Y := 495;
Point2X := 1300;
Point2Y := 495;
Walk(962,495);
end;

procedure BattleStarted;
begin
end;

procedure MyAttack;
var m : TCombatMonster;
n : byte;
sk : string;
begin
m := Combat.FindF1Monster;
n := Combat.Size;
sk := 'มือเปล่า';
if (MyPlayer.Hp < 0.25*MyPlayer.MaxHp) or (MyPartner.Hp < 0.25*MyPartner.MaxHp) then
begin
if (MyPlayer.Sp > 10)
then SendAttack(MyPlayer.Row,MyPlayer.Col,MyPlayer.Row,MyPlayer.Col,'วิชาหลบหนี')
else SendAttack(MyPlayer.Row,MyPlayer.Col,MyPlayer.Row,MyPlayer.Col,'หลบหนี');
end
else
SendAttack(MyPlayer.Row,MyPlayer.Col,m.Row,m.Col,sk);
end;


procedure MyPartnerAttack;
var m: TCombatMonster;
begin
m := Combat.FindF1Monster;
SendAttack(MyPartner.Row,MyPartner.Col,m.Row,m.Col,'มือเปล่า');
end;

procedure BattleStoped;
begin
if (not MyParty.isReady) then
begin
Walk(,);
end;
if (MyPlayer.Sp < 0.25*MyPlayer.MaxSp) or (MyPartner.Sp < 0.25*MyPartner.MaxSp) then
begin
AutoEat;
AutoHeal;
end;
if (MyPlayer.Hp > 0.25*MyPlayer.MaxHp) or (MyPartner.Hp > 0.25*MyPartner.MaxHp) then
begin
Echo('เดิน',clRed);
if (MyPlayer.X = Point1X) and (MyPlayer.Y = Point1Y)
then Walk(Point2X,Point2Y)
else Walk(Point1X,Point1Y);
end;
end;

begin
Init;
end.

#2 Mangtom

Mangtom

    เจี่ยงกั้น

  • Members
  • 62 โพสต์

โพสต์เมื่อ 16 January 2007 - 12:39:28 AM

ลองอันนี้ละกันนะ

var   Point1X,Point1Y,Point2X,Point2Y: Word;

procedure Init;
begin
   SetIsNotEat('ยาคืนวิญญาณ');
   SetIsNotEat('ยาวิญญาณม่วง');
   echoChat('KoRn Bot โหลดเสร็จแล้วครับ',clRed);
end;

procedure LogOn;
begin
   Point1X := 662;
   Point1Y := 2075;
   Point2X := 1062;
   Point2Y := 2175;
end;

procedure OnTimer;
begin
if (MyPlayer.Hp > 0.25*MyPlayer.MaxHp) or (MyPartner.Hp > 0.25*MyPartner.MaxHp) then
   begin
      Echo('เดิน',clRed);
      if (MyPlayer.X = Point1X) and (MyPlayer.Y = Point1Y)
      then Walk(Point2X,Point2Y)
      else Walk(Point1X,Point1Y);
    end;
end;

procedure MyAttack;
var   m : TCombatMonster;
   n : byte;
   sk : string;
begin
   m := Combat.FindF1Monster;
   n := Combat.Size;
   sk := 'มือเปล่า';
   if (MyPlayer.Hp < 0.25*MyPlayer.MaxHp) or (MyPartner.Hp < 0.25*MyPartner.MaxHp) then
   begin
      if (MyPlayer.Sp > 10)
      then SendAttack(MyPlayer.Row,MyPlayer.Col,MyPlayer.Row,MyPlayer.Col,'วิชาหลบหนี')
      else SendAttack(MyPlayer.Row,MyPlayer.Col,MyPlayer.Row,MyPlayer.Col,'หลบหนี');
   end
   else
    SendAttack(MyPlayer.Row,MyPlayer.Col,m.Row,m.Col,sk);
end;

procedure MyPartnerAttack;
var   m: TCombatMonster;
begin
   m := Combat.FindF1Monster;
   SendAttack(MyPartner.Row,MyPartner.Col,m.Row,m.Col,'มือเปล่า');
end;

procedure BattleStoped;
begin
   if (MyPlayer.Sp < 0.25*MyPlayer.MaxSp) or (MyPartner.Sp < 0.25*MyPartner.MaxSp) then
   begin
     AutoEat;
   end;
   if (MyPlayer.Hp < 0.50*MyPlayer.MaxHp) or (MyPartner.Hp < 0.50*MyPartner.MaxHp) then
   begin
     AutoEat;
     AutoHeal;
   end;
end;

begin
   Init;
end.


#3 AquiraX

AquiraX

    ฉวินไฉ่

  • Members
  • 10 โพสต์

โพสต์เมื่อ 12 February 2007 - 10:44:15 AM

อ่า มีอีกวิธี เขียนโพรซีเยอร์เดิน2จุดไว้เลย
var walkx1, walkx2, walky1, walky2 : Integer;
procedure Init;
begin
SetIsNotEat('ยาคืนวิญญาณ');
SetIsNotEat('ยาวิญญาณม่วง');
walkx1 := 982;
walky1 := 495;
walkx2 := 1300;
walky2 := 495;
echoChat('KoRn Bot โหลดเสร็จแล้วครับ',clRed);
end;

procedure LogOn;
begin
Horse;
end;

procedure walk1towalk2;
begin
if((MyPlayer.X = walkx1) and (MyPlayer.Y = walky1)) then
walk(walkx2, walky2)
else
walk(walkx1, walky1);
end;

procedure MyAttack;
var m : TCombatMonster;
n : byte;
sk : string;
begin
m := Combat.FindF1Monster;
n := Combat.Size;
sk := 'มือเปล่า';
if (MyPlayer.Hp < 0.25*MyPlayer.MaxHp) or (MyPartner.Hp < 0.25*MyPartner.MaxHp) then
begin
if (MyPlayer.Sp > 10)
then SendAttack(MyPlayer.Row,MyPlayer.Col,MyPlayer.Row,MyPlayer.Col,'วิชาหลบหนี')
else SendAttack(MyPlayer.Row,MyPlayer.Col,MyPlayer.Row,MyPlayer.Col,'หลบหนี');
end
else
SendAttack(MyPlayer.Row,MyPlayer.Col,m.Row,m.Col,sk);
end;

procedure MyPartnerAttack;
var m: TCombatMonster;
begin
m := Combat.FindF1Monster;
SendAttack(MyPartner.Row,MyPartner.Col,m.Row,m.Col,'มือเปล่า');
end;

procedure BattleStoped;
begin
AutoEatHP;
AutoHeal;
AutoEatSP;
walk1towalk2;
end;

begin
   Init;
end.

การทำงานคือมันจะเดินไปจุดต่อไปหลังจากสู้จบคับ ข้อเสียคือถ้ามันไม่เข้าสู้มันจะไม่เดินง่ะ -....- วิธีแก้ไขคือเอา OnTimer มาบังคับเดินตามรอบเวลาแทนคับ

#4 LittleKati

LittleKati

    Exclusive Member

  • Special Member
  • 10015 โพสต์
  • Gender:Female

โพสต์เมื่อ 22 February 2007 - 10:49:41 PM

procedure Init;
begin
SetIsNotEat('ยาคืนวิญญาณ');
SetIsNotEat('ยาวิญญาณม่วง');
SetIsDP('พลุรื่นรมย์');
SetIsCB('เนื้อยุ่ย');
echoChat('KoRn Bot โหลดเสร็จแล้วครับ',clRed);
end;

procedure Logon;
begin
Walk(2642,415);
//SendAction(48);
end;


procedure PartyReady;
begin
Horse;
walk(2822,595); //ใส่พิกัดที่จะให้เดินไปชน NPC
end;


procedure BattleStarted;
begin

end;

procedure MyAttack;
var m: TCombatMonster;
begin
m := Combat.FindF1Monster;
if (MyPlayer.Hp < 0.25*MyPlayer.MaxHp) or (MyPartner.Hp < 0.25*MyPartner.MaxHp) or (not MyParty.isReady) then
begin
if (MyPlayer.Sp > 10)
then SendAttack(MyPlayer.Row,MyPlayer.Col,MyPlayer.Row,MyPlayer.Col,'วิชาหลบหนี')
else SendAttack(MyPlayer.Row,MyPlayer.Col,MyPlayer.Row,MyPlayer.Col,'หลบหนี');
end;
SendAttack(MyPlayer.Row,MyPlayer.Col,m.Row,m.Col,'มือเปล่า');
end;

procedure MyPartnerAttack;
var m: TCombatMonster;
begin
m := Combat.FindF1Monster;
SendAttack(MyPartner.Row,MyPartner.Col,m.Row,m.Col,'มือเปล่า');
end;

procedure BattleStoped;
begin
Walk(2442,575);
Delay(3000);
Walk(2822,595);
Delay(3000);
begin
AutoEat;
AutoHeal;
end;
end;

procedure CheckDisconnect;
begin
if (MyPlayer.Hp < 0.20*MyPlayer.MaxHp) or (MyPartner.Hp < 0.25*MyPartner.MaxHp) then
begin
Disconnect;
end;
end;


begin
Init;
end.

ของเราใช้แบบนี้อะ ให้มานเดินไปหลบรอปาร์ตี้ ตรงจุดปลอดภัยตอน login
พอตี้ครบ มานก็จะเดินไปจุดที่สู้จุดแรก ถ้าตี้ไม่ครบมันก็จะหนีออกจากฉาก
ละพอสู้เสร็จ มันก็จะเดินไปอีกจุดนึง แล้วรอ 3 วิถ้าไม่สู้ก็จะเดินไปอีกจุดเอง




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

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