cho em hỏi làm cái load trước khi vào game như thế nào vậy
Bạn vào phần Global Game Settings nha (dưới thư mục Room đó)
Mở lên rồi, thì chuyển qua cái tab "Loading"...
Ở đây thì dễ dàng rồi, còn sửa đc icon nữa.
làm cái room chọn màn nếu đủ điểm nhấn vào thì qua màn mới
Phần này phải tạo ra 1 biến chung. Được gọi là biến "diem_yeu_cau".
Mình kiểm tra xem có đủ điểm hay ko mới cho chuyển room.
Xem file gmk này nhé: Download
Chúc bạn thành công !
@fight man, đợi chiều mai mình rảnh mới làm giúp bạn đc. Chờ nhé.
Mình đang bận nên làm đại khái:
- Dùng chuột trái chọn nhiều unit 1 lúc theo zone hình chữ nhật.
- Dùng chuột trái chọn 1 unit duy nhất.
- Đặt lệnh cho các unit (ở đây là di chuyển, dùng chuột phải để chọn đích đến).
Do cái script editor của GM không hiển thị tiếng Việt nên mình xin giải thích code ở đây.
Tạo 1 object control, ở dưới dùng trong event Draw:
var unit;
//Xem hiện tại có bao nhiêu unit trong room.
unitCount = instance_number(objBaseUnit);
//Bỏ tất cả ID của các unit vào 1 mảng.
for (i = 0; i < unitCount; i += 1) {
unit[i] = instance_find(objBaseUnit, i);
}
/* Kiểm tra nếu nhấn chuột trái thì đặt tọa độ vùng chọn theo tọa độ
chuột. Tắt cờ isSelected của tất cả unit và bật cờ isSelected của unit bị click vào. */
if (mouse_check_button_pressed(mb_left)) {
selectZoneX = mouse_x;
selectZoneY = mouse_y;
objBaseUnit.isSelected = false;
for (i = 0; i < unitCount; i += 1) {
if(collision_point(mouse_x, mouse_y, unit[i], false, true)) {
unit[i].isSelected = true;
}else {
if (unit[i].isSelected) {
unit[i].desX = mouse_x;
unit[i].desY = mouse_y;
}
}
}
}
//Đặt đích đến cho các unit có cờ isSelected bật khi click chuột phải.
if (mouse_check_button_pressed(mb_right)) {
for (i = 0; i < unitCount; i += 1) {
if (unit[i].isSelected) {
unit[i].desX = mouse_x;
unit[i].desY = mouse_y;
}
}
}
/* Bật cờ của tất cả các unit nằm trong hình chữ nhật
(selectZoneX, selectZoneY, mouse_x, mouseY) */
if (mouse_check_button_released(mb_left)) {
for (i = 0; i < unitCount; i += 1) {
if ((unit[i].x > selectZoneX) && (unit[i].y > selectZoneY)
&& (unit[i].x < mouse_x) && (unit[i].y < mouse_y)) {
unit[i].isSelected = true;
}
}
}
/* Vẽ vùng chọn lên màn hình. Trong example này do không có thời giàn nên mình chỉ active vùng chọn khi (mouse_x > selectZoneX) và
(mouse_y > selectZoneY). Bạn có thể sửa lại bằng cách check nếu tọa
độ của mouse bé hơn tọa độ gốc của vùng chọn thì tọa độ gốc của vùng
chọn sẽ là tọa độ mouse và tọa độ ta lấy ban đầu khi click chuột sẽ
thành tọa độ góc phải bên dưới. */
if (mouse_check_button(mb_left)) {
if ((mouse_x > selectZoneX) && (mouse_y > selectZoneY)) {
draw_set_color(c_green);
draw_rectangle(selectZoneX, selectZoneY, mouse_x, mouse_y, true);
}
}
Trong event Draw của objBaseUnit:
//Nếu unit đang được chọn thì vẽ 1 hình tròn màu xanh bao quanh nó.
if (isSelected) {
r = sprite_width;
if (sprite_height > sprite_width) r = sprite_height;
draw_set_color(c_green);
draw_circle(x, y, r, true);
}
//Di chuyển tới đích được đặt, né các vật cản solid.
action_potential_step(desX, desY, moveSpeed, 0);
/*Do object này sử dụng event draw nên sprite của nó sẽ không được
tự động render lên màn hình, bên dưới ta vẽ lại sprite.*/
draw_sprite_ext(sprite_index, image_index, x, y, image_xscale, image_yscale, image_angle, image_blend, image_alpha);
Bạn muốn làm 1 game RTS hoàn chỉnh thì còn phải làm nhiều nhiều lắm, example mình chỉ làm phần cơ bản vậy thôi.
Có một số điều vui nhộn xảy ra trong example của @[where?] ^^
Các bạn hãy thử điều khiển từng unit và di chuyển vào vị trí của 1 unit xem , điều thú vị sẽ xảy ra
Chọn nhiều unit 1 lúc click vào 1 chỗ là được rồi việc gì phải chọn từng thằng. =]] Example ví dụ đơn giản vụ chọn và đặt lệnh cho unit thôi nên nó vậy. Tính làm cho nó hoàn chỉnh mà lười lắm với lại cũng chưa cần thiết. Làm game RTS nhiều unit thì thường mình không xài action_potential_step đâu.
Lỗi thế nào bạn? Nếu là chỉ kéo từ trên xuống, từ trái qua được thì mình có comment ngay đoạn cuối code là "Trong example này do không có thời giàn nên mình chỉ active vùng chọn khi (mouse_x > selectZoneX) và (mouse_y > selectZoneY). Bạn có thể sửa lại bằng cách check nếu tọa độ của mouse bé hơn tọa độ gốc của vùng chọn thì tọa độ gốc của vùng chọn sẽ là tọa độ mouse và tọa độ ta lấy ban đầu khi click chuột sẽ thành tọa độ góc phải bên dưới.". Mình muốn làm hoàn chỉnh thì chỉ thêm vài line thôi nhưng lười, để người xem họ từ chỉnh.
Cả circle màu xanh, cũng lại ra màu đen.
Bạn để ý cái dòng draw_set_color, trong phạm vi example mình lúc đầu ko muốn set lại 2 lần vì 1 lần là dc rồi. Nhưng sau sợ có người down về vọc vạch chỉnh sửa nên ngay sau đó sửa lại. "This post was last modified: Today 07:20 PM " => trong source trước cái draw_circle có cái draw_set_color. Đây không phải lỗi. Mà nó thành màu đen nghĩa là bạn có chỉnh sửa gì trong source nên cái draw color nó mới về lại thành đen.
Liếc qua topic thấy fight man hỏi mà không thấy bạn trả lời nên làm gấp cái example trong phạm vi bạn ấy thắc mắc thôi chứ đâu có thời gian mà đi làm chi tiết, tỉ mỉ, mà làm vậy để người xem dễ hiểu. Chứ làm nghiêm túc thì khác.
Mà cũng 2 năm rồi mấy bữa nay mới đụng lại GM. Nôn tới ngày thay máy mới quá, thay máy mới rồi thì ko chỉ làm game nữa. T_T xD xD =]]
Thì mình edit ngay lúc post file rồi mà, thêm cái draw_set_color trước cái draw_circle để chắc chắn set đúng màu trước khi draw thôi. Theo lý thì cái draw_set_color lúc draw rect nó sẽ pass qua cái draw circle luôn nhưng chắc quá trình render hoặc draw buffer không hoàn toàn giống nhau trên tất cả các máy (lúc màu đen là draw buffer nó set color về lại mặc định). Nói chung cái circle bỏ vô làm màu vậy thôi chứ có phải cái fight man hỏi đâu nên cũng không làm kĩ. Nếu làm kĩ thì cái radian lúc draw circle phải chia 2 rồi tăng thêm 1 giá trị cố định, chứ để như hiện tại thì sprite bự lên thì cái circle sẽ bự hơn nhiều so với cái sprite. Thấy, biết vậy nhưng lười sửa. Lúc đầu tính unit nào được chọn thì cho nó đổi màu thôi cho gọn. =]]
Thực ra làm như vầy là đã là 70% về phần move unit của 1 game RTS rồi mà. @[where?] có ý tưởng gì về phần sắp xếp đội hình khi di chuyển tới 1 vị trí ko?
Đơn cử là xếp thành đội hình có dạng hình chữ đi.
Comments
Tức là giống các game kiểu Đế Chế, Warcraft à ?
Dùng chuột để select quân và điều khiển ?
Mở lên rồi, thì chuyển qua cái tab "Loading"...
Ở đây thì dễ dàng rồi, còn sửa đc icon nữa.
Phần này phải tạo ra 1 biến chung. Được gọi là biến "diem_yeu_cau".
Mình kiểm tra xem có đủ điểm hay ko mới cho chuyển room.
Xem file gmk này nhé:
Download
Chúc bạn thành công !
@fight man, đợi chiều mai mình rảnh mới làm giúp bạn đc. Chờ nhé.
vậy mình muốn dùng chuột để chọn 1 đơn vị quân nào đó (như các game RTS) thì nó có hướng dẫn ở đó không nhỉ
Example: https://dl.dropboxusercontent.com/u/58156219/Linh Tinh/rts_unit_control.gmk
Mình đang bận nên làm đại khái:
- Dùng chuột trái chọn nhiều unit 1 lúc theo zone hình chữ nhật.
- Dùng chuột trái chọn 1 unit duy nhất.
- Đặt lệnh cho các unit (ở đây là di chuyển, dùng chuột phải để chọn đích đến).
Do cái script editor của GM không hiển thị tiếng Việt nên mình xin giải thích code ở đây.
Tạo 1 object control, ở dưới dùng trong event Draw:
Trong event Draw của objBaseUnit:
Bạn muốn làm 1 game RTS hoàn chỉnh thì còn phải làm nhiều nhiều lắm, example mình chỉ làm phần cơ bản vậy thôi.
Các bạn hãy thử điều khiển từng unit và di chuyển vào vị trí của 1 unit xem , điều thú vị sẽ xảy ra
Multi select bị lỗi rồi.
Cả circle màu xanh, cũng lại ra màu đen.
Bạn để ý cái dòng draw_set_color, trong phạm vi example mình lúc đầu ko muốn set lại 2 lần vì 1 lần là dc rồi. Nhưng sau sợ có người down về vọc vạch chỉnh sửa nên ngay sau đó sửa lại. "This post was last modified: Today 07:20 PM " => trong source trước cái draw_circle có cái draw_set_color. Đây không phải lỗi. Mà nó thành màu đen nghĩa là bạn có chỉnh sửa gì trong source nên cái draw color nó mới về lại thành đen.
Liếc qua topic thấy fight man hỏi mà không thấy bạn trả lời nên làm gấp cái example trong phạm vi bạn ấy thắc mắc thôi chứ đâu có thời gian mà đi làm chi tiết, tỉ mỉ, mà làm vậy để người xem dễ hiểu. Chứ làm nghiêm túc thì khác.
Mà cũng 2 năm rồi mấy bữa nay mới đụng lại GM. Nôn tới ngày thay máy mới quá, thay máy mới rồi thì ko chỉ làm game nữa. T_T xD xD =]]
^^
Vì vậy mới nghi ngờ là lỗi.
@[where?] có ý tưởng gì về phần sắp xếp đội hình khi di chuyển tới 1 vị trí ko?
Đơn cử là xếp thành đội hình có dạng hình chữ đi.