[Plugin] Motd Manager
Results 1 to 31 of 31

Thread: Motd Manager

  1. #1
    Senior Member Array
    Join Date
    Jun 2013
    Location
    K und K monarhija
    Karma
    20

    Default Motd Manager

    Motd Manager
    v3.0

    By DecaK

    Plugin koji vam dozvoljava da podesite koja say/say_team komanda ce otvarati koji motd(sami pravite motd). Plugin pravi folder MotdManager koji se nalazi u folderu configs. U tom folderu se moraju nalaziti svi motdovi a plugin tu takodje pravi i manager.ini fajl.
    Primer koriscenja: "/wantvip" "vip.txt"
    Fajl vip.txt mora biti u configs/MotdManager/ folderu. Ovu liniju unosimo u manager.ini fajlu.

    SMA Code:
    Code:
    #include <amxmodx>
    #include <amxmisc>
    
    new const VERSION[] = "1.0";
    
    new Motd[2][101][50];
    new folder[101], file[101];
    
    public plugin_init() {
    	register_plugin("Motd Manager", VERSION, "DecaK")
    	register_clcmd("say", "say_hook")
    	register_clcmd("say_team", "say_hook")
    	register_cvar("mm_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY);
    }
    
    public plugin_precache() {
    	new config[101];
    	get_configsdir(config, charsmax(config))
    	formatex(folder, charsmax(folder), "%s/MotdManager/", config)
    	formatex(file, charsmax(file), "%s/manager.ini", folder)
    	if(!dir_exists(folder)) 
    		mkdir(folder)
    	if(!file_exists(file)) {
    		write_file(file, "; Motd Manager v1.0")
    		write_file(file, "; Usage: ^"/default^" ^"default.txt^"")
    }
    	loadFile();
    }
    
    public say_hook(id) {
    	new sayed[192];
    	read_args(sayed, charsmax(sayed));
    	remove_quotes(sayed)
    	for(new i=0;i<sizeof Motd[];i++) { 
    		if(equal(sayed, Motd[0][i])) {
    			new motd[150];
    			formatex(motd, charsmax(motd), "%s%s", folder, Motd[1][i])
    			show_motd(id, motd)
    }
    }
    }
    
    loadFile() {
    	new line[101];
    	formatex(line, charsmax(line), file)
    	new f = fopen(line, "rt");
    	if(!f) {
    		write_file(line, "")
    		return PLUGIN_HANDLED;
    }
    	new i = 0;
    	while(!feof(f)) {
    		fgets(f, line, charsmax(line))
    		if(line[0] == ';') continue;
    		new command[50], motd_name[50];
    		parse(line, command, charsmax(command), motd_name, charsmax(motd_name))
    		formatex(Motd[0][i], sizeof Motd[][], command)
    		formatex(Motd[1][i], sizeof Motd[][], motd_name)
    		i++
    }
    	fclose(f);
    }
    Last edited by DecaK; 03-03-2018 at 17:34. Reason: v2.0
    double penetration sadomazo satisfaction
    kao svedski akcioni kada kazu action

  2. #2
    Super Moderator Array klipica's Avatar
    Join Date
    Apr 2010
    Karma
    28

    Default

    Ideja ti je odlicna, jako mi se svidja, i taman kada sam mislio da si sve odradio kako treba, bum.
    Napravio si najvecu mogucu gresku sto si mogao - na svaku "say" komandu citas fajl. :S
    I koristi charsmax() umesto hardkodovanja duzina stringova. Ali opet imas K+. // Spread
    Code:
    #YoMama {
        width: 200%;
        overflow: visible;
    }

  3. #3
    Senior Member Array
    Join Date
    Jun 2013
    Location
    K und K monarhija
    Karma
    20

    Default

    Quote Originally Posted by klipica View Post
    Ideja ti je odlicna, jako mi se svidja, i taman kada sam mislio da si sve odradio kako treba, bum.
    Napravio si najvecu mogucu gresku sto si mogao - na svaku "say" komandu citas fajl. :S
    I koristi charsmax() umesto hardkodovanja duzina stringova. Ali opet imas K+. // Spread
    Hvala,hvala

    na svaku "say" komandu citas fajl.
    U moju odbranu, morao sam, kako bi se inace proverilo da li u toj say poruci ima neka linija iz fajla?
    double penetration sadomazo satisfaction
    kao svedski akcioni kada kazu action

  4. #4
    Senior Member Array
    Join Date
    Dec 2009
    Location
    Niš
    Age
    23
    Karma
    30

    Default

    Stavis te reci u promenljivu i gledas da li ih say poruka sadrzi.

  5. #5
    Super Moderator Array klipica's Avatar
    Join Date
    Apr 2010
    Karma
    28

    Default

    I jos bolje bi bilo da stavis sve u jedan fajl i uradis parse(), da ne moras citati 2 razlicita fajla.
    Code:
    #YoMama {
        width: 200%;
        overflow: visible;
    }

  6. #6
    Senior Member Array
    Join Date
    Jun 2013
    Location
    K und K monarhija
    Karma
    20

    Default

    Ali zaboravljate da ima for loop, svakako ga moram procitati uvek kad igrac kaze nesto.
    double penetration sadomazo satisfaction
    kao svedski akcioni kada kazu action

  7. #7
    Senior Member Array
    Join Date
    Dec 2009
    Location
    Niš
    Age
    23
    Karma
    30

    Default

    Quote Originally Posted by DecaK View Post
    Ali zaboravljate da ima for loop, svakako ga moram procitati uvek kad igrac kaze nesto.
    Pa mnogo je bolje da vrtis promenljivu nego fajl.

  8. #8
    Senior Member Array
    Join Date
    Apr 2014
    Location
    Sarajevo
    Karma
    9

    Default

    A nisi me stavio u kredit za ideju ?

    p.S ideja je super

  9. #9
    Moderator Array Megastorm's Avatar
    Join Date
    Sep 2011
    Location
    Tokyo, Japan
    Age
    23
    Karma
    33

    Default

    Quote Originally Posted by desikac View Post
    Pa mnogo je bolje da vrtis promenljivu nego fajl.
    u plugin_init
    fopen, fgets u buffer, izvrsis provere koje hoces na bufferu, odradis parse, strpas u Array/Trie, i onda u say proveravas postoji li key iz array-a u msg-u, ili po argumentima odradis proveru da li postoji key u trie.
    I dalje komplikovano?
    Last edited by Megastorm; 08-01-2015 at 20:52.

  10. #10
    Senior Member Array
    Join Date
    Jun 2013
    Location
    K und K monarhija
    Karma
    20

    Default

    Quote Originally Posted by m1re' View Post
    A nisi me stavio u kredit za ideju ?

    p.S ideja je super
    Stavio bi te da si mi rekao tu tvoju ideju, posto sam ovu ja smislio :P

    @desikac Ne razumem kako mislis, jedino da napravim promenljivu za svaku liniju sto sigurno ne mislis

    Edit: @mega Tek sad vidim sta si napisao, napisao sam ti na fbu
    Last edited by DecaK; 08-01-2015 at 20:57.
    double penetration sadomazo satisfaction
    kao svedski akcioni kada kazu action

  11. #11
    Super Moderator Array klipica's Avatar
    Join Date
    Apr 2010
    Karma
    28

    Default

    Evo napisao sam ti kod, ali ne znam da li radi. Uglavnom skontaces iz njega sta sam promenio i kako bi trebao uraditi.
    I zar ne bi bilo lepse da je dole equali() umesto containi()? Neko napise nesto i u sred igre mu otvori MOTD kada ne zeli.
    I da, moze se reci da pravis promenljivu za svaku liniju, mada nije promenljiva nego niz.
    PHP Code:
    #include <amxmodx>

    new const folder[] = "addons/amxmodx/configs/Motd-Manager/"
    new const mfolder[] = "addons/amxmodx/configs/Motd-Manager-Motds/"
    new const motd_file[] = "addons/amxmodx/configs/Motd-Manager/motdmanager.ini"
    new const default_file[] = "addons/amxmodx/configs/Motd-Manager-Motds/motd-manager-default.txt"

    enum _:Motd
    {
        
    m_chatcmd[32],
        
    m_motdfile[32]
    };

    new Array: 
    g_aMotd;

    public 
    plugin_init() 
    {
        
    register_plugin("Motd Manager""1.0""DecaK");
        
    register_clcmd("say""kaze");
        
    register_clcmd("say_team""kaze");
    }

    public 
    plugin_precache()
    {
        if(!
    dir_exists(folder)) 
            
    mkdir(folder)
            
        if(!
    dir_exists(mfolder))
            
    mkdir(mfolder)
            
        if(!
    file_exists(motd_file)) 
        {
            
    write_file(motd_file";Ovde upisujete komande koje ce igraci da kucaju da bi otvorili odredjeni motd")
            
    write_file(motd_file";^"chat_komanda^" ^"motd_file^"");
            
    write_file(motd_file"^"/motdmanager^" ^"motd-manager-default.txt^"")
        }
        
        if(!
    file_exists(default_file))
            
    write_file(default_file"Motd Manager Plugin v1.0 by DecaK")
            
        
    g_aMotd ArrayCreate(Motd);
        
    ParseFile();
    }

    ParseFile()
    {
        new 
    eMotd[Motd];
        new 
    szLine[70];
        
        new 
    hFile fopen(motd_file"rt");
        if(!
    hFile)
            return;
        
        while(
    fgets(hFileszLinecharsmax(szLine)))
        {
            if(!
    szLine[0] || szLine[0] == ';')
                continue;
                
            
    parse(szLineeMotd[m_chatcmd], charsmax(eMotd[m_chatcmd]), eMotd[m_motdfile], charsmax(eMotd[m_motdfile]));
            
    ArrayPushArray(g_aMotdeMotd);
        }

        
    fclose(hFile);
    }

    public 
    kaze(id
    {
        new 
    szSaid[192];
        new 
    iSize ArraySize(g_aMotd);
        new 
    eMotd[Motd];
        
        
    read_args(szSaidcharsmax(szSaid));
        
        for(new 
    0iSizei++)
        {
            
    ArrayGetArray(g_aMotdieMotd);
            
            if(
    containi(szSaideMotd[m_chatcmd]))
                
    show_motd(ideMotd[m_motdfile]);
        }
    }

    public 
    plugin_end()
    {
        
    ArrayDestroy(g_aMotd);

    Code:
    #YoMama {
        width: 200%;
        overflow: visible;
    }

  12. #12
    Senior Member Array
    Join Date
    Jun 2013
    Location
    K und K monarhija
    Karma
    20

    Default

    Slabo znam oko Array-a u Pawnu, nisam nista oko njih radio, tako da mi je ovo sto si napisao spansko selo Ovo moje super radi na serveru, mozda je sa programerskog gledista malo neoptimizovano zbog silnih provera ali mislim da to ne pravi preveliko opterecenje

    @containi,equali Pa gledaj, to je i cilj, da bude slicno kao advertisements.ini samo u motd-u Stavicu cvar u sledecoj verziji, a mozda i posle napravim update.
    double penetration sadomazo satisfaction
    kao svedski akcioni kada kazu action

  13. #13
    Super Moderator Array klipica's Avatar
    Join Date
    Apr 2010
    Karma
    28

    Default

    Pa neces nikada se poboljsati dokle god ne budes slusao savete druge.
    Inace, imas jos jednu veliku gresku koji i sam mozes otkloniti:
    PHP Code:
    new reko[192]
    read_args(reko,191
    Ovo izvadi iz petlje, ovo je jako veliki udarac na performanse ustvari.
    Code:
    #YoMama {
        width: 200%;
        overflow: visible;
    }

  14. #14
    Senior Member Array
    Join Date
    Jun 2013
    Location
    K und K monarhija
    Karma
    20

    Default

    >>

    Code:
    new reko[192]
    read_args(reko,chrasmax(reko))
    ??
    Last edited by DecaK; 08-01-2015 at 22:29.
    double penetration sadomazo satisfaction
    kao svedski akcioni kada kazu action

  15. #15
    Super Moderator Array klipica's Avatar
    Join Date
    Apr 2010
    Karma
    28

    Default

    Quote Originally Posted by DecaK View Post
    >>

    Code:
    new reko[charsmax(reko)]
    read_args(reko,chrasmax(reko))
    ??
    new reko[192], ovo donje ostaje.
    Code:
    #YoMama {
        width: 200%;
        overflow: visible;
    }

  16. #16
    Senior Member Array
    Join Date
    Aug 2012
    Location
    Forgotten Realms
    Age
    31
    Karma
    17

    Default

    Quote Originally Posted by DecaK View Post
    Code:
    new reko[charsmax(reko)]
    Ne smarajte me da vam editujem bilo koji plugin ili mod. Pitanja oko istih mozete da postavite u odgovarajucim temama: COD, ZP, sve ostalo

    Bilo kakva pomoc oko pawn da vam treba, necu napisati ceo kod, vec vas samo uputiti sta i kako da uradite. Jedini izuzetak za to su meni licno zanimljivi problemi ;)

    Malo zezanja u hammer-u :D de_dust2_2x2_ruins

    KGB Forum vise ne pratim redovno kao nekada, uglavnom me mrzi da odgovaram na postove i poruke, jbg...

  17. #17
    Senior Member Array
    Join Date
    Jun 2013
    Location
    K und K monarhija
    Karma
    20

    Default

    Hahahahhahahahahhaahhaha na brzinu napisao hahahahahahaha koj sam kralj :d
    double penetration sadomazo satisfaction
    kao svedski akcioni kada kazu action

  18. #18
    generalni i izvrsni producent xD Array OvidiuS's Avatar
    Join Date
    Dec 2009
    Location
    Novi Sad
    Age
    26
    Karma
    37

    Default

    Quote Originally Posted by klipica View Post
    I zar ne bi bilo lepse da je dole equali() umesto containi()?
    Ako stavi equali onda je najbolje da koristi trie. Ne treba mu array kao ni for loop.

  19. #19
    Senior Member Array
    Join Date
    Apr 2011
    Location
    При́п'ять
    Age
    20
    Karma
    22

    Default

    Zanimljiv plugin


    Donacije:
    BTC: 1FUKWDFMA95seCcYqhMetUmwbF5jSZzrae
    ETH: 0xF6693023B2F804e9db6b4aB142E6f4A132764283

  20. #20
    Senior Member Array
    Join Date
    Jun 2013
    Location
    K und K monarhija
    Karma
    20

    Default

    Quote Originally Posted by milutinke2 View Post
    Zanimljiv plugin
    Hvala.Posle cu izbaciti sa cvarom da li igraceva poruka mora bude ista ili samo da sadrzi tekst za otvaranje motd-a.
    double penetration sadomazo satisfaction
    kao svedski akcioni kada kazu action

  21. #21
    Senior Member Array
    Join Date
    Sep 2013
    Location
    Tovarisevo
    Karma
    5

    Default

    Svaka Cast, samo nastavi.
    Last edited by NiDzooo!; 21-01-2015 at 16:30.

  22. #22
    Senior Member Array
    Join Date
    Jun 2013
    Location
    K und K monarhija
    Karma
    20

    Default

    Ubacena verzija 2.0! Vise ne morate da se mucite sa 2 fajla, dovoljno je da otkucate u motdmanager.ini:

    Code:
    "komanda" "motd"
    Primer:

    Code:
    "/head" "HeadMotd.txt"
    Kada neko otkuca /head otvorice mu fajl koji se nalazi u configs/Motd-Manager-Motds/HeadMotd.txt !
    double penetration sadomazo satisfaction
    kao svedski akcioni kada kazu action

  23. #23
    Senior Member Array
    Join Date
    Jun 2014
    Location
    Prijedor
    Age
    20
    Karma
    6

    Default

    Odlican plugin :P i sad je bar jednostavno
    A pre se mucio i trazio kako napraviti

  24. #24

  25. #25
    Senior Member Array
    Join Date
    Jun 2013
    Location
    K und K monarhija
    Karma
    20

    Default

    Updated v3.0, optimizovan + dodatno olaksano koriscenje plugina
    double penetration sadomazo satisfaction
    kao svedski akcioni kada kazu action

  26. #26
    Senior Member Array
    Join Date
    Apr 2011
    Location
    При́п'ять
    Age
    20
    Karma
    22

    Default

    Koristi Tree i staticke promenjive u say_hook.

    Umesto lineane pretage mozes da koristis https://www.amxmodx.org/api/celltrie/TrieKeyExists
    Odmah nadje komandu u Drvetu u koje si prethodno ucitao podatke.


    Donacije:
    BTC: 1FUKWDFMA95seCcYqhMetUmwbF5jSZzrae
    ETH: 0xF6693023B2F804e9db6b4aB142E6f4A132764283

  27. #27
    Senior Member Array
    Join Date
    Jun 2013
    Location
    K und K monarhija
    Karma
    20

    Default

    Quote Originally Posted by milutinke2 View Post
    Koristi Tree i staticke promenjive u say_hook.

    Umesto lineane pretage mozes da koristis https://www.amxmodx.org/api/celltrie/TrieKeyExists
    Odmah nadje komandu u Drvetu u koje si prethodno ucitao podatke.
    Ma zajebavas, otkrio si Trie? Ovo je verzija radjena odavno ali nije publish, pa me mrzelo da je update, samo sam objavio
    double penetration sadomazo satisfaction
    kao svedski akcioni kada kazu action

  28. #28
    Senior Member Array
    Join Date
    Mar 2010
    Location
    Serbia
    Age
    22
    Karma
    21

    Default

    Baš sam tražio o motd-u danas i baš danas si update plugin, gj

  29. #29
    Senior Member Array
    Join Date
    Jan 2016
    Location
    Posusje Bosna i Hercegovina
    Age
    21
    Karma
    0

    Default

    Dali se i vama desava kad kucate praznu poruku da vam dropuje ?

  30. #30
    Junior Member Array
    Join Date
    Dec 2011
    Location
    Tuzla
    Age
    27
    Karma
    0

    Default

    Postoji li mogucnost da se unutar vec otvorenog motd prozora napravi link i tako otvori slijedeci motd?

  31. #31
    Senior Member Array
    Join Date
    Mar 2010
    Location
    Serbia
    Age
    22
    Karma
    21

    Default

    Može preko web html na svom sajtu da ubaciš u motd-u link drugog motd-a.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •