GTATurk.com Reklam Hizmetleri

Haberler:

Gönderen Konu: Kullanisli Fonksiyonlar  (Okunma sayısı 13873 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı RyDeR`

  • PAWN Coder
  • Bölüm Yetkilisi
  • ****
  • İleti: 5445
    • Ödüller
Kullanisli Fonksiyonlar
« : 18 Eylül 2010 ; 01:53:06 »
Kullanisli Fonksiyonlar


Ön söz
Bu konuda yazdiginiz kullanisli fonksiyonlari paylasabilirsiniz.

Fonksiyon nedir?
Bir kod'un return degeri varsa, yani faydali bir return degeri, bu koda süphesiz fonksiyon denir.

Konu kurallari
  • Kodunuzu paylasmadan önce denemeniz lazimdir!
  • Paylastiginiz kod eger sizin degilse, yaninda sahibini bildirin!
  • Anlamsiz yorumlar atmayin.
  • Paylastiginiz kodlar sadece ve sadece fonksiyon olmasi lazim aksi taktirde bunlar silinebilir.
« Son Düzenleme: 28 Şubat 2011 ; 23:40:36 Gönderen: RyDeR` »
"The secret to creativity is knowing how to hide your sources" ─ Albert Einstein


Reklamlar

Tüm oyun fırsatları için tıklayın !

  Reklamlar


Çevrimdışı RyDeR`

  • PAWN Coder
  • Bölüm Yetkilisi
  • ****
  • İleti: 5445
    • Ödüller
Ynt: Kullanisli Fonksiyonlar
« Yanıtla #1 : 18 Eylül 2010 ; 01:54:56 »
Ilk önce ben baslayim:

Bilgi (replaceSwear)
Bir string icindeki küfürlu yaziyi '*' haline cevirir.

Code
Alıntı yapılan: PAWN Code
stock replaceSwear(string[], badWord[], replace = '*')
{
   new
      i
   ;
   while((i = strfind(string, badWord, true)) != -1)
   {
       for(new x = (i + strlen(badWord)); i != x; ++i)
       {
           string[i] = replace;
       }
   }
   return 1;
}

Örnek
Alıntı yapılan: PAWN Code
public OnPlayerText(playerid, text[])
{
   new
      badWords[][] =
      {
         "mal",
          "salak"
      }
   ;
   for(new i; i != sizeof(badWords); ++i)
   {
      replaceSwear(text, badWords[i]);
   }
   return 1;
}

Bu örnek chat'de yazilan küfürleri '*' ile degistirir. (Mesela "mal" yazan olursa "***" haline cevirir).
(Istediginiz kadar önlemek icin küfürler ekleyebilirsiniz.)
« Son Düzenleme: 17 Eylül 2011 ; 01:20:22 Gönderen: RyDeR` »
"The secret to creativity is knowing how to hide your sources" ─ Albert Einstein

Çevrimdışı RyDeR`

  • PAWN Coder
  • Bölüm Yetkilisi
  • ****
  • İleti: 5445
    • Ödüller
Ynt: Kullanisli Fonksiyonlar
« Yanıtla #2 : 18 Eylül 2010 ; 12:14:00 »
Bilgi (replaceChar)
Bir string icindeki karakterleri baska bir karakter ile degistirir.

Code

Alıntı yapılan: PAWN Code
stock replaceChar(string[128], findchar, replacechar)
{
    for(new i; string[i] != 0; ++i)
    {
        if(string[i] == findchar) string[i] = replacechar;
    }
    return string;
}

Örnek
Alıntı yapılan: PAWN Code
printf("%s", replaceChar("replaceChar Fonksiyonumu Deniyorum", ' ', '+'));
Sonuc olarak:
Alıntı yapılan: PAWN Code
"replaceChar+Fonksiyonumu+Deniyorum"
verir..
"The secret to creativity is knowing how to hide your sources" ─ Albert Einstein

Çevrimdışı RyDeR`

  • PAWN Coder
  • Bölüm Yetkilisi
  • ****
  • İleti: 5445
    • Ödüller
Ynt: Kullanisli Fonksiyonlar
« Yanıtla #3 : 18 Eylül 2010 ; 12:18:25 »
Bilgi (returnOrdinal)
Bir numaranin inglizcedeki sira sayisini verir.

Code
Alıntı yapılan: PAWN Code
stock returnOrdinal(number)
{
   new
      string[4]
   ;
   number = number < 0 ? -number : number;
   
   if(10 < (number % 100) && (number % 100) < 14) return format(string, 4, "%s", "th"), string;

   switch(number % 10)
   {
      case 1: return format(string, 4, "%s", "st"), string;
      case 2: return format(string, 4, "%s", "nd"), string;
      case 3: return format(string, 4, "%s", "rd"), string;
      default: return format(string, 4, "%s", "th"), string;
   }
   return format(string, 4, "%s", "N/A"), string;
}

Örnek
Alıntı yapılan: PAWN Code
printf("%s", returnOrdinal(3));
Sonuc olarak:
Alıntı yapılan: PAWN Code
"rd"
verir..
"The secret to creativity is knowing how to hide your sources" ─ Albert Einstein

Çevrimdışı DayZ_

  • Russians
  • ****
  • İleti: 1275
Ynt: Kullanisli Fonksiyonlar
« Yanıtla #4 : 18 Eylül 2010 ; 12:56:25 »
Bilgi (PlayerName)
GetPlayerName yerine kısaca PlayerName(playerid) yazarak isimi elde edebilirsiniz.

Code
Alıntı yapılan: Pawn Code
stock PlayerName(playerid)
{
  new name[255];
  GetPlayerName(playerid, name, 255);
  return name;
}
Örnek
Alıntı yapılan: Pawn Code
public OnPlayerConnect(playerid)
{
new string[256];
format(string,sizeof(string),"[Giris] %s sunucuya giris yapti.",PlayerName(playerid));
SendClientMessageToAll(0xFFFFFFF,string);
return 1;
}


Mirkwood Archers, We come from Mirkwood

Çevrimdışı RyDeR`

  • PAWN Coder
  • Bölüm Yetkilisi
  • ****
  • İleti: 5445
    • Ödüller
Ynt: Kullanisli Fonksiyonlar
« Yanıtla #5 : 18 Eylül 2010 ; 15:46:08 »
Dayz_, array size cok buyuk. MAX_PLAYER_NAME veya 24 olmasi gerek. (20'den dusuk olmasin)

Az önce hiz testi yaptim ve 255 yerine 24 kullaninca kod 2 defa daha hizli calisiyor.
"The secret to creativity is knowing how to hide your sources" ─ Albert Einstein

Çevrimdışı RyDeR`

  • PAWN Coder
  • Bölüm Yetkilisi
  • ****
  • İleti: 5445
    • Ödüller
Ynt: Kullanisli Fonksiyonlar
« Yanıtla #6 : 18 Eylül 2010 ; 16:45:50 »
Bilgi (convertNumber)
Bir numaryi normal okudugumuz hale dönusturur.

Code
Alıntı yapılan: PAWN Code
stock convertNumber(value)
{
   new
      string[24]
   ;
   format(string, sizeof(string), "%d", value);
   
   for(new i = (strlen(string) - 3); i > (value < 0 ? 1 : 0) ; i -= 3)
   {
       strins(string[i], ",", 0);
   }
   return string;
}

Örnek
Alıntı yapılan: PAWN Code
printf("%s", convertNumber(50000000));
Sonuc olarak:
Alıntı yapılan: PAWN Code
"50,000,000"
verir..

Önemli Not
Integer limitinin 2,147,483,647 olmasi nedeniyle bu miktardan fazla girdiginizde bug'e girer ve baska miktarlar verir.
« Son Düzenleme: 19 Eylül 2010 ; 11:43:37 Gönderen: » RyDeR « »
"The secret to creativity is knowing how to hide your sources" ─ Albert Einstein

Çevrimdışı DayZ_

  • Russians
  • ****
  • İleti: 1275
Ynt: Kullanisli Fonksiyonlar
« Yanıtla #7 : 18 Eylül 2010 ; 17:46:19 »
Bilgi (split)
Bir simgeden önce veya sonraki değerleri okutmaya yarar.


Code
Alıntı yapılan: Pawn Code

stock split(const strsrc[], strdest[][], delimiter)
{
   new i, li;
   new aNum;
   new len;
   while(i <= strlen(strsrc)){
       if(strsrc==delimiter || i==strlen(strsrc)){
           len = strmid(strdest[aNum], strsrc, li, i, 128);
           strdest[aNum][len] = 0;
           li = i+1;
           aNum++;
      }
      i++;
   }
   return 1;
}

Örnek
Alıntı yapılan: Pawn Code

public OnPlayerSpawn(playerid)
{
new isimsplit[3][24], isim[MAX_PLAYER_NAME];
GetPlayerName(playerid,isim,sizeof(isim));
split(isim, isimsplit, '_');
new string[256];
format(string,sizeof(string),"Sayın %s basariyla giris yaptiniz",isimsplit[2]);
SendClientMessage(playerid,0xFFFFFFFF,string);
}


Sonuç
Eğer sunucuya Cristiano_Ronaldo olarak girerseniz bu kod sayesinde görüntü şöyle oluşacaktır.
Alıntı yapılan: Örnek

Sayın Ronaldo basariyla giris yaptiniz



*split'in değerini değiştirerek ( 2 soyad 1 _ 0 ise adı temsil ediyor) fonksiyonu değiştirebilirsiniz.
*Araç sistemleri, ev sistemlerinde yaygın bir fonksiyondur.


P.S:

Split fonksiyonunun sahibi Y_Less veya DracoBlue'ya teşekkürlerimi sunar gözlerinden öperim.
« Son Düzenleme: 18 Eylül 2010 ; 18:00:19 Gönderen: DayZ_ »


Mirkwood Archers, We come from Mirkwood

Çevrimdışı RyDeR`

  • PAWN Coder
  • Bölüm Yetkilisi
  • ****
  • İleti: 5445
    • Ödüller
Ynt: Kullanisli Fonksiyonlar
« Yanıtla #8 : 18 Eylül 2010 ; 18:24:17 »
Bilgi (returnVehicleID)
Bir aracin isiminden ID'sini bulur.

Code
Alıntı yapılan: PAWN Code
stock returnVehicleID(vName[])
{
   new
      vNames[][] =
      {
         "Landstalker", "Bravura", "Buffalo", "Linerunner", "Pereniel", "Sentinel", "Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana", "Infernus",
         "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam", "Esperanto", "Taxi", "Washington", "Bobcat", "Mr Whoopee", "BF Injection",
         "Hunter", "Premier", "Enforcer", "Securicar", "Banshee", "Predator", "Bus", "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach", "Cabbie",
         "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral", "Squalo", "Seasparrow", "Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder",
         "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair", "Berkley's RC Van", "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider",
         "Glendale", "Oceanic", "Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy", "Hermes", "Sabre", "Rustler", "ZR-350", "Walton", "Regina",
         "Comet", "BMX", "Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper", "Rancher", "FBI Rancher", "Virgo", "Greenwood",
         "Jetmax", "Hotring", "Sandking", "Blista Compact", "Police Maverick", "Boxville", "Benson", "Mesa", "RC Goblin", "Hotring Racer A", "Hotring Racer B",
         "Bloodring Banger", "Rancher", "Super GT", "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropdust", "Stunt", "Tanker", "RoadTrain",
         "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra", "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck", "Fortune", "Cadrona", "FBI Truck",
         "Willard", "Forklift", "Tractor", "Combine", "Feltzer", "Remington", "Slamvan", "Blade", "Freight", "Streak", "Vortex", "Vincent", "Bullet", "Clover",
         "Sadler", "Firetruck", "Hustler", "Intruder", "Primo", "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite", "Windsor", "Monster A",
         "Monster B", "Uranus", "Jester", "Sultan", "Stratum", "Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito", "Freight", "Trailer",
         "Kart", "Mower", "Duneride", "Sweeper", "Broadway", "Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400", "Newsvan", "Tug", "Trailer A", "Emperor",
         "Wayfarer", "Euros", "Hotdog", "Club", "Trailer B", "Trailer C", "Andromada", "Dodo", "RC Cam", "Launch", "Police Car (LSPD)", "Police Car (SFPD)",
         "Police Car (LVPD)", "Police Ranger", "Picador", "S.W.A.T. Van", "Alpha", "Phoenix", "Glendale", "Sadler", "Luggage Trailer A", "Luggage Trailer B",
         "Stair Trailer", "Boxville", "Farm Plow", "Utility Trailer"
      }
   ;
   for(new i; i != sizeof(vNames); ++i)
   {
       if(strfind(vNames[i], vName) != -1)
       {
         return i + 400;
       }
   }
   return INVALID_VEHICLE_ID;
}

Örnek
Alıntı yapılan: PAWN Code
printf("%d", returnVehicleID("Sultan"));
Sonuc olarak:
Alıntı yapılan: PAWN Code
560
verir cünku Sultan adli aracin ID'si 560'dir.

Not: Arac isimleri alintidir.
« Son Düzenleme: 18 Eylül 2010 ; 18:28:16 Gönderen: » RyDeR « »
"The secret to creativity is knowing how to hide your sources" ─ Albert Einstein

Çevrimdışı RyDeR`

  • PAWN Coder
  • Bölüm Yetkilisi
  • ****
  • İleti: 5445
    • Ödüller
Ynt: Kullanisli Fonksiyonlar
« Yanıtla #9 : 19 Eylül 2010 ; 19:08:29 »
Bilgi (reverseString)
Bir stringi cevirir.

Code
Alıntı yapılan: PAWN Code
stock reverseString(input[])
{
   new
       string[128]
   ;
   for(new x = (strlen(input) - 1), i = x; i > -1; i--)
   {
       string[x - i] = input[i];
   }
   return string;
}

Örnek
Alıntı yapılan: PAWN Code
printf("%s", reverseString("reverseString fonksiyonumu deniyorum!"));
sonuc olarak:
Alıntı yapılan: PAWN Code
"!muroyined umunoyisknof gnirtSesrever"
verir..
"The secret to creativity is knowing how to hide your sources" ─ Albert Einstein

Çevrimdışı  RunDll32 

  • McReary Mob
  • ***
  • İleti: 1184
  • Freeroam Anlayışı Değişiyor.
Ynt: Kullanisli Fonksiyonlar
« Yanıtla #10 : 19 Eylül 2010 ; 20:07:17 »
Saolasın bütün fonksiyonlar için.

Çevrimdışı RyDeR`

  • PAWN Coder
  • Bölüm Yetkilisi
  • ****
  • İleti: 5445
    • Ödüller
Ynt: Kullanisli Fonksiyonlar
« Yanıtla #11 : 19 Eylül 2010 ; 21:38:15 »
Önemli degil yanliz sizinde birkac fonksiyon koymanizi isterdim..
"The secret to creativity is knowing how to hide your sources" ─ Albert Einstein

Çevrimdışı  -SayKo- 

  • Russians
  • ****
  • İleti: 3878
  • Psychoᵀᴹ
Ynt: Kullanisli Fonksiyonlar
« Yanıtla #12 : 19 Eylül 2010 ; 21:39:13 »
Teşekkürler.  :helal:
LACRİMOSA

Çevrimdışı Skyline.

  • McReary Mob
  • ***
  • İleti: 1787
  • Eski Rumuz: Cooker-X
Ynt: Kullanisli Fonksiyonlar
« Yanıtla #13 : 19 Eylül 2010 ; 21:46:17 »
Bilgi (strcharc)
String'deki bir karakterin stringde kaç defa tekrarlandığı sonuç olarak döner

Code
Alıntı yapılan: PAWN Code
stock strcharc(string[],_char)
{
   new count=0;
   for(new i = 0; i<strlen(string); i++)
   {
      if(string[i]==_char){count++;}
   }
   return count;
}
Örnek
Kod: [Seç]
printf("%d",strcharc("s s",' '));Sonuc olarak:1 değerini consolda yazar çünkü boşluk "s s" stringinde sadece bir kez vardır.

Dipnot:bu arada renklendiren olabilirse sevinirim,yani kodu düzene sokan,kaba taslak yazdımda.
« Son Düzenleme: 19 Eylül 2010 ; 22:24:01 Gönderen: laserlaser »

Çevrimdışı RyDeR`

  • PAWN Coder
  • Bölüm Yetkilisi
  • ****
  • İleti: 5445
    • Ödüller
Ynt: Kullanisli Fonksiyonlar
« Yanıtla #14 : 19 Eylül 2010 ; 21:58:20 »
+ chari kullandiginda error verir, o yuzden önunde _'de koydum.

Kod: [Seç]
[quote author="PAWN Code"][font=courier new]stock strcharc(string[],_char)
{
[color=#1175BD]new[/color] count=[color=#5A89A3]0[/color];
[color=#1175BD]for[/color]([color=#1175BD]new[/color] i = [color=#5A89A3]0[/color]; i<strlen(string); i++)
{
[color=#1175BD]if[/color](string[[color=darkgrey]i[/color]]==_char){count++;}
}
[color=#1175BD]return[/color] count;
}[/font][/quote]

NOT: Bunu elimle tek tek degil, programla renklendirilmistir.
« Son Düzenleme: 19 Eylül 2010 ; 21:58:48 Gönderen: » RyDeR « »
"The secret to creativity is knowing how to hide your sources" ─ Albert Einstein