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


รูปภาพ

ขอตัวอย่างสคริปโดดเควสง่ายๆซักตัวอย่างครับ


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

#1 MummyX

MummyX

    ซาลาเปาไข่แดง

  • Members
  • 5 โพสต์

โพสต์เมื่อ 10 August 2007 - 06:49:01 AM

คืออ่านจาก KornbotFunction แล้วเขียนสคริปไม่ถูกอ่ะครับล

เช่น procedure NpcDialogMenu(DialgoId: Integer);

ผมก็ต่อด้วยว่า
begin
if (DialogId= xxxx) then ตรงนี้ควรจะเป้นอะไรครับ ;
( เห็นในตัวอย่างที่เป็น prodedure NpcDialog(DialogId:Integer); มันใช้ SendDialogEnd; น่ะครับ)
end;

แบบ

คือว่าจะลองไปเล่น Server Taiwan Free น่ะครับ

ลองโหลด TSRobo มาแล้วมันใช้ไม่ได้น่ะครับ



#2 KoRnRoom99

KoRnRoom99

    Exclusive Member

  • Exclusive Programmer
  • 10104 โพสต์

โพสต์เมื่อ 10 August 2007 - 08:24:50 AM

ตัวอย่างเควสขงเบ้งคร้าบ กรณีเป็นปาร์ตี้นะคร้าบ
ถ้าคนเดียวให้เอา ClickNpc(13) ใน PartyReady ไปใส่ใน Logon แทนคร้าบ

var
    isClick: Boolean;
    isLag: Word;
procedure Logon;
begin
    isClick := False;
end;

procedure PartyReady;
begin
    ClickNpc(13);
end;

procedure OnTimer;
begin
    if isClick then
    begin
        SendCancelQuest;
        AutoEat;
        ClickNpc(13);
        isClick := False;
        isLag := 0;
    end;
    Inc(isLag);
    if (isLag mod 60= 0) then Reconnect(5);
end;

procedure NpcDialog(DialogId: Integer);
begin
    if (DialogId = 19737) then SendDialogEnd;
    if (DialogId = 19738) then SendDialogEnd;
    if (DialogId = 10150) then
    begin
        isClick := MyParty.isReady;
    end;
end;

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

#3 MummyX

MummyX

    ซาลาเปาไข่แดง

  • Members
  • 5 โพสต์

โพสต์เมื่อ 10 August 2007 - 02:20:16 PM

(KoRnRoom99 @ Aug 10 2007, 08:24 AM) ดูโพสต์

ตัวอย่างเควสขงเบ้งคร้าบ กรณีเป็นปาร์ตี้นะคร้าบ
ถ้าคนเดียวให้เอา ClickNpc(13) ใน PartyReady ไปใส่ใน Logon แทนคร้าบ

var
    isClick: Boolean;
    isLag: Word;
procedure Logon;
begin
    isClick := False;
end;

procedure PartyReady;
begin
    ClickNpc(13);
end;

procedure OnTimer;
begin
    if isClick then
    begin
        SendCancelQuest;
        AutoEat;
        ClickNpc(13);
        isClick := False;
        isLag := 0;
    end;
    Inc(isLag);
    if (isLag mod 60= 0) then Reconnect(5);
end;

procedure NpcDialog(DialogId: Integer);
begin
    if (DialogId = 19737) then SendDialogEnd;
    if (DialogId = 19738) then SendDialogEnd;
    if (DialogId = 10150) then
    begin
        isClick := MyParty.isReady;
    end;
end;



ไอ้ตรง
procedure NpcDialog(DialogId: Integer);
begin
if (DialogId = 19737) then SendDialogEnd;
if (DialogId = 19738) then SendDialogEnd;
if (DialogId = 10150) then
begin
isClick := MyParty.isReady;
end;

ถ้าหากว่าในเควสเป็นคำถามให้เราเลือกตอบอ่ะครรับ เช่นเราต้องตอบข้อ 1 รูปแบบฟังก์ชั่นมันจะเป็นยังไงหรอครับ
procedure NpcDialogMenu(DialogId: Integer);
begin
if(DialogId=xxxxxx)then ตอบข้อ1 ;
เป็นอย่างไรต่อไป;
end;
คือไม่ค่อยเข้าใจตรงช่วงนี้อ่ะครับ

#4 onitama

onitama

    กัวต้า

  • Members
  • 31 โพสต์

โพสต์เมื่อ 11 August 2007 - 08:58:46 PM

ถ้าในเควสต้องตอบคำถาม ให้เพิ่ม procedure นี้เข้าไปครับ

procedure NpcDialogMenu(DialogId: Integer);
begin
          SelectDialogChoice(1);
          SendDialogEnd;
end;


โดย SendDialogEnd; จะต้องใส่ตาม ต่อหลัง SelectDialogChoice(1); เสมอ

เลข 1 ในวงเล็บก็คือ คำตอบที่เราเลือกนะครับ
ถ้าเควสตอบ 2 ก็ใส่ 2 ไปแทน

#5 MummyX

MummyX

    ซาลาเปาไข่แดง

  • Members
  • 5 โพสต์

โพสต์เมื่อ 12 August 2007 - 03:11:44 AM

(onitama @ Aug 11 2007, 08:58 PM) ดูโพสต์

ถ้าในเควสต้องตอบคำถาม ให้เพิ่ม procedure นี้เข้าไปครับ

procedure NpcDialogMenu(DialogId: Integer);
begin
          SelectDialogChoice(1);
          SendDialogEnd;
end;


โดย SendDialogEnd; จะต้องใส่ตาม ต่อหลัง SelectDialogChoice(1); เสมอ

เลข 1 ในวงเล็บก็คือ คำตอบที่เราเลือกนะครับ
ถ้าเควสตอบ 2 ก็ใส่ 2 ไปแทน



นี่ละครับที่ต้องการ ขอบคุณมากๆครับ laugh.gif

#6 MummyX

MummyX

    ซาลาเปาไข่แดง

  • Members
  • 5 โพสต์

โพสต์เมื่อ 12 August 2007 - 03:50:23 AM

Ok พอจะทำได้แล้วครับ แต่มันโดดได้ครั้งเดียวหรอครับ มีวิธีแบบไม่ต้อง Reconnect มั้ยครับ ใช้ฟังก์ชั่นอะไรใส่ตรงไหนหรือครับ ช่วยทีนะครับ

#7 onitama

onitama

    กัวต้า

  • Members
  • 31 โพสต์

โพสต์เมื่อ 13 August 2007 - 01:35:08 AM

(MummyX @ Aug 12 2007, 03:50 AM) ดูโพสต์

Ok พอจะทำได้แล้วครับ แต่มันโดดได้ครั้งเดียวหรอครับ มีวิธีแบบไม่ต้อง Reconnect มั้ยครับ ใช้ฟังก์ชั่นอะไรใส่ตรงไหนหรือครับ ช่วยทีนะครับ


ปกติมันก็โดดได้ต่อเนื่องนะครับ ขึ้นอยู่กับว่าจังหวะการ Cancel Quest อยู่ที่จังหวะไหน

อาจจะแบ่งได้ชัด ๆ เลย 2 อัน คือ
1. Cancel Quest เมื่อเกิด Dialog หลังสู้จบ
2 ถ้าหลังสู้จบไม่มี Dialog แสดงว่าต้อง Cancel Quest ตอนจบเลย ก็คือใน procedure BattleStoped;

หลังจากเรา Cancel Quest แล้ว เราก็ต้องเริ่มเควสใหม่อ่ะครับ การเริ่มเควสใหม่ อาจจะทำได้ทันทีหลังจาก Cancel Quest แล้ว ก็ได้ หรือทำใน ontimer ตามที่นาย KoRn ให้ตัวอย่างไว้ใน Sctipt ก็ได้ครับ





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

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