Konu basliginda da belirttigim uzere bu konuda elimden geldigince pawno terimlerini acikladim. Sira olarak pawnoda genel kullanim sirasina gore gittim fakat bazi yerlerde duruma uygun kaymalar elbette oldu.
oncelikle pawnonun olmassa olmazi includeler;
Include kelime anlami olarak dahil, icinde olmak anlamina gelir. Pawnodaki kullanimida bu sekildedir. Includede bulunan fonksiyonlari, tanimlari pawnoya aktarir.
ornek Kullanim:
#include <a_samp>
Siradaki terimimiz "Define". Define'nin kelime anlami tanimlamaktir. Pawnodaki kullanimida bu yondedir. Kullanimini kolay olarak anlamak istersek; kullandigimiz bir degeri baska bir deger olarak degistirir. En sik kullanildigi yer renkleri tanimlamaktir. Sebebi her rengin akilda tutmasi zor sayi ve harflerden olusan bir kodu olmasidir. Biz defineler sayesinde o kod yerine yalnizca kirmizi yazarak renk verme islemini gerceklestirebiliriz.
ornek Kullanim:
#define KIRMIZI 0xAA3333AA
Siradaki terimimiz "new". New'in kelime anlami yenidir. Bu yeni bir tanim kullanmamizi saglar. Bu fonksiyonla eklediklerimize deger atayabilir, bunlari kodlarda kullanabiliriz. Visual Basic dilindeki "Dim" ile eslestirebiliriz.
ornek Kullanim:
new arac; //araci new ile tanimlar
arac = GetPlayerVehicleID(playerid);//arac new'ine bir deger verir
//Bu kodda arac oyuncunun bulundugu arac id'sidir.
Sirada publiclerimiz var kisada olsa ne ise yaradiklarini yazmak isterim. oncelikle publicler oyuncunun veya fsmizin-modumuzun durumlarini belirtir. Ve biz bunlari kullanarak publiclerin belirttigi olay gerceklesirken yapilicak islemleri ayarlariz.
Sirayla Publicler ve Belirttikleri Durum
public OnFilterScriptInit() >> Fs Yuklenirken Gerceklestirilicekleri Bu Public Altina Gireriz.
public OnFilterScriptExit() >> Fs De-aktif Edilince Gerceklestirilicek Olaylari Bu Public Altina Yazariz.
public OnGameModeInit() >> Game Modumuz Yuklenirken Gerceklestirilicek Olaylar Bu Public Altina Yazilir.
public OnGameModeExit() >> Game Modumuz De-Aktif Edilince Gerceklestirilecekler Bu Public Altina Yazilir.
public OnPlayerRequestClass(playerid, classid) >> Oyuncu Giriste Skin Secerken Gerceklestirilicek Olaylar Bu Public Altina Yazilir.
public OnPlayerConnect(playerid) >> Oyuncu Giris Yaptigi Zaman Gerceklesecek Olaylar Bu Public Altina Girilir.
public OnPlayerDisconnect(playerid, reason) >> Oyuncu cikis Yaptigi Zaman Gerceklestirilecek Olaylar bu Public Altina Girilir.
public OnPlayerSpawn(playerid) >> Oyuncu Spawn Oldugu Zaman Gerceklestirilecek Olaylar Bu Public Altina Yazilir.
public OnPlayerDeath(playerid, killerid, reason) >> Oyuncu oldugu Zaman Gerceklestirilecekleri Bu Public Altina Yazariz.
public OnVehicleSpawn(vehicleid) >> Bir Arac Spawn Olunca Gerceklestirilecek Olaylari Bu Public Altina Gireriz.
public OnVehicleDeath(vehicleid, killerid) >> Bir Arac oldugu(Patladigi) Zaman Gerceklestirilecek Olaylar Bu Public Altina Yazilir.
public OnPlayerText(playerid, text[]) >> Oyuncu Chat'e Yazi Yazdigi Zaman Gerceklestirilecek Olaylari Bu Public Altina Yazariz.
public OnPlayerCommandText(playerid, cmdtext[]) >> Oyuncu Komut Girdigi Zaman Gerceklesecekleri Bu Public Altina Gireriz.
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) >> Oyuncu Bir Araca Bindigi Zaman Olucaklari Bu Publice Yazariz.
public OnPlayerExitVehicle(playerid, vehicleid) >> Oyuncu Aractan ciktigi Zaman Gerceklesecekleri Bu Public Altina Yazariz.
public OnPlayerStateChange(playerid, newstate, oldstate) >> Oyuncunun Durumu Degistigi Zaman Gerceklestirilecek Olaylari Bu Public Altina Yazariz. (Oyuncu araca surucu olarak binince, Oyuncu Izleyici Moduna gecince vb.)
public OnPlayerEnterCheckpoint(playerid) >> Oyuncu CheckPointlere Yani Belirli Kontrol Noktalarina Girince Olucak Islemleri Bu Public Altina Gireriz.
public OnPlayerLeaveCheckpoint(playerid) >> Oyuncu Kontrol Noktalarindan Ayrildigi Zaman Gerceklesicek Olaylari Bu Public Altina Yazariz.
public OnPlayerEnterRaceCheckpoint(playerid) >> Oyuncu Yaris Kontrol Noktasina (Aracla) Girince Olucak Olaylari Bu Public Altina Yazariz.
public OnPlayerLeaveRaceCheckpoint(playerid) >> Oyuncu Yaris Kontrol Noktasindan Ayrilinca Gerceklestirilecek Olaylari Bu Public Altina Yazariz.
public OnRconCommand(cmd[]) >> Server.cfg'de Belirlenen Rcon sifresi Ile Rcon Girisi Yapan Oyuncu Komut Kullaninca Gerceklesicek Olaylari Bu Public Altina Gireriz.
public OnPlayerRequestSpawn(playerid) >> Oyuncu Skin Secme Yerinde Spawn Tusuna Basinca Gerceklestirilecek Olaylari Bu Public Altina Gireriz.
public OnObjectMoved(objectid) >> Bir Obje Hareket Ettirildiginde Gerceklestirilecek Olaylari Bu Public Altina Yazariz.
public OnPlayerObjectMoved(playerid, objectid) >> CreatePlayerObject Fonksiyonu ile Oyuncu Icin Olusturulmus Bir Obje MovePlayerObject Fonksiyonu Ile Hareket Ettirildiginde Gerceklestirilecek Olaylar Bu Public Altina Yazilir.
public OnPlayerPickUpPickup(playerid, pickupid) >> Oyuncu Pick Up Adi Verilen Objeleri Aldigi Zaman Gerceklestirilecek Olaylari Bu Public Altina Yazariz.
public OnVehicleMod(playerid, vehicleid, componentid) >> Araca Bir Modifiye Objesi Takildigi Zaman Gerceklestirilecek Olaylari Bu Public Altina Gireriz.
public OnVehiclePaintjob(playerid, vehicleid, paintjobid) >> Aracin Boya Stili Degistigi Zaman Gerceklesicek Olaylari Bu Public Altina Yazariz.
public OnVehicleRespray(playerid, vehicleid, color1, color2) >> Aracin Rengi Degistirildigi Zaman Gerceklestirilecek Olaylari Bu Public Altina Gireriz.
public OnPlayerSelectedMenuRow(playerid, row) >> Oyuncu CreateMenu ile Olusturulmus Bir Menuden Item Sectiginde Gerceklestirilecek Olaylari Bu Public Altina Yazariz.
public OnPlayerExitedMenu(playerid) >> Oyuncu CreateMenu ile Olusturulmus Bir Menuden cikinca Gerceklestirilecek Olaylari Bu Public Altina Yazariz.
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid) >> Oyuncunun Interioru Degisince Gerceklesicek Olaylari Bu Public Altina Yazariz.
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) >> Oyuncu Bir Tusa Bastigi Zaman Gerceklestirilecek Olaylari Bu Public Altina Yazariz.
public OnRconLoginAttempt(ip[], password[], success) >> Oyuncu Rcon Girisi Yapmaya calistigi Zaman Gerceklestirilecek Olaylar Bu Public Altina Yazilir.
public OnPlayerUpdate(playerid) >> Oyuncu Guncellendigi(Mesela Silah Degistirdigi) Zaman Gerceklestirilecek Olaylari Bu Public Altina Yazariz.
public OnPlayerStreamIn(playerid, forplayerid) >> Bir Oyuncu Baska Bir Oyuncunun Gorus Acisina Girince Gerceklesicek Olaylar Bu Public Altina Yazilir.
public OnPlayerStreamOut(playerid, forplayerid)>> Bir Oyuncu Baska Bir Oyuncunun Gorus Acisindan cikinca Gerceklesicek Olaylar Bu Public Altina Yazilir.
public OnVehicleStreamIn(vehicleid, forplayerid)>>Belli Bir Arac Oyuncunun Gorus Acisina Girince Gerceklestirilecek Olaylar Bu Public Altina Girilir.
public OnVehicleStreamOut(vehicleid, forplayerid)>>Belirli Bir Arac Oyuncunun Gorus Acisindan cikinca Gerceklesicek Olaylar Bu Public Altina Yazilir.
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) >> Oyuncu Dialogta Bir Islem(Bir nesne secmek, sifre girmek, Kabul Ediyorum demek gibi) Yapinca Olucak Olaylari Bu Public Altina Yazariz.
public OnPlayerClickPlayer(playerid, clickedplayerid, source) >> Oyuncu Skor Tablosunda Bir Oyuncuya Tiklayinca Gerceklestirilecek Olaylar Bu Public Altina Girilir.
Siradaki terimimiz "return". Herhalde farketmissinizdir her public return ile biter. Return'un kelime anlami geri donmektir. Pawnoda da anlamiyla ayni sekilde kullanilir. Return sayesinde bir publice veya olaya geri doneriz.
ornek Kullanim:
new dmde[MAX_PLAYERS]; //Bu sekilde bir tanim yapariz ve ornegin dmye girince bunu 1 yapariz.
if(dmde[playerid] == 1) return SendClientMessage(playerid,COLOR_RED,"Dmde komut kullanamazsin cikmak icin /kill.");
// OnPlayerCommandText'in basina koyarsak oyuncu dm'de ise mesaja doner.
Siradaki terimimiz "forward". Genelde bu terim modun basinda kullanilir fakat publiclerle alakali oldugu icin simdi aciklamanin daha dogru olcagini dusundum. Bu terim sayesinde yeni bir public olusturabiliriz. Bu publici timerlarimizda ve returnlerde kullanabiliriz.
ornek Kullanim:
forward maas(playerid);
public maas()
{
SendClientMessage(playerid,-1,"{00FF22}[{FFFFFF}SERVER{00FF22}] {00C8FF}10000$ Hediye Aldiniz!");
GivePlayeMoney(playerid,10000);
}
// Bu publici cagirdigimiz zaman oyuncuya 10000$ verir.
Siradaki terimimiz "timer". Aslinda diger tanimlara gore biraz degisik kaliyor ama yinede cok kullanilan bir ifade oldugu icin aciklamak istedim. Timer'in kelime anlami zamanlayicidir. Herhangi bir dilde kodlama uzerine ugrasan kisilerin asina oldugu bir terimdir. Timerlar aslinda bir cesit return'dur. Aralarindaki fark ise timer'in o return'u bir sure sonra gerceklestirebilmesi ve tekrar edebilmesidir.
ornek Kullanim:
SetTimer("Public Adi", sure, tekrar);//tekrar 1:acik 2:kapali seklindedir
SetTimerEx("Public Adi", sure, tekrar, deger formati(integer,string vb.), parametre);
//SetTimer daha cok obje ve tum serveri etkileyen olaylarda SetTimerEx ise tek oyuncuyu etkileyen olaylarda kullanilir.
Siradaki terimlerimiz"if-else". Bunlarda pawnoda sikca kullandigimiz ifadelerdir bu nedenle anlatima eklemek istedim. If'in kelime anlami egerdir. Else'in ise aksi taktirdedir. Bu ifadeler ornek olarak su sekilde kullanilir:"Eger 10000$'i varsa can ver aksi takdirde "Yeterli Paraniz Bulunmamaktir." seklinde bir mesaj gonder." Bu ifadenin Koda Dokumu ise sudur.
if(GetPlayerMoney(playerid) >= 10000) //Eger oyuncunun parasi 10000 veya ustu ise
{//Kodu acma parantezi
SetPlayerHealth(playerid, 100.0);//oyuncunun canini 100 olarak ayarla
}//if kodumuzu kapatir
else//aksi Taktirde
{//else kodumuzu acar
SendClientMessage(playerid,,"Yeterli Paraniz Bulunmamaktadir.");//hata mesajini gonder.
}//else kodumuzu kapar
ustteki koddada gorebileceginiz uzere pawnoda her kodun konusma diline cevirimi vardir yani kodlari oylesine yazmayiz. Eger siz bu cevirimi yapabilirseniz emin olun kodlarken cok daha rahat edersiniz.
If ve else'in bir kullanim sekli daha vardir. "else if" yani ilk kosulumuz gecerli degilse baska bir kosul daha koyar. ornegin;
new Float:health;//Yeni bir float degeri tanitir.
GetPlayerHealth(playerid,health);//Yeni float degerini oyuncunun cani olarak atar.
if(GetPlayerMoney(playerid) >= 10000) //Eger oyuncunun parasi 10000 veya ustu ise
{
GivePlayerMoney(playerid,-10000);//oyuncudan 10000$ al
SetPlayerHealth(playerid, 100.0);//oyuncunun canini 100 olarak ayarla
}
else if(GetPlayerMoney(playerid) >=5000 && health < 50) //eger oyuncunun parasi 10000 ve ustu degilse fakat 5000 ve ustu ise ve oyuncunun cani 50'den azsa
{
GivePlayerMoney(playerid,-5000);//oyuncudan 5000$ al
SetPlayerHealth(playerid, 50.0);//oyuncunun canini 50 olarak ayarla
}
else if(GetPlayerMoney(playerid) >=2500 && health < 25)//eger oyuncu diger kosullara uymuyorsa fakat 2500$ varsa ve cani 25'ten az ise
{
GivePlayerMoney(playerid,-2500);//oyuncudan 2500$ al
SetPlayerHealth(playerid, 25.0);//oyuncunun canini 25 olarak ayarla
}
else
{
SendClientMessage(playerid,,"Yeterli Paraniz Bulunmamaktadir.");//hic bir kosula uymuyorsa hata mesaji gonder.
}//else ifler duruma bagli olarak arttirilabilir.
Not:Bu Terimlerin ozel Konusu Olmasina Ragmen Kendi Anlatimimla Anlatmak Istedim
ornek Kullanim:
if(){ // Kosul
//islem
}else{//Kosul gecersizse
//islem
}
//-----------else if-----------
if(){ // Kosul
//islem
}else if()//1. Kosul gecerli degilse fakat bu kosul gecerliyse
//islem
}else if()//1. ve 2. Kosul gecerli degilse fakat bu kosul gecerliyse
//islem
}
//else if ler arttirilabilir.
Iflerde kullanilan karsilastirma isaretleri ve anlamlari
&& Bu isaretin anlami "ve"dir. Kullanildigi ifadedeki kosullarin ikisininde dogru olmasi gerektigini belirtir.
|| Bu isaretin anlami "veya"dir. Kullanildigi ifadedeki kosullarin yalnizca birinin dogru olmasinin yetecegini belirtir.
< Bu isaretin anlami "kucuktur"dur. Kullanildigi ifadedeki ilk degerin ikinciden kucuk olmasi gerektigini belirtir.
> Bu isaretin anlami "buyuktur"dur. Kullanildigi ifadedeki ilk degerin ikinciden buyuk olmasi gerektigini belirtir.
== Bu isaretin anlami "esittir"dir. Kullanildigi ifadedeki degerlerin esit olmasi gerektigini belirtir.
<= Bu isaretin anlami "kucuk-esit"dir. Kullanildigi ifadedeki ilk degerin ikinciden kucuk veya esit olmasi gerektigini belirtir.
>= Bu isaretin anlami "buyuk-esit"dir. Kullanildigi ifadedeki ilk degerin ikinciden buyuk veya esit olmasi gerektigini belirtir.
!= Bu isaretin anlami "esit degildir"dir. Kullanildigi ifadede iki deger arasinda esitsizlik olmasi gerektigini belirtir.
! Bu isaretin anlami "degildir"dir. Kullanildigi ifadenin dogru olmamasi gerektigini belirtir.
Siradaki terimimiz "Format". Bu terimde pawnoda sikca karsimiza cikar. Format bir stringte farkli degiskenleri kullanmamizi saglar. ornegin oyuncunun skoru, cani, zirhi vb. Kullanim sekli sudur:
format(yazinin aktarilacagi deger, max boyut,mesaj ve degisken turleri,soldan saga degisken degerleri);
Notlar:
-Yazinin aktarilacagi deger new olarak tanitilmalidir.
-Degiskenler dogru kullanilmalidir.
-Formatta aktarilan deger bir mesajsa gonderme fonksiyonu unutulmamalidir.
ornek Kullanim:
new string[64];//string newimiz [64] ise boyutu
format(string,sizeof(string),"Skorunuz: %d",GetPlayerScore(playerid));//sizeof(string) yani ustte belirledigimiz 64 onun yerine sayi degeride girilebilir. %d sayi degiskeni gostermek icin, GetPlayerScore'da %d'nin alacagi deger
SendClientMessage(playerid,0xFFFFFFAA,string);//Mesaj gonderme fonksiyonu
Degisken Turleri
Degiskenler adi uzerinde degisebilen degerlerdir. Ve bu degerler sayi, yazi vb. farkli turlere sahiptir.
String: Yazi degiskeni - %s /Oyuncu Adi/
Integer: Sayi degiskeni - %i / %d /Skor-Oyuncu ID/
Float: Ondalikli(virgullu) sayi degiskeni(41,156) - %f /Oyuncunun Cani, Poslar/
Character: Tek bir karakter verir - %c
Hex(?): Hexademical bir deger verir - %x
%% : Degistirmeden %'yi verir.
Siradaki terimimiz "Stock". Stock'un kelime anlami stoklamak, depolamaktir. Bir kod grubunun sonucunu veya yaptiklarini bize tek kodla cevirir. Forward terimine benzerler fakat stocklar timer vb. ile cagrilamaz. Pawnoda sikca kullanilan terimler arasinda yer alir.
ornek Kullanim:
stock isim(playerid){//Parantez icine kullanilacak parametreler yazilir. ornegin playerid, text[] vb.
new isimo[MAX_PLAYER_NAME];//En buyuk oyuncu adi buyuklugunde bir new tanimliyoruz.
GetPlayerName(playerid,isimo,sizeof(isimo));//Bu new'e oyuncunun adini atiyoruz.
return isimo;//Atadigimiz ismi ceviriyoruz.
}
//Bu kod kullanildiginda oyuncunun nicki donucektir. ornegin:
new string[256];//Bir new tanimliyoruz
format(string,sizeof(string),"Nickiniz: %s",isim(playerid));//Bu new'e format yoluyla bir deger atiyoruz. "isim(playerid)" sayesinde "%s" oyuncunun adini alir.
SendClientMessage(playerid,-1,string);//string'i mesaj olarak yollar. Sonuc: "Nickiniz: OyundakiAd" seklinde olucaktir.
Siradaki terimimiz "Str(string)". String'in kelime anlami dizedir. Harf dizelerinden olusan kelimeleri, cumleleri karsilastirarak komutlar vb. yapariz. Bu nedenle samp'in en onemli ozelliklerinden biridir. Bir kac farkli kullanimi vardir ben bu kullanimlari tek tek aciklayarak bu onemli konuya gerektigi degeri vermek istedim.
Genel Notlar
Not:Dizeleri tanimlarken dizeye deger atamayi unutmamaliyiz.(new string[256]; gibi.)
Not 2: Dizelere gerekenden fazla deger vermek modumuzun boyutunu sisirecek ve bosuna oyun ici laga neden olucaktir. Bu nedenle gerektiginden fazla deger atamamaya dikkat etmeliyiz. ornegin:
new isim[MAX_PLAYER_NAME+1], string[256];
GetPlayerName(playerid, name, sizeof(name));
format(string,sizeof(string),"Nickiniz: %s",isim);
ustte string 256 olarak tanimlanmis fakat isim new'i en fazla 25(MAX_PLAYER_NAME+1) degerini alir ve onun disinda 10 dize kullanilmis. Yani biz bu stringe 36 degerinide verseydik ayni islevi gorur ve bosa kalabalik yaratmamis olurduk.
Strcmp(String Compare - Dize Karsilastirma)
Bu fonksiyon sayesinde iki stringi karsilastirabiliriz. OnPlayerCommandText publicinde komut yaratirken kullandigimiz icin cok onemli bir fonksiyondur.
ornek Kullanim:
if(!strcmp(cmdtext, "/me", true, 3)) // strcmp(1.string,2.string,buyuk-kucuk harf(false ise duyarli),uzunluk) seklinde kullaniriz
{
if(!cmdtext[3])return SendClientMessage(playerid, 0xFF0000FF, "Kullanim: /me [aksiyon]");//Buradaki cmdtext[3] dizenin 4. elemanini belirtir.(0'dan basladigi icin)
new str[128];
GetPlayerName(playerid, str, sizeof(str));
format(str, sizeof(str), "* %s %s", str, cmdtext[4]);
SendClientMessageToAll(0xFFFF00AA, str);
return 1;
}
Strlen(String Length - Dize Uzunlugu)
Bu fonksiyon sayesinde dizenin uzunlugunu ogrenebiliriz.
ornek Kullanim:
new stringUzunluk = strlen("ornek Kullanim."); // stringUzunluk new'i 15 degerini alir.
Strfind(String Find - Dize Bul)
Bu fonksiyon sayesinde dizede baska bir stringi bulabiliriz. Bu fonksiyona kufur sistemlerinde sikca rastlanir.
ornek Kullanim:
if(strfind("Burda kufur var mi ?", "kufur", true) != -1) //strfind(1.dize,2.dize,buyuk-kucuk harf) seklinde kullanilir. Eger deger bulunmaz ise -1 degeri doner.
{
SendClientMessageToAll(0xFFFFFFFF, "Kufur bulundu!");
}//ornek biraz sacma olabilir fakat sonucta ornek![Sırıtma Sırıtma]()
Strdel(String Delete - Dize Sil)
Bu fonksiyon sayesinde dizeden belirli bir kismi silebiliriz.
ornek Kullanim:
new string[20] = "MertMiT || Sloth";
strdel(string, 0, 11); // Bu islemden sonra string "Sloth" degerini alir.
Strval(String Value - Dize Degeri)
Bu fonksiyon sayesinde bir dizeyi sayisal degere cevirebiliriz.
ornek Kullanim:
new string[4] = "250";
new sayi = strval(string); // sayi degeri 250 olur.
Strcat(String Concatenation - Dize Birlestirme)
Bu fonksiyon sayesinde iki dizeyi birlestirebiliriz. Gercekten cok kullanisli ve ogrenilmesi gereken bir fonksiyondur.
ornek Kullanim:
new string[40] = "Merhaba";
strcat(string, " Dunya!");//Bu islemden sonra string "Merhaba Dunya!" degerini alir.
Strmid(String Mid - Dize Arasinda)
Bu fonksiyon sayesinde dizenin belirli bir kismini alabiliriz.
ornek Kullanim:
strmid(string, "!!! 'Sloth' Disindakileri cikar !!!", 6, 10); //string degeri "Sloth" olur
Strpack(String Pack - Dize Paketle)
Bu fonksiyon sayesinde dizeye deger veririz. Format ile ayni islevi gorur. Hangisinin daha iyi olduguna bende tam emin degilim bir kac tartisma var fakat sanirim strpack daha az bellek kullaniyor.
ornek Kullanim:
strpack(string, "String'in yeni degeri");
Strins(String Insert - Dize Ekle)
Bu fonksiyon sayesinde bir dizeye baska bir dizeyi ekleyebiliriz.
ornek Kullanim:
new pName[MAX_PLAYER_NAME+1];
GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
strins(pName, "[AFK]", 0);
SetPlayerName(playerid, pName);//Oyuncunun adi "[AFK]Nick" seklinde olucaktir
//Bu kullanim 20 harften uzun isimlerde sorun cikarir cunku en yuksek isim uzunlugunu gecerler
Strtok(String Token - Dize **)
Bu fonksiyon sayesinde dizede " "tan sonra gelen yaziyi alabiliriz. Kick komutu vb. icin kullanilir. Kullanilmasi pek onerilmez bunun yerine daha kullanisli incler vardir.
ornek Kullanim:
new cmd[128], idx;
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, "/kick", true) == 0)//cmdtext yerine cmd kullanilmalidir.
{
new tmp[128];
tmp = strtok(cmdtext, idx);//tmp new'ine " "tan sonraki degeri atar
if(strlen(tmp) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "Kullanim: /kick [playerid]");
Kick(strval(tmp));//tmp'nin sayi degerini alir ve o idye denk gelen oyuncuyu kickler
return 1;
}
strtok(const string[], &index)//Strtoku kullanmak icin tanitmaniz gerekir
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
Floatstr(Float String - Ondalikli Sayi Dize)
Bu fonksiyon sayesinde dizenin degerini float'a cevirebiliyoruz(Can-zirh-x,y,z islemleri icin gerekir).
ornek Kullanim:
new before[4] = "6.9";//Dizeye 6.9'u yazi olarak atiyor
SetPlayerPos(playerid, 0, 0, floatstr(before));//Yaziyi 6.9 olarak float degerine ceviriyor.
//Daha anlasilabilir olmasi icin wikiden alinti
simdilik Benden Bu Kadar.
Anlatim Tamamen Bana Aittir Eger Yardimci Olduysam Tesekkur Etmenizi Rica Ediyorum.
oncelikle pawnonun olmassa olmazi includeler;
Include kelime anlami olarak dahil, icinde olmak anlamina gelir. Pawnodaki kullanimida bu sekildedir. Includede bulunan fonksiyonlari, tanimlari pawnoya aktarir.
ornek Kullanim:
#include <a_samp>
Siradaki terimimiz "Define". Define'nin kelime anlami tanimlamaktir. Pawnodaki kullanimida bu yondedir. Kullanimini kolay olarak anlamak istersek; kullandigimiz bir degeri baska bir deger olarak degistirir. En sik kullanildigi yer renkleri tanimlamaktir. Sebebi her rengin akilda tutmasi zor sayi ve harflerden olusan bir kodu olmasidir. Biz defineler sayesinde o kod yerine yalnizca kirmizi yazarak renk verme islemini gerceklestirebiliriz.
ornek Kullanim:
#define KIRMIZI 0xAA3333AA
Siradaki terimimiz "new". New'in kelime anlami yenidir. Bu yeni bir tanim kullanmamizi saglar. Bu fonksiyonla eklediklerimize deger atayabilir, bunlari kodlarda kullanabiliriz. Visual Basic dilindeki "Dim" ile eslestirebiliriz.
ornek Kullanim:
new arac; //araci new ile tanimlar
arac = GetPlayerVehicleID(playerid);//arac new'ine bir deger verir
//Bu kodda arac oyuncunun bulundugu arac id'sidir.
Sirada publiclerimiz var kisada olsa ne ise yaradiklarini yazmak isterim. oncelikle publicler oyuncunun veya fsmizin-modumuzun durumlarini belirtir. Ve biz bunlari kullanarak publiclerin belirttigi olay gerceklesirken yapilicak islemleri ayarlariz.
Sirayla Publicler ve Belirttikleri Durum
public OnFilterScriptInit() >> Fs Yuklenirken Gerceklestirilicekleri Bu Public Altina Gireriz.
public OnFilterScriptExit() >> Fs De-aktif Edilince Gerceklestirilicek Olaylari Bu Public Altina Yazariz.
public OnGameModeInit() >> Game Modumuz Yuklenirken Gerceklestirilicek Olaylar Bu Public Altina Yazilir.
public OnGameModeExit() >> Game Modumuz De-Aktif Edilince Gerceklestirilecekler Bu Public Altina Yazilir.
public OnPlayerRequestClass(playerid, classid) >> Oyuncu Giriste Skin Secerken Gerceklestirilicek Olaylar Bu Public Altina Yazilir.
public OnPlayerConnect(playerid) >> Oyuncu Giris Yaptigi Zaman Gerceklesecek Olaylar Bu Public Altina Girilir.
public OnPlayerDisconnect(playerid, reason) >> Oyuncu cikis Yaptigi Zaman Gerceklestirilecek Olaylar bu Public Altina Girilir.
public OnPlayerSpawn(playerid) >> Oyuncu Spawn Oldugu Zaman Gerceklestirilecek Olaylar Bu Public Altina Yazilir.
public OnPlayerDeath(playerid, killerid, reason) >> Oyuncu oldugu Zaman Gerceklestirilecekleri Bu Public Altina Yazariz.
public OnVehicleSpawn(vehicleid) >> Bir Arac Spawn Olunca Gerceklestirilecek Olaylari Bu Public Altina Gireriz.
public OnVehicleDeath(vehicleid, killerid) >> Bir Arac oldugu(Patladigi) Zaman Gerceklestirilecek Olaylar Bu Public Altina Yazilir.
public OnPlayerText(playerid, text[]) >> Oyuncu Chat'e Yazi Yazdigi Zaman Gerceklestirilecek Olaylari Bu Public Altina Yazariz.
public OnPlayerCommandText(playerid, cmdtext[]) >> Oyuncu Komut Girdigi Zaman Gerceklesecekleri Bu Public Altina Gireriz.
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) >> Oyuncu Bir Araca Bindigi Zaman Olucaklari Bu Publice Yazariz.
public OnPlayerExitVehicle(playerid, vehicleid) >> Oyuncu Aractan ciktigi Zaman Gerceklesecekleri Bu Public Altina Yazariz.
public OnPlayerStateChange(playerid, newstate, oldstate) >> Oyuncunun Durumu Degistigi Zaman Gerceklestirilecek Olaylari Bu Public Altina Yazariz. (Oyuncu araca surucu olarak binince, Oyuncu Izleyici Moduna gecince vb.)
public OnPlayerEnterCheckpoint(playerid) >> Oyuncu CheckPointlere Yani Belirli Kontrol Noktalarina Girince Olucak Islemleri Bu Public Altina Gireriz.
public OnPlayerLeaveCheckpoint(playerid) >> Oyuncu Kontrol Noktalarindan Ayrildigi Zaman Gerceklesicek Olaylari Bu Public Altina Yazariz.
public OnPlayerEnterRaceCheckpoint(playerid) >> Oyuncu Yaris Kontrol Noktasina (Aracla) Girince Olucak Olaylari Bu Public Altina Yazariz.
public OnPlayerLeaveRaceCheckpoint(playerid) >> Oyuncu Yaris Kontrol Noktasindan Ayrilinca Gerceklestirilecek Olaylari Bu Public Altina Yazariz.
public OnRconCommand(cmd[]) >> Server.cfg'de Belirlenen Rcon sifresi Ile Rcon Girisi Yapan Oyuncu Komut Kullaninca Gerceklesicek Olaylari Bu Public Altina Gireriz.
public OnPlayerRequestSpawn(playerid) >> Oyuncu Skin Secme Yerinde Spawn Tusuna Basinca Gerceklestirilecek Olaylari Bu Public Altina Gireriz.
public OnObjectMoved(objectid) >> Bir Obje Hareket Ettirildiginde Gerceklestirilecek Olaylari Bu Public Altina Yazariz.
public OnPlayerObjectMoved(playerid, objectid) >> CreatePlayerObject Fonksiyonu ile Oyuncu Icin Olusturulmus Bir Obje MovePlayerObject Fonksiyonu Ile Hareket Ettirildiginde Gerceklestirilecek Olaylar Bu Public Altina Yazilir.
public OnPlayerPickUpPickup(playerid, pickupid) >> Oyuncu Pick Up Adi Verilen Objeleri Aldigi Zaman Gerceklestirilecek Olaylari Bu Public Altina Yazariz.
public OnVehicleMod(playerid, vehicleid, componentid) >> Araca Bir Modifiye Objesi Takildigi Zaman Gerceklestirilecek Olaylari Bu Public Altina Gireriz.
public OnVehiclePaintjob(playerid, vehicleid, paintjobid) >> Aracin Boya Stili Degistigi Zaman Gerceklesicek Olaylari Bu Public Altina Yazariz.
public OnVehicleRespray(playerid, vehicleid, color1, color2) >> Aracin Rengi Degistirildigi Zaman Gerceklestirilecek Olaylari Bu Public Altina Gireriz.
public OnPlayerSelectedMenuRow(playerid, row) >> Oyuncu CreateMenu ile Olusturulmus Bir Menuden Item Sectiginde Gerceklestirilecek Olaylari Bu Public Altina Yazariz.
public OnPlayerExitedMenu(playerid) >> Oyuncu CreateMenu ile Olusturulmus Bir Menuden cikinca Gerceklestirilecek Olaylari Bu Public Altina Yazariz.
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid) >> Oyuncunun Interioru Degisince Gerceklesicek Olaylari Bu Public Altina Yazariz.
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) >> Oyuncu Bir Tusa Bastigi Zaman Gerceklestirilecek Olaylari Bu Public Altina Yazariz.
public OnRconLoginAttempt(ip[], password[], success) >> Oyuncu Rcon Girisi Yapmaya calistigi Zaman Gerceklestirilecek Olaylar Bu Public Altina Yazilir.
public OnPlayerUpdate(playerid) >> Oyuncu Guncellendigi(Mesela Silah Degistirdigi) Zaman Gerceklestirilecek Olaylari Bu Public Altina Yazariz.
public OnPlayerStreamIn(playerid, forplayerid) >> Bir Oyuncu Baska Bir Oyuncunun Gorus Acisina Girince Gerceklesicek Olaylar Bu Public Altina Yazilir.
public OnPlayerStreamOut(playerid, forplayerid)>> Bir Oyuncu Baska Bir Oyuncunun Gorus Acisindan cikinca Gerceklesicek Olaylar Bu Public Altina Yazilir.
public OnVehicleStreamIn(vehicleid, forplayerid)>>Belli Bir Arac Oyuncunun Gorus Acisina Girince Gerceklestirilecek Olaylar Bu Public Altina Girilir.
public OnVehicleStreamOut(vehicleid, forplayerid)>>Belirli Bir Arac Oyuncunun Gorus Acisindan cikinca Gerceklesicek Olaylar Bu Public Altina Yazilir.
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) >> Oyuncu Dialogta Bir Islem(Bir nesne secmek, sifre girmek, Kabul Ediyorum demek gibi) Yapinca Olucak Olaylari Bu Public Altina Yazariz.
public OnPlayerClickPlayer(playerid, clickedplayerid, source) >> Oyuncu Skor Tablosunda Bir Oyuncuya Tiklayinca Gerceklestirilecek Olaylar Bu Public Altina Girilir.
Siradaki terimimiz "return". Herhalde farketmissinizdir her public return ile biter. Return'un kelime anlami geri donmektir. Pawnoda da anlamiyla ayni sekilde kullanilir. Return sayesinde bir publice veya olaya geri doneriz.
ornek Kullanim:
new dmde[MAX_PLAYERS]; //Bu sekilde bir tanim yapariz ve ornegin dmye girince bunu 1 yapariz.
if(dmde[playerid] == 1) return SendClientMessage(playerid,COLOR_RED,"Dmde komut kullanamazsin cikmak icin /kill.");
// OnPlayerCommandText'in basina koyarsak oyuncu dm'de ise mesaja doner.
Siradaki terimimiz "forward". Genelde bu terim modun basinda kullanilir fakat publiclerle alakali oldugu icin simdi aciklamanin daha dogru olcagini dusundum. Bu terim sayesinde yeni bir public olusturabiliriz. Bu publici timerlarimizda ve returnlerde kullanabiliriz.
ornek Kullanim:
forward maas(playerid);
public maas()
{
SendClientMessage(playerid,-1,"{00FF22}[{FFFFFF}SERVER{00FF22}] {00C8FF}10000$ Hediye Aldiniz!");
GivePlayeMoney(playerid,10000);
}
// Bu publici cagirdigimiz zaman oyuncuya 10000$ verir.
Siradaki terimimiz "timer". Aslinda diger tanimlara gore biraz degisik kaliyor ama yinede cok kullanilan bir ifade oldugu icin aciklamak istedim. Timer'in kelime anlami zamanlayicidir. Herhangi bir dilde kodlama uzerine ugrasan kisilerin asina oldugu bir terimdir. Timerlar aslinda bir cesit return'dur. Aralarindaki fark ise timer'in o return'u bir sure sonra gerceklestirebilmesi ve tekrar edebilmesidir.
ornek Kullanim:
SetTimer("Public Adi", sure, tekrar);//tekrar 1:acik 2:kapali seklindedir
SetTimerEx("Public Adi", sure, tekrar, deger formati(integer,string vb.), parametre);
//SetTimer daha cok obje ve tum serveri etkileyen olaylarda SetTimerEx ise tek oyuncuyu etkileyen olaylarda kullanilir.
Siradaki terimlerimiz"if-else". Bunlarda pawnoda sikca kullandigimiz ifadelerdir bu nedenle anlatima eklemek istedim. If'in kelime anlami egerdir. Else'in ise aksi taktirdedir. Bu ifadeler ornek olarak su sekilde kullanilir:"Eger 10000$'i varsa can ver aksi takdirde "Yeterli Paraniz Bulunmamaktir." seklinde bir mesaj gonder." Bu ifadenin Koda Dokumu ise sudur.
if(GetPlayerMoney(playerid) >= 10000) //Eger oyuncunun parasi 10000 veya ustu ise
{//Kodu acma parantezi
SetPlayerHealth(playerid, 100.0);//oyuncunun canini 100 olarak ayarla
}//if kodumuzu kapatir
else//aksi Taktirde
{//else kodumuzu acar
SendClientMessage(playerid,,"Yeterli Paraniz Bulunmamaktadir.");//hata mesajini gonder.
}//else kodumuzu kapar
ustteki koddada gorebileceginiz uzere pawnoda her kodun konusma diline cevirimi vardir yani kodlari oylesine yazmayiz. Eger siz bu cevirimi yapabilirseniz emin olun kodlarken cok daha rahat edersiniz.
If ve else'in bir kullanim sekli daha vardir. "else if" yani ilk kosulumuz gecerli degilse baska bir kosul daha koyar. ornegin;
new Float:health;//Yeni bir float degeri tanitir.
GetPlayerHealth(playerid,health);//Yeni float degerini oyuncunun cani olarak atar.
if(GetPlayerMoney(playerid) >= 10000) //Eger oyuncunun parasi 10000 veya ustu ise
{
GivePlayerMoney(playerid,-10000);//oyuncudan 10000$ al
SetPlayerHealth(playerid, 100.0);//oyuncunun canini 100 olarak ayarla
}
else if(GetPlayerMoney(playerid) >=5000 && health < 50) //eger oyuncunun parasi 10000 ve ustu degilse fakat 5000 ve ustu ise ve oyuncunun cani 50'den azsa
{
GivePlayerMoney(playerid,-5000);//oyuncudan 5000$ al
SetPlayerHealth(playerid, 50.0);//oyuncunun canini 50 olarak ayarla
}
else if(GetPlayerMoney(playerid) >=2500 && health < 25)//eger oyuncu diger kosullara uymuyorsa fakat 2500$ varsa ve cani 25'ten az ise
{
GivePlayerMoney(playerid,-2500);//oyuncudan 2500$ al
SetPlayerHealth(playerid, 25.0);//oyuncunun canini 25 olarak ayarla
}
else
{
SendClientMessage(playerid,,"Yeterli Paraniz Bulunmamaktadir.");//hic bir kosula uymuyorsa hata mesaji gonder.
}//else ifler duruma bagli olarak arttirilabilir.
Not:Bu Terimlerin ozel Konusu Olmasina Ragmen Kendi Anlatimimla Anlatmak Istedim
ornek Kullanim:
if(){ // Kosul
//islem
}else{//Kosul gecersizse
//islem
}
//-----------else if-----------
if(){ // Kosul
//islem
}else if()//1. Kosul gecerli degilse fakat bu kosul gecerliyse
//islem
}else if()//1. ve 2. Kosul gecerli degilse fakat bu kosul gecerliyse
//islem
}
//else if ler arttirilabilir.
Iflerde kullanilan karsilastirma isaretleri ve anlamlari
&& Bu isaretin anlami "ve"dir. Kullanildigi ifadedeki kosullarin ikisininde dogru olmasi gerektigini belirtir.
|| Bu isaretin anlami "veya"dir. Kullanildigi ifadedeki kosullarin yalnizca birinin dogru olmasinin yetecegini belirtir.
< Bu isaretin anlami "kucuktur"dur. Kullanildigi ifadedeki ilk degerin ikinciden kucuk olmasi gerektigini belirtir.
> Bu isaretin anlami "buyuktur"dur. Kullanildigi ifadedeki ilk degerin ikinciden buyuk olmasi gerektigini belirtir.
== Bu isaretin anlami "esittir"dir. Kullanildigi ifadedeki degerlerin esit olmasi gerektigini belirtir.
<= Bu isaretin anlami "kucuk-esit"dir. Kullanildigi ifadedeki ilk degerin ikinciden kucuk veya esit olmasi gerektigini belirtir.
>= Bu isaretin anlami "buyuk-esit"dir. Kullanildigi ifadedeki ilk degerin ikinciden buyuk veya esit olmasi gerektigini belirtir.
!= Bu isaretin anlami "esit degildir"dir. Kullanildigi ifadede iki deger arasinda esitsizlik olmasi gerektigini belirtir.
! Bu isaretin anlami "degildir"dir. Kullanildigi ifadenin dogru olmamasi gerektigini belirtir.
Siradaki terimimiz "Format". Bu terimde pawnoda sikca karsimiza cikar. Format bir stringte farkli degiskenleri kullanmamizi saglar. ornegin oyuncunun skoru, cani, zirhi vb. Kullanim sekli sudur:
format(yazinin aktarilacagi deger, max boyut,mesaj ve degisken turleri,soldan saga degisken degerleri);
Notlar:
-Yazinin aktarilacagi deger new olarak tanitilmalidir.
-Degiskenler dogru kullanilmalidir.
-Formatta aktarilan deger bir mesajsa gonderme fonksiyonu unutulmamalidir.
ornek Kullanim:
new string[64];//string newimiz [64] ise boyutu
format(string,sizeof(string),"Skorunuz: %d",GetPlayerScore(playerid));//sizeof(string) yani ustte belirledigimiz 64 onun yerine sayi degeride girilebilir. %d sayi degiskeni gostermek icin, GetPlayerScore'da %d'nin alacagi deger
SendClientMessage(playerid,0xFFFFFFAA,string);//Mesaj gonderme fonksiyonu
Degisken Turleri
Degiskenler adi uzerinde degisebilen degerlerdir. Ve bu degerler sayi, yazi vb. farkli turlere sahiptir.
String: Yazi degiskeni - %s /Oyuncu Adi/
Integer: Sayi degiskeni - %i / %d /Skor-Oyuncu ID/
Float: Ondalikli(virgullu) sayi degiskeni(41,156) - %f /Oyuncunun Cani, Poslar/
Character: Tek bir karakter verir - %c
Hex(?): Hexademical bir deger verir - %x
%% : Degistirmeden %'yi verir.
Siradaki terimimiz "Stock". Stock'un kelime anlami stoklamak, depolamaktir. Bir kod grubunun sonucunu veya yaptiklarini bize tek kodla cevirir. Forward terimine benzerler fakat stocklar timer vb. ile cagrilamaz. Pawnoda sikca kullanilan terimler arasinda yer alir.
ornek Kullanim:
stock isim(playerid){//Parantez icine kullanilacak parametreler yazilir. ornegin playerid, text[] vb.
new isimo[MAX_PLAYER_NAME];//En buyuk oyuncu adi buyuklugunde bir new tanimliyoruz.
GetPlayerName(playerid,isimo,sizeof(isimo));//Bu new'e oyuncunun adini atiyoruz.
return isimo;//Atadigimiz ismi ceviriyoruz.
}
//Bu kod kullanildiginda oyuncunun nicki donucektir. ornegin:
new string[256];//Bir new tanimliyoruz
format(string,sizeof(string),"Nickiniz: %s",isim(playerid));//Bu new'e format yoluyla bir deger atiyoruz. "isim(playerid)" sayesinde "%s" oyuncunun adini alir.
SendClientMessage(playerid,-1,string);//string'i mesaj olarak yollar. Sonuc: "Nickiniz: OyundakiAd" seklinde olucaktir.
Siradaki terimimiz "Str(string)". String'in kelime anlami dizedir. Harf dizelerinden olusan kelimeleri, cumleleri karsilastirarak komutlar vb. yapariz. Bu nedenle samp'in en onemli ozelliklerinden biridir. Bir kac farkli kullanimi vardir ben bu kullanimlari tek tek aciklayarak bu onemli konuya gerektigi degeri vermek istedim.
Genel Notlar
Not:Dizeleri tanimlarken dizeye deger atamayi unutmamaliyiz.(new string[256]; gibi.)
Not 2: Dizelere gerekenden fazla deger vermek modumuzun boyutunu sisirecek ve bosuna oyun ici laga neden olucaktir. Bu nedenle gerektiginden fazla deger atamamaya dikkat etmeliyiz. ornegin:
new isim[MAX_PLAYER_NAME+1], string[256];
GetPlayerName(playerid, name, sizeof(name));
format(string,sizeof(string),"Nickiniz: %s",isim);
ustte string 256 olarak tanimlanmis fakat isim new'i en fazla 25(MAX_PLAYER_NAME+1) degerini alir ve onun disinda 10 dize kullanilmis. Yani biz bu stringe 36 degerinide verseydik ayni islevi gorur ve bosa kalabalik yaratmamis olurduk.
Strcmp(String Compare - Dize Karsilastirma)
Bu fonksiyon sayesinde iki stringi karsilastirabiliriz. OnPlayerCommandText publicinde komut yaratirken kullandigimiz icin cok onemli bir fonksiyondur.
ornek Kullanim:
if(!strcmp(cmdtext, "/me", true, 3)) // strcmp(1.string,2.string,buyuk-kucuk harf(false ise duyarli),uzunluk) seklinde kullaniriz
{
if(!cmdtext[3])return SendClientMessage(playerid, 0xFF0000FF, "Kullanim: /me [aksiyon]");//Buradaki cmdtext[3] dizenin 4. elemanini belirtir.(0'dan basladigi icin)
new str[128];
GetPlayerName(playerid, str, sizeof(str));
format(str, sizeof(str), "* %s %s", str, cmdtext[4]);
SendClientMessageToAll(0xFFFF00AA, str);
return 1;
}
Strlen(String Length - Dize Uzunlugu)
Bu fonksiyon sayesinde dizenin uzunlugunu ogrenebiliriz.
ornek Kullanim:
new stringUzunluk = strlen("ornek Kullanim."); // stringUzunluk new'i 15 degerini alir.
Strfind(String Find - Dize Bul)
Bu fonksiyon sayesinde dizede baska bir stringi bulabiliriz. Bu fonksiyona kufur sistemlerinde sikca rastlanir.
ornek Kullanim:
if(strfind("Burda kufur var mi ?", "kufur", true) != -1) //strfind(1.dize,2.dize,buyuk-kucuk harf) seklinde kullanilir. Eger deger bulunmaz ise -1 degeri doner.
{
SendClientMessageToAll(0xFFFFFFFF, "Kufur bulundu!");
}//ornek biraz sacma olabilir fakat sonucta ornek

Strdel(String Delete - Dize Sil)
Bu fonksiyon sayesinde dizeden belirli bir kismi silebiliriz.
ornek Kullanim:
new string[20] = "MertMiT || Sloth";
strdel(string, 0, 11); // Bu islemden sonra string "Sloth" degerini alir.
Strval(String Value - Dize Degeri)
Bu fonksiyon sayesinde bir dizeyi sayisal degere cevirebiliriz.
ornek Kullanim:
new string[4] = "250";
new sayi = strval(string); // sayi degeri 250 olur.
Strcat(String Concatenation - Dize Birlestirme)
Bu fonksiyon sayesinde iki dizeyi birlestirebiliriz. Gercekten cok kullanisli ve ogrenilmesi gereken bir fonksiyondur.
ornek Kullanim:
new string[40] = "Merhaba";
strcat(string, " Dunya!");//Bu islemden sonra string "Merhaba Dunya!" degerini alir.
Strmid(String Mid - Dize Arasinda)
Bu fonksiyon sayesinde dizenin belirli bir kismini alabiliriz.
ornek Kullanim:
strmid(string, "!!! 'Sloth' Disindakileri cikar !!!", 6, 10); //string degeri "Sloth" olur
Strpack(String Pack - Dize Paketle)
Bu fonksiyon sayesinde dizeye deger veririz. Format ile ayni islevi gorur. Hangisinin daha iyi olduguna bende tam emin degilim bir kac tartisma var fakat sanirim strpack daha az bellek kullaniyor.
ornek Kullanim:
strpack(string, "String'in yeni degeri");
Strins(String Insert - Dize Ekle)
Bu fonksiyon sayesinde bir dizeye baska bir dizeyi ekleyebiliriz.
ornek Kullanim:
new pName[MAX_PLAYER_NAME+1];
GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
strins(pName, "[AFK]", 0);
SetPlayerName(playerid, pName);//Oyuncunun adi "[AFK]Nick" seklinde olucaktir
//Bu kullanim 20 harften uzun isimlerde sorun cikarir cunku en yuksek isim uzunlugunu gecerler
Strtok(String Token - Dize **)
Bu fonksiyon sayesinde dizede " "tan sonra gelen yaziyi alabiliriz. Kick komutu vb. icin kullanilir. Kullanilmasi pek onerilmez bunun yerine daha kullanisli incler vardir.
ornek Kullanim:
new cmd[128], idx;
cmd = strtok(cmdtext, idx);
if(strcmp(cmd, "/kick", true) == 0)//cmdtext yerine cmd kullanilmalidir.
{
new tmp[128];
tmp = strtok(cmdtext, idx);//tmp new'ine " "tan sonraki degeri atar
if(strlen(tmp) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "Kullanim: /kick [playerid]");
Kick(strval(tmp));//tmp'nin sayi degerini alir ve o idye denk gelen oyuncuyu kickler
return 1;
}
strtok(const string[], &index)//Strtoku kullanmak icin tanitmaniz gerekir
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
Floatstr(Float String - Ondalikli Sayi Dize)
Bu fonksiyon sayesinde dizenin degerini float'a cevirebiliyoruz(Can-zirh-x,y,z islemleri icin gerekir).
ornek Kullanim:
new before[4] = "6.9";//Dizeye 6.9'u yazi olarak atiyor
SetPlayerPos(playerid, 0, 0, floatstr(before));//Yaziyi 6.9 olarak float degerine ceviriyor.
//Daha anlasilabilir olmasi icin wikiden alinti
simdilik Benden Bu Kadar.
Anlatim Tamamen Bana Aittir Eger Yardimci Olduysam Tesekkur Etmenizi Rica Ediyorum.