Đẳng Cấp Học Sinh

Đẳng Cấp Học Sinh

Đại Ân 2
 
Trang ChínhPortalCalendarTrợ giúpTìm kiếmThành viênNhómĐăng kýĐăng Nhập

Share | 
 

 Game Maker (phần 13): Thực hiện chức năng chơi online

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
zavasaki11
Thành Viên Cấp 2
Thành Viên Cấp 2


Tổng số bài gửi : 21
Join date : 03/05/2012
Age : 23
Đến từ : Đại Ân 2

Bài gửiTiêu đề: Game Maker (phần 13): Thực hiện chức năng chơi online   Mon May 21, 2012 5:35 pm

Cơ chế liên lạc thứ hai mà Game Maker hỗ trợ là gửi và nhận tin nhắn. Người chơi có thể gửi các tin nhắn này đến một hoặc tất cả những người cũng tham gia khác. Các bên có thể nhìn thấy message đến và thực hiện các hoạt động liên quan liền sau đó.

Kỳ 4: Truyền tin nhắn



Những dữ liệu này được gửi theo chế độ đảm bảo, theo đó chắc chắn là chúng tới được nhưng với tốc độ chậm hoặc theo chế độ không đảm bảo nhưng có tốc độ nhanh hơn.

Chúng ta sẽ dùng các message để chèn vào một số hiệu ứng âm thanh mô tả lúc quả bóng đập vào mặt vợt, vào bờ tường… hay lúc một người thắng cuộc. Chỉ có Master mới có thể nhận biết được các sự kiện như thế. Do đó, Master phải quyết định âm thanh nào được phát ra. Việc này khá đơn giản vì Master chỉ cần bật âm thanh đó, nhưng nó phải “bảo” cho Slave cũng phát ra tiếng động này.

Ta có thể dùng cách chia sẻ dữ liệu cho việc này nhưng điều đó khá phức tạp, còn dùng message thì dễ dàng hơn. Master chỉ cần gửi một message đến cho Slave, báo là phải “bật đài”. Còn Slave thì nghe và thực hiện “mệnh lệnh”.

Dưới đây là các công thức truyền message:

mplay_message_send (player,id,val) có chức năng gửi message đến một người chơi xác định (dùng thông số định dạng hoặc một cái tên; dùng số 0 để gửi message cho tất cả những người chơi).
id là một thông số định dạng message có giá trị là số nguyên.
val là giá trị số thực hoặc chuỗi ký tự.
Message được gửi đi bằng chế độ không đảm bảo.

mplay_message_send_guaranteed (player,id,val) làm nhiệm vụ gửi message cho một người chơi xác định (dùng thông số định dạng hoặc một cái tên; dùng số 0 để gửi message cho tất cả những người chơi).
id là một thông số định dạng message có giá trị là số nguyên.
val là giá trị số thực hoặc chuỗi ký tự.
Message được gửi đi bằng chế độ đảm bảo.

mplay_message_receive (player) có chức năng nhận tin nhắn kế tiếp từ dãy message được gửi đến từ một người chơi xác định (một thông số hoặc một cái tên). Dùng số 0 dành cho các tin nhắn được gửi đến từ bất kỳ người chơi nào. Công thức này cho thông báo có message mới hay không. Nếu có, bạn dùng những công thức sau để nhận nội dung tin nhắn:

mplay_message_id ( ) cho thông số của message cuối cùng nhận được
mplay_message_value ( ) cho giá trị của message cuối cùng nhận được
mplay_message_player ( ) cho thông tin người chơi đã gửi tin nhắn cuối cùng thành công
mplay_message_name ( ) hiện tên người chơi đã gửi tin nhắn cuối cùng thành công
mplay_message_count (player) cho hiện ra số message còn lại trong hàng từ người chơi (dùng 0 để đếm toàn bộ các tin nhắn)

Có một số chú ý ở đây. Trước hết, nếu muốn gửi message đến một người chơi duy nhất, bạn cần biết ID của người đó. Như đã nói ở phần trước, bạn có thể có được ID này bằng cách dùng hàm mplay_player_id ( ). Thông số này cũng được sử dụng để khi nhận message từ một người chơi xác định. Hoặc bạn có thể đưa tên của người chơi dưới dạng một dãy ký tự. Nếu nhiều người tham gia lại trùng tên thì chỉ có người đầu tiên nhận được message.

Hai là, bạn có thể thắc mắc tại sao mỗi message lại có một thông số dạng số nguyên. Lý do là điều này sẽ giúp ứng dụng của bạn gửi được nhiều loại tin nhắn khác nhau. Người nhận có thể kiểm tra kiểu message này bằng cách dùng ID. (Nhưng do các message không được đảm bảo có đến được hay không nên việc gửi ID và giá trị trong các tin nhắn khác nhau có thể gây ra những rắc rối nghiêm trọng)

Để gửi âm thanh đi, chúng ta làm theo phương pháp sau đây: khi Master xác định quả bóng đập trúng cây vợt thì nó sẽ thực hiện đoạn mã sau:

{
if (!global.master) exit;
sound_play(sound_bat); // play the sound yourself
mplay_message_send(0,100,sound_bat); // send it to the slave
}

Còn object điều khiển trong sự kiện Step sẽ thực hiện đoạn mã:

{
while (mplay_message_receive(0)
{
if (mplay_message_id() == 100) sound_play(mplay_message_value();
}
}

Nó sẽ kiểm tra xem có message nào không và nếu có, nó sẽ kiểm tra ID là gì. Nếu ID là 100 thì nó sẽ phát ra âm thanh được chọn trong giá trị message.

Nói tổng quát hơn, thường thì trò chơi của bạn có một object điều khiển trong các room và trong sự kiện Step, nó thực hiện công việc sau:

{
var from, name, messid, val;
while (mplay_message_receive(0)
{
from = mplay_message_player();
name = mplay_message_name();
messid = mplay_message_id();
val = mplay_message_value();
if (messid == 1)
{
// do something
}
else if (messid == 2)
{
// do something else
}
// etc.
}
}

Nguồn : [You must be registered and logged in to see this link.]
Về Đầu Trang Go down
Xem lý lịch thành viên
 

Game Maker (phần 13): Thực hiện chức năng chơi online

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
Đẳng Cấp Học Sinh :: Lập Trình - Thiết Kế :: Phát Triển Game :: Game Maker-