←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Dziwny problem ze sprawdzaniem poziomu

Zablokowany

  • +
  • -
Andrzejek - zdjęcie Andrzejek 09.08.2015

Witam, mam taki problem ze sprawdzaniem poziomu, dawno już nie pisałem w pawnie, wiec nie wiem co zrobiłem źle, mam taki kod

public Death()

{

    new id = read_data(2);

    new attacker = read_data(1);

    

    if(!is_user_alive(attacker) || !is_user_connected(attacker))

        return PLUGIN_CONTINUE;

    

    if(get_user_team(id) != get_user_team(attacker)) {        

        zabojstwa_gracza[attacker]++;

    }

    SprawdzPoziom(attacker);    

    return PLUGIN_CONTINUE;

}

public SprawdzPoziom(id)

{    

    if(poziom_gracza[id] < 20)

    {

        while(zabojstwa_gracza[id] >= zabojstwa_poziomu[poziom_gracza[id]]) {

            poziom_gracza[id]++;

        }

    }

}

Prosto kod, po zabójstwie sprawdza poziom gracza....

new const nazwy_poziomu[][] = {"Brak",

    "nazwa 1",

    "nazwa 2",

    "nazwa 3",

    "nazwa 4",

    "nazwa 5",

    "nazwa 6",

    "nazwa 7",

    "nazwa 8",

    "nazwa 9",

    "nazwa 10",

    "nazwa 11",

    "nazwa 12",

    "nazwa 13",

    "nazwa 14",

    "nazwa 15",

    "nazwa 16",

    "nazwa 17",

    "nazwa 18",

    "nazwa 19",

    "nazwa 20"

}



new const zabojstwa_poziomu[] = {

    0, 5, 10, 20, 30,

    40, 50, 60, 70, 80,

    90, 100, 110, 120, 130,

    140, 150, 160, 170, 180

}

Tabele z nazwami poziomów i ile trzeba zdobyć do nastepnego poziomu...

public Pokaz(id)

{

    id -= ZADANIE_POKAZ;

    

    set_task(0.1, "Pokaz", id+ZADANIE_POKAZ);

    

    if(is_user_connected(id) && is_user_alive(id)) {

        new szText[428], szName[64];        

        get_user_name(id, szName, sizeof szName - 1);

        format(szText, sizeof szText - 1, "N: %s | Z: %i / %i", nazwy_poziomu[poziom_gracza[id]], zabojstwa_gracza[id], zabojstwa_poziomu[poziom_gracza[id]]);

        message_begin(MSG_ONE, get_user_msgid("StatusText"), {0,0,0}, id);

        write_byte(0);

        write_string(szText);

        message_end();

        return PLUGIN_CONTINUE;

    }

    return PLUGIN_CONTINUE;

}

Oraz pokazywanie wiadomości...

 

Noi problem polega na tym że przed wbiciem ostatniego poziomu mam 179 zabójstw, gdy zabijam 180, nic sie nie zmienia i serwer zaczyna sypać logami, a nazwa poziomu się nie zmienia a ilość zabójstw zostaje 179

[AMXX]    [0] plugin.sma::Pokaz (line 114)

[AMXX] Displaying debug trace (plugin "plugin.amxx")

line 114 to

write_string(szText);

CO zrobiłem źle??

Odpowiedz

  • +
  • -
Master Yoga - zdjęcie Master Yoga 09.08.2015

Od razu co mi się rzuciło w oczy to:
new const nazwy_poziomu[]
21 stałych
 
new const zabojstwa_poziomu[]
20 stałych
Użytkownik Master Yoga edytował ten post 09.08.2015 21:37
Odpowiedz

  • +
  • -
Andrzejek - zdjęcie Andrzejek 09.08.2015

OOOO, nie umiem liczyć ^^, teraz fakt dodaje nazwe poziomu, ale zabójstwa sie nie zmieniają :]

Odpowiedz

  • +
  • -
Master Yoga - zdjęcie Master Yoga 09.08.2015

    if(poziom_gracza[id] < 20)
wiec to też idzie do poprawki
bo nie będziesz miał ostatniego lvl.

p.s luuz przy tylu liniach kodu łatwo coś przeoczyć
Odpowiedz

  • +
  • -
Andrzejek - zdjęcie Andrzejek 09.08.2015

Close, dałem sobie rade, pare zmian i gotowe ^^

Odpowiedz

  • +
  • -
radim - zdjęcie radim 10.08.2015

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Temat zamknięty na prośbę użytkownika.


Z pozdrowieniami,
Zespół AMXX.PL
Odpowiedz
Zablokowany