dcpp.hu

Magyar DC++ hírportál

AdmiHub3 LUA leírás

1. Általános információk

Az AdmiHUB 3 1.10-es verziójától kezdve használhatóak LUA scriptek különböző események lekezelésére, ezzel a hub saját igény szerinti bővítése, a hub egyedivé tétele lehetővé válik.

A scriptek és események beállítása az eddig is megszokott módon, a Távoli Irányítás programmal lehetséges. Emellett van pár DC kliensből használható parancs is a LUA scriptek kezelésére (futtatás, listázás, fordítás, indítás és leállítás).

A megfelelő sebesség, és ezzel együtt alacsony CPU-használat érdekében, a hub minden egyes scriptet módosításkor, valamint betöltéskor előre lefordíttat a LUA értelmezővel. A stabil, biztonságos, és a hibakeresést megkönnyítő működés kedvéért pedig, a hub minden scriptet „protected” (védett) módban futtat. Esetleges fordítási, vagy futási hiba esetén a hub figyelmeztetést küld a megadott szobába.

Esemény lekezelésekor a hub végigmegy az adott eseményhez társított scriptek listáján. Az itt talált scripteknek azt az eljárását próbálja meghívni a megfelelő paraméterekkel, amelynek a neve megegyezik az adott esemény nevével. Amennyiben nincs ilyen nevű eljárás a scriptben, futási hiba keletkezik. Script módosításánál vagy létrehozásánál a Távoli Irányítás program automatikusan berakja azon események script-listájába az aktuális scriptet, amely eseményekhez talál kezelő függvényt.

Script betöltésekor, ha a script ’Automatikus indítás’ módban van, a hub azonnal lefuttatja azt. Ilyenkor az összes olyan kód lefut, ami nem függvény része (a script törzse). A !lua_start paranccsal (kézzel) indított scripteknél ugyanez történik.

Egy eseményhez több script is rendelhető, ilyenkor megadható, hogy milyen sorrendben fussanak le. (Jobboldalt az eseményeknél az eltávolítás, majd a létező script hozzáadása gombbal lehetséges ez.) A scriptek egymás működését is tudják befolyásolni: egy script letilthatja, hogy a sorban utána következők lefussanak, ill. bizonyos paramétereket módosíthat. Ugyanakkor a hub beépített eljárásait is képesek vezérelni: bizonyos reakciókat letilthatnak, vagy a paramétereket módosíthatják . Azáltal pedig, hogy a scriptek belső parancsokat is ki tudnak adni , még több funkcionalitás érhető el.

A felhasználókat és az osztályokat az eseményeknél, és a legtöbb eljárásban az indexük azonosítja , mely egy egész szám. Ez az index gyakorlatilag egy véletlen szám, mely a hub futása közben változhat, de garantáltan konstans egy script lefutása, ill. egy esemény kiszolgálása alatt. A megfelelő átalakító függvényekkel lehet ezt az indexet névvé alakítani, és fordítva.

2. Lekezelhető események

  • OnHubStart()
    Hub indulásakor meghívott esemény.
    Végrehajtás ideje: hub indulásakor, a beállítások beolvasása után.
  • OnHubExit()
    Hub leállításakor meghívott esemény.
    Végrehajtás ideje: hub leállításakor, a beállítások mentése, valamint a userek szétkapcsolása előtt.
  • OnConnect( int User, string IP)
    Felhasználó kapcsolódik a hubra.
    Végrehajtás ideje: közvetlenül kapcsolódás után, $Lock küldése előtt.
  • OnSupportsString( int User, string Supports)
    $Supports string fogadása.
    Végrehajtás ideje: parancs fogadása után egyből.
  • OnPassword( int User, string Password, bool IsCorrectPassword)
    Felhasználó elküldi a jelszavát a hubnak.
    Végrehajtás ideje: jelszó megérkezését követően, a jelszó helyességének ellenőrzése után, de az erre való reagálás előtt.
  • OnMyINFO( int User, string MyINFO)
    Felhasználó MyINFO-t küld a hubnak.
    Végrehajtás ideje: megérkezés és nick helyességének ellenőrzése után.
    Letiltható akciók:

    • 0: MyINFO szétküldése
  • OnLogin( int User)
    Felhasználó sikeresen bejelentkezik a hubra.
    Végrehajtás ideje: sikeres bejelentkezés esetén; az összes beépített, belépésnél végrehajtott ellenőrzés lefutása, valamint a felhasználói lista küldése után, de az MOTD és egyéb üdvözlő szövegek küldése előtt.
    Letiltható akciók:

    • 0: Összes akció
    • 1: MOTD küldése
    • 2: Login adatok küldése (IP, osztály)
  • OnQuit( int User)
    Felhasználó kilép a hubról.
    Végrehajtás ideje: kilépés után, a felhasználó adatainak felszabadítása előtt. Csak sikeresen bejelentkezett felhasználó esetén fut le.
  • OnMainChat ( int User, string Message)
    Felhasználó üzenetet küld a közös chatbe.
    Végrehajtás ideje: közvetlenül azután, hogy megérkezik az üzenet; minden beépített ellenőrzés (kivéve a nick helyessége), valamint szétküldés és/vagy felhasználónak való visszaküldés előtt.
    Letiltható akciók:

    • 0: Összes akció
    • 1: Triggerre reagálás
    • 2: Szűrő alkalmazása
    • 3: Önmagának való visszaküldés
    • 4: Üzenet szétküldése a többieknek
  • OnValidMainChat ( int User, string Message)
    Felhasználó sikeresen üzenetet küld a közös chatbe.
    Végrehajtás ideje: az összes beépített ellenőrzés és esetleges átalakítás után; közvetlenül a szétküldés előtt. Csakis olyankor hívódik meg, amikor az üzenet ténylegesen szétküldésre kerül; ha ez bármilyen okból meghiúsul (pl. egy OnMainChat-re bekötött script letiltja a szétküldést), akkor nem kerül végrehajtásra.
    Letiltható akciók:

    • 0: Összes akció
    • 1: Önmagának való visszaküldés
    • 2: Üzenet szétküldése a többieknek
  • OnPrivateChat( int UserFrom, int UserTo, string Message)
    Felhasználó privát üzenetet küld egy másik felhasználónak.
    Végrehajtás ideje: közvetlenül azután, hogy megérkezik az üzenet; minden beépített ellenőrzés, valamint a továbbítás előtt.
    Letiltható akciók:

    • 0: Összes akció
    • 1: Szűrő alkalmazása
    • 2: Szoba-kezelő meghívása
    • 3: Üzenet továbbítása
  • OnMessageToBot( int User, string Message)
    Felhasználó üzenetet küld a HubSecurity-nek.
    Végrehajtás ideje: megérkezés után azonnal, az esetleges parancs feldolgozása előtt.
  • OnMessageToLuaBot( int User, string BotName, string Message)
    Felhasználó üzenetet küld egy AddBot() LUA hívás által létrehozott BOT-nak. Végrehajtás ideje: megérkezés után azonnal
  • OnCommand( int User, string Command)
    Felhasználó kiad egy parancsot.
    Végrehajtás ideje: parancs megérkezésekor, annak feldolgozása után.
  • OnActiveSearch( int User, string SearchString)
    Felhasználó aktív módban keres.
    Végrehajtás ideje: parancs fogadása után
    Letiltható akciók:

    • 0: Keresési parancs szétküldése
  • OnPassiveSearch( int User, string SearchString)
    Felhasználó passzív módban keres.
    Végrehajtás ideje: parancs fogadása után
    Letiltható akciók:

    • 0: Keresési parancs szétküldése
  • OnTimer( int Timer)
    Másodperc felbontású belső óra ütésekor bekövetkező esemény.
    Végrehajtás ideje: minden másodpercben. A paraméter visszatérési értéke a hub futási ideje másodpercekben
  • OnKick( int User, int TargetUser, string Reason)
    Egy felhasználó kirúg egy másikat.
    Végrehajtás ideje: kirúgási parancs érkezésekor, ellenőrzések után, de annak lekezelése előtt. Jobb-klikk menüs, valamint !kick parancs esetén is lefut.
  • OnRedirect( int User, int TargetUser, string Address, string Reason)
    Egy felhasználó átirányít egy másikat.
    Végrehajtás ideje: átirányítási parancs érkezésekor, ellenőrzések után, de annak lekezelése előtt. Jobb-klikk menüs, valamint !redirect parancs esetén is lefut.
    OnScriptCompileError( string ScriptName, string ErrorMsg)

    Egy script lefordítása nem sikerül.
    Végrehajtás ideje: hub belső eseménykezelője előtt
  • OnScriptRunTimeError( string ScriptName, string ErrorMsg)
    Egy script futása közben hiba lép fel.
    Végrehajtás ideje: hub belső eseménykezelője előtt
  • OnUnknownPacket( int User, string Data)
    Ismeretlen típusú csomag érkezik.
    Végrehajtás ideje: csomag érkezésekor, belső csomagkezelő hívása után
  • OnUnknownCommand( int User, string Cmd)
    Ismeretlen + vagy ! jeles parancs érkezik a közös chatbe, vagy a HubSecurity-nek privátban.
    Végrehajtás ideje: parancs érkezésekor, belső parancskezelő hívása után
    Letiltható akciók:

    • 0: Visszajelzés, hogy nincs ilyen parancs

3. Használható eljárások

Általános kommunikációs parancsok:

  • Send( int | string User, string Msg)
    Üzenet küldése a felhasználónak raw formátumban. Tartalmaznia kell a záró | karaktert.
  • SendBotMain( int | string User, string Msg)
    Üzenet küldése a felhasználónak a HubSecurity nevében. Tartalmaznia kell a záró | karaktert.
  • SendBotPM( int | string User, string Msg)
    Privát üzenet küldése a felhasználónak a HubSecurity nevében. Tartalmaznia kell a záró | karaktert.
  • SendToClass( int | string Class, string Data)
    Üzenet küldése a megadott felhasználói csoportnak. Tartalmaznia kell a záró | karaktert.
  • SendToAll( string Msg)
    Üzenet küldése az összes csatlakozott felhasználónak raw formátumba. Tartalmaznia kell a záró | karaktert.
  • SendToMCOn( string Msg)
    Üzenet küldése az összes olyan csatlakozott felhasználónak, akinél nincs kikapcsolva a közös chat.
  • SendNotify( int Mode, string Msg)
    Figyelmeztetés küldése az összes olyan chatszobába, melyben a megadott jelentések megjelennek. Tartalmaznia kell a záró | karaktert.
    Szobák kódjai:

    1. Kirúgások
    2. Áritányítások
    3. Átirányítások bannal
    4. Felhasználói bejelentések
    5. Regisztrációs események
    6. Egyéb események
    7. Közös chat szűrő
    8. Privát üzenet szűrő
    9. Elnémított felhasználók írásai
    10. Rejtetten elnémított felhasználók írásai
    11. LUA script hibák
  • Disconnect( int | string User)
    A megadott felhasználó szétkapcsolására szolgál

Vezérlő parancsok:

  • CancelScripts()
    A további scriptek letiltására szolgál
  • CancelAction( int ID1 [, int ID2, …])
    A hozzátartozó függvényen belül a megfelelő műveletet tiltja le. (bővebben lásd: lekezelhető események)
  • UseCommand( string Command, string Param)
    Bizonyos parancs kiadása a HubSecurity nevében. Minden, a !help-ben listázott parancs használható.
  • AddBot( string Name, string Desc)
    Megadott nevű bot regisztrálása a hubra a kívánt leírással.
  • RemoveBot( string Name)
    AddBot() hívással regisztrált bot eltávolítására szolgál.

Felhasználó attribútumait lekérő parancsok:

  • string GetNick( int User)
    Visszatérési értéke a megadott indexhez tartozó felhasználó nickneve
    int GetIndex( string Nick)

    Visszatérési értéke a megadott nicknévhez tartozó felhasználói index
  • string GetIP( int User)
    Visszatérési értéke a megadott indexhez tartozó felhasználó IP címe
  • string GetMyINFO( int User)
    Visszatérési értéke a megadott indexhez tartozó felhasználó MyINFO stringje
  • string GetDesc( int User)
    Visszatérési értéke a megadott indexhez tartozó felhasználó leírása
  • string GetTAG( int User)
    Visszatérési értéke a megadott indexhez tartozó felhasználó tagja
  • string GetShare( int User)
    Visszatérési értéke a megadott indexhez tartozó felhasználó megosztásának mérete byte-okban
  • string GetEmail( int User)
    Visszatérési értéke a megadott indexhez tartozó felhasználó e-mail címe
  • string GetConn( int User)
    Visszatérési értéke a megadott indexhez tartozó felhasználó csatlakozási módja
  • string GetClassName( int User)
    Visszatérési értéke a megadott indexhez tartozó felhasználó osztályának neve
  • bool IsRegged( int User)
    Visszatérési értéke true, ha a megadott indexű felhasználó regisztrált

Hub attribútumait lekérő parancsok:

  • string GetHubName()
    Visszatérési értéke a hub neve
  • string GetTopic()
    Visszatérési értéke a hub topicja
  • string GetBotName()
    Visszatérési értéke a HubSecurity neve
  • int GetUserCount()
    Visszatérési értéke a hubra bejelentkezett felhasználók száma
  • int GetMaxUserIndex()
    Visszatérési értéke a legmagasabb felhasználói index


MINDEN VÉLEMÉNY SZÁMÍT!

Friss hozzászólások