การเขียน 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 พวกนี้
ต้องใส่ไว้ที่ไหนแล้วใส่ไว้ตรงไหน กระทู้ต่อไปมีบอกหมดครับ ....