NÁVOD: Kompilace pluginů

Message
Autor
Uživatelský avatar
Qefik
Příspěvky: 5714
Registrován: 26 pro 2009, 11:26
Reputation: 0
Kontaktovat uživatele:

NÁVOD: Kompilace pluginů

#1 Příspěvekod Qefik » 07 zář 2013, 12:28

V tomto návodu se nebudeme zabývat úpravou pluginů, ale kompilací zdrojových kódů do souboru, které je čitelné pro AMXMODX, tedy konverze formátu *.sma do *.amxx.

Jaké jsou možnosti?
  1. Online přes oficiální stánky amxmodx.org
    Jedná se o jednoduchou webovou službu, nalezneme ji na adrese http://amxmodx.org/webcompiler.cgi

    Můžeme buď nahrát přímo *.sma soubor, nebo vložit do okna kód, který chceme zkompolovat.
    Nevýhodou tohoto kompileru je fakt, že není možné kompilovat pluginy, které využívají vlastní include soubory (např. colorchat).

  2. Lokálně přes AMXX Studio
    Osobně tento způsob považuji za efektivnější, jelikož je možné kompilovat rychleji a takřka jakýkoliv plugin. Mnoho z vás ale neví jak vůbec udělat, aby AMXX Studio umělo kompilovat pluginy, protože pokud si stáhnete AMXX Studio přímo z oficiálních stránek, neobsahuje kompiler. Proto jsem si pro vás nachystal balíček, který obsahuje i kompiler a některé includes.
    AMXX studio.zip
    (2.69 MiB) Staženo 613 x


    Stačí pak pouze archiv rozbalit do libovolné složky a následně upravit cestu v configu, který se nachází v */AMXX studio/config/Settings.ini
    Vypadá takto:

    Kód: Vybrat vše

    [Editor]
    MakeBaks=1
    DontLoadFilesTwice=1
    Auto-Indent=1
    UnindentClosingBrace=1
    UnindentEmptyLine=0
    Disable_AC=0
    Disable_CT=0
    AutoDisable=1500
    AutoHideCT=1
    IndentOpeningBrace=1
    IndentStyle=0
    IndentSomethingElse=
    [Pawn-Compiler]
    Path=D:\AMXX studio\kompiler\amxxpc.exe
    Args=
    DefaultOutput=D:\AMXX studio\compiled plugins\
    [CPP-Compiler]
    Path=
    Args=
    DefaultOutput=
    [Half-Life]
    Filename=
    Params=
    AMXXListen=
    [FTP]
    Host=
    Port=21
    Username=
    Password=
    DefaultDir=
    Passive=1
    [Proxy]
    ProxyType=0
    Host=
    Port=8080
    Username=
    Password=
    [Misc]
    DefaultPluginName=New Plug-In
    DefaultPluginVersion=1.0
    DefaultPluginAuthor=LUKAS
    SaveNotesTo=0
    CPUSpeed=5
    LangDir=
    ShowStatusbar=1
    WindowState=0


    Nás budou zajímat pouze tyto dva řádky

    Kód: Vybrat vše

    Path=D:\AMXX studio\kompiler\amxxpc.exe

    Kód: Vybrat vše

    DefaultOutput=D:\AMXX studio\compiled plugins\


    Upravíme cestu tak, aby odpovídala adresáři, kam jsme rozbalili archiv. Pro vysvětlení, pokud jsem si rozbalil archiv do složky fakaheda na disku C, tak budou oba řádky vypadat takto:

    Kód: Vybrat vše

    Path=C:\fakaheda\AMXX studio\kompiler\amxxpc.exe

    Kód: Vybrat vše

    DefaultOutput=C:\fakaheda\AMXX studio\compiled plugins\


    Uložíme a vyzkoušíme zkompilovat nějaký plugin. Můžeme vyzkoušet překompilovat zdrojové kódy pluginu free look. Ve složce kompiler najdeme soubor free look.sma a otevřeme. Doporučuji nastavit AMXX studio jako výchozí program pro všechny soubory s příponou *.sma (Pravým na soubor, otevřít v programu, procházet, najdeme složku AMXX studio a v ní zvolíme AMXX_Studio.exe).

    Otevře se nám takovýto kód:

    Kód: Vybrat vše

    #include <amxmodx> 
    #include <orpheu> 
    #include <fakemeta> 

    #define PLUGIN_NAME       "Admin Free Look" 
    #define PLUGIN_AUTHOR  "Jim" 
    #define PLUGIN_VERSION "1.0" 

    new CvarAdminFreelook; 
    new CvarAdminFreeLookFlag; 

    new CvarForceChaseCam; 
    new CvarForceCamera; 

    new PlayerTeam; 

    const m_iTeam = 114; 

    const TEAM_UNASSIGNED = 0; 
    const TEAM_SPECTATOR = 3; 

    public plugin_init() 

        register_plugin( PLUGIN_NAME, PLUGIN_AUTHOR, PLUGIN_VERSION ); 
         
        CvarAdminFreelook     = register_cvar( "amx_adminfreelook", "1" ); 
        CvarAdminFreeLookFlag = register_cvar( "amx_adminfreelookflag", "d" ); 
         
        CvarForceChaseCam = get_cvar_pointer( "mp_forcechasecam" ); 
        CvarForceCamera   = get_cvar_pointer( "mp_forcecamera" ); 
         
        new OrpheuFunction:Observer_FindNextPlayer = OrpheuGetFunction( "Observer_FindNextPlayer", "CBasePlayer" ); 
         
        OrpheuRegisterHook( Observer_FindNextPlayer, "OnObserver_FindNextPlayer_Pre" , OrpheuHookPre ); 
        OrpheuRegisterHook( Observer_FindNextPlayer, "OnObserver_FindNextPlayer_Post", OrpheuHookPost ); 


    public OnObserver_FindNextPlayer_Pre( const player, const bool:searchDown, const playerNameToSearch[] ) 

        if( get_pcvar_num( CvarAdminFreelook ) )  
        { 
            new forceChaseCam = get_pcvar_num( CvarForceChaseCam ); 
            new forceCamera = get_pcvar_num( CvarForceCamera ); 
         
            if( ( forceChaseCam || forceCamera ) && get_user_flags( player ) & get_pcvar_flags( CvarAdminFreeLookFlag ) ) 
            { 
                PlayerTeam = get_pdata_int( player, m_iTeam ); 
                set_pdata_int( player, m_iTeam, TEAM_SPECTATOR ); 
            } 
        } 


    public OnObserver_FindNextPlayer_Post( const player, const bool:searchDown, const playerNameToSearch[] ) 

        if( PlayerTeam != TEAM_UNASSIGNED )  
        { 
            set_pdata_int( player, m_iTeam, PlayerTeam ); 
            PlayerTeam = TEAM_UNASSIGNED; 
        } 
    }  
     

    Všimněte si druhého řádku, zde se nachází právě incluce třetí strany, takže bychom tento plugin přes webcompiler nezkompilovali. Jak přidávat includes se dočteme na konci, nyní je potřeba pouze otestovat kompiler. Ten spustíme zelenou šipkou v horním panelu (na obrázku podbarvena žlutě)
    Spoiler: zobrazit
    AMXX_studio.PNG
    AMXX_studio.PNG (53.75 KiB) Zobrazeno 6036 x

    Pokud vše proběhlo správně, v dolním ohně vyskočí takováto hláška:

    Kód: Vybrat vše

    Welcome to the AMX Mod X 1.8.1-300 Compiler.
    Copyright (c) 1997-2013 ITB CompuPhase, AMX Mod X Team

    Header size:            484 bytes
    Code size:             1080 bytes
    Data size:              808 bytes
    Stack/heap size:      16384 bytes; estimated max. usage=42 cells (168 bytes)
    Total requirements:   18756 bytes
    Done.

    Jedná se o log, který zaznamenává průběh kompilace, pokud kompilátor narazí na nějaký problém, zobrazí se právě v tomto okně.
    Zkompilovaný plugin nalezneme ve složce compiled plugins v kořenovém adresáři AMXX Studia.

Jak přidat include do kompilátoru?
U každého pluginu, který nějaký include potřebuje, ho vždy autor přiloží. Jedná se o soubor *.inc. jediné co je potřeba, tak vložit tento soubor do složky *\AMXX studio\kompiler\include.
Rozdávat rady je zbytečné. Moudrý si poradí sám a hlupák stejně neposlechne.
Mark Twain

Zpět na „Návody“

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů