Knight docs
EN ID
GitHub

Protokol Jaringan

Format wire, id RPC, dan catatan kompatibilitas.

Knight berbicara protokol wire SA-MP 0.3.7, termasuk tambahan 0.3.DL. Kompatibel byte dengan klien resmi, jadi tidak perlu patch klien.

Transport

Handshake koneksi

text
klien                  server
  | OpenConnectionRequest1 -> |
  | <- OpenConnectionReply1   |
  | OpenConnectionRequest2 ->
  | <- OpenConnectionReply2   |  (cookie challenge)
  | ConnectionRequest      ->
  | <- AuthKey                |  (challenge serial GPCI)
  | AuthKey(response)      ->
  | <- ConnectionAccepted     |
  | NewIncomingConnection  ->
  | RPC_ClientJoin (25)    -> |  versi, nama, serial, version string
  | <- RPC_InitGame (139)     |  hostname, limit, model kendaraan

RPC penting

IdNamaArah
25ClientJoinklien → server
139InitGameserver → klien
128 / 129RequestClass / RequestSpawnklien → server
52Spawnklien → server
101Chatklien → server
93ClientMessageserver → klien
61 / 62ShowDialog / DialogResponsekeduanya
153SetPlayerSkinserver → klien
164 / 165WorldVehicleAdd / Removeserver → klien
179ModelRequest (0.3.DL)server → klien
183ModelUrl (redirect 0.3.DL)server → klien

Versi klien

NomorKlien
4057SA-MP 0.3.7
4062SA-MP 0.3.DL

Knight membaca versi dari ClientJoin dan hanya mengirim RPC model kustom ke klien 0.3.DL. Klien lama menerima model dasar.

Encoding teks

String SA-MP adalah Windows-1252. Knight mengubah string UTF-8 gamemode ke CP1252 di wire dan mengubah teks masuk kembali ke UTF-8.