สอนการเก็บข้อมูลเกมลง ฐานข้อมูล MySQL
ยกตัวอย่างการเก็บข้อมูล ไอดี รหัสผ่าน และ อื่นๆ
ท่านจำเป็นต้องลง สคริป mysql >> คลิก << ไปดูวิธีและ ดาวน์โหลดได้เลย
การสร้างตาราง phpmyadmin
1. ไปที phpmyadmin << คลิก
2. คลิก new และ ตั้งชื่อ Database name ตั้งชื่อหลัก เช่น ชื่อ เซิฟร์เวอร์ เช่น mta
3. Collation เลือกเป็น utf8_general_ci
4. Create table : Name : ให้ตั้งชื่อตาราง แนะนำ accounts เพราะ จะทำตารางเก็บข้อมูล ไอดี หลัก
4. Number of clumns: ให้คิดก่อนว่า จะเก็บข้อมูล อะไรมั้ง และ ใส่จำนวนทีคิดจะเก็บนั้นไป
4.1. PRIMARY เป็น key id หลัก จำเป็นต้องมี
4.2. ไอดีเกม
4.3. รหัสผ่าน
4.4. ไอพี
4.5. วันเวลา ทีสมัคร
5. ช่องที 1 เป็น key id หลัก
5.1. Name: ตั้งชื่อเป็น แนะนำ เป็น playerID
5.2. Type: จำเป็นต้องใช้ INT
5.3. Length/Values: จำนวน แนะนำ 12 เท่ากับ แสนล้านไอดี
5.4. Attributes: แนะนำ UNSIGNED หรือ UNSIGNED ZEROFILL
UNSIGNED คือ ประเถท ไอดี key เช่น playerID ที 1 ก็จะเก็บ เป็น 1
UNSIGNED_ZEROFILL คือ ประเถท ไอดี key เช่น playerID ที 1 ก็จะเก็บ เป็น 000000000001 ตามจำนวน Length/Values ทีตั้งไป 12 ตัว
5.5. Index: เป็น PRIMARY คือตั้งเป็น key หลัก
5.6. A_I: ติ้กถูก คือการ สร้างโดยออโต้
6. ช่องที่ 2 เป็น ไอดี
6.1. Name: แนะนำใช้ username
6.2. Type: VARCHAR
6.3. Length/Values: จำนวน แนะนำ 25
6.4. Null Index: UNIQUE ข้อมูลห้ามซ้ำกัน
7. ช่องที่ 3 เป็น รหัสผ่าน
6.1. Name: แนะนำใช้ password
6.2. Type: VARCHAR
6.3. Length/Values: จำนวน แนะนำ 25
8. ช่องที่ 4 ไอพี
8.1. Name: แนะนำใช้ ip
8.2. Type: VARCHAR
8.3. Length/Values: จำนวน แนะนำ 19
9.ช่องที่ 5 Serial
9.1. Name: แนะนำใช้ Serial
9.2. Type: VARCHAR
9.3. Length/Values: 32
10. ช่องที่ 6 Developer
10.1 Name: แนะนำใช้ IsDeveloper
10.2. Type: INT
10.3. Length/Values: 10
10.4. Default: As defined: เป็น 0 คือค่าเริ่มต้น
11.ช่องที่ 7 ล็อกเอ้าล่าสุด
11.1. Name: LatestLoggedOut
11.2. Type: VARCHAR
11.3. Length/Values: 19
11.4. Default: As defined: เป็น 0000-00-00 00:00:00 คือค่าเริ่มต้น
12. ช่องที่ 8 วันเวลา ที่ สมัคร
12.1. Name: แนะนำใช้ RegisterDate
12.2. Type: TIMESTAMP วันเวลาจะถูกเพิ่มเอง ช่องจำนวนไม่ต้องใส่
เสร็จแล้วกด save จากนั้นก็ได้ตาราง สำเร็จแล้ว เริ่มข้อต่อไป
เก็บข้อมูล บัญชีผู้เล่น
การดึงข้อมูล ไอดี นั้นง่าย แต่รหัสผ่านจะต้องได้จากการ ล็อกอินเท่านั้น
มีหลายวิธีทีจะทำการเก็บข้อมูลพวกนี้
อย่างเช่น
เก็บข้อมูลที่จะได้รับ ตอนหลังล็อกอิน สำเร็จ แล้วล็อกอินจะส่งข้อมูลมายัง Gamemode ของเรา
หรือ เก็บข้อมูลในตัวล็อกอินเลยก็ได้ แต่หากเปลี่ยนใจ เปลี่ยนตัวล็อกอินใหม่ ก็จะยากในการแก้ไข ตัวล็อกอินใหม่ วิธีเลยนี้ไม่แนะนำ
วิธีที่แนะนำคือ วิธีแรกคือ
รับข้อมูลหลังจากล็อกอินสำเร็จ ข้อมูลนั้นจะถูกส่งไปที่ Gamemode หรือ ถูกส่งไปที่ onPlayerDayZLogin และ onPlayerDayZRegister นั้นเอง
1. การเก็บข้อมูล ไอดี และ รหัสผ่าน
1.1. เปิดไฟล์ที่เป็น Type Server
1.2. ใช้ตัว exports.mysql:_QuerySingle ( )
local result, num_affected_rows, last_insert_id = exports.mysql:_QuerySingle ( "SELECT * FROM `accounts` WHERE `username` = ?", username )
1.3. if num_affected_rows == 0 then หาก 0 แสดงว่า ข้อมูลนั้นไม่มีอยู่จริง จากนั้นก็ ให้ติดตั้ง ข้อมูลนี้ลงไปแทน
exports.mysql:_Exec( "INSERT INTO `accounts` ( `username`, `password`, `ip`) VALUES ( ?,?,?)", username, password, getPlayerIP( player ) )
ท่านจะเห็นมี ท้ายสุดของ _Exec นั้นมี ตัวแปร 2 ตัว และ ฟังชั่น 1 ตัวนั้น คือ ข้อมูลไอดี และ รหัสผ่าน และสุดท้าย ไอพี ทีได้จากตัว แปรของฟังชั่น register นั้นเอง วันและ เวลาจะถูกเพิ่มข้อมูลเอง หลังจากติดตั้งเสร็จ แต่เราจะรู้ได้ไง ว่า ติดตั้งนั้นสำเร็จหรือไม่ เราก็รับตัวค่า return ของ _Exec นั้นและ ตรวจสอบ ค่าเป็น true หรือไม่
2. การตรวจสอบข้อมูล ล็อกอิน
ข้อนี้จะเป็นตัว สำรหับตรวจสอบ ข้อมูลมีจริงหรือไม่ และ ติดตั้งข้อมูลนั้นใหม่ หากไม่มีอยู่จริงด้วย2.1. ใช้ตัว exports.mysql:_QuerySingle ( )
local result, num_affected_rows, last_insert_id = exports.mysql:_QuerySingle ( "SELECT * FROM `accounts` WHERE `username` = ?" )
2.2. if num_affected_rows == 1 then
ตรวจสอบว่าข้อมูลนั้นมีอยู่หรือไม่ หากมีก็ ให้ล็อกอินไป
2.3. สร้างตัว else ที่มีค่าตรงข้าม หรือ ที่ไม่มีข้อมูลอยู่จริง
ใช้ตัว exports.mysql:_Exec( "INSERT INTO `accounts` ( `username`, `password`, `ip`) VALUES ( ?,?,?)", username, password, getPlayerIP( player ) )
ไปต่อก็ให้ ล็อกอินได้เลย
สมัครสมาชิก:
ส่งความคิดเห็น (Atom)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น