Tartalomjegyzék

Reset kalkulátor program leírása

A programkódunk a reset parancsra kiírja, hogy mennyi időnk van a következő resetig. A programkód a verzio és datum rovid parancsokból számolja ki ezt az értéket. A logikája a következő: Számunkra az idő perc és másodperc része a fontos, amiket másodpercre fogok alakítani. Pl.: 10 óra 10 perc 10 másodpercből a 10 perc és 10 másodperc kell nekünk. 10 perc az 600 másodperc + a 10 másodperc ami éppen van, ez 610 másodperc lesz. Ezt a verzio és datum rovid parancsokból is kinyerjük. A matekunk pedig a következő: 7200 + <verzio másodpercre alakitva> - <dátum másopercere alakitva>, majd ezt az eredményt osztjuk 900-al. A maradék, hogy mennyi idő van resetig. Azért 900-al osztunk, mert egy reset 15 perc, ami 900 másodperc. Most még soronként leírom a program működését, de később, amikor már gyakorlottabbak lesztek, ez kevésbé lesz ilyen részletes (és unalmas :) ).

Felhasznált programozási elemek

Használat

Soronkét a kód, magyarázattal

#class class_reset: a class_reset nevet adtuk a kódnak. A teljes class-t tudjuk engedélyezni vagy letiltani. Erről majd a tutoriálban fogok írni.

#var wro 0: Létrehozzuk a wro változót. Arra használjuk, ha a reset szóval adjuk ki a datum és reset parancsokat, akkor a #gagline miatt nem írjuk ki a képernyőre, így nem zavar minket a játékban.

#var verzio 0: itt fogjuk tárolni a verzio parancs által visszadott értéket

#var datum 0: itt fogjuk tárolni a datum parancs által visszadott értéket

#var reset 0: itt fogjuk tárolni, hogy mennyi másodperc van még resetig, később pedig kiíratjuk

#var egeszdiff 0: sajnos a VIP mud nem tud modulos osztást, igy ezt magunk fogjuk kiszámolni.

#ALIAS reset: ezzel létrhozzuk a reset aliasunkat

#math wro {1}: beállítjuk a wro változónkat 1-re. Ennek hatására a programkódunk tudni fogja, hogy ne írja ki a képernyőre a mudtől érkező datum rovid és datum válaszokat.

#trigger {ElveszettVilag (Driver: FluffOS *} {#gagline All; #OK;};: gagoljuk a sort

#trigger {Elveszett Vilag Mudlib *} {#gagline All; #OK;};: szintén gagoljuk a sort

verzio;: lekérdezzük, hogy mikortól fut a mud

#trigger {*. * *. (*) *:&verzioperc:&verziomasodperc CET ota fut.} {: Késztünk egy trigger, amit feldolgozza a verzio választ. A csillag karakterek azt jelentik, hogy bármilyen karakter állhat ott. Számunkra a veziónak a perc és másodperc része az érdekes. Ezeket a &verzioperc és &verziomasodperc parancsokkal nyerjük ki és a @verzioperc és @verziomasodperc változókba fogja elmenteni nekünk VIP mud.

#gagline All;: kigagoljuk a sort, így nem fog megjelenni a képernyőn a verzio-ra kapott válasz a mudtól.

#OK;: fogalmam sincs, de minden példakódban benne volt.

#math verzio {@verzioperc * 60 + @verziomasodperc};: A @verzio változóba elmentjük a mud verzio-janak perc (@verzioperc) és másodperc (@verziomasodperc) értékét, másodperc formában. Ezért szorozzuk a percet 60-al, hogy másodpercre alakítsuk. Pl: Ha a mud verziója 18 óra 10 perc 15 másodperc, akkor a @verzioperc értéke 10 lesz, a @verziomasodperc értéke 15. A @verzio értéke pedig: 10 * 60 + 15 = 615.

datum rovid;: megkérdezzük a mudot, hogy szerinte mennyi az idő.

#trigger {*Az aktualis jatekido: *. * *. (*) *:&datumperc:&datummasodperc} {: következő fontos trigger, ami elmenti a @datumperc és @datummasodperc változókba az aktuális perc és másodperc értékét. A csillag karakterek itt is azt jelentik, hogy bármilyen szöveg állhat helyettük. Például, ha most 19 óra 20 perc 0 másodperc van, akkor a @datumperc értéke 20, a @datummasodperc értéke 0 lesz.

#math wro {0};: 0-ra állítjuk a wro-t, így ha beütjük a verzio, vagy datum rovid parancsokat, akkor nem lesznek kigagolva a sorok.

#math datum {@datumperc * 60 + @datummasodperc};: a @datum változóba elmentjük az éppen aktuális dátum perc és másodperc értéket másodpercben. A fenti példával: 19 óra 20 perc 0 másodperc van, ekkor 20 * 60 + 0 = 1200 lesz az értéke.

#math reset {7200 + @verzio - @datum};: Ebben a sorban kivonjuk a verzió értékét a dátum értékéből, hogy tudjuk mennyi másodperc a különbség. A biztonság kedvéért hozzáaduk az eredményhez 7200 másodpercet, hogy biztosan pozitív értéket kapjunk. A 7200 helyett más szám is lehetne, a lényeg, hogy a reset értékvel, ami 900, maradék nélkül osztható legyen.

#math egeszdiff {@reset / 900};: Mivel a VIP mud nem tud maradékos osztást, ezért ez nekünk kell megoldani. Itt arra vagyunk kiváncsiak, hogy a @reset változónkban hányszor van meg a 900 és azt eltároljuk a @egeszdiff változóban.

#math reset {@reset - (@egeszdiff * 900)};: Az előbb kiszámoltuk, hogy hányszor van meg maradék nélkül a @reset változóban a 900. Ha most ezt az értéket visszaszorozzuk 900-al és kivonjuk a @reset változóból az értékét, akkor megkapjuk, mennyi másodperc van még a következő resetig.

#if {@reset < 0} {#math {reset} {900+@reset}};: Ha minusz lenne a vege, akkor adjunk hozza 900-at, hogy helyes eredmenyt kapjuk.

#say {RESETJELZO: @reset masodperc mulva RESET!};: Kiírjuk a képernyőre, hogy mennyi idő van még resetig.

#say {Resetjelzo betoltve}: Kiírjuk a képernyőre, hogy a reset jelző modulunkat betöltöttük.

#class 0 lezárjuk a reset jelző #class-unkat.

Teljes forráskód

#class class_reset

    #var wro 0
    #var verzio 0
    #var datum 0
    #var reset 0
    #var egeszdiff 0
    
    
    #ALIAS reset {
        #math wro {1}; 
        #trigger {ElveszettVilag (Driver: FluffOS *} {#gagline All; #OK;};
        #trigger {Elveszett Vilag Mudlib *} {#gagline All; #OK;};
        verzio;
    }
    
    #trigger {*. * *. (*) *:&verzioperc:&verziomasodperc CET ota fut.} {
        #if {@wro = 1} {
            #gagline All; 
            #OK;
            #math verzio {@verzioperc * 60 + @verziomasodperc};
            datum rovid;
        }
    };
   
    #trigger {*Az aktualis jatekido: *. * *. (*) *:&datumperc:&datummasodperc} {
        #if {@wro = 1} {
            #gagline All; 
            #OK;
            #math wro {0}; 
            #math datum  {@datumperc * 60 + @datummasodperc};
            #math reset  {7200 + @verzio - @datum};
            #math egeszdiff {@reset / 900};
            #math reset {@reset - (@egeszdiff * 900)};
            
            #if {@reset < 0} {#math {reset} {900+@reset}};
  
            #say {RESETJELZO: @reset masodperc mulva RESET!};
        }
    }


    #say {Resetjelzo betoltve}

#class 0