• Để quảng cáo máy chủ , các bạn nhấn vào Đây
  • Diễn Đàn Hỗ Trợ / Giao Lưu / Chia Sẻ Code Samp Việt Nam
    Group : Click Me
  • Các bạn đăng bài hỏi đáp hay hướng dẫn phải có tiêu đề chính xác
    Những tiêu đề như "Help em lỗi f5" , "Lỗi này fix sao?" thì mình sẽ delete bài đó nhé Tiêu đề quan trọng giúp cho những người sau này gặp lỗi khỏi cần phải hỏi lại .

Hướng Dẫn Hướng Dẫn Tạo Và Xử Lí Actor ( NPC )

Admin

Administrator
Thành viên BQT
Tham gia
9/1/20
Bài viết
604
Reaction score
90
Điểm
28
Awards
6
  • Samp Coder
  • Founder
  • Thành Viên Trong Sáng
  • Best Seller
  • Thành Viên Tiềm Năng
  • Tích Cực Xây Dựng
Coin
1,054,949
Hello mấy cưng , hôm nay thấy nhiều bài hỏi về Actor ( NPC ) quá nên tui sẽ làm 1 bài hướng dẫn tất tần tật , a-z cái bài này thật rõ ràng cho anh em tìm hiểu nhé . Đọc kĩ và làm theo chắc chắn sẽ thành công thôi ^^ . Bắt đầu nhé

Tạo Actor ( NPC ) chúng ta cần có gì ? :

Để tạo Actor , chúng ta cần 1 Include a_actor có sẵn thôi là chiến được rồi


Cách cài đặt :

Tải về file a_actor.inc và bỏ nó vào đường dẫn pawno/include
Tiếp theo vào gamemode phần Compile , các bạn thêm vào #include <a_actor> là xong



Cách tạo Actor :

  • Trước tiên , chúng ta tạo 1 biến lưu trữ actor tên gì cũng được , VD : new npc;
  • Tiếp theo là tạo actor vào biến npc , VD : npc = CreateActor(135, -74.5876,-1592.9423,2.6172,320.0417);
    CreateActor gồm 5 thông số như sau
    skin : ID skin mà mình muốn actor sử dụng , // 135
    X : Tọa độ X // -74.5876
    Y : Tọa độ Y // -1592.9423
    Z : Tọa Độ Z // 2.6172
    Rot : Vòng xoay , tức độ xoay của actor theo hướng đông tây nam bắc // 320.0417
    ta có được : npc = CreateActor(135, -74.5876,-1592.9423,2.6172,320.0417);
  • Đặt npc = CreateActor(135, -74.5876,-1592.9423,2.6172,320.0417); vào trong public LoadStreamerDynamicObjects()
  • Hoàn tất tạo Actor ( NPC )

Cách Đặt Tên Cho Actor :

  • Ctrl + F tìm dòng public LoadStreamerDynamic3DTextLabels()
  • sử dụng CreateDynamic3DTextLabel để tạo label , vị trí label trùng với X,Y,Z của actor thì chúng ta có được tên của actor ^^ , VD : CreateDynamic3DTextLabel("Day La NPC Tui Vua Tao\nNhan Chuot Phai + Y De Tuong Tac",COLOR_WHITE,-74.5876,-1592.9423,2.6172+0.4,15.0);
    CreateDynamic3DTextLabel gồm 4 thông số như sau
    Text : chữ // Day La NPC Tui Vua Tao\nNhan Chuot Phai + Y De Tuong Tac
    COLOR : màu của chữ đó
    X,Y,Z : Tọa độ bao gồm X,Y,Z // -74.5876,-1592.9423,2.6172 ( +0.4 ở cuối cùng tức là mình tăng y lên cao 1 tí , các bạn muốn tăng bao nhiêu tùy thích )
    Distance : Khoảng cách nhìn thấy dòng chữ // 15.0

    ta có được : CreateDynamic3DTextLabel("Day La NPC Tui Vua Tao\nNhan Chuot Phai + Y De Tuong Tac",COLOR_WHITE,-74.5876,-1592.9423,2.6172+0.4,15.0);
  • Hoàn tất tên của Actor

Thêm máu + VW cho actor :

  • Rất đơn giản , bạn tìm đến đoạn createactor trên phần tạo , ở phía dưới cho thêm 2 dòng này là xong
    SetActorVirtualWorld(npc, 0); // set VW cho biến npc ( tức con actor của bạn ) = 0 , nếu làm trong door nào đó thì check vw để chỉnh sửa chỗ này cho hợp lí nhé
    SetActorHealth(npc, 99999.000000); // set máu cho npc của bạn = 999999 , bất tử luôn khỏi ai kill
  • Xong

Thêm hành động cho Actor :

  • Cũng ngay dưới phần tạo actor của bạn , phần hành động nên cho nằm dưới sau khi tạo actor nhé .
  • sử dụng ApplyActorAnimation để tạo hành động cho Actor của bạn , VD : ApplyActorAnimation(npc, "DEALER", "shop_pay", 4.1, 0, 0, 0, 0, 0);
    ApplyActorAnimation gồm có 2thông số chính
    actor : actor cần sử dụng hành động // npc
    animation: hành động cần sử dụng cho actor // "DEALER", "shop_pay", 4.1, 0, 0, 0, 0, 0

    Lưu ý : để sử dụng hành động các bạn tìm hành động cần thiết trong FS hành động của mỗi gamemode , copy qua rồi sài nhé .
  • Xong

Vậy là các bạn đã hoàn thành tạo actor rất đơn giản . Phần tiếp theo mình hướng dẫn các bạn xử lí actor nhé , phần này quan trọng nè


Làm sao để hoạt động tương tác với Actor bằng nút Y hoặc bất kể nút gì đấy ?

  • Sau khi có actor , chúng ta có tên biến chứa actor là npc ở phần trên mình đã tạo
  • Tiếp theo vào callback OnPlayerKeyStateChange , hàm này sẽ được gọi khi chúng ta sử dụng nút nào đó
  • Để callback này được gọi bạn phải tạo 1 if kiểm tra nếu người chơi ấn Y

  • Mã:
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
        if(newkeys & KEY_YES) // nút Y
        {
            if(IsPlayerInRangeOfActor(playerid,npc)){ // sử dụng hàm IsPlayerInRangeOfActor để kiểm tra người chơi có gần npc hay không
                // nếu gần thì xử lí trong này
                SendClientMessage(playerid,COLOR_RED, "Tui Vua Moi An Y , Va Tui Dang O Gan Actor npc");
            }
        }
        return 1;
    }
  • Vậy là xong rồi , phần này đơn giản nhưng cần hiểu rõ hơn , nếu thắc mắc cứ cmt mình sẽ giải thích nhé
Nếu bạn không có hàm IsPlayerInRangeOfActor thì copy của mình bỏ vào gamemode nhé , thích bỏ ở đâu thì bỏ luôn ^^ bỏ cuối cùng gamemode cũng được nốt
C++:
stock IsPlayerInRangeOfActor(playerid, actorid, Float:radius = 2.3)
{
        new Float:x,
            Float:y,
            Float:z;

        if (GetActorPos(actorid, x, y, z))
        {
            return IsPlayerInRangeOfPoint(playerid, radius, x, y, z);
        }
        return 0;
}

Include a_actorLink Download :
size1KB

Chúc các bạn thành công
 

Rick

Bạc
Tham gia
20/3/20
Bài viết
68
Reaction score
8
Điểm
8
Awards
0
Coin
3,700
help muốn thêm skin vào npc munu thì sao ta !
 

Admin

Administrator
Thành viên BQT
Tham gia
9/1/20
Bài viết
604
Reaction score
90
Điểm
28
Awards
6
  • Samp Coder
  • Founder
  • Thành Viên Trong Sáng
  • Best Seller
  • Thành Viên Tiềm Năng
  • Tích Cực Xây Dựng
Coin
1,054,949
help muốn thêm skin vào npc munu thì sao ta !
thêm skin vào npc hay thêm skins cho NPC bạn

Nếu them skins cho NPC thì bạn xem thông số của createactor . sauđó sửa số skins thành skins cần thiết làđc
Nếu thêm skins vào npc khi ấn hiện ra thì bạn tạo file chưa skins custom , tương tự như /muaquanao mà làm theo bạn nhé
 

Rick

Bạc
Tham gia
20/3/20
Bài viết
68
Reaction score
8
Điểm
8
Awards
0
Coin
3,700
thêm skin vào npc hay thêm skins cho NPC bạn

Nếu them skins cho NPC thì bạn xem thông số của createactor . sauđó sửa số skins thành skins cần thiết làđc
Nếu thêm skins vào npc khi ấn hiện ra thì bạn tạo file chưa skins custom , tương tự như /muaquanao mà làm theo bạn nhé
Cuu the duoc ko vay admin
 

Devil

Đồng
Tham gia
23/3/20
Bài viết
29
Reaction score
7
Điểm
3
Awards
2
  • Tích Cực Xây Dựng
  • Samp Coder
Coin
0
You must be registered for see medias
 

Rick

Bạc
Tham gia
20/3/20
Bài viết
68
Reaction score
8
Điểm
8
Awards
0
Coin
3,700
khong biet muc sethp cho npc nam oi dau
 

Admin

Administrator
Thành viên BQT
Tham gia
9/1/20
Bài viết
604
Reaction score
90
Điểm
28
Awards
6
  • Samp Coder
  • Founder
  • Thành Viên Trong Sáng
  • Best Seller
  • Thành Viên Tiềm Năng
  • Tích Cực Xây Dựng
Coin
1,054,949
SetActorHealth(MyActor, 100);
 

phong2079

Đồng
Tham gia
17/4/20
Bài viết
14
Reaction score
0
Điểm
1
Awards
0
Coin
0
cho em hoi~, neu muon thay nut
if(newkeys & KEY_YES) // nút Y
thanh nut ALT de bat len thi len web nao de xem roi thay no vao cho "YES" vay