appzone.inc

Biblioteka AMXX

Biblioteka AMMX: appzone.inc jest zbiorem funkcji, których celem jest ułatwienie pracy podczas pisania pluginów AMXX do gry Counter-Strike 1.6 oraz skrócenie ilości kodu w pliku źródłowym pluginu.
Jak zacząć korzystać?
Dokumentacja:
az_nick
az_fmt
az_explode
az_wordending_int
az_wordending_float
az_sql_connect
az_sql_send_query
Aby rozpocząć korzystanie z biblioteki appzone.inc wykonaj poniższe kroki:

1. Pobierz bilbiotekę appzone.inc -
2. Wrzuć plik appzone.inc do katalogu /include w swoim kompilatorze AMXX

Od teraz bez żadnych przeszkód możesz korzystać z funkcji biblioteki w swoich pluginach AMXX.
Opis:

Zwraca nick gracza o podanym id.
Składnia:

az_nick(id)
id - index gracza [od 1 do 32 (jeśli indexem będzie 0, zostanie pobrana nazwa serwera)]
Przykład:

client_print(id, print_chat, "Twoj nick: %s", az_nick(id));

// Wyświetli nick gracza na czacie
Opis:

Zwraca sformatowany string.
Działa tak samo jak funkcja fmt() w AMXX 1.10, lecz można jej używać również w starszych wersjach AMXX (AMXX 1.8.2+).
Składnia:

az_fmt(const textformat[], any:...)
textformat[] - string do formatowania
any:... - parametry do podstawienia
Przykład:

new dwa = 2,
    cztery = 4,
    text[] = "To sie zgadza";

new menu = menu_create("Przykladowe menu", "menu_handle");
menu_additem(menu, az_fmt("%d + %d jest rowne %d! %s", dwa, dwa, cztery, text));
menu_display(id, menu);

// Wyświetli opcję w menu o nazwie: "2 + 2 jest rowne 4! To sie zgadza"
Opis:

Dzieli ciąg znaków na tablicę.
Składnia:

az_explode(const string[], const character, output[][], const maxs, const maxlen)
string – ciąg znaków (string)
character – znak na podstawie którego ma dzielić string
output – tablica, do której zostaną zwrócone części podzielonego stringu
maxs – maksymalna ilość podziałów
maxlen – maksymalna długość jednej części
Przykład:

new text[30], output[6][33];
formatex(text,charsmax(text), "Test 1|Test 2|Test 3");

new ilosc_czesci = az_explode(text, '|', output, charsmax(output), charsmax(output[]));

client_print(id, print_chat, "Ilosc czesci: %d", ilosc_czesci);

for(new i = 0; i < ilosc_czesci; i++)
{
    client_print(id, print_chat, "Czesc %d: %s", i, output[i]);
}

// Wyświetli na czacie następujący wynik:
//
// Ilosc czesci: 3
// Czesc 0: Test 1
// Czesc 1: Test 2
// Czesc 2: Test 3
Opis:

Dodaje polskie końcówki wyrazów w zależności od wartości.
Odpowiedni dla liczb całkowitych (int).
Składnia:

az_wordending_int(ile, czlon[], zero[], jeden[], dwa[])
ile – liczba całkowita (int)
czlon – początek wyrazu wyświetlanego, identyczny dla wszystkich kolejnych argumentów
zero – końcówka, którą przyjmuje wyraz dla wartości ile równej 0, która dołączona do członu da pełny, odmieniony wyraz
jeden – końcówka, którą przyjmuje wyraz dla wartości ile równej 1, która dołączona do członu da pełny, odmieniony wyraz
dwa – końcówka, którą przyjmuje wyraz dla wartości ile równej 2, która dołączona do członu da pełny, odmieniony wyraz
Przykład:

new frags = get_user_frags(id);

client_print(id, print_chat, "Zdobyles %d %s", frags, az_wordending_int(frags, "frag", "ow", "a", "i"));
Opis:

Dodaje polskie końcówki wyrazów w zależności od wartości.
Odpowiedni dla liczb zmiennoprzecinkowych (float).
Składnia:

az_wordending_float(Float:ile, czlon[], zero[], pol[], jeden[], dwa[])
ile – liczba całkowita (int)
czlon – początek wyrazu wyświetlanego, identyczny dla wszystkich kolejnych argumentów
zero – końcówka, którą przyjmuje wyraz dla wartości ile równej 0, która dołączona do członu da pełny, odmieniony wyraz
pol – końcówka, którą przyjmuje wyraz dla wartości ile równej 0.5, która dołączona do członu da pełny, odmieniony wyraz
jeden – końcówka, którą przyjmuje wyraz dla wartości ile równej 1, która dołączona do członu da pełny, odmieniony wyraz
dwa – końcówka, którą przyjmuje wyraz dla wartości ile równej 2, która dołączona do członu da pełny, odmieniony wyraz
Przykład:

new Float: promile = 16.5;

client_print(id, print_chat, "Masz %.1f %s niebezpiecznej substancji we krwi", promile, az_wordending_float(promile, "promil", "i", "a", "", "e"));
Opis:

Tworzy połączenie z bazą danych.
Składnia:

az_sql_connect(const host[], const user[], const pass[], const db[])
host - host bazy danych
user - użytkowniki bazy danych
pass - hasło do bazy danych
db - nazwa bazy danych
Przykład:

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);

    // Pozostała część kodu

    az_sql_connect("sql.pukawka.pl", "123123", "hdGdb72dnaX", "123123_TEST");

    stworz_tabele();

}

public stworz_tabele()
{
    az_sql_send_query("CREATE TABLE IF NOT EXISTS `appzone_inc_test` ( \
        `id` int NOT NULL AUTO_INCREMENT, \
        `test1` varchar(33) NOT NULL, \
        `test2` int NOT NULL, \
        `test3` int NOT NULL, \
        PRIMARY KEY (`id`) \
    )");
}
Opis:

Wykonuje zapytanie do bazy z możliwością zwrócenia wyniku zapytania.
Składnia:

az_sql_send_query(const query[], const query_handle[] = "", id = -1)
query - zapytanie, które ma zostać wysłane do bazy danych
query_handle - funkcja, do kórej ma zostać zwrócony wynik zapytania [zostaw puste jeśli zapytanie ma nie zwracać wyniku]
id - index gracza [od 1 do 32 (jeśli indexem będzie 0, zostanie pobrana nazwa serwera)] [zostaw puste jeśli nie przekazujesz indexu gracza]
Przykład:

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);

    // Pozostała część kodu

    az_sql_connect("sql.pukawka.pl", "123123", "hdGdb72dnaX", "123123_TEST");

    stworz_tabele();
}

public stworz_tabele()
{
    az_sql_send_query("CREATE TABLE IF NOT EXISTS `appzone_inc_test` ( \
        `id` int NOT NULL AUTO_INCREMENT, \
        `test1` varchar(33) NOT NULL, \
        `test2` int NOT NULL, \
        `test3` int NOT NULL, \
        PRIMARY KEY (`id`) \
    )");

    dodaj_dane_do_tabeli();
}

public dodaj_dane_do_tabeli()
{
    az_sql_send_query(az_fmt("INSERT INTO appz_inc_test VALUES (null, 'test', %d, %d)", random_num(10, 9999), random_num(10, 9999)));
}

public client_authorized(id)
{
    wczytaj_dane_z_tabeli(id);
}

public wczytaj_dane_z_tabeli(id)
{
    az_sql_send_query("SELECT * FROM appz_inc_test", "sqlselect_handle", id);
}

public sqlselect_handle(failstate, Handle: query_response, error[], errnum, data[], size)
{
    if(failstate != TQUERY_SUCCESS)
    {
        log_amx("SQL Error: %s", error);
        return PLUGIN_CONTINUE;
    }

    new id = data[0];

    new test2, test3;
    while(SQL_NumResults(query_response))
    {
        new test1[30];
        SQL_ReadResult(query, 1, test1, charsmax(test1));
        test2 = SQL_ReadResult(query_response, 2);
        test3 = SQL_ReadResult(query_response, 3);

        client_print(0, print_chat, "Index gracza: %d | T1: %s | T2: %d | T3: %d", id, test1, test2, test3);

        SQL_NextRow(query_response);
    }

    return PLUGIN_CONTINUE;
}