Roleplay Chat
Pendahuluan
• Di tutorial ini akan menunjukan langkah demi langkah "Bagamaina Cara Chat Roleplay"
• Di tutorial ini kalian harus mengetauhi dasar Membuat Commands menggunakan ZCMD dan Sscanf 2.6
• Alat/bahan yang kau butuhkan
- 1. Mengerti basic basic Pawn untuk SA-MP scripting
2. foreach Include by Y_LESS : http://forum.sa-mp.com/showthread.php?t=92679
3. sscanf 2.6 plugin by Y_Less: http://forum.sa-mp.com/showthread.php?t=120356
4. zcmd include by Zeex: http://forum.sa-mp.com/showthread.php?t=91354
Stock
Sebelum Menlanjutkan, Kalian membutuhkan Fungsi Stock Yang sangat berguna untuk membuat scripting menjadi lebih ringan, Mudah diingiat, Dan Dipahami
• Menghapus "_" Dari nama
Sebelummnya kita membutuhkan string replace fucntion.
Code: Select all
stock strreplace(string[], find, replace)
{ for(new i=0; string[i]; i++) { if(string[i] == find) { string[i] = replace; } }
}
ini sebuah contoh Bagaimana Sting replace stock mau mengubah Underscore dari nama
Code: Select all
new name[24];GetPlayerName(playerid, name, sizeof(name));strreplace(name, '_', ' ');
masih bingung? Biar gue jelaskan
Code: Select all
new name[24];
ini adalah simple definisi sebuah nama,
• Name = Definisi
• [24]; = Maksimal Nama yang dibuat, apabila nama tersebut lebih dari 24 maka dia akan terpotong
Code: Select all
GetPlayerName(playerid, name, sizeof(name));
Dengan menggunakan GetPlayerName kita mengambil 'name' string, mengambil Nama Players tersebut dan Memasukkan string ke Parameters ke dua
Code: Select all
strreplace(name, '_', ' ');
Fungsi ini Adalah men-replace underscore dengan " " atau spasi Sehingga nama orang tersebut menjadi Ex: Harrow Henderson
Jadi, Semua itu akan terlihat seperti ini
Code: Select all
stock GetName(playerid)
{
new
name[24];
GetPlayerName(playerid, name, sizeof(name));
strreplace(name, '_', ' ');
return name;
}
• ProxDetector
siapa yang tidak tahu dengan fucntion satu ini, Ya function ini berasal/ Mulai deperkenalkan dari GM TheGodFather Roleplay. setiap player ingin chatnya hanya orang didekatnya, dan kini harapan mereka pun terwujud. Dengan Stock ProxDetector ini kita hanya dapat Chat dengan orang didekat kita, Ini semakin membuat Server Server Roleplay Yang lain terlihat seperti kehidupan nyata.
Code: Select all
stock ProxDetector(Float:radi, playerid, string[],color)
{ new Float:x,Float:y,Float:z; GetPlayerPos(playerid,x,y,z); foreach(Player,i) { if(IsPlayerInRangeOfPoint(i,radi,x,y,z))
{ SendClientMessage(i,color,string); } }
}
masih bingung ? biar gue jelaskan lagi
Code: Select all
new Float:x,Float:y,Float:z;
Siapa yang tidak tahu dengan Floats ini adalah fungsi mengetahi Lokasi X Y Z dari sebuah benda/Object/Players/dsb, Kau harus menggunakan "Float:"tag karena ini sangat penting dan Coordinatnya adalah angka desimal
Code: Select all
GetPlayerPos(playerid, x, y, z);
menggunakan native function GetPlayerPos Kita mengambil Posisi / coordinate suatu players agar dapat mengetahui keberadaan players tersebut
Code: Select all
foreach(Player, i)
Menggunakan Foreach kita akan menjadikan Loop itu menjadi yang lebih efisien melalui semua pemain dan menyimpannya dalam satu variable " i " yang ada di parameter ke dua
Code: Select all
if(IsPlayerInRangeOfPoint(i,radi,x,y,z))
IsPlayerInRangeOfPoint itu ketika players berada di sebuah tempat yang jaraknya tidak jauh dari tempat itu sendiri [Ex: Ada mall, Players Di sebelah mall]
Code: Select all
SendClientMessage(i,color,string);
akhirnya Dari kode diatas kita akan mengirim kan pesan ke player tersebut SendClientMessage. Variable " i " Menjelaskan Bahwa akan mengirim pesan terserbut yang berada di dekat orang tersebut
Local Chat
Kita sekarang sudah mempunyai stock yang dibutuhkan, dan kita akan membuat " Local Chat " untuk melakukan ini kita akan menggunakan Callback atau biasanya adalah OnPlayerText
• New Message
Seperti tadi, Ini adalah max text yang bisa muncul didalam chat itu sendiri
Code: Select all
new message[128];
• Format Pesan
Kita akan menggunakan Fuction Format Untuk memasukkan Variable Nama dan Pesan.
Code: Select all
format(message, sizeof(message), "%s says: %s", GetName(playerid), text);
• Mengirim Pesan Ke player yang berada Dekat
Kita sudah memasukkan nama dan text, sekarang kita akan mengirim pesan tersebut ke orang yang berada di dekat kita menggunakan ProxDetector yang sudah di definisi/stock tadi
Code: Select all
ProxDetector(30.0, playerid, message, -1);
Dalam artian diatas, ProxDetector akan Menidentifikasi bahwa kita berada didalam/diantara jarak kurang lebih 30 kaki dari players yang berbicara.. Jika lebih dari 30 kaki maka Chat tersebut tidak akan terkirim atau terlihat
• Langkah Terakhir
Code: Select all
return 1;
ganti menjadi
Code: Select all
return 0;
• Hasil
Semuanya akan terlihat seperti ini
Code: Select all
public OnPlayerText(playerid, text[])
{ new
message[128]; format(message, sizeof(message), "%s says: %s", GetName(playerid), text); ProxDetector(30.0, playerid, message, -1); return 0;
}
Sekian dulu tutorial gue saat ini, lebih kurang mohon maaf
0 komentar:
Posting Komentar