Diễn đàn


Đăng ký


Hỏi đáp


Thành Viên


Giải trí


Liên hệ

|

[Tutorial] Hướng dẫn làm sever SA-MP hoàn chỉnh!GTA SA Online

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down
Tue Dec 11, 2012 8:57 pm

One_Minutes
† Member V.I.P †

Cấp bậc thành viên
Danh vọng:
%/1000%

Tài năng:%/100%

Liên lạc

Thông tin thành viên
» Bài Gửi : 30
» Tiền Tiền : 25169
» Liked Liked : 2
» Sinh Nhật Sinh Nhật : 05/02/1995
» Tham Gia Vào Ngày : 05/12/2012
» Tuổi : 29
» Đến từ Đến từ : Hà Nội
» Nghề Nghiệp Nghề Nghiệp : Sinh Viên
» Biệt Danh Biệt Danh : VIP
» Hiện giờ đang:

Bài gửiTiêu đề: [Tutorial] Hướng dẫn làm sever SA-MP hoàn chỉnh!GTA SA Online


Lời Nói Đầu :
Bạn đã từng chơi GTA? Vậy bạn có biết đến tựa game thật hay đó là Grand Theft Auto -San Andreas.
Với SAMP, nó sẽ giúp bạn kết nối giữa người chơi khác trên internet.Sau đây mình sẽ hướng dẫn các bạn làm 1 sever SAMP hoàn chỉnh.
Bài hướng dẫn bao gồm:

» Downloading, installing + playing sa-mp
» Tạo một sever cho riêng bạn
» Cho phép máy chủ kết nối online
» Edit , config và biết rõ cách sử dụng của Pawno.


Downloading, installing + playing SA-MP:
Việc đầu tiên là tải client : [Only admins are allowed to see this link] .Sau khi đã tải hoàn thành , bạn install nó vào gta sa của bạn.

Sau khi mở SA-MP , bạn sẽ thấy một cửa sổ như thế này :
Để thêm một máy chủ ưa thích , sử dụng và nhập vào IP : PORT của máy chủ.
Để xem danh sách của tất cả các máy chủ SA-MP, click [Only admins are allowed to see this link] sau đó nó sẽ hiện ra danh sách các sever bạn có thể vào chơi ( đa số là IP nước ngoài ).
Nhấn để kết nối với máy chủ đã chọn.

Kết nối:
Để kết nối với máy chủ của mình , sử dụng ip LAN mới có thể kết nối :
vào start->run->cmd -> gõ ipconfig tìm dòng IPv4 Hay Ip Address gì đó rồi add vào mục ưa thích của samp.Khi bạn bật máy chủ lên ( samp-sever.exe ) nó sẽ hoạt động trên ip này , nếu muốn online thì phải open port cho modem.Sau đó người chơi khác connect = ip WAN . Vào [Only admins are allowed to see this link] để biết ip WAN của bạn.
Lưu ý:IP LAN sẽ quy định port nếu bạn điều chỉnh port trong .cfg , vậy để connect bạn sẽ phải add IPLAN: PORT thật đúng với những gì bạn đã config.Mở IP LAN sẽ không cần cải đặt port như nếu muốn online thì phải cài port.
Ở đây mình có ip lan là : 192.168.1.33 và config trong sever.cfg là port 7777 ( nên để port 7777 ).
vậy thì add ip vào SAMP Client sẽ là 192.168.1.33:7777 !

Tạo một máy chủ cho riêng bạn:

Trước khi bạn có thể thay đổi máy chủ của bạn, trước tiên bạn phải tải về một số tập tin ở đây : [Only admins are allowed to see this link]
(Lưu ý : Phần hướng dẫn không áp dụng cho HĐH Linux Sever , Windows XP - Windows 7,8 vẫn chạy ok )
Sau khi tải về , bạn sẽ thấy file .zip và bạn hãy giải nén nó ra , bạn thấy được :
» server.cfg (file)
» server-readme.txt (file)
» samp-server.exe (file)
» samp-licence.txt (file)
» announce.exe (file)
» scriptfiles (folder)
» pawno (folder)
» gamemodes (folder)
» filterscripts (folder)

Ví dụ, chúng ta sẽ sử dụng gamemode lvdm.pwn (bạn cũng có thể tạo ra chế độ của riêng bạn, nhưng trước tiên bạn phải biết cách thực hiện.)


Cấu hình server.cfg của bạn:


Bây giờ bạn hãy open file này = notepad nhé .
Khi bạn mở nó, bạn sẽ thấy điều này:


Giải thích các dòng:
- echo Executing Sever Config : dòng này ám chỉ thiết lập cấu hình ở dưới ( được xem là vô nghĩa nên bạn đừng động chạm gì đến nó cả ).
- lanmode: chế độ Local Area Network
- rcon_password: pass của host ( Lưu ý không phải pass của admin cũng ko phải pass để Connect sever , đây là pass RCON , để config các lệnh cho SAMP - không liên qua đến mode nhưng liên quan đến SAMP.)
- max_player: số người chơi tối đa. max = 500,
- port: Là port ( cổng ) để kết nối vào sever của bạn.IPORT
- hostname: là tên của máy chủ được hiện ở SAMP
- gamemode: là chế độ chơi từ thư mục /gamemode
- filterscripts: load script từ thư mục /filterscripts,
- announce: muốn sv của mình có trong sa-mp sever list thì chuyển "announce 0" thành "announce 1"
- weburl, địa chỉ web của sever, sẽ được hiển thị khi click vào sever trong sa-mp sv list.
- maxnpc: số "Non-playing Character" (bot) tối đa trên sever
- ( những dòng sau bạn không nên quan tâm ex: onfoot_rate,onfoot_rate,.... )
*Lưu ý nếu muốn đặt pass cho máy chủ , bạn nên add thêm dòng config sau đây
- password : là mật khẩu để vào máy chủ.Nếu không muốn sử dụng pass thì khỏi cần làm dòng này.
Ví dụ : đặt dòng này
Code:
password 12345
như vậy nếu muốn vào sever nó sẽ đòi hỏi pass là 12345.

**Bạn không nên add thêm bất cứ dòng config nào nếu dòng đó không có nghĩa - có thể nó sẽ gặp trở ngại.


Tiến hành code

Bây giờ chúng ta sẽ tiến hành điều chỉnh , thiết lập thông số , mã lệnh và làm quen với Pawno.Lưu ý : tất cả những mục đều tương tác với nhau : filterscrips , gamemode , plugins , scriptfile ....! Vì thế , nên sữ dụng những code đơn giản hoặc nếu có trở ngại ở mục này hãy tìm phần hướng dẫn được nằm trong mục khác.
*Cách chạy sever : config sever.cfg phù hợp , dòng gamemode để mặc định hoặc có thể thay đổi khi muốn sử dụng 1 gamemode khác . Sau đó ra chạy file samp-sever.exe Nếu bảng đen(CMD) hiện ra và chạy suôn sẽ , có nghĩa là bạn đã thành công nhưng nếu CMD hiện ra nhưng tắt trong vòng 3-4s thì bạn nên xem xét xem có nhầm lẫn ở đâu không nhé.Thường thì đặt sai tên gamemode , plugins, thiếu file .amx , ... hoặc config không đúng cách ở .cfg
Ex: bạn muốn config password trong .cfg nhưng bạn không ghi
Code:
password matkhaucuaban
mà lại ghi
Code:
pass matkhaucuaban
-Bạn có nhận ra 2 sự khác biệt? Đó là password và pass , từ pass nếu không ghi rõ ràng nó sẽ trở nên vô nghĩa và khi bật samp-sever.exe sẽ có trở ngại , các phần khác cũng kiểm tra tương tự như vậy .

I.Filterscripts:

Cái này được ví như thành phần bổ sung và cài nó dễ hơn bao giờ hết
Định nghĩa filterscripts : giống như một kịch bản được ghép vào sever . Có cũng được hoặc không cũng được,nhưng mình khuyên các bạn thực tập trước với mấy cái này sever mau hiểu hơn.
Ở đây ta ví dụ Sever là cái máy Laptop và filterscripts là thanh RAM , những thành phần phụ cho gamemode mặc dù có chức năng như gamemode nhưng chỉ là một phần của máy chủ.
Nếu muốn máy mạnh lên thì phải gắn thêm RAM ( filterscripts ) .
Để tìm các filterscripts , bạn có thể vào trang này [Only admins are allowed to see this link] hoặc tự tạo riêng cho mình( nếu muốn tạo thì phải học code Pawno đã ).Giờ sài vặt nào.
Sau khi bạn đã tìm được một cái theo ý thích ,hãy tải nó về và bạn sẽ được 2 file(có khi 1 file tùy người up)
***.amx và ***.pwn
Giải thích về:
amx: là dữ liệu chính để samp-sever.exe có thể đọc được , nguồn dữ liệu amx được suy ra từ pwn.(Không thể edit file này nếu ko có pwn , một số người tạo ra có thể chỉ muốn cho bạn sử dụng chứ không cho bạn edit nó)
pwn: là dữ liệu phụ để bạn có thể edit , chĩnh tùy thuộc vào bạn.Mở file này = cách vào /pawno/pawno.exe sau khi pawno đã mở chọn file->open -> đường dẫn đến file pwn hoặc Ctrl + O.Sau khi đã edit ấn F5 hoặc để complie ra file .amx với tên tương tự được đặt trong cùng thư mục.
Lưu ý: 2 file này áp dụng cho cả filterscripts và gamemode vì 2 cái này tương đương nhau.
Áp dụng filterscripts cho máy chủ:
Mở sever.cfg = notepad và tìm dòng
filterscript ***

*** là tên filterscript amx của bạn.Ví dụ : new.amx ( không đặt .amx , chỉ đặt tên file )
Vậy , ta có:
Code:
filterscript new
Vậy là bạn đã gán filterscript thành công.*
*Lưu ý:Một số filterscript đòi hỏi plugins , include , scriptfile hoặc npcmodes có dữ liệu tương đương cho file đó -> nếu không thành công thì bạn cần phải suy ngẫm và xem xét kĩ hơn cho filterscript của mình.
Ví dụ:Bạn tìm được 1 filterscript có tên là audio.... chẳng hạn.Vậy có thể bạn sẽ không add thành công file này nếu không có plugins audio ( phần plugins mình sẽ hướng dẫn sau ).
Vậy là đã hoàn thành cách add filterscript , nếu muốn hiểu hết nguyên lý làm việc của filterscript thì bạn nên thực hành với nó , làm đi làm lại nhiều lần.


II.Gamemode

Định nghĩa Gamemode: là chế độ chơi sau khi bạn host sever , bạn có thể tự make chế độ chơi cho riêng mình như
: Roleplay,DeathMath,MiniGame,Run and Run , Capture , Cop and Robber , .... tùy ý của bạn mà
Bạn cần phải biết cách đổi gamemode trước đã nào
Tìm trong thư mục /gamemode sẽ có các gamemode có sẵn, muốn chuyển sang gamemode nào thì vào sever.cfg, ví dụ mình muốn chuyển sang gamemode "lvdm", đổi dòng
Code:
gamemode0 grandlarc 1
thành
Code:
gamemode0 lvdm 1
Ngoài ra vào [Only admins are allowed to see this link] tìm và chọn gamemode bạn thích, làm theo installation của gamemode đó.
Các gamemode thông dụng là:
- Raven Roleplay (cần streamer plugin)
- Godfather RP
- SATDM...
- vâng vâng và vâng vâng
Cách tải về và cài đặt thì có vẻ hơi khác một chút và có thể liên quan đến cả Sever Folder.
Bạn tìm một mode , tải về thì thấy .zip như vậy là người ta đã làm thì bạn chỉ việc giải nén file đó ra , bật samp-sever.exe nếu nó chạy thì ok , config lại tại sever.cfg , và edit code = pawno.(Bật pawno lên ấn Ctrl+O chọn file .pwn trong /gamemode mở nó lên và thấy núi code . Tí bạn sẽ được làm quen code PWN sau.Ấn F5 sau khi edit để suy ra file amx lần nữa).


III.Pawno Scripting


1/Includes
Định nghĩa Includes: là phần hỗ trợ cho code trong Pawno , includes là phần bao gồm dựa theo mã Pawno nhưng được đặt trong notepad với đuôi là .inc . Bạn có thể tìm những file này tại /pawno/include
Includes đều liên quan đến code nhưng không thể ghép chung lại được như Filterscript và Gamemode.Phần include là bao gồm và được đặt trong code ở PWN/gamemode hoặc filterscript để liên kết với các đoạn mã khác.Nếu hiểu đơn giản thì includes là cây cầu giúp liên kết các code lại với nhau qua file .inc
Ví dụ:
Ở đây mình tìm thấy file .inc có sẵn trong thư mục pawno với tên time.inc
Vậy nếu muốn sử dụng nó ta sẽ có code như sau
Code:
#include <time>
=>Include này giúp nhận biết thời gian trên máy tính của bạn đế thiết lập các mã lệnh khác như thời gian trong sever.(nhớ đặt nó vào trong <...> nhé )
Có thể sử dụng được cho cả filterscript hoặc gamemode.Nếu muốn biết trình tự sắp xếp mã lệnh trong Pawno Scripting.Vui lòng đọc tiếp ở dưới.
*Lưu ý : Với mọi filterscript và gamemode , phải luôn có
Code:
#include <a_samp>
đứng đầu.
2/Pawno Scripting
Định nghĩa Pawno Codes: Là công cụ giúp bạn edit , điều chỉnh , make những code dành cho file .pwn và suy ra file .amx .Nó là thành phần quan trọng nhất nếu muốn sever phát triển dựa trên công cụ này .Với Pawno Scripting , bạn sẽ học tất cả những code và những thứ có liên quan đến nó để phát triển máy chủ của mình.Đây quả thật liên quan đến ngôn ngữ lập trình , nó giống như C++ , thực hiện complie gỡ lỗi , chuẩn đoán code sai , ....
Có rất nhiều phần mềm Pawno Scripting tùy theo nhu cẩu người sử dụng ,cái nào cũng tiện lợi , tiện ích khác nhau như:
-Pawno Scripting ( mặc định )
-SA-MP Editor ( cần sử dụng NET 2.0)
-PawnoX
-Official Quincy Editor
-PawnSciTE
-SAM[P]CE
-QuickPawn
-Scripting Machine
Thật hay phải không nào? Bạn có thể tìm thấy chúng tại đây : [Only admins are allowed to see this link]
Nhưng mình khuyên các bạn nên sử dụng Pawno mặc định đi đã.
Bắt đầu nào
a/Trình tự sắp xếp code trong Pawno
Code:
#include <a_samp>
#include <cuaban>

#define DINHNGHIA
enum toi cao {....};
navite duongdanfile([]..._);
forward TenCong;
Public CongKhaiCODE

.....
*Lưu ý: #include và #define luôn luôn để trên cao theo thứ tự 1.include 2.define cao nhất có thể.Còn lại sắp xếp tự do nhưng đôi khi lỗi và tôi khuyên các bạn nên sắp xếp thế nào cho nó gọn gàng ngăn nắp.Hãy luôn luôn để ý dấu ";" chấm phẩy ở mỗi code.Nó là nguyên nhân gây ra lỗi , hãy phụ thuộc vào các code khác để học dễ hơn.
Định nghĩa mã khởi đầu
-Include -> liên kết.....
-Define -> định nghĩa cho 1 thứ gì đó , giống như viết tắt , làm đường tắt.
-enum -> tương đương với define nhưng định nghĩa theo string , mã hóa.
-native -> liên quan đến việc create,move những thứ như file , .....
-forward -> Tạo một cổng public để công khai code.
-public -> bao gồm các public mặc định và các public bạn đã create.
-.....
b/Mã toán học.
Định nghĩa : Là những phép tính cho máy chủ có thể thực hiện , phân chia đồng đều , sự sắp xếp và điều chỉnh của bạn đối với một cái gì đó trong code cần sự tính toán.
Code:
== -> Bằng
= -> Có không bằng
<= -> Nhỏ hơn hoặc tương đương với
= -> Là lớn hơn hoặc tương đương với
> -> Lớn hơn
< -> Nhỏ hơn
&& -> Và sử dụng điều kiện sau đây
| | -> Hoặc sử dụng các điều kiện sau đây
+ + -> Thêm (1) giá trị
- -> Trừ (1) giá trị
+ / / Thêm bất kỳ giá trị nào sau đây để giá trị bắt đầu
- / / Trừ bất kỳ giá trị nào sau đây để giá trị bắt đầu
+ = / / Thêm bất kỳ giá trị nào sau đây / / biến chỉ!
- = / / Trừ bất kỳ giá trị nào sau đây / / biến chỉ!
* / / Rõ ràng, phải không? Nó có nghĩa là căn bậc hai! (không nghiêm túc, bạn biết những gì nó có nghĩa là ngu dại)
/ / / Chia cho bất kỳ giá trị nào sau đây để giá trị bắt đầu
Các dấu mã khác , ví dụ như "/" nó là dấu phân cách mã số nếu sử dụng liên tục "/" -> "//" thì đoạn code sau nó sẽ trở thành chú thích , nếu bạn không tách đoạn bằng cách ấn enter , có thể bạn sẽ nhầm lẫn về code trong đó.
Phân chia bố cục màu:
Ở Pawno , màu mè được phân chia rõ ràng và nó biểu hiện mức độ mã như sau:
-Màu đen -> thể hiện mã lệnh của Include , đa số là sử dụng và là màu đen ,bạn không được chỉnh sửa nó - nếu có dòng chữ bạn viết màu đen mà chưa được định nghĩa , bạn sẽ gặp lỗi ; Nếu muốn định nghĩa , sử dụng : #define
-Màu xanh dương sáng : là những dòng mà code thiết yếu , quan trong hỗ trợ cho những đoạn code tiếp theo - với mã màu xanh , nếu bạn viết đúng đoạn mã mặc định , nó sẽ chuyển xanh màu xanh dương sáng.
-Màu xanh dương nhẹ: là những dòng mà bạn có thể edit nó , có nghĩa như những lời hội thoại , tin nhắn = chữ .Bạn có thể chỉnh sửa những dòng này.
-Màu xanh lục : là những dòng ghi chú sau "//" ***
***Lưu ý: Nếu muốn ghi chú hoặc "tạm bỏ" một đoạn code dài không sử dụng hay một đoạn ghi chú dài - sử dụng
"/* .......... */"
Ví dụ:
Code:
/* Doan ma hoac chu thich chua ban */
Như thế , nó sẽ "tạm bỏ: và trở thành những dòng code "vô nghĩa" nếu bạn không bỏ "/* */"
Warning: : Trong Pawno , bạn không được sử dụng tiếng việt có dấu

Scripting

Bước 1 - Scripting.

Bây giờ, Chúng ta sẽ bắt đầu bằng cách đi vào> pawno> pawno.exe.
Mở tập tin, nó sẽ được để trống. Tạo một file mới bằng cách đi vào> File> New, ở góc bên trái trên cùng.
Và điều này sẽ xuất hiện
Code:
#include <a_samp>
#if defined FILTERSCRIPT

public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Blank Filterscript by your name here");
print("--------------------------------------\n");
return 1;
}

public OnFilterScriptExit()
{
return 1;
}

#else

main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}

#endif

public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Blank Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}

public OnGameModeExit()
{
return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}

public OnPlayerConnect(playerid)
{
return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
return 1;
}

public OnPlayerSpawn(playerid)
{
return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}

public OnVehicleSpawn(vehicleid)
{
return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}

public OnPlayerText(playerid, text[])
{
return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
// Do something here
return 1;
}
return 0;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}

public OnRconCommand(cmd[])
{
return 1;
}

public OnPlayerRequestSpawn(playerid)
{
return 1;
}

public OnObjectMoved(objectid)
{
return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}

public OnPlayerExitedMenu(playerid)
{
return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}

public OnPlayerUpdate(playerid)
{
return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
Đây là một kịch bản trống. Bây giờ bấm F5 để biên dịch, điều này sẽ thông báo cho bạn nếu có lỗi nào.
Nếu bạn đang biên soạn kịch bản của bạn cho lần đầu tiên, bạn sẽ phải lưu nó. Lưu nó như là cái tên mà bạn cho gamemode0 cài đặt trong file configs máy chủ để các máy chủ có thể chạy kịch bản.

Bước 2 - Scripting.


Bây giờ chúng ta hãy loại bỏ 3 dòng đầu tiên bằng cách nhấn enter chúng ta sẽ tách được thêm dòng , mục đích của 3 dòng này là các bạn có thể viết bất cứ thứ gì như : code by , version , credits , Những người thực hiện .....
Code:
/*******************************************************************************
* SERVER NAME: Gamemode
* SERVER VERSION: Mode v1.0
* SERVER DEVELOPER: sA_leM
*
* INFORMATION:
*
*******************************************************************************/
Bây giờ tôi muốn giới thiệu những lời biên dịch ở CMD khi chạy samp-sever.exe
Hãy đến chức năng "main()" . Bạn sẽ có điều này:
Code:
main()
{
print("\n----------------------------------");
print(" Blank Gamemode by your name here");
print("----------------------------------\n");
}
Đây là gì? Đây là những gì được in vào giao diện điều khiển của bạn (samp-server)
Vì vậy, điều này về cơ bản sẽ hiển thị những gì kịch bản máy chủ đang chạy.
Hãy làm điều này:
Code:
main()
{
print("SERVER: Gamemoder");
print("VERSION: Mode v1.0");
print("DEVELOPER: sA_leM");
}
Hoàn thành bước khởi đầu , bây giờ bạn hãy thử biên dịch ( suy ) ra file amx rồi chạy nó xem trong samp-sever.exe đã có những thứ bạn ghi chưa

Bây giờ chúng ta hãy làm việc trên chức năng OnGameModeInit ().
Tôi có điều này:
Code:
public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Blank Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
Bạn hãy để ý dòng "SetGameModeText".Đây là đoạn mã sẽ hiện thị chế độ chơi ( Gamemode ) của máy chủ trên samp.Hãy edit nó , đây là text nên các bạn có thể edit phần "Blank Script" thành bất cứ thứ gì.
ví dụ:
Code:
public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Party v2.0.0");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
Bây giờ đến đoạn mã AddPlayerClass , nó giúp nhân vật chúng ta sau khi đăng nhập sẽ được hiển thị ở đâu.
Theo mặc định các tọa độ được thiết lập High Roller casino ở Las Venturas.
Bây giờ chúng ta sẽ loại bỏ các tọa độ mặc định và thêm tọa độ riêng. Để có được tọa độ bạn phải sử dụng lệnh này trên máy chủ "/save" , ( bạn sử dụng trong samp-debug hay trực tiếp máy chủ đều được ). Bây giờ các tọa độ được lưu trong /GTA San Andreas/SAMP/Savepositions.
Đây là những tọa độ mà tôi đã thu thập được.
Code:
AddPlayerClass (23, 2038,5416, 1342,3601, 10,6719, 270,0824, 0, 0, 0, 0, 0, 0);
AddPlayerClass (46, 1831,0970, 1682,6102, 13,5469, 88,3051, 0, 0, 0, 0, 0, 0);
AddPlayerClass (45, 1481,3297, 1748,6530, 15,4453, 359,7071, 0, 0, 0, 0, 0, 0);
AddPlayerClass (83, 723,3815, 1494,9203, 1,9343, 359,2792, 0, 0, 0, 0, 0, 0);
AddPlayerClass (92, 1126,6831, 1425,8101, 15,7969, 357,7497, 0, 0, 0, 0, 0, 0);
Bây giờ thêm tọa độ vào kịch bản nào....ta sẽ có điều này:
Code:
public OnGameModeInit()
{
SetGameModeText("Party v2.0.0");
//------------------------[PLAYER CLASS SELECTION]--------------------------
AddPlayerClass(23,2038.5416,1342.3601,10.6719,270.0824,0,0,0,0,0,0);
AddPlayerClass(46,1831.0970,-1682.6102,13.5469,88.3051,0,0,0,0,0,0);
AddPlayerClass(45,1481.3297,-1748.6530,15.4453,359.7071,0,0,0,0,0,0);
AddPlayerClass(83,723.3815,-1494.9203,1.9343,359.2792,0,0,0,0,0,0);
AddPlayerClass(92,1126.6831,-1425.8101,15.7969,357.7497,0,0,0,0,0,0);
return 1;
}
Ok chứ Bây giờ hãy thử add 1 chiếc xe nào.
Lưu ý: Tọa độ trong đoạn code trên được phân biệt như sau
Phân tích đoạn
Code:
AddPlayerClass(23,2038.5416,1342.3601,10.6719,270.0824,0,0,0,0,0,0);

23 là skin của nhân vật
2038.5416 là tọa độ X
1342.3601 là tọa độ Y
10.6719 là tọa độ Z
270.0824 là độ quay mình của nhân vật
những số 0 ở đằng sau là weapon 1, ammo 1, weapon12, ammo 2, weapon13, ammo 3.
Tìm hiểu thêm về độ xoay của nhân vật - SetPlayerFacingAngle
Code:
Bắc (0)
|
(90)Tây- - Đông (270)
|
Nam (180)

Bước 3 - Vehicle.

Để add 1 chiếc xe , chúng ta đặt lệnh này "AddStaticVehicle" dưới OnGameModeInt

Vào samp_debug.exe trong thư mục GTA SA (sa-mp client chứ không phải sever nhé) -> Launch Debug
- Đến chỗ nào bạn muốn spawn vehicle, gõ /v [ID của vehicle], bạn có thể tìm thấy id của vehicle ở [Only admins are allowed to see this link]
- Gõ /save [tên] để lưu chỗ spawn (Vào xe nhé)
- Thoát ra, tìm file "savedpositions.txt" trong thư mục GTA User files -> SAMP, sẽ thấy dòng sau:
Code:

AddStaticVehicle([id của vehicle], -2704.3149, 224.6218, 3.8592, 191.0172, 1, 1) <-- Vị trí của vehicle; // tên vừa đặt trong /save
Ở đây mình đã có sẵn code nên ví dụ như sau:
Code:
public OnGameModeInit()
{
SetGameModeText("Party v2.0.0");
//------------------------[PLAYER CLASS SELECTION]--------------------------
AddPlayerClass(23,2038.5416,1342.3601,10.6719,270.0824,0,0,0,0,0,0);
AddPlayerClass(46,1831.0970,-1682.6102,13.5469,88.3051,0,0,0,0,0,0);
AddPlayerClass(45,1481.3297,-1748.6530,15.4453,359.7071,0,0,0,0,0,0);
AddPlayerClass(83,723.3815,-1494.9203,1.9343,359.2792,0,0,0,0,0,0);
AddPlayerClass(92,1126.6831,-1425.8101,15.7969,357.7497,0,0,0,0,0,0);
//---------------------------[SERVER VEHICLES]------------------------------
AddStaticVehicle(402,1478.9257,-1737.8595,13.2929,270.0982,0,0);
return 1;
}
Xong!Bạn hãy thử ấn F5 -> complie nó rồi bắt đầu sever xem nào .

Bước 4 - Command.

Nào!Thử làm một lệnh cho người chơi xem nào . Đơn giản thôi nhé
Đây là những gì chúng ta có:
Code:
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/mycommand", cmdtext, true, 10) == 0)
{
// Do something here
return 1;
}
return 0;
}
Hãy chỉnh command theo ý bạn:
Code:
if (strcmp("/help", cmdtext, true, 10) == 0)
Bây giờ chúng ta hãy thêm SendClientMessage .
Code:
SendClientMessage(playerid,0xFFFFFF,"Day la che do Deathmatch.");
Và chúng ta có:
Code:
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/help", cmdtext, true, 5) == 0)
{
SendClientMessage(playerid,0xFFFFFF,"Day la che do Deathmatch.");
}
return 0;
}


Bước 5 - Add map.

Vào [Only admins are allowed to see this link] tìm map và down file .pwn về, mở = notepad, copy tất cả code trong đó (hoặc copy code có sẵn trên vài topic map), sau đó vào /gamemode, tìm gamemode nào bạn muốn add map, mở = notepad, ctrl + f tìm dòng "OnGameModeInit" hoặc "OnFilterScriptInit", paste dòng code vừa copy bên dưới dòng đó rồi vào test.
Nếu muốn tạo cho mình một map riêng , sử dụng tools "Map Editor" hoặc MTA Object
[Only admins are allowed to see this link]
Tải về giải nén copy nó vào thư mục GTA SA của bạn ! Không phải thư mục sever nhé !Copy vào gta sa rồi chạy file editor.exe rồi ấn Load ( yêu cầu chạy trên máy độ phân giải 32bit hoặc cao hơn ).

Ví dụ mình có code này
Code:
CreateObject(19341, 2035.70, 1343.21, 10.49, 0.00, 0.00, 0.00);
19341 -> là id của object ( ở đây mình có object cái trứng , bạn có thể tìm thấy id object trong map editor)
2035.70 -> toạ độ object X
1343.21 -> toạ độ y
10.49 -> độ cao , toạ độ z
0.00 , 0.00 , 0.00 -> toạ độ Rotation ( độ nghiêng ) rX,ry,rZ.

Bây giờ add nó vào dưới OnGameModeInt thì sẽ có như sau:
Code:
public OnGameModeInit()
{
SetGameModeText("Party v2.0.0");
//------------------------[PLAYER CLASS SELECTION]--------------------------
AddPlayerClass(23,2038.5416,1342.3601,10.6719,270.0824,0,0,0,0,0,0);
AddPlayerClass(46,1831.0970,-1682.6102,13.5469,88.3051,0,0,0,0,0,0);
AddPlayerClass(45,1481.3297,-1748.6530,15.4453,359.7071,0,0,0,0,0,0);
AddPlayerClass(83,723.3815,-1494.9203,1.9343,359.2792,0,0,0,0,0,0);
AddPlayerClass(92,1126.6831,-1425.8101,15.7969,357.7497,0,0,0,0,0,0);
//---------------------------[SERVER VEHICLES]------------------------------
AddStaticVehicle(402,1478.9257,-1737.8595,13.2929,270.0982,0,0);
//---------------------------[SERVER MAPPING]------------------------------
CreateObject(19341, 2035.70, 1343.21, 10.49, 0.00, 0.00, 0.00);
return 1;
}
Complie nó và vào game, ngay toạ độ đó bạn sẽ thấy cái trứng này



Bước 6 - Add Pickup.


Cũng vào sa-mp debug, save position on foot, vào GTA SA User files -> saved position lấy code...
Code:
AddPlayerClass(skin-id, x, y, z, rotation, weapon 1, ammo 1, weapon12, ammo 2, weapon13, ammo 3)
sửa thành
Code:
AddStaticPickup(pickupid ,pickuptype, x, y, z);
pickupid: id của weapon/toy. Pickup có thể tìm thấy ở [Only admins are allowed to see this link] , pickup của gun ở [Only admins are allowed to see this link]
pickup type: dạng pickup,
Code:
0 Không hiện =))
2 Nhặt được, respawn sau vài phút
3 Nhặt được nhưng không respawn
4 Sau khi spawn sẽ biến mất trong vài giây
5 Giống cái 4
8 Nhặt được (mà không có tác dụng)/sau khi spawn sẽ biến mất trong vài giây
11 Sau khi spawn sẽ nổ trong vài giây
12 ^
13 Pickup từ từ "bay" xuống theo hình chữ Z (parachute?)
15 Nhặt được, không respawn
19 Nhặt được nhưng mà pickup không có tác dụng gì cả =))
22 Nhặt được, không respawn được
x,y,z: tọa độ
Ví dụ mình muốn add parachute, nhặt được, respawn được... vào tọa độ 2035.7024, 1343.2145, 10.4934...
Code:
AddStaticPickup(1310,2, 2035.7024, 1343.2145, 10.4934)
Sau đó tìm trong /gamemode những gmd nào bạn muốn add pickup, mở = pawno rồi tìm dòng "OnGameModeInit", paste cái code trên đằng sau dòng đó. Cuối cùng là complie nào

Nguồn : Gamevn

Tài Sản của One_Minutes
Trong Games G.T.A
Item:

Chữ ký của thành viên

Loading
Wed Dec 12, 2012 8:10 pm
Bon_Kuro
Bon_Kuro
Mr Boss 4rum

Cấp bậc thành viên
Danh vọng:
%/1000%

Tài năng:%/100%

Liên lạc

Thông tin thành viên
» Bài Gửi : 42
» Tiền Tiền : 28233
» Liked Liked : 5
» Sinh Nhật Sinh Nhật : 08/04/1995
» Tham Gia Vào Ngày : 17/05/2012
» Tuổi : 29
» Đến từ Đến từ : TP. Hô Chí MInh
» Nghề Nghiệp Nghề Nghiệp : Student V.I.P
» Hiện giờ đang:

Bài gửiTiêu đề: Re: [Tutorial] Hướng dẫn làm sever SA-MP hoàn chỉnh!GTA SA Online


Like Chú 1 Phát Này !! Phát Huy Típ Nhé :D

Tài Sản của Bon_Kuro
Trong Games G.T.A
Item:

Chữ ký của thành viên

Loading
Wed Dec 12, 2012 8:34 pm

sA_leM
Thành Viên Mới

Cấp bậc thành viên
Danh vọng:
%/1000%

Tài năng:%/100%

Liên lạc

Thông tin thành viên
» Bài Gửi : 1
» Tiền Tiền : 25033
» Liked Liked : 0
» Sinh Nhật Sinh Nhật : 14/02/1998
» Tham Gia Vào Ngày : 12/12/2012
» Tuổi : 26
» Đến từ Đến từ : tp hcm
» Nghề Nghiệp Nghề Nghiệp : học sinh
» Biệt Danh Biệt Danh : sA_leM
» Hiện giờ đang:

Bài gửiTiêu đề: Re: [Tutorial] Hướng dẫn làm sever SA-MP hoàn chỉnh!GTA SA Online


bài của tôi viết trên gamevn! Yêu cầu ghi rõ nguồn! Thân X(

Tài Sản của sA_leM
Chữ ký của thành viên

Loading
Thu Dec 13, 2012 9:57 am
Bon_Kuro
Bon_Kuro
Mr Boss 4rum

Cấp bậc thành viên
Danh vọng:
%/1000%

Tài năng:%/100%

Liên lạc

Thông tin thành viên
» Bài Gửi : 42
» Tiền Tiền : 28233
» Liked Liked : 5
» Sinh Nhật Sinh Nhật : 08/04/1995
» Tham Gia Vào Ngày : 17/05/2012
» Tuổi : 29
» Đến từ Đến từ : TP. Hô Chí MInh
» Nghề Nghiệp Nghề Nghiệp : Student V.I.P
» Hiện giờ đang:

Bài gửiTiêu đề: Re: [Tutorial] Hướng dẫn làm sever SA-MP hoàn chỉnh!GTA SA Online


Oh ! Vậy Để Tui Ghi Nguồn Cho Chú Ấy =))

Tài Sản của Bon_Kuro
Trong Games G.T.A
Item:

Chữ ký của thành viên

Loading
Thu Dec 13, 2012 8:05 pm

• A c e
Thành Viên Cấp 2

Cấp bậc thành viên
Danh vọng:
%/1000%

Tài năng:%/100%

Liên lạc

Thông tin thành viên
» Bài Gửi : 20
» Tiền Tiền : 25110
» Liked Liked : 1
» Sinh Nhật Sinh Nhật : 08/04/1998
» Tham Gia Vào Ngày : 04/12/2012
» Tuổi : 26
» Đến từ Đến từ : A.L.P.H.A Group
» Nghề Nghiệp Nghề Nghiệp : Authorities world
» Biệt Danh Biệt Danh : A.L
» Hiện giờ đang:

Bài gửiTiêu đề: Re: [Tutorial] Hướng dẫn làm sever SA-MP hoàn chỉnh!GTA SA Online


PhPhac81cccccccccccccccccccccc không thấy link x-(

Tài Sản của • A c e
Chữ ký của thành viên

Loading

Sponsored content

Cấp bậc thành viên
Danh vọng:
%/1000%

Tài năng:%/100%

Liên lạc

Thông tin thành viên » Hiện giờ đang:

Bài gửiTiêu đề: Re: [Tutorial] Hướng dẫn làm sever SA-MP hoàn chỉnh!GTA SA Online



Tài Sản của Sponsored content
Chữ ký của thành viên

Loading


[Tutorial] Hướng dẫn làm sever SA-MP hoàn chỉnh!GTA SA Online Collap11Trả lời nhanh
Trang 1 trong tổng số 1 trang