Reklam gösterimini engelleyici yazılım kullandığınızı görüyoruz.
Sitemizin ayakta kalıp sizlere hizmet edebilmek için en büyük gelir kaynağı sayfamızda gösterilen reklamlardır.
Reklam gösterimde bizim sayfamıza ayrıcalık tanıyarak ayakta kalmamıza destek olmak ister misiniz ?

Yazılı Ders   | Fonksiyonlar ve Döngüler

Konu

#1
Son Düzenleme: 09-05-2017, Saat: 16:44, Düzenleyen: Anıl Can.
Bu derste size fonksiyonlar,döngüler ve birkaç kodlama stili hakkında bilgi vereceğim.Eğer ilk konumu okumadıysanız zorlanabilirsiniz.

Plugin Kodlamada Temel Bilgiler

Fonksiyonlar:

Pawn size kendi fonsiyonlarınızı oluşturmanızı sağlar.

Örnek:


PHP Kod:
merhaba()
{
    
client_print(0,print_chat,"Fonsiyon calistirildi")

 
client_print ( index, type, const message [], any:.... )

index : Mesajı görecek kişileri belirlersin. Eğer herkesin görmesini istiyorsanız 0 yazınız.
type: 3 farklı tipi vardır. print_chat mesaj say kısmında gözükür.print_center mesaj aimin 2-3 cm yukarısında çıkar.print_console mesaj konsolda gözükür.

Verdiğim en basitinden bir fonksiyon örneğidir.Şimdi başka bir fonsiyon oluşturalım ve parametre koyalım fonksiyona.

PHP Kod:
toplanumber1,number2 )
{
    new 
toplam number1 number2
    
    
return toplam

Parametreler float veya dizi şeklinde olabilir.Aynı fonskiyonu float şeklinde düzenliyelim.

PHP Kod:
toplaFloatnumber1Floatnumber2 )
{
    new 
Floattoplam number1 number2
    
    
return toplam
}

topla_dizi(array[], ab)
{
 
  new first = array[a]
 
  new second = array[b]
 
  new sum topla(firstsecond  //bir onceki fonksiyon
 
   
return sum


Şimdi küçük bir say komuduyla bilgilerimizi pekiştirelim.
PHP Kod:
/* Script generated by Pawn Studio */

#include < amxmodx >
#include < amxmisc >

#define PLUGIN    "New Plugin"
#define AUTHOR    "Unknown"
#define VERSION    "1.0"

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
register_clcmd"say /selam""selamal" 
}
public 
selamalid )
{
    new 
name32 ];
    
get_user_nameidname31 )
    
client_printidprint_chat"Aleykum Selam %s.Servere HosGeldin"name )


get_user_name ( index, name[], len ) Bu komut indexin ismini öğrenmemizi sağlar.
Şimdi gelelim mesaj kısmına indexi id yaptık.Böylece sadece mesajı kendisi görücek.print_chat dan dolayı mesaj say kısmında gözükür.Mesaj kısmında %s adlı kısım önemli bir noktadır.Biliyorsunuz name degğişkeni bir string türündedir.( Bir önceki derste anlatıldı. )  Peki değer integer yada float olursa değeri nasıl döndürebiliriz.

%s : String türündeki verileri döndürür.
%i : Integer türündeki verileri döndürür.
%f : Float türündeki verileri döndürür.

                                    KOŞUL İFADELERİ
Koşul ifadeleri pawnın temelini oluşturur ve kullanışlıdırlar.Bunların birkaç çeşidi vardır.

if - else döngüsü : Bu döngü if içindeki koşul doğruysa çalıştırır eğer değer false ise else komudunu çalıştırır.Küçük bir örnekle daha iyi anlamanızı sağlıyacağım.
PHP Kod:
/* Plugin generated by AMXX-Studio */

#include <amxmodx >
#include < amxmisc >

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"


public plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
}
public 
client_connectid )
{
    new 
name32 ];
    
get_user_nameidname31 );
    if( 
accessidADMIN_RESERVATION) )  // Eğer yetkisi varsa
    
{
        
client_printidprint_chat,"%s adli yetkili servere giris yapti."name )
    }
    else 
// Yetkisi yoksa
    
{
        
client_printidprint_chat,"%s adli kisi servere giris yapti."name )
    }
        

Şimdi gelelim açıklamaya;

client_connect adlı forward amxmodx kütüphanesine bağlı bir komuttur.Bir kişi servere girdiği an çalışır.
access ( id, level ) bu komut yetki kontrolü yapmamızı sağlıyor.

Şimdi önemli operatörlerden bahsedeceğim.

&& ( Ve ) : Bu operatör koşula "ve" anlamını verir.

|| ( ya da ) : Bu operatör koşula "ya da" anlamını katar.

! ( olumsuz ) : Bu operatör koşula olumsuz bir anlam yükler.

!= ( eşit değildir. ) : Bu operatör eşit değil anlamına gelir.
> , >=, <, <= : Sırasıyla büyüktür, büyük veya eşittir, küçüktür, küçük veya eşittir.

Şimdi bu operatör ve if yapısını içeren bir örnek verelim.

PHP Kod:
#include < amxmodx >
#include < amxmisc >
#include < fun >
#include < cstrike >

#define PLUGIN "Anil Can"
#define VERSION "1.0"
#define AUTHOR "Frag Satin Al"

new g_ucret;
public 
plugin_init() 
{
    
register_pluginPLUGINVERSIONAUTHOR )
    
register_clcmd"say /fragal""kontrol" );
    
    
g_ucret register_cvar"frag_ucret""1000" );
}
public 
kontrolid )
{
    if( 
accessidADMIN_RESERVATION ) || get_user_teamid ) == 2  
    {
        if( !( 
cs_get_user_moneyid ) > get_pcvar_numg_ucret ) ) )
        {
            
client_printidprint_chat"Uzgunum yeterli paran yok.Gereken Ucret %d $"get_pcvar_numg_ucret ) );
            return 
PLUGIN_HANDLED;
        }
        else
        {
            
set_user_fragsidget_user_fragsid ) + );
            
cs_set_user_moneyidcs_get_user_moneyid ) - get_pcvar_numg_ucret ) );
            
client_printidprint_chat"%d $ karsiliginda frag satin aldin"get_pcvar_numg_ucret ) );
        }
    }
    return 
PLUGIN_HANDLED;

Şimdi ne yaptığımı tek tek açıklamaya gelelim.

Belli bir ücret karsiliginda frag satin alma plugini yazdım.Ücreti cvara bağlamak istedim o yüzden 

new g_ucret

Frag satin almak için bir say komudu oluşturdum.Sonra şimdi cvarı tanıtmaya gelelim.

g_ucret = register_cvar( "frag_ucret" , "1000" );

Birinci parametre cvarmızın adı , 2. parametre ise cvarın değeridir.

Şimdi saydan /fragal yazınca kontrol adlı publice yönlendiriyor eklenti.Ben sadece "b" yetkisi yada "CT" takımının frag satın almasını istiyorum o yüzden;

if( access( id, ADMIN_RESERVATION ) || get_user_team( id ) == 2 )

Koşulunu ekledim.Şimdi ise oyuncunun parasını kontrol etmemiz lazım.O yüzden 1 tane daha if koşulu ekliyoruz.

if( !( cs_get_user_money( id ) >= get_pcvar_num( g_ucret ) ) )

cs_get_user_money( index ) : Indexin parasını öğrenmemizi sağlar.[
get_pcvar_num adlı komut integer olarak tanımlandırılan cvarları döndürmemizi sağlar.,

Parası yetmiyorsa bir uyarı mesajı koyup çağrıyı durdurdum.Şimdi gelelim frag ekleyip parayı düşürmek kaldı.

set_user_frags( index, frags )  :Indexin fragını değişmemizi sağlar.

get_user_frags( index ) : Indexin fragını öğreneriz.
cs_set_user_money( index, money ) : Indexin parasını değişmemizi sağlar.

swtich : Bu if yapsının bir alternatifidir.

PHP Kod:
if( get_user_teamid ) == 1)
{
    
//
}
else if(
get_user_teamid ) == )
{
    
//
}
else
{
    
//

:arrow:


PHP Kod:
switch( get_user_teamid )
{
    case 
:
    {
        
//
    
}
    case 
:
    {
        
//
    
}
    default :
    {
        
//
    
}

? :

koşul ? durum1 : durum2

Eğer koşulun değeri true ise durum1 çalışıcak eğer false ise durum2 çalışıcak.Küçük bir örnek verelim.

PHP Kod:
#include < amxmodx >
#include < amxmisc >
#include < cstrike >

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"


public plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_clcmd"say /bonus" "bonusver" );
}
public 
bonusverid )
{
    
accessidADMIN_KICK ) ? cs_set_user_moneyidcs_get_user_moneyid ) +5000 ) : cs_set_user_moneyidcs_get_user_moneyid ) +500 );

Saydan /bonus yazdığımızda eğer kick yetkisi varsa 5000$ bonus ama yoksa 500$ bonus vericek.

                                                    DÖNGÜLER
Döngüler işinize çok yarıyacak ve kullanışlı fonksiyonlardır.

for döngüsü :


for( değişken; koşul; artım )

Buradaki mantık değişken koşul durumunu sağlıyana kadar döngü sürekli dönmeye devam edicektir.Örnekle daha iyi anlamınızı sağlamaya çalışacağım.

PHP Kod:
#include < amxmodx >
#include < amxmisc >
#include < cstrike >

#define PLUGIN "Toplu Slay"
#define VERSION "1.0"
#define AUTHOR "Anil Can"


public plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_clcmd"say /oldur" "t_oldur" );
}
public 
t_oldurUid )
{
    new 
players32 ], inumid;
    
get_playersplayersinum"ae""TERRORIST" );
    for( new 
0inum++ )
    {
        
players] = id
        user_kill
id);
    }

get_players( players[ MAXPLAYERS ], &num, const flags[] = "", const team[] = "" )

players [ MAXPLAYERS ] : Indexleri depolamamız sağlar.
num : Oyuncu sayısı toplamı 
flags : 
"a" Ölü oyuncuları içine alma
"b" Canlı oyuncuları içine alma
"c" Botları içine alma
"d" Gerçek oyuncuları ( bot olmayanları ) içine alma
"e" Takıma Özel yapmanızı sağlar
"f" Isme özel yapmanızı sağlar
"g" Büyük küçük harf duyarlılığını yoksay
"h" HLTV proxy içine alma
"i" Bağlı oyuncuları içine al.
team : Eğer flag "e" yada "f" yazdıysanız burayı doldurmalısınız.Örnek yukarıda vardır.

Şimdi anlamanız için bir senaryo kuralım.Farzayalım T 6 da kişi var. 2 kişi ölü 4 kişi canlı.get_players komuduyla num 4' e eşit oldu.Bu arada indexi açıklarsam; indexin değeri bir sayısal değerdir ve bu 4 kişi [1-4] arasında index değeri alır.Hepsini öldürmek için for döngüsünü çalıştırıyoruz.For döngüsünde i değeri 4 e ulaşana kadar döngü dönmeye devam edicek ve döngü sona ericek.Yazım kolaylığı olsun diye players[ i ] = id eşitledim ve o indexi öldürdüm.

while:

Bu daha basit bir döngü tek bir parametresi vardır.Örnekle açılayım.


PHP Kod:
while( i )
{
    
//

Burdaki mantık i değeri 5 ten küçük olduğu sürece döngü dönmeye devam edecektir.

do.. while :

Bunun whileden farkı çalışan komut while önce çalışır buda değeri false olsa bile en az 1 kez döngü çalışır.

PHP Kod:
do
{
    
//
}
while( 
 i 



Sadece CS:GO ekletisi yapıyorum 1.6 plugin isteklerine bakmıyorum.

Serverinize özel go eklentisi için steam üzerinden iletişime geçin

Steam :   https://steamcommunity.com/id/cananil44

Cevapla
#2
Eline Emeğine Sağlık Anılcım


                                                                                                                                            CoonquaR
                                                                                                                    https://www.facebook.com/CoonquaR
Cevapla
#3
Elıne sağlık.


Cevapla
#4
Çok güzel anlatmissin eline sağlık


Cevapla
#6
Saol ...


Cevapla
#7
Son Düzenleme: 10-05-2017, Saat: 20:57, Düzenleyen: Grinin 34 Tonu.
Yazıda büyük emek var Teşekkürler Gülmekten Ölüyorum Videolu anlatımda gelirse tadından yenmez.


                                          Webdiyo.com ~ Yetkili

                                     " Bende gizli olduğunu sezenler olmuş."
                      > Steam Profilim <    (Arkadaş olarak ekleyebilirsin. )
                 
Cevapla
#8
While Kullanımını Ben Programlamada Böyle Öğrendim Ama ;

int i = 1;
while(i < 5)
{
// Komut
i++;
}

Böylemidir Yoksa Bu Amxmodx'de Değişmişmidir ?


Cevapla
#9
Öylede kullanabilrsin ama bazen değeri arttırmaman gereken koşullar oluyor ama yaptığın yanlış bir şey değil


Sadece CS:GO ekletisi yapıyorum 1.6 plugin isteklerine bakmıyorum.

Serverinize özel go eklentisi için steam üzerinden iletişime geçin

Steam :   https://steamcommunity.com/id/cananil44

Cevapla
#10
Teşekkürler.


Cevapla


Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da

Task