Fazla söze gerek yok. Direk bu ne işe yarıyor sorusuna cevap vereyim. Komutlardaki değerleri bulmak için strtok foksiyonunu kullandık. Strtok un farklı bir surumunu yazdım denilebilir. MsDos a benzetmek istedim. Yani "/silahver -id -silahid -mermi" gibi. Daha kullanışlı olacağını düşündüm.
#define MaxTire 4
stock TireOkuyucu(yazi[],tire){
new tex[64],i,x=0,tirekord[MaxTire+1];
for(i=0;i<MaxTire;i++) tirekord[i]=-1;
if(tire>MaxTire||tire<1){
format(tex,255,"0xHata");
return tex;
}
for(i=0;i<strlen(yazi);i++){
if(yazi[i]=='-'&&x<MaxTire){
tirekord[x]=i; x++;
}
}
if(tirekord[tire]==-1) tirekord[tire]=strlen(yazi)+1;
if(tirekord[tire-1]==-1){
format(tex,255,"0xHata");
return tex;
}
strmid(tex,yazi,tirekord[tire-1]+1,tirekord[tire]-1);
return tex;
}Kullanımı basit. TireOkuyucu(cmdtext,istenilen tire);
Mesela istenilen tire bir ise "/silahver -id -silahid -mermi" komutundan "id" kısmını okuyucaktır.
Örnek olarak bir dcmd foksiyonu götereyim.
dcmd_arac(playerid,params[]){
if(VT_Oku_Sayi(Hesap(playerid),"glevel")<3) return Cbeyaz(playerid,"Bu komutu adminler verebilir.");
new t1[64],t2[64],t3[64],t4[64];
t1=TireOkuyucu(params,1);
t2=TireOkuyucu(params,2);
t3=TireOkuyucu(params,3);
t4=TireOkuyucu(params,4);
if(!strcmp(t4,"0xHata",true)) return Cbeyaz(playerid,"(Kullanım) /arac -id -modelid -renk1 -renk2");//Bunu ekleme sebebi oyuncu bilgileri eksik girerse uyarır.
if(!IsPlayerConnected(StrVal(t1))) return Cbeyaz(playerid,"ID numarası geçersiz.");
new Float:X,Float:Y,Float:Z,e;
GetPlayerPos(StrVal(t1),X,Y,Z);
e=CreateVehicle(StrVal(t2),X+1,Y,Z,0,StrVal(t3),StrVal(t4),-1);
PutPlayerInVehicle(StrVal(t1),e,0);
return 1;
}