ทำไมถึงเดิน 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 จุดแค่รอบเดียว
เริ่มโดย Berry, Jan 14 2007 10:55 AM
มี 3 โพสต์ตอบกลับกระทู้นี้
#1
โพสต์เมื่อ 14 January 2007 - 10:55:20 AM
#2
โพสต์เมื่อ 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.
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
โพสต์เมื่อ 12 February 2007 - 10:44:15 AM
อ่า มีอีกวิธี เขียนโพรซีเยอร์เดิน2จุดไว้เลย
การทำงานคือมันจะเดินไปจุดต่อไปหลังจากสู้จบคับ ข้อเสียคือถ้ามันไม่เข้าสู้มันจะไม่เดินง่ะ -....- วิธีแก้ไขคือเอา OnTimer มาบังคับเดินตามรอบเวลาแทนคับ
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.
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
โพสต์เมื่อ 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.
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 วิถ้าไม่สู้ก็จะเดินไปอีกจุดเอง
1 สมาชิกกำลังอ่านกระทู้นี้
0 สมาชิก, 1 ผู้เยี่ยมชม, 0 ผู้ใช้งานที่ซ่อนตัว