• [THÔNG BÁO] CẢNH BÁO LỪA ĐẢO MẠO DANH QUẢN TRỊ VIÊN
    Chào các thành viên GameVN,
    Dạo gần đây tình trạng lừa đảo scamming và phishing đang gia tăng. Ban quản trị GameVN xin lưu ý toàn bộ thành viên:
    KHÔNG/ ĐỪNG / CẤM cho bất kỳ ai tự xưng là quản trị viên của server vay tiền.
    Mọi hành vi lân la làm quen, tự tiện nhắn tin trên Discord, Facebook, Zalo hoặc các nền tảng mạng xã hội khác,
    núp bóng dưới danh nghĩa sinh hoạt của quản trị viên, đều có tỉ lệ rất, rất cao là lừa đảo.
    Nếu có tài khoản lạ add friend hoặc nhắn tin xin tiền dưới danh nghĩa admin:
    Block ngay
    Report ngay
    Không chuyển khoản, không cung cấp thông tin cá nhân


    Quản trị viên của forum và Discord server GameVN không có nhu cầu vay tiền thành viên.
    Không có lý do nào để admin chủ động kết bạn rồi xin tiền.
    Mọi thông báo chính thức chỉ được đăng trên kênh thông báo của server và topic chính thức trên forum.
    Tin nhắn riêng từ tài khoản lạ không phải thông báo của ban quản trị.
    Cảm ơn các bạn đã chú ý và cùng giữ cộng đồng an toàn.
    — Ban quản trị GameVN

    Tắt thông báo bằng nút X bên góc phải của bảng thông báo*

Làm mờ các object trong game dễ dàng (GM)

anhchanghaudau

Youtube Master Race
Tham gia ngày
25/2/06
Bài viết
51
Reaction score
0
Hôm nay xin mạn phép đóng góp 1 chiêu mới (không biết có mới hay không)
Để làm mờ tất cả các object thì ta thường gặp khó khăn rất nhiều nhưng lại thường sử dụng nhất VD: khi gặp Boss, sang cảnh mới, hay tạo object....

trong đoạn mã này thì chỉ cần thay đổi tham số ratio (là tỉ lệ mờ đi sau mỗi bước), delay (là thời gian trễ để mắt người chơi nhận biết thay đổi)
Còn dòng mã i += 16, j += 16 là kích thước vùng chữ nhật tối thiểu mà object đứng được (ở đây xin chọn 16)

sample.zip

var alpha, i, j, ratio, myID, delay;

ratio = 0.01;
delay = 20;
alpha = 1;
io_clear();
do
{
// giữ handle của các sự kiện
io_handle();
// giảm alpha đi cho đối tượng mờ dần
alpha -= ratio;
for(i = 0; i < room_height; i += 16)
{
for(j = 0; j < room_width; j += 16)
{
// Neu co instance thi lam mo no
// có thể làm mờ chỉ với một số loại Object thôi thì thay all bằng object ID
myID = instance_position(j, i, all);
if(myID) myID.image_alpha = alpha;
}
}
// Vẽ lại màn hình
screen_redraw();
// dừng lại 1 khoảng cho người chơi nhận biết
sleep(delay);
}until(alpha <= 0);
// trả quyền điều khiển
io_clear();
 
{@: script này chỉ có hiệu quả nếu room nhỏ, nếu room lớn quá hoặc với những room có grid nhỏ (cái mà bạn nói là "kích thước vùng chữ nhật tối thiểu mà object đứng được) thì vòng lặp sẽ rất lớn, edit:

Mã:
var alpha, i, j, ratio, myID, delay;

ratio = 0.01;
delay = 20;
alpha = 1;
io_clear();
do
{
    io_handle();
    alpha -= ratio;
    for(i=0;i<instance_number(all);i+=1)
    {
        var a;
        a=instance_find(all,i)
        a.image_alpha=alpha
    }
    screen_redraw();
    sleep(delay);
}until(alpha <= 0);
io_clear();
:@}
 
>VoDich< nói:
{@: script này chỉ có hiệu quả nếu room nhỏ, nếu room lớn quá hoặc với những room có grid nhỏ (cái mà bạn nói là "kích thước vùng chữ nhật tối thiểu mà object đứng được) thì vòng lặp sẽ rất lớn, edit:

Mã:
var alpha, i, j, ratio, myID, delay;

ratio = 0.01;
delay = 20;
alpha = 1;
io_clear();
do
{
    io_handle();
    alpha -= ratio;
    for(i=0;i<instance_number(all);i+=1)
    {
        var a;
        a=instance_find(all,i)
        a.image_alpha=alpha
    }
    screen_redraw();
    sleep(delay);
}until(alpha <= 0);
io_clear();
:@}

Điều này thực hiện không lâu đâu, với những game grid thì kích thước khoảng 16x16, 32x32 hoàn toàn làm nhanh được vì 2 lý do:
- Room hiển thị không hoàn toàn nếu grid quá lớn, đỡ mất công vẽ lại.
- Không vẽ lại từng đối tượng trong mỗi bước lập mà vẽ lại toàn bộ sau khi đã chỉnh alpha cho tất cả xong, vì vậy nó sẽ nhanh lắm (có thử trên ô grid có 100 hàng 100 cột mất chưa đầy 1s)

Code của bạn vô địch sửa dùng cho 1 hay nhiều loại object nếu muốn phải lặp nhiều lần.
Xin thêm 1 cách nữa là dùng instance_count, và instance_id

Mã:
var alpha, i, j, ratio, myID, delay;

ratio = 0.01;
delay = 20;
alpha = 1;
io_clear();
do
{
    io_handle();
    alpha -= ratio;
    for(i=0;i<instance_count;i+=1) <=====
    {
        var a;
        a=instance_id[i];  <=====
        a.image_alpha=alpha
    }
    screen_redraw();
    sleep(delay);
}until(alpha <= 0);
io_clear();

Vậy tùy mỗi hoàn cảnh, mỗi loại grid hay nhu cầu ẩn hiện các object khác nhau ta có thể dùng
+ Đối với grid vừa đủ lớn mà muốn ẩn một object cho nhanh ==> code Vô địch
+ Đối với grid lớn và ẩn tất cả ==> code mới
 
Back
Top