AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Help me toptime plugin (https://forums.alliedmods.net/showthread.php?t=326837)

diavolu111 08-19-2020 08:50

Help me toptime plugin
 
Code:

#include <amxmodx>
#include <amxmisc>
#include <nvault>

#define PLUGIN "Toptime ( Aktiflik Sureleri )"
#define VERSION "1.0"
#define AUTHOR "Fatih ~ EjderYa"


#define MOTD_KISI_SAYISI 10
#define ZAMAN_ASIMI_GUN 7
#define SIFIRLAMA_YETKISI ADMIN_RCON
#define KAYIT_DOSYA_YOLU_MOTD "TopTime15.txt"
#define KAYIT_DOSYA_YOLU "addons/amxmodx/data/vault/TopTime15.vault"

#define PuanVermePeriyotu 60

new Dosya , OyuncuIsmi[33][35] , Siralama[33]

public plugin_init() {
        register_plugin(PLUGIN, VERSION, AUTHOR)
       
        register_clcmd("amx_toptime_sifirla","Sifirla")
        register_clcmd("say /online","online_surem")
        register_clcmd("say .online","online_surem")
        register_clcmd("say /onlinemenu","onlinemenu")
        register_clcmd("say .onlinemenu","onlinemenu")
        register_clcmd("say /toptime","toptime")
        register_clcmd("say .toptime","toptime")
       
        set_task(5.0,"KayitDosyasiniOlustur")
       
}
public online_surem(id)
        client_print_color(id,print_team_default,"^4Aktiflik Sureniz : ^1%s  ^4Gunde Ortalama : ^1%s",Zaman_Ogren(id,nvault_get(Dosya,OyuncuIsmi[id])),Zaman_Ogren(id,Zaman_Farki_Hesapla(id)))
       
public BilgiGoster(id,Uid)
        client_print_color(id,print_team_default,"^3%s ^4Oyuncusuna Ait Aktiflik Suresi : ^1%s  ^4Gunde Ortalama : ^1%s",OyuncuIsmi[Uid],Zaman_Ogren(Uid,nvault_get(Dosya,OyuncuIsmi[Uid])),Zaman_Ogren(Uid,Zaman_Farki_Hesapla(Uid)))

public Zaman_Farki_Hesapla(id){



        new KayitSatiri[40]
        formatex(KayitSatiri,charsmax(KayitSatiri),"%s_Kyt",OyuncuIsmi[id])
       
        //                                        ZAMAN / GUN
        new Gun = (Zaman_Hesapla() - nvault_get(Dosya,KayitSatiri))/1440
        if ( Gun == 0 ) Gun = 1
        return (nvault_get(Dosya,OyuncuIsmi[id]) / Gun )


}

public onlinemenu(id){
       
        new Menu = menu_create("\r*** \wOyuncu Sec \r***", "Menu_devam")
               
               
        new Oyuncular[32] , Num
        get_players(Oyuncular,Num,"c")
       
        new Isim[36],Numara[4]
        for ( new i ; i < Num ; i++ ){
                if ( id != Oyuncular[i] ){
                        get_user_name(Oyuncular[i],Isim,charsmax(Isim))
                        num_to_str(Oyuncular[i],Numara,charsmax(Numara))
                        menu_additem(Menu, Isim, Numara)
                }
        }
       
        menu_setprop(Menu, MPROP_NEXTNAME, "Ileri"); 
        menu_setprop(Menu, MPROP_BACKNAME, "Geri");
        menu_setprop(Menu,MPROP_EXITNAME,"Cikis")
        menu_setprop(Menu,MPROP_EXIT, MEXIT_NORMAL)
        menu_display(id,Menu)                       
}
public Menu_devam(id, Oylama_menu , item){
       
        if( item == MENU_EXIT )
                return PLUGIN_HANDLED
       
       
        new data[6], iName[64]
        new acces, callback
        menu_item_getinfo(Oylama_menu, item, acces, data,5, iName, 63, callback)
        BilgiGoster(id,str_to_num(data))
        onlinemenu(id)
       
        return PLUGIN_CONTINUE
       
}


public Zaman_Hesapla(){
       
        new str_Gun[3] , str_Ay[3] , str_Yil[5]
        new str_Saat[3] , str_Dakika[3]
        get_time("%d",str_Gun,charsmax(str_Gun))
        get_time("%m",str_Ay,charsmax(str_Ay))
        get_time("%Y",str_Yil,charsmax(str_Yil))
       
        get_time("%H",str_Saat,charsmax(str_Saat))
        get_time("%M",str_Dakika,charsmax(str_Dakika))
       
       
       
       
        return str_to_num(str_Dakika) + ( str_to_num(str_Saat) * 60 ) + ( str_to_num(str_Gun) * 1440 ) + ( str_to_num(str_Ay) * 43200 ) + ( (str_to_num(str_Yil)-2000) * 518400 )

}
public KayitKontrol(id){

       
        if ( nvault_get(Dosya,OyuncuIsmi[id]) < 180 ){
               
                new KayitSatiri[40] , Zaman[10]
                formatex(KayitSatiri,charsmax(KayitSatiri),"%s_Kyt",OyuncuIsmi[id])
                formatex(Zaman,charsmax(Zaman),"%d",Zaman_Hesapla())
                nvault_set(Dosya,KayitSatiri,Zaman)
       
        }

       

}

public plugin_natives()
        register_native("toptime_siralama_cek", "siralama_cek",1)
       
public siralama_cek(Sira){
       
        new Oyuncular[32] , Numara
        get_players(Oyuncular,Numara)
        for ( new i ; i < Numara ; i++ )
                if ( Siralama[Oyuncular[i]] == Sira )
                        return Oyuncular[i]

        return -1
}



public OyuncularaPuanVer(){
       
        new Oyuncular[32] , Numara , Sure[10]
        for ( new team = 1 ; team <= 2 ; team++ ){
                switch(team){
                case 1 : get_players(Oyuncular,Numara, "ce" , "TERRORIST")       
                case 2 : get_players(Oyuncular,Numara, "ce" , "CT")
                }

                for ( new i ; i < Numara ; i++ ){
                       
                        formatex(Sure,charsmax(Sure),"%d",nvault_get(Dosya,OyuncuIsmi[Oyuncular[i]]) + PuanVermePeriyotu )
                        nvault_set(Dosya,OyuncuIsmi[Oyuncular[i]],Sure)
                       
                }
        }
}
public VeriCek(xSiralama,Isim[36],Zaman[10]){       
       
        new Yazi[50]
        read_file(KAYIT_DOSYA_YOLU,xSiralama-1,Yazi,charsmax(Yazi))
        strtok(Yazi, Isim, 36, Zaman, 10 , '!' )

        return Isim , Zaman
}
public Satirlari_Degistir(Birinci,Ikinci){
       
        new Oyuncular[32] , Numara
        get_players(Oyuncular,Numara,"c")
        for ( new i ; i < Numara ; i++ )
                if ( Siralama[Oyuncular[i]] == Birinci+1 ) Siralama[Oyuncular[i]] = Ikinci+1
                else if ( Siralama[Oyuncular[i]] == Ikinci+1 ) Siralama[Oyuncular[i]] = Birinci+1
                                       

       
        new _1Satir[128] , _2Satir[128]
        read_file(KAYIT_DOSYA_YOLU,Birinci,_1Satir,charsmax(_1Satir))
        read_file(KAYIT_DOSYA_YOLU,Ikinci,_2Satir,charsmax(_2Satir))
        write_file(KAYIT_DOSYA_YOLU,_1Satir,Ikinci)
        write_file(KAYIT_DOSYA_YOLU,_2Satir,Birinci)
       
       
        new ilk_sira[4],ikinci_sira[4]
        num_to_str(Birinci+1,ilk_sira,charsmax(ilk_sira))
        num_to_str(Ikinci+1,ikinci_sira,charsmax(ikinci_sira))
       
        Birinci += 8
        Ikinci += 8
       
        read_file(KAYIT_DOSYA_YOLU_MOTD,Birinci,_1Satir,charsmax(_1Satir))
        read_file(KAYIT_DOSYA_YOLU_MOTD,Ikinci,_2Satir,charsmax(_2Satir))       
       
        replace(_2Satir,charsmax(_1Satir),ikinci_sira,ilk_sira)
        replace(_1Satir,charsmax(_1Satir),ilk_sira,ikinci_sira)
       
        write_file(KAYIT_DOSYA_YOLU_MOTD,_1Satir,Ikinci)
        write_file(KAYIT_DOSYA_YOLU_MOTD,_2Satir,Birinci)



}
public SiralamaKontrol(Sira){
       
        new Oyuncular[32] , OyuncuSayisi
        get_players(Oyuncular,OyuncuSayisi,"c")
       
        if ( OyuncuSayisi > 0 ){
       
                if ( Sira >= OyuncuSayisi ) Sira = 0
               
                new id = Oyuncular[Sira]
               
                if ( is_user_connected(id)){
                       
                        new Isim[36],Zaman[10]
                        VeriCek(MOTD_KISI_SAYISI , Isim , Zaman )
                       
                        if ( nvault_get(Dosya,OyuncuIsmi[id]) > str_to_num(Zaman) && Siralama[id] == 0 ){
                               
                                SiralamayaYazdir(id,MOTD_KISI_SAYISI)
                               
                                for ( new i ; i < OyuncuSayisi ; i++ )
                                        if ( Siralama[Oyuncular[i]] == MOTD_KISI_SAYISI ) Siralama[Oyuncular[i]] = 0

                                Siralama[id] = MOTD_KISI_SAYISI

                        }
                        else if ( Siralama[id] != 0 ){
                       
                                SiralamayaYazdir(id,Siralama[id])
                               
                                if ( Siralama[id] > 1 && Siralama[id] <= MOTD_KISI_SAYISI ){
                                       
                                        new Isim[36],_1Zaman[10],_2Zaman[10]
                                        VeriCek(Siralama[id]-1 , Isim , _1Zaman )
                                        VeriCek(Siralama[id] , Isim , _2Zaman )
                       
                                        if ( str_to_num(_1Zaman) < str_to_num(_2Zaman) )
                                                Satirlari_Degistir(Siralama[id]-1,Siralama[id]-2)
                                       
                                }
                       
                       
                        }
                }
       
        }
       
        set_task(10.0,"SiralamaKontrol",Sira+1)

        return PLUGIN_CONTINUE

}

public SiralamayaYazdir(id,Sira){
       
       
        new Yazi[128]
        formatex(Yazi,charsmax(Yazi),"%s!%d",OyuncuIsmi[id],nvault_get(Dosya,OyuncuIsmi[id]))
        write_file(KAYIT_DOSYA_YOLU,Yazi,Sira-1)
       
       
       
        formatex(Yazi,charsmax(Yazi),"<tr><th>%d<th>%s<th>%s<th>%s</tr>",Sira,OyuncuIsmi[id],Zaman_Ogren(id,nvault_get(Dosya,OyuncuIsmi[id])),Zaman_Ogren(id,Zaman_Farki_Hesapla(id)))
        write_file(KAYIT_DOSYA_YOLU_MOTD,Yazi,Sira+7)

       
}

public Zaman_Ogren(id,ToplamSaniye){

        new Saniye = ToplamSaniye % 60
        new Dakika = ( ( ToplamSaniye - Saniye ) / 60 ) % 60
        new Saat = ( ToplamSaniye - (Dakika*60) - Saniye ) / 3600       
        new Sure[50]

        if ( Dakika != 0 && Saat != 0 )        formatex(Sure,charsmax(Sure),"%d Saat , %d Dakika",Saat,Dakika)
        else if ( Dakika != 0 && Saat == 0 )        formatex(Sure,charsmax(Sure),"%d Dakika",Dakika)
                else if ( Dakika == 0 && Saat != 0 )        formatex(Sure,charsmax(Sure),"%d Saat",Saat)
               
        return Sure;



}




public toptime(id) show_motd(id,KAYIT_DOSYA_YOLU_MOTD,"EN AKTIF OYUNCULAR")

public Sifirla(id){
        if( access(id,SIFIRLAMA_YETKISI) ){
                nvault_prune( Dosya, 0 , get_systime() )
                delete_file(KAYIT_DOSYA_YOLU)
                delete_file(KAYIT_DOSYA_YOLU_MOTD)
                client_print_color(0,print_team_default,"^4TopTime : ^1Aktiflik Sureleri Sifirlandi.")
               
                new Eklenti_Ismi[64];
                get_plugin(-1, Eklenti_Ismi, charsmax(Eklenti_Ismi));
                pause("dc", Eklenti_Ismi )
        }
        else
        {
                client_print_color(id,print_team_default,"^4Yetkiniz Yeterli Degil.")
                client_print(id,print_console,"Yetkiniz Yeterli Degil.")
        }
       
        return PLUGIN_HANDLED
}
public plugin_cfg()
{
        Dosya = nvault_open( "AktiflikSureleri" );
       
        if ( Dosya == INVALID_HANDLE )
                set_fail_state( "Vault Dosyasi Acilamadi !" );

        nvault_prune( Dosya , 0 , get_systime() - ( 86400 * ZAMAN_ASIMI_GUN ) );
}
public plugin_end() nvault_close( Dosya );
public client_authorized(id){
       
        if ( file_size(KAYIT_DOSYA_YOLU) == -1 ){
                set_task(3.0+float(id),"client_authorized",id)
                return PLUGIN_HANDLED
        }
        get_user_name( id , OyuncuIsmi[id] , charsmax( OyuncuIsmi[] ) );
        replace_all(OyuncuIsmi[id] , charsmax( OyuncuIsmi[] ),"!","|")
       
        new Yazi[50],Isim[36],Zaman[10]
        for ( new i ; i < MOTD_KISI_SAYISI ; i++ ){
               
                read_file(KAYIT_DOSYA_YOLU,i,Yazi,charsmax(Yazi))
                strtok(Yazi, Isim, charsmax(Isim), Zaman, charsmax(Zaman), '!' )
               
                if ( equali(OyuncuIsmi[id],Isim) ){
                        Siralama[id] = i + 1
                        break;
                }
                else        Siralama[id] = 0
               
        }
       
        set_task(5.0,"KayitKontrol",id)
       
        return PLUGIN_CONTINUE
}
public KayitDosyasiniOlustur(){
       
        if ( file_size(KAYIT_DOSYA_YOLU) == -1 ){
       
                write_file(KAYIT_DOSYA_YOLU_MOTD,"<html><body background=^"https://i.hizliresim.com/7aYvrl.png^">",0)
                write_file(KAYIT_DOSYA_YOLU_MOTD,"<meta charset=UTF-8><style>body{font-family:Verdana}th{background:#303B4A;color:#FFF}",1)
                write_file(KAYIT_DOSYA_YOLU_MOTD,"table{padding:6px 2px;background:#EFF1F3;font-size:12px;color:#222;border:1px solid #CCC}",2)
                write_file(KAYIT_DOSYA_YOLU_MOTD,"h2,h3{color:#222}#c{background:#E9EBEE}img{height:7px;background:#F8931F;margin:0 3px}",3)
                write_file(KAYIT_DOSYA_YOLU_MOTD,"#r{height:7px;background:#D2232A}#clr{background:none;color:#303B4A;font-size:20px;border:0}</style>",4)
                write_file(KAYIT_DOSYA_YOLU_MOTD,"<table width=100% height=100% border=0 align=center cellpadding=0 cellspacing=1>",5)
                write_file(KAYIT_DOSYA_YOLU_MOTD,"<tr><th colspan=^"4^"><font size=^"5^">EN AKTİF OYUNCULAR</font><br/></th></tr>",6)
                write_file(KAYIT_DOSYA_YOLU_MOTD,"<tr><th>#<th>Oyuncu İsmi<th>Oynanılan Süre Miktarı<th>Günde Ortalama</tr>",7)
       
                for( new i ; i < MOTD_KISI_SAYISI ; i++ ){
                        write_file(KAYIT_DOSYA_YOLU,"xxx!0")
                        write_file(KAYIT_DOSYA_YOLU_MOTD,"<tr><th><th><th><th></tr>",i+8)
                }
               
                set_task(2.0,"KayitDosyasiniOlustur",0)
        }
        else
        {
                set_task(5.0,"SiralamaKontrol",0)
                set_task(float(PuanVermePeriyotu), "OyuncularaPuanVer", _, _, _, "b")
        }
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1055\\ f0\\ fs16 \n\\ par }
*/

Errors:

Code:

MX Mod X Compiler 1.8.3-manual
Copyright (c) 1997-2006 ITB CompuPhase
Copyright (c) 2004-2013 AMX Mod X Team

plugin.sma(164) : error 088: number of arguments does not match definition
plugin.sma(180) : error 088: number of arguments does not match definition
plugin.sma(181) : error 088: number of arguments does not match definition
plugin.sma(193) : error 088: number of arguments does not match definition
plugin.sma(194) : error 088: number of arguments does not match definition
plugin.sma(336) : error 088: number of arguments does not match definition

6 Errors.
Could not locate output file plugin.amx (compile failed).


OciXCrom 08-19-2020 09:02

Re: Help me toptime plugin
 
Code:
/* Reads line from file. Returns index of next line or 0 when end of file is reached. */ native read_file(const file[],line,text[],len,&txtlen);

read_file has 5 arguments in older AMXX versions. Either use all 5 of them or update your outdated AMXX version. 1.9 is the latest dev-build.

tyracoyne 09-04-2020 00:08

Re: Help me toptime plugin
 
I did everything, thanks for help.


All times are GMT -4. The time now is 13:54.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.