←  Problemy z pluginami

AMXX.pl: Support AMX Mod X i SourceMod

»

Tag mismatch

  • +
  • -
wacho - zdjęcie wacho 17.10.2017

Cześć, 

Przy kompilacji zwraca mi błąd Tag mismatch 

public NowaRunda()
{
      new stats[8], bdhits[8]
      for(new i = 1; i <= MAX_PLAYERS; i++)
      {
            if(!is_user_connected(i) || !ePlayerQuestType[i]) continue;
            
            get_user_rstats(i, stats, bdhits)
            
            switch(ePlayerQuestType[i])
            {
                  case CELNOSC:
                  {
                        if(stats[5])
                        {
                              new celnosc = 100 * stats[5] / stats[4];    // TUTAJ ZWRACA TAG MISMATCH
                              
                              if(celnosc >= ArrayGetCell(gIleRazy, iPlayerQuestID[i]))
                              {
                                    Nagroda(i);
                                    return;
                              }

                              client_print(i, print_chat, "W poprzedniej rundzie miales %i%% celnosci!", celnosc)
                        }
                  }
                  case KILLSROUND:
                        iPlayerQuestProgress[i] = 0

                  case HSRATIO:
                  {
                        if(stats[2])
                        {
                              new hsratio = 100 * stats[2] / stats[0];  // TUTAJ ZWRACA TAG MISMATCH
                              
                              if(hsratio >= ArrayGetCell(gIleRazy, iPlayerQuestID[i]))
                              {
                                    Nagroda(i);
                                    return;
                              }
                                    
                              client_print(i, print_chat, "W poprzedniej rundzie miales %i%% hs/kills!", hsratio)
                        }
                  }
            }
      }
}

add_progress(id, amount)
{
      if((iPlayerQuestProgress[id] += amount) >= ArrayGetCell(gIleRazy, iPlayerQuestID[id])) // TUTAJ ZWRACA TAG MISMATCH
            Nagroda(id);
}
 

Wie ktoś co jest nie tak ? 

new celnosc
new hsratio
 

i ostatni if

Odpowiedz

  • +
  • -
Ogen Dogen - zdjęcie Ogen Dogen 17.10.2017


if(stats[5])


if(stats[2])

 

To chyba jest liczba całkowita, a nie wartość logiczna ;)

Odpowiedz

  • +
  • -
wacho - zdjęcie wacho 18.10.2017

Zgadza się ale przecież zastosowana jest zmienna dla liczb całkowitych a nie new bool

Odpowiedz

  • +
  • -
Ogen Dogen - zdjęcie Ogen Dogen 19.10.2017

Taki warunek sprawdza tylko czy stats[2] jest prawdziwe, a jest prawdziwe dla każdej liczby różnej od zera.

Chodziło ci może o bardziej sprecyzowane wyrażenie np. stats[2] > 0 ?

Odpowiedz

  • +
  • -
_McHappy - zdjęcie _McHappy 20.10.2017

Dla tego typu problemów wystarczy zastosować !!

if(!!stats[2])
{
...
}

Ale stosuje się to w przypadku przypisania wartości do zmiennej.

Wydaje mi się jednak, że problem leży nie w tym, co wyżej lecz w deklaracji zmiennych. Kompilator nie przewiduje, czy użytkownik chce sprawdzić warunek zmienna!=0, czy też zmienna>0 i ostrzeżenia z tego powodu nie wyrzuci.

Byłbyś w stanie podrzucić na wklejce kompletny kod pluginu?
Użytkownik _McHappy edytował ten post 20.10.2017 10:55
Odpowiedz

  • +
  • -
wacho - zdjęcie wacho 20.10.2017

Można zamknąć już sobie poradziłem. 

 

Problem leżał w kompilatorze miałem jakiegos includa który to powodował. wrzuciłem na czysty kompilator i poszło :) 

Odpowiedz