Nazwa serwera IP serwera Sloty
•••PolskiPartyServer™[PPS]®24/7••• @LiveServer.pl graj.server-pps.com:7777 500 Wejdź
Mumble 1.2 server-pps.com 100 Więcej

Pętla.

Moderator: Mod-Team

Pętla.

Postprzez Walvon » 3 maja 2016, o 17:24

A więc tak. Zrobiłem se taką o to pętle w timerze z zamysłem, aby ona sprawdzała czy wszyscy gracze mają false przy IsPlayerHuman. No jednakże nawet jak gracze mają true to komunikat sie wykonuje. Ktoś coś wie jak to naprawić? Kilku PPS'owiczy pewnie coś tam robi w pawn co?
Kod: Zaznacz cały
for(new i; i < MAX_PLAYERS; ++i)
{
   if(IsPlayerConnected(i))
   {
      if(gGracz[i][IsPlayerHuman] == false)
      {
         SendClientMessageToAll(0xFFFFFFFF, "Drużyna Zombie wygrała");
      }
   }
}
Obrazek
Avatar użytkownika
Walvon
User
 
Posty: 596
Dołączył(a): 8 lip 2014, o 10:00
Polubionych : 88 razy
Otrzymał polubień: 102 razy

Re: Pętla.

Postprzez Tiromaniak » 3 maja 2016, o 17:45

Po pierwsze, komunikat wyświetli Ci się tyle razy ile znajdzie graczy z zadeklarowaną zmienną na false, czyli 30 graczy = 30 komunikatów.
Po drugie, sprawdzałeś jaką wartość posiada zmienna? Może Ci się wydawać, że ma true, a tak na prawdę nie ma, bo nie widzę żadnego błędu, który by umożliwiał wyświetlenie komunikatu, jeśli zmienna nie posiada wartości false.

Zrób sobie komendę do sprawdzenia wartości zmiennej.

Kod: Zaznacz cały
CMD:sprawdz(playerid)
{
     format(string, 128, "zmienna: %s", (gGracz[playerid][IsPlayerHuman]) ? ("true") : ("false"));
     SendClientMessage(playerid, -1, string);
     return 1;   
}
Obrazek
Avatar użytkownika
Tiromaniak
Weteran
 
Posty: 1002
Dołączył(a): 31 lip 2012, o 08:20
Polubionych : 10 razy
Otrzymał polubień: 569 razy

Re: Pętla.

Postprzez Walvon » 3 maja 2016, o 17:59

Tiromaniak napisał(a):Po pierwsze, komunikat wyświetli Ci się tyle razy ile znajdzie graczy z zadeklarowaną zmienną na false, czyli 30 graczy = 30 komunikatów.
Po drugie, sprawdzałeś jaką wartość posiada zmienna? Może Ci się wydawać, że ma true, a tak na prawdę nie ma, bo nie widzę żadnego błędu, który by umożliwiał wyświetlenie komunikatu, jeśli zmienna nie posiada wartości false.

Zrób sobie komendę do sprawdzenia wartości zmiennej.

Kod: Zaznacz cały
CMD:sprawdz(playerid)
{
     format(string, 128, "zmienna: %s", (gGracz[playerid][IsPlayerHuman]) ? ("true") : ("false"));
     SendClientMessage(playerid, -1, string);
     return 1;   
}

Okazało sie, że żaden z graczy nie dostaje wartości true.
Zrobiłem to tak w jednym ze stocków:
Kod: Zaznacz cały
gGracz[playerid][IsPlayerHuman] = true;

Gdzie tu jest błąd? Raczej dobrze to przecież jest.
Obrazek
Avatar użytkownika
Walvon
User
 
Posty: 596
Dołączył(a): 8 lip 2014, o 10:00
Polubionych : 88 razy
Otrzymał polubień: 102 razy

Re: Pętla.

Postprzez Tiromaniak » 3 maja 2016, o 18:13

Jak masz zadeklarowaną zmienną? Przed nią musisz mieć dopisek bool: w enumeratorze, bo zapewne go masz.
Obrazek
Avatar użytkownika
Tiromaniak
Weteran
 
Posty: 1002
Dołączył(a): 31 lip 2012, o 08:20
Polubionych : 10 razy
Otrzymał polubień: 569 razy

Re: Pętla.

Postprzez Walvon » 3 maja 2016, o 18:32

Tiromaniak napisał(a):Jak masz zadeklarowaną zmienną? Przed nią musisz mieć dopisek bool: w enumeratorze, bo zapewne go masz.


enum DaneGracza
{
***,
***,
***,
***,
***,
***,
***,
***,
bool:IsPlayerHuman
}
Obrazek
Avatar użytkownika
Walvon
User
 
Posty: 596
Dołączył(a): 8 lip 2014, o 10:00
Polubionych : 88 razy
Otrzymał polubień: 102 razy

Re: Pętla.

Postprzez Tiromaniak » 3 maja 2016, o 18:40

Metoda prób i błędów.

Kod: Zaznacz cały
CMD:sprawdz(playerid)
{
     gGracz[playerid][IsPlayerHuman] = true;
     format(string, 128, "zmienna: %s", (gGracz[playerid][IsPlayerHuman]) ? ("true") : ("false"));
     SendClientMessage(playerid, -1, string);
     return 1;   
}


Jeśli wypluje true, to przypisuje. Co do Twojego kodu to nie jestem w stanie odpowiedzieć Ci dlaczego nie przypisuje. Może masz gdzieś return lub break i zatrzymuje kod w danym miejscu i nie przypisuje. Daj więcej kodu, w którym jest przypisywanie true do zmiennej.
Obrazek
Avatar użytkownika
Tiromaniak
Weteran
 
Posty: 1002
Dołączył(a): 31 lip 2012, o 08:20
Polubionych : 10 razy
Otrzymał polubień: 569 razy

Re: Pętla.

Postprzez Walvon » 3 maja 2016, o 18:49

Tiromaniak napisał(a):Metoda prób i błędów.

Kod: Zaznacz cały
CMD:sprawdz(playerid)
{
     gGracz[playerid][IsPlayerHuman] = true;
     format(string, 128, "zmienna: %s", (gGracz[playerid][IsPlayerHuman]) ? ("true") : ("false"));
     SendClientMessage(playerid, -1, string);
     return 1;   
}


Jeśli wypluje true, to przypisuje. Co do Twojego kodu to nie jestem w stanie odpowiedzieć Ci dlaczego nie przypisuje. Może masz gdzieś return lub break i zatrzymuje kod w danym miejscu i nie przypisuje. Daj więcej kodu, w którym jest przypisywanie true do zmiennej.

Naprawione, po prostu coś zrąbałem w stocku.
Ostatnio edytowano 3 maja 2016, o 18:57 przez Walvon, łącznie edytowano 1 raz
Obrazek
Avatar użytkownika
Walvon
User
 
Posty: 596
Dołączył(a): 8 lip 2014, o 10:00
Polubionych : 88 razy
Otrzymał polubień: 102 razy

Re: Pętla.

Postprzez Tiromaniak » 3 maja 2016, o 18:57

Walvon napisał(a):
Tiromaniak napisał(a):Metoda prób i błędów.

Kod: Zaznacz cały
CMD:sprawdz(playerid)
{
     gGracz[playerid][IsPlayerHuman] = true;
     format(string, 128, "zmienna: %s", (gGracz[playerid][IsPlayerHuman]) ? ("true") : ("false"));
     SendClientMessage(playerid, -1, string);
     return 1;   
}


Jeśli wypluje true, to przypisuje. Co do Twojego kodu to nie jestem w stanie odpowiedzieć Ci dlaczego nie przypisuje. Może masz gdzieś return lub break i zatrzymuje kod w danym miejscu i nie przypisuje. Daj więcej kodu, w którym jest przypisywanie true do zmiennej.

Naprawione, po prostu coś zrąbałem w stocku, ale mam pytanie. Jak zrobić, aby ten tekst właśnie sie nie powtarzał? Mam go w timerze który sie odświeża co kilka sekund, aby sprawdzało czy wszyscy gracze mają wartość false


W jakim celu chcesz sprawdzać co kilka sekund czy mają właśnie taką wartość? Bo teraz tak na prawdę nie rozumiem tego kodu.
Obrazek
Avatar użytkownika
Tiromaniak
Weteran
 
Posty: 1002
Dołączył(a): 31 lip 2012, o 08:20
Polubionych : 10 razy
Otrzymał polubień: 569 razy

Re: Pętla.

Postprzez Walvon » 3 maja 2016, o 18:59

Tiromaniak napisał(a):
Walvon napisał(a):
Tiromaniak napisał(a):Metoda prób i błędów.

Kod: Zaznacz cały
CMD:sprawdz(playerid)
{
     gGracz[playerid][IsPlayerHuman] = true;
     format(string, 128, "zmienna: %s", (gGracz[playerid][IsPlayerHuman]) ? ("true") : ("false"));
     SendClientMessage(playerid, -1, string);
     return 1;   
}


Jeśli wypluje true, to przypisuje. Co do Twojego kodu to nie jestem w stanie odpowiedzieć Ci dlaczego nie przypisuje. Może masz gdzieś return lub break i zatrzymuje kod w danym miejscu i nie przypisuje. Daj więcej kodu, w którym jest przypisywanie true do zmiennej.

Naprawione, po prostu coś zrąbałem w stocku, ale mam pytanie. Jak zrobić, aby ten tekst właśnie sie nie powtarzał? Mam go w timerze który sie odświeża co kilka sekund, aby sprawdzało czy wszyscy gracze mają wartość false


W jakim celu chcesz sprawdzać co kilka sekund czy mają właśnie taką wartość? Bo teraz tak na prawdę nie rozumiem tego kodu.

Ahh dobra, głupote napisałem. Już jest okej. Można zamknąć, bo już se poradze.
Obrazek
Avatar użytkownika
Walvon
User
 
Posty: 596
Dołączył(a): 8 lip 2014, o 10:00
Polubionych : 88 razy
Otrzymał polubień: 102 razy


Powrót do Pomoc

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości