Ragnarok~Cluber more...
ก่อตั้งโดย pattakan
กระทู้: การเขียน Npc 3 การ Add Npc
การเขียน Npc 3 คำสั่งที่ใช้กับ Npc

อ่านกระทู้ 2 มาแล้วก็มาอ่านกระทู้นี้ต่อ (ให้ลองเขียน Script แบบที่ กระทู้ 2 บอกก่อนจะดีที่สุดครับ)

กระทู้นี้จะเกี่ยวกับ คำสั่งที่ npc ใช้ นับว่าจำเป็นมาก ๆ

ด้านล่างนี้เป็นคำสั่งที่จำเป็นกับ npc

*(เน้นคำสั่งที่เกี่ยวกับเงื่อนไขหรือ if ต่าง ๆ ให้จำให้แม่นยำเพราะจะใช้เยอะ) ...มาเริ่มกันเลย...

=============================================================

คำสั่งต่าง ๆ ที่ npc สามารถใช้ได้ (จะมีอยู่เต็มไปหมดซึ่งคำสั่งบางอัน Gm ไม่มีเลยด้วยซ้ำพูดง่าย ๆ คือ npc ทำได้ทุกอย่าง)

แบบฟอร์มหลักๆ

=============================================================

prontera.gat,116,62,2 script Kafra 83,{

mes "[Kafra]";

mes "สวัสดีค่ะ";

next;

mes "ยินดีต้อนรับค่ะ";

close;

}

===============================================

สีข้อความ

===============================================

^FF0000 Red

^FFFF00 yellow

^00FF00 green

^FF00FF pink

^FF8040 orange

^0000FF blue

^804040 brown

^C0C0C0 gray

^000000 black

===============================================

คำสั่งพื้นฐาน

===============================================

--------------------------------------------------------------------

เปลี่ยนอาชีพ

jobchange หมายเลข;

Ex: jobchange 1;

--------------------------------------------------------------------

ได้รับ ไอเทม

getitem รหัสไอเทม, จำนวน ;

Ex: getitem 512,50;

--------------------------------------------------------------------

ลบไอเทม

delitem รหัสไอเทม, จำนวน ;

Ex: delitem 512,50;

--------------------------------------------------------------------

เงื่อนไข

if (เงื่อนไข) goto ตัวลิงค์; 

Ex: if (Zeny < 250) goto Out;

หมายถึงว่า ถ้าเงินน้อยกว่า 250z ให้ไปที่ลิงค์ Out โดยเราต้องใส่บรรทัด Out ไปด้วย

ถ้ายังไม่ค่อยเข้าใจให้ไปดูที่กระทู้แจก script หรือกระทู้ต่อไปก็ได้

--------------------------------------------------------------------

เหมือนกับตอนกดที่ตัว kafra จะมีรูปขึ้นด้วย

cutin "ชื่อภาพ",ตำแหน่ง;

0 ตำแหน่งซ้ายของจอ

1 ตำแหน่งกลางของจอ

2 ตำแหน่งขวาของจอ

255 close image

Ex: เปิด

cutin "kafra_02",2;

Ex: ปิด

cutin "kafra_02",55;

--------------------------------------------------------------------

วาร์ปไปแมพนั้นๆ

warp "แผนที่.gat",X,Y;

--------------------------------------------------------------------

เซฟในตำแหน่งนั้นๆ (ใช้เหมือนกับเซฟกับ kafra)

savepoint "แผนที่.gat",X,Y;

--------------------------------------------------------------------

กำหนดจำนวนเงิน

set Zeny,Zeny + - จำนวน;

Ex.set Zeny,Zeny+10000;

--------------------------------------------------------------------

กำหนดจำนวน Status point

set StatusPoint,StatusPoint + - จำนวน;

Ex.set StatusPoint,StatusPoint+200;

--------------------------------------------------------------------

กำหนดจำนวนสกิลพ้อยน์

set SkillPoint,SkillPoint + - จำนวน;

Ex.set SkillPoint,SkillPoint+20;

--------------------------------------------------------------------

นับจำนวน item

countitem(รหัส);

Ex: if (countitem(999) < 50) goto OUT;

--------------------------------------------------------------------

ตรวจสอบน้ำหนัก

checkweight(รหัส,น้ำหนัก);

Ex: if (!(checkweight(999,10)) goto OUT;

--------------------------------------------------------------------

เติมเลือด

heal HP,SP;

Ex heal 30000,3000;

ถ้าจะให้ตายก็

heal -100,-100;

--------------------------------------------------------------------

สร้าง รถเข็น

setcart;

สร้างนก

setfalcon;

สร้างเป็ด

setriding;

--------------------------------------------------------------------

เปิด ตู้เก็บของ

openstorage;

------------------------------------------------------------------

เรียกมอนสเตอร์

monster " แผนที่.gat " , X, Y, " ชื่อ monster ", รหัส ,จำนวน ;

Ex: monster "prontera.gat",146,98,"Poing",1002,1;

รหัสมอนสเตอร์สามารถดูได้ที่ mob_db

-------------------------------------------------------------------

รีเซ็ตสเตตัส

resetstatus;

รีเซต สกิล

resetskill;

--------------------------------------------------------------------

ประกาศตัวเหลือง

announce "ข้อความ",0;

areaannounce "แผนที่.gat",X1,Y1,X2,Y2,"ข้อความ",0;

--------------------------------------------------------------------

แสดงชื่อ ตัวละคร strcharinfo(0)

mes "ชื่อตัวละครคือ" + strcharinfo(0) + "ครับ";

--------------------------------------------------------------------

setlook n1,n2;

n1 คือ (1~8) เปลี่ยน Style

1 hair style

2 weapon

3 head_bottom

4 head_middle

5 head_upper

6 hair color

7 clothe color

8 sheld

n2 เป็นค่าที่จะใช้

เช่น

เปลี่ยนทรงผม (1-8)

setlook 1, ใส่เข้าปาย ;

เปลี่ยนสีผม (1-8)

setlook 6, ใส่เข้าปาย ;

เปลี่ยนสีเสื้อ(0-4)

setlook 7, ใส่เข้าปาย ;

--------------------------------------------------------------------

ค่าที่ต้องการให้เก็บไว้

input Var_Name; เป็นการให้ผู้เล่นใส่ค่าลงไป เช่นระบุจำนวน

Ex: input batman;

set Var_Name, ค่า ; - กำหนดค่าตายตัว

set @Var_Name, ค่า ; - กำหนดค่าแบบชั่วคราว

set Var_Name , rand( ค่าแรก , ค่าหลัง); กำหนดค่าแบบ random

--------------------------------------------------------------------

กำหนด คำสั่งให้ NPC

enablenpc "NPC_Name"; ให้ npc ทำงาน

disablenpc "NPC_Name"; ให้ npc ไม่ทำงาน

--------------------------------------------------------------------

นับจำนวนคนในแผนที่

getmapusers ("แผนที่.gat")

Ex: if( getmapusers("force_1-1.gat")>0 ) goto L_MAPINUSE;

===============================================

สคริป เกี่ยวกับ การ อ่านค่า และแสดงชื่อครับ

===============================================

readparam(ประเภท);

เช่น

readparam(9);

แสดงค่าต่างๆ ตามนี้ครับ

9 - StatusPoint

11 - BaseLevel

12 - SkillPoint

19 - Class( ค่าของอาชีพตาม const.txt)

20 - Zeny

21 - Sex ( 0 ผู้หญิง และ 1 ผู้ชาย)

24 - Weight

25 - MaxWeight

55 - JobLevel

และจะแสดงเป็น 0 ตลอด เมื่อใส่ ตัวเลขอย่างอื่นไปครับ

===============================================

สคริปเกี่ยวกับการอัพสเตตัสตัวละคร

===============================================

statusup ประเภท;

statusup2 ประเภท , จำนวน ;

เพิ่มค่าต่างๆ ตามนี้ครับ

13 - STR

14 - AGI

15 - VIT

16 - INT

17 - DEX

18 - LUK

จะไม่มีผลเมื่อใส่ ตัวเลขอย่างอื่นไปครับ

statusup เป็นการเพิ่ม (แต่ต้องมี Status Point นะ)

statusup2 เป็นการเพิ่ม แบบไม่มี Status Point

===============================================

คำสั่งเกียวกับ การแสดงชื่อครับตัวละคร ปาตี้ และกิลครับ

===============================================

คำสั่งก็

strcharinfo(0) แสดงชื่อ

getcharid(#) แสดง ID ของตัวละคร (รหัส)

getpartyname(ID) - แสดงชื่อ Party name ต้องกรอก ID เข้าไปด้านในครับ (เด๋วมาบอก เทคนิค)

getguildname(ID) - แสดงชื่อ Guild name ต้องกรอก ID เข้าไปด้านในครับ (เด๋วมาบอก เทคนิค)

เพิ่มค่าต่างๆ ตามนี้ครับ

0 ตัวละคร

1 party

2 guild ครับ

สำหรับเทคนิคในการแสดงชื่อกิลหรือ ปาตี้ ก็

1. set ค่ารหัส ปาตี้หรือกิลชั่วคราวก่อน ครับ เช่น

ปาตี้ก็

set @PartyID, getcharid(1);

กิลก็

set @GuildID, getcharid(2);

2. จากนั้น ก็ทำการแสดงชื่อได้ครับ (มันไม่ให้รันคำสั่งซ้อนกัน)

getpartyname(@PartyID)

getguildname(@GuildID)

3. วิธีนำไปใช้ก็ เช่น

mes "ชื่อ Party ของคุณคือ" + getpartyname(@PartyID) "ขอให้สนุกนะครับ";

mes "ชื่อ Guild ของคุณคือ" + getguildname(@PartyID) "ขอให้สนุกนะครับ";

คำถาม

ทำไมต้อง set ค่าชั่วคราวก่อน

ตอบ  เพราะว่า คำสั่งมันรันซ้อนกันไม่ได้ครับ

อันนี้ คือ อันที่ผิด

getpartyname( getcharid(1) )

ไม่ต้องเอาไปใช้นะครับ ผิดครับ



    สำหรับมือใหม่ที่ไม่ค่อยรู้คำสั่ง npc ก็เอามาลงไว้ให้ จะเขียน Script เมื่อไรถ้าจำคำสั่งไม่ได้ก็มาดูได้เสมอ

 กระทู้ต่อไปจะเป็นการนำคำสั่งพวกนี้ไปใช้กับ npc จะมี npc ตัวอย่างให้ดู แล้วให้เราดูว่าคำสั่ง npc พวกนี้

ต้องใส่ไว้ที่ไหนแล้วใส่ไว้ตรงไหน กระทู้ต่อไปมีบอกหมดครับ ....

โพสต์โดย
pattakan

12 มี.ค. 53 เวลา 14:44 1,465