Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

for(new i=0... czy for(new i=1... ?


  • Zamknięty Temat jest zamknięty
8 odpowiedzi w tym temacie

#1 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 10.01.2011 01:50

Witam. Mam takie pytanie odnośnie pętli "for". Jeśli chcemy wykonać coś na wszystkich graczach to jak to powinno być? Wiele razy spotykam się z, np. takim zapisem
for(new i=0; i<=32; ++i) // kod

ale przypadkiem te 0 jest nie potrzebne? Czyli nie lepiej pisać to w ten sposób
for(new i=1; i<=32; ++i) // kod

??
Oczywiście za 32 można podstawić inne wartość, np.
new players[32], num;
get_players(players, num);
for(new i=1; i<=num; ++i) // kod

ale chodzi mi o samą tą jedynkę...
  • +
  • -
  • 1

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#2 b0niek

    Zaawansowany

  • Użytkownik

Reputacja: 88
Zaawansowany

  • Postów:133
  • Imię:Bartek
  • Lokalizacja:Tuż przed tobą
Offline

Napisano 10.01.2011 07:21

for(new i=1; i<=32; ++i) // kod
++i oznacz że i jest powiększane jeszcze przed wykonaniem pętli więc i przyjmie wartość 2, więc gracz z id 1 zostanie pominięty. Jeśli użyjesz
for(new i=1; i<=32; i++) // kod
To i zostanie powiększone o 1 po wykonaniu pętli więc ten zapis powinien być poprawny.

  • +
  • -
  • 1

Dołączona grafika
Dołączona grafika
AVE SOAD!


#3 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 10.01.2011 10:59

for po wszystkich gracza powinien być od 1 do maxplayers
new giMaxPlayers = get_maxplayers();
for(new i=1;i<=giMaxPlayers;i++){
}

gracz 0 nie istnieje, więc nie przejdzie żadnego testu typu connected, alive, admin
  • +
  • -
  • 1

#4 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 10.01.2011 11:05


new players[32], num;
get_players(players, num);
for(new i=0; i<num; i++) // kod

  • +
  • -
  • 1

#5 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 10.01.2011 18:29

++i oznacz że i jest powiększane jeszcze przed wykonaniem pętli więc i przyjmie wartość 2, więc gracz z id 1 zostanie pominięty.

A ja myślałem, że to akurat nie robi różnicy...

new players[32], num;
get_players(players, num);
for(new i=0; i<num; i++) // kod

A tutaj rozumiem, że może być 1 zamiast tego 0? Oraz przed num nie może być "<="? Trochę głupie pytania, niby takie małe szczegóły, ale z tego co widzę, jednak mają spore znaczenie...
  • +
  • -
  • 1

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#6 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 10.01.2011 20:35

tak ponieważ id będziesz brał z tablicy a indexy tablic zaczynaja się od 0 a kończą na n-1 (n - to wielkośc tablicy zapraszam do tutorialów :) )
  • +
  • -
  • 0

#7 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 10.01.2011 20:49

A tutaj rozumiem, że może być 1 zamiast tego 0

Chodziło mi bardziej o to, czy nie lepiej będzie, jakby dać tam 1, bo skoro na 0 nic nie można wykonać, to zawsze jest to chyba o jedną pętlę za dożo... a wstawić, to tam i 15 można...

zapraszam do tutorialów

I tak sporo przeczytałem, ale właśnie nie spotkałem się z czymś co by wytłumaczyło moje pierwsze pytanie.
Z tego co widzę, w dosyć wielu pluginach, chyba nie potrzebnie zaczyna się od 0 w tych pętlach, bo skoro jest tak jak R3X napisał, to po co próbować wykonywać coś na nieistniejącym graczu... chyba że jest coś innego, co wymaga tego zera w tamtym miejscu?

I jeszcze sprawa tego "<="... jak zrobiłbym tak
new players[32], num;
get_players(players, num);
for(new i=1/* albo 0 */; i<num; i++) // kod

to pętla nie ominie ostatniego gracza?

Użytkownik sebul edytował ten post 10.01.2011 20:52

  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#8 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 553
Godlike

  • Postów:11 976
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 10.01.2011 20:51

w tablicy masz id graczy 0 oznacza index tablicy a nie id gracza
  • +
  • -
  • 1

#9 sebul

    Godlike

  • Autor tematu
  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 10.01.2011 20:54

w tablicy masz id graczy 0 oznacza index tablicy a nie id gracza

I wszystko jasne, temat można zamknąć, jeszcze raz dzięki za pomoc. A tutaj [lekcja] Pętla for | Kurs C++ przed chwilą znalazłem dosyć wyczerpujący kurs na temat pętli, może się komuś przyda.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych