ผมก็คิดว่าใช้ฐานข้อมูลเป็นตัวช่วยนี้แหล่ะดีแล้วครับ
เพิ่มฟิลด์ lastTime ใน user เข้าไปครับ สมมติเก็บเป็น datetime
ยกเหตุการณ์
1. login เข้าระบบ ตรวจสอบเข้าสู่ระบบ
2. ก่อนจะเข้าสู่ระบบ เลือกผลต่างเวลา
- select TIMESTAMPDIFF(MINUTE,lastTime,now()) as diff from user where user='xxx' and pass='xxx'
- ค่า diff ก็คือผลต่างนาทีของเวลาปัจจุบันกับเวลาเข้าระบบครั้งสุดท้าย
3นำค่า diff มาทำการคำนวน สมมติว่าทุกๆ 4 นาทีเพิ่ม 1 hp (สมมติน่ะครับ อันนี้ต้องไปเขียนฟังก์ขันเอง)
- $hp =(int)($sql[diff]/4) //คือค่า hp ทั้งหมด
4. นำค่า hp และเวลาล่าสุด เข้าสู่ฐานข้อมูล
- update user set hp='$hp' ,lastTime=now() where user='xxx'
เห็นใช้จาวาสคริปอัพเดท hp ด้วยใช่ป่ะครับ อันนี้กรณีสคริปทำงานร่วมด้วย
5. เมื่อจาวาสคริปนับถอยหลังครบ 4 นาที ก็จะทำการอัพเดทค่า hp และเวลาล่าสุดไปด้วยครับ
- update user set hp=hp+1 ,lastTime=now() where user='xxx'