←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Pytanie o tablice

Locked

  • +
  • -
Andrzejek's Photo Andrzejek 11.08.2013

Witam, zrobiłem sobie taką tablce:

 

new Przedzial_Pierwszy[][] = {
    {"Brak", "Brak Misji", 0, 0},
    {"Tytul", "Opis misj", 250, 15},
    {"Tytul", "Opis misj", 250, 15},
    {"Tytul", "Opis misj", 250, 15},
    {"Tytul", "Opis misj", 250, 15}
}

 

0 = Tytuł misji

1 = Opis misji

2 = Nagroda

3 = Np. ile kogo mamy razy zabić

 

I gdy robię tak: Przedzial_Pierwszy[numer misji][0] to jest okej ale gdy dam np. tak: Przedzial_Pierwszy[numer misji][1] lub 2, 3, no to ustawia też Tytuł misji

 

I chciał bym zapytać czy ja poprawienie zrobiłem tą tablice? Może ma inaczej wyglądać?

Quote

  • +
  • -
sebul's Photo sebul 11.08.2013

W taki sposób nie możesz mieszać, jak już, to trzeba zrobić tak
enum eData {
ETytul[64],
EOpis[128],
ENagroda,
EIle
}

new Przedzial_Pierwszy[][eData] = {
{"Brak", "Brak Misji", 0, 0},
{"Tytul", "Opis misj", 250, 15},
{"Tytul", "Opis misj", 250, 15},
{"Tytul", "Opis misj", 250, 15},
{"Tytul", "Opis misj", 250, 15}
}

powinno działać.
Quote

  • +
  • -
K!113r's Photo K!113r 11.08.2013

any: i trzy wymiary też by chyba połknęło lecz ręki nie dam, gdyż nie mam gdzie sprawdzić.
Przypomniałem sobie, ja podobną tablice tylko miałem float zamiast string, kod podany wyżej będzie do tego celu lepszy.
Edited by K!113r, 11.08.2013 14:44.
Quote

  • +
  • -
Andrzejek's Photo Andrzejek 11.08.2013

Okej zaraz to przetestuje, nawet nie pomyślałem o enumie ^^

Quote

  • +
  • -
Andrzejek's Photo Andrzejek 11.08.2013

Dobra sebul działa, tylko jeszcze mam jeden problem

 

public Damage(id)
{
    new attacker = get_user_attacker(id);
    new damage = read_data(2);
    
    if(!is_user_alive(attacker) || !is_user_connected(attacker) || id == attacker)
        return PLUGIN_CONTINUE;
    
    if(misja_gracza[attacker][1][5] == 2)
    {
        wartosc_postep[attacker][1][5] += damage;
        SprawdzMisje(attacker, 1, 5);
    }
    return PLUGIN_CONTINUE;
}

public SprawdzMisje(id, rozdzial, misja)
{
    if(misja_gracza[id][rozdzial][misja] == 2 && wartosc_postep[id][rozdzial][misja] == Rozdzial_Pierwszy[misja][eWartosc1])
    {
        misja_gracza[id][rozdzial][misja] = 1;
        
        ResetMisji(id, rozdzial, misja);
                                
        return PLUGIN_CONTINUE
    }    
    return PLUGIN_CONTINUE
}

 

Wszystkie misje typu zabij tylu graczy działa okej, ale tutaj sprawdzenie nie działa poprawnie np. mam zadać 20000 obrażeń graczom i gdy już osiągne ten postęp to nie sprawdza tylko idzie dalej i dalej :(

Quote

  • +
  • -
sebul's Photo sebul 11.08.2013

Dobra sebul działa, tylko jeszcze mam jeden problem
 
 

public Damage(id)
{
    new attacker = get_user_attacker(id);
    new damage = read_data(2);
    
    if(!is_user_alive(attacker) || !is_user_connected(attacker) || id == attacker)
        return PLUGIN_CONTINUE;
    
    if(misja_gracza[attacker][1][5] == 2)
    {
        wartosc_postep[attacker][1][5] += damage;
        SprawdzMisje(attacker, 1, 5);
    }
    return PLUGIN_CONTINUE;
}

public SprawdzMisje(id, rozdzial, misja)
{
    if(misja_gracza[id][rozdzial][misja] == 2 && wartosc_postep[id][rozdzial][misja] == Rozdzial_Pierwszy[misja][eWartosc1])
    {
        misja_gracza[id][rozdzial][misja] = 1;
        
        ResetMisji(id, rozdzial, misja);
                                
        return PLUGIN_CONTINUE
    }    
    return PLUGIN_CONTINUE
}
 
Wszystkie misje typu zabij tylu graczy działa okej, ale tutaj sprawdzenie nie działa poprawnie np. mam zadać 20000 obrażeń graczom i gdy już osiągne ten postęp to nie sprawdza tylko idzie dalej i dalej :(

A weź pomyśl logicznie ;]
Zabijając kogoś, za jednym razem dodaje się tylko jeden frag do ogólnej liczby, więc warunek z == kiedyś się spełni na pewno, ale zadając jakieś obrażenia, doda się po prostu jakaś liczba, np. 5, czy 10. Więcej chyba już pisać nie muszę.
Quote

  • +
  • -
Andrzejek's Photo Andrzejek 11.08.2013

Ale tutaj jest tak: wartosc_postep[attacker][1][5] += damage;

Quote

  • +
  • -
sebul's Photo sebul 11.08.2013

Chodzi tutaj o sprawdzanie czy misja zakończona, a nie to w jaki sposób jest coś dodawane, a dokładniej chodzi o ten warunek
if(misja_gracza[id][rozdzial][misja] == 2 && wartosc_postep[id][rozdzial][misja] == Rozdzial_Pierwszy[misja][eWartosc1])

a jeszcze dokładniej o to
wartosc_postep[id][rozdzial][misja] == Rozdzial_Pierwszy[misja][eWartosc1]
Quote

  • +
  • -
Andrzejek's Photo Andrzejek 11.08.2013

A no tak ^^ Już wiem, można zamknać

Quote

  • +
  • -
sebul's Photo sebul 11.08.2013

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
Quote
Locked