Cộng Đồng Sampvn
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Tạo nhân vật ảo đơn giản và chi tiết !

2 posters

Go down

Tạo nhân vật ảo đơn giản và chi tiết ! Empty Tạo nhân vật ảo đơn giản và chi tiết !

Bài gửi by BiAn Wed Nov 30, 2016 9:21 pm

Hướng dẩn Add NPC vào server samp nhanh nhất

Server SA-MP nếu muốn chuyên nghiệp thì bạn cần thêm những scripts và nhiều hệ thống đa dạng . Những thứ đó sẽ giúp member cảm thấy thoải mái , mới mẻ khi tham gia vào chơi .

Trong bài viết này mình sẽ hướng dẩn cho tất cả các đọc giả , những newbie khi mới tham gia open server samp cách thêm NPC vào server , giúp cho server sinh động và chuyên nghiệp hơn .

npc

NPC SA-MP là gì ?

NPC là những nhân vật được thiết kế sẵn trong game để hỗ trợ người chơi. Ở các game online NPC giúp cho nhân vật của mình làm các nhiệm vụ. Nói chung mỗi NPC trong game đảm nhận các chức vụ khác nhau
NPC là viết tắt của từ NON-PLAYER CHARACTER                                                                              

           Theo xlagi.com

Nhưng trong samp NPC có khả năng di chuyển , hoạt động hoặc sử dụng Animation mà chúng ta đã Record sẳn . Các bạn có thể tạo nhiều NPC khác nhau , mổi NPC hoạt động và làm việc riêng biệt . Nhiều server đã có thể chỉnh sửa NPC giống như 1 player , có đầy đủ tên cũng như id của 1 player thật . Bạn cũng có thể thêm callbacks và fuction cho NPC đã tạo giúp cho nó có chức năng như player

NPC được phát triển từ phiên bản SA-MPHướng dẩn add NPC vào Server bằng 2 cách

I . Add NPC thủ công bằng code

Cách này giúp bạn add NPC bằng cách tự viết scripts , từ record của bạn thành hoạt động của NPC và sau đó là đưa nó vào gamemode hoàn toàn thủ công .

Để thực hiện add NPC thủ công các bạn làm như sau :

Bước 1 : Recording a playback file

Đầu tiên bạn cần record playback file cho NPC hoạt động , những gì bạn ghi lại thì NPC sẽ làm tương tự như vậy .

Để record , các bạn cần tải file filterscripts npc_record và add vào gamemode theo, nếu ai chưa biết có thể tham khảo bài hướng dẩn add fs vào server lúc trước của mình  .

Sau khi đã add xong , các bạn bật server samp và vào game , sử dụng lệnh /rcon login để đăng nhập rcon . Sau khi đã đăng nhập rcon thì bạn gõ lệnh /rcon loadfs npc_record để load fs lúc nãy ( nếu như đã thêm vào server.cfg thì có thể bỏ qua bước này ) .

Sau khi filterscripts đã load các bạn dùng lênh /record mynpc ( /vrecord mynpc đối với NPC trên xe ) để bắt đầu record . Sau khi record start , các bạn hãy di chuyển những vị trị , động tác và hoạt động mà bạn muốn NPC làm y vậy . Để kết thúc record các bạn gõ lệnh /stoprecord.

Kết thúc record bây giờ bạn thoát game , vào thư mục scriptfiles trong gamemode và tìm và di chuyển file mynpc.rec vào thư mục gamemode/npcmodes/recordings/ .

Bước 2 : Controlling the NPC

Bước này là bước thiết lập NPC cùng với file record lúc nãy  .

Các bạn vào pawno.exe và tạo 1 pawn mới bằng cách click icon New  hoặc ấn tổ hợp phím Crtl + N .

Copy toàn bộ code dưới này và ấn F5 để compiler , các bạn lưu file pawno đã compiler này vào thư mục npcmodes.


Code:
#define RECORDING "mynpc" // Đây là tên của file record
#define RECORDING_TYPE 2 // Số 1 cho NPC trong xe hoặc 2 cho NPC đi bộ .

#include <a_npc>
main(){}
public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING);

#if RECORDING_TYPE == 1
 public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);
 public OnNPCExitVehicle() StopRecordingPlayback();
#else
 public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
#endif
1
2
3
4
5
6
7
8
9
10
11
12
13
#define RECORDING "mynpc" // Đây là tên của file record
#define RECORDING_TYPE 2 // Số 1 cho NPC trong xe hoặc 2 cho NPC đi bộ .

#include <a_npc>
main(){}
public OnRecordingPlaybackEnd() StartRecordingPlayback(RECORDING_TYPE, RECORDING);

#if RECORDING_TYPE == 1
 public OnNPCEnterVehicle(vehicleid, seatid) StartRecordingPlayback(RECORDING_TYPE, RECORDING);
 public OnNPCExitVehicle() StopRecordingPlayback();
#else
 public OnNPCSpawn() StartRecordingPlayback(RECORDING_TYPE, RECORDING);
#endif
Bước 3 : Connecting your NPC

Kết nối NPC đã thiết lập vào Server của bạn .

Code kết nối NPC vào server .


Code:
ConnectNPC("Nghia","mynpc");
1
ConnectNPC("Nghia","mynpc");

“Nghia” : Đây là tên gọi của NPC bạn sẽ thêm vào server .
“mynpc” : Tên file name record lúc nãy đã ghi của bạn .
Bây giờ add code vào gamemode.pwn của bạn như sau :


Code:
public OnGameModeInit()
{
 print("my gamemode");
 ConnectNPC("Nghia","mynpc");
 return 1;
}
1
2
3
4
5
6
public OnGameModeInit()
{
 print("my gamemode");
 ConnectNPC("Nghia","mynpc");
 return 1;
}
Nếu như bạn add vào filterscripts thì sử dụng code :


Code:
public OnFilterScriptInit()
{
 print("my filterscript");
 ConnectNPC("Nghia","mynpc");
 return 1;
}
1
2
3
4
5
6
public OnFilterScriptInit()
{
 print("my filterscript");
 ConnectNPC("Nghia","mynpc");
 return 1;
}


Bây giờ bạn muốn thêm xe cho NPC thì sử dụng code sau ( Nếu như bạn không sử dụng NPC trên xe thì không cần add vào nhé , có thể bỏ qua bước này ) .

Add code vào gamemode.pwn


Code:
new MyFirstNPCVehicle; //Global variable!
public OnGameModeInit()
{
 print("my gamemode");
 ConnectNPC("Nghia","mynpc");
 MyFirstNPCVehicle = CreateVehicle(400, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000);
 return 1;
}
1
2
3
4
5
6
7
8
new MyFirstNPCVehicle; //Global variable!
public OnGameModeInit()
{
 print("my gamemode");
 ConnectNPC("Nghia","mynpc");
 MyFirstNPCVehicle = CreateVehicle(400, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000);
 return 1;
}
Nếu như sử dụng filterscripts thì bạn add code này :


Code:
new MyFirstNPCVehicle; //Global variable!
public OnFilterScriptInit()
{
 print("my filterscript");
 ConnectNPC("MyFirstNPC","mynpc");
 MyFirstNPCVehicle = CreateVehicle(400, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000);
 return 1;
}
1
2
3
4
5
6
7
8
new MyFirstNPCVehicle; //Global variable!
public OnFilterScriptInit()
{
 print("my filterscript");
 ConnectNPC("MyFirstNPC","mynpc");
 MyFirstNPCVehicle = CreateVehicle(400, 0.0, 0.0, 5.0, 0.0, 3, 3, 5000);
 return 1;
}


Bước tiếp theo là sử dụng OnPlayerSpawn để spawn cho NPC vào server .

( Nếu là NPC trên xe thì bạn hãy bỏ qua code này nhé )


Code:
public OnPlayerSpawn(playerid)
{
 if(IsPlayerNPC(playerid)) //Checks if the player that just spawned is an NPC.
 {
   new npcname[MAX_PLAYER_NAME];
   GetPlayerName(playerid, npcname, sizeof(npcname)); //Getting the NPC's name.
   if(!strcmp(npcname, "Nghia", true)) //Checking if the NPC's name is MyFirstNPC
   {
     PutPlayerInVehicle(playerid, MyFirstNPCVehicle, 0); //Putting the NPC into the vehicle we created for it.
   }
   return 1;
 }
 //Other stuff for normal players goes here!
 return 1;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public OnPlayerSpawn(playerid)
{
 if(IsPlayerNPC(playerid)) //Checks if the player that just spawned is an NPC.
 {
   new npcname[MAX_PLAYER_NAME];
   GetPlayerName(playerid, npcname, sizeof(npcname)); //Getting the NPC's name.
   if(!strcmp(npcname, "Nghia", true)) //Checking if the NPC's name is MyFirstNPC
   {
     PutPlayerInVehicle(playerid, MyFirstNPCVehicle, 0); //Putting the NPC into the vehicle we created for it.
   }
   return 1;
 }
 //Other stuff for normal players goes here!
 return 1;
}
Nếu là NPC bình thường không cần xe thì sử dụng code này (code này giúp bạn add 2 NPC vào server )  :


Code:
public OnPlayerSpawn(playerid)
{
 if(IsPlayerNPC(playerid)) //Checks if the player that just spawned is an NPC.
 {
   new npcname[MAX_PLAYER_NAME];
   GetPlayerName(playerid, npcname, sizeof(npcname)); //Getting the NPC's name.
   if(!strcmp(npcname, "MyFirstNPC", true)) //Checking if the NPC's name is MyFirstNPC
   {
     PutPlayerInVehicle(playerid, MyFirstNPCVehicle, 0); //Putting the NPC into the vehicle we created for it.
     return 1;
   }
   if(!strcmp(npcname, "MySecondNPC", true))
   {
     PutPlayerInVehicle(playerid, AnotherVehicleID, 0);
     return 1;
   }
   return 1;
 }
 //Other stuff for normal players goes here!
 return 1;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public OnPlayerSpawn(playerid)
{
 if(IsPlayerNPC(playerid)) //Checks if the player that just spawned is an NPC.
 {
   new npcname[MAX_PLAYER_NAME];
   GetPlayerName(playerid, npcname, sizeof(npcname)); //Getting the NPC's name.
   if(!strcmp(npcname, "MyFirstNPC", true)) //Checking if the NPC's name is MyFirstNPC
   {
     PutPlayerInVehicle(playerid, MyFirstNPCVehicle, 0); //Putting the NPC into the vehicle we created for it.
     return 1;
   }
   if(!strcmp(npcname, "MySecondNPC", true))
   {
     PutPlayerInVehicle(playerid, AnotherVehicleID, 0);
     return 1;
   }
   return 1;
 }
 //Other stuff for normal players goes here!
 return 1;
}
Đã xong phần add scripts , bây giờ các bạn compiler file pawno này bằng cách ấn F5 .

Bước 6 : Chỉnh sửa số lượng NPC

Do một số gamemode chưa có max_npc hoặc max_npc bằng 0 thì NPC  sẽ không thể kết nối vào server , bạn cần vào server.cfg chỉnh sửa dòng code max_npc 2 ( để 2 NPC đã create ở trên vào server )

Bước cuối cùng đó chính là bật Server-samp.exe và hưởng thụ thành quả đã làm thôi .

Một số vấn đề liên quan đến quá trình add NPC :

NPC sẽ bị out sau khi vào server do Anti Cheat / Ping kick . Bạn có thể add đoạn code vào


Code:
if(IsPlayerNPC(playerid)) return 1;
1
if(IsPlayerNPC(playerid)) return 1;
II. Add NPC tự động bằng filterscripts

Cách này hoàn toàn tự động trong việc record , code và spawn NPC ngay trong game . Thích hợp với số lượng NPC nhiều mà bạn muốn spawn , tránh mất thời gian và hay xãy ra lổi thì mình khuyên các bạn nên sử dụng cách này để add vào server samp .

Sử dụng Lênh :

/rec start – để bắt đầu record động rác
/rec stop – dừng record
/rec play – tạo ra npc đã record
/rec delete – xóa NPC
Hướng dẩn sử dụng :

Tải file npc.zip về và giải nén ra
Copy file exec.dll và exec.so vào thư mục /plugins
Copy file npc.pwn và npc.amx vào thử mục Filterscripts .
Mở file server.cfg và thêm ” npc ” vào dòng filterscripts , exec vào dòng plugins
Add maxnpc [ số NPC max ] trong server.cfg
Link download : { Link đã bị dấu, vui lòng nhập từ"Xem" để thấy }
BiAn
BiAn
Adminstrator
Adminstrator


http://Đéocó.com

Về Đầu Trang Go down

Tạo nhân vật ảo đơn giản và chi tiết ! Empty Re: Tạo nhân vật ảo đơn giản và chi tiết !

Bài gửi by TTS6 Wed Nov 30, 2016 9:22 pm

Của ai nhớ ghi nguồn nhé <3
TTS6
TTS6
Adminstrator
Adminstrator


https://vailoz.forumvi.com

Về Đầu Trang Go down

Tạo nhân vật ảo đơn giản và chi tiết ! Empty Re: Tạo nhân vật ảo đơn giản và chi tiết !

Bài gửi by BiAn Wed Nov 30, 2016 9:24 pm

Bạn
BiAn
BiAn
Adminstrator
Adminstrator


http://Đéocó.com

Về Đầu Trang Go down

Tạo nhân vật ảo đơn giản và chi tiết ! Empty Re: Tạo nhân vật ảo đơn giản và chi tiết !

Bài gửi by TTS6 Wed Nov 30, 2016 9:35 pm

BiAn đã viết:Bạn
Ohm, thế không sao? :))z
TTS6
TTS6
Adminstrator
Adminstrator


https://vailoz.forumvi.com

Về Đầu Trang Go down

Tạo nhân vật ảo đơn giản và chi tiết ! Empty Re: Tạo nhân vật ảo đơn giản và chi tiết !

Bài gửi by Sponsored content


Sponsored content


Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết