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

petla for oraz while rozniece dla petli z indexow graczy


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
8 odpowiedzi w tym temacie

#1 Asiap

    Wszechpomocny

  • Girl

Reputacja: 171
Profesjonalista

  • Postów:323
  • Lokalizacja:Kętrzyn
Offline

Napisano 17.02.2016 20:16

witam

 

czym sie roznia ponizsze kody:

new i = 1;
while(++i <= 32)
{
	if(!is_user_alive(i))
	{
		continue;
	}
	//kod
}

oraz

new i = 1;
for(; i <= 32; i++)
{
	if(!is_user_alive(i))
	{
		continue;
	}
	//kod
}

pisane na szybko i dlatego jest 32 a nie maxplayers ale to tylko dla przykladu

dotychczas stosowalam petle for ale od jakiegos czasu stosuje while 


  • +
  • -
  • 0

#2 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

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

Napisano 17.02.2016 23:26

Chodzi o różnice wydajnościowe ? Nie nie ma żadnych pod tym względem


  • +
  • -
  • 0

#3 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 28.02.2016 17:05

W tym przypadku pętla while wykona się o raz mniej, ponieważ zmienna wejściowa i=1 już przy pierwszym uruchomieniu pętli zostaje najpierw preinkrementowana (podniesiona o 1) a dopiero po tym jej wartość zostaje sprawdzona. W skutek tego działania pierwsza wartość zmiennej 'i' z jaką pętla się wykona to 2 a nie 1 jak w przypadku pętli for.


  • +
  • -
  • 0

#4 Asiap

    Wszechpomocny

  • Autor tematu
  • Girl

Reputacja: 171
Profesjonalista

  • Postów:323
  • Lokalizacja:Kętrzyn
Offline

Napisano 28.02.2016 22:03

czyli dobrze? bo najwczesniej wchodza na serwer boty oraz hltv a dopiero pozniej gracze

czy sie myle??


  • +
  • -
  • 0

#5 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 28.02.2016 23:36

Nie mylisz się, ale musisz wziąć pod uwagę, że czasem z jakiegoś powodu hltv się nie połączy i zrobi to za kilka chwil, a wtedy id 1 może dostać pierwszy gracz.


  • +
  • -
  • 0

#6 Asiap

    Wszechpomocny

  • Autor tematu
  • Girl

Reputacja: 171
Profesjonalista

  • Postów:323
  • Lokalizacja:Kętrzyn
Offline

Napisano 06.03.2016 16:59

a jeszcze jedne pytanie

bo moge zrobic petle z NUM graczami ktore pobierane jest za pomoca get_players

czym ten sposob sie znacząco rozni od petli z pierwszego posta (poza tym ze nie szuka indexow w przedziale 1 - maxplayers)??


  • +
  • -
  • 0

#7 Wielkie Jol

    REPREZENTUJE SIEBIE I CAŁĄ GALAKTYKĘ

  • Support Team

Reputacja: 683
Wszechmogący

  • Postów:1 258
  • GG:
  • Lokalizacja:AMXX
Offline

Napisano 06.03.2016 19:07

a jeszcze jedne pytanie

bo moge zrobic petle z NUM graczami ktore pobierane jest za pomoca get_players

czym ten sposob sie znacząco rozni od petli z pierwszego posta (poza tym ze nie szuka indexow w przedziale 1 - maxplayers)??

Wiesz no, używając liczby 32 nie jesteś pewna, czy liczba slotów na serwerze na 100% wynosi 32, a funkcja get_players zwraca dokładną ilość graczy, jaka jest na serwerze.


  • +
  • -
  • 0

"Żaden etyczny inżynier oprogramowania nie zgodzi się napisać procedury zniszczBagdad. Jego poczucie etyki domaga się, aby napisał procedurę zniszczMiasto, a Bagdad przekazał jako parametr" - Nathaniel Borenstein.


#8 Asiap

    Wszechpomocny

  • Autor tematu
  • Girl

Reputacja: 171
Profesjonalista

  • Postów:323
  • Lokalizacja:Kętrzyn
Offline

Napisano 06.03.2016 19:53

ale to byl tylko przyklad

zawsze uzywam MaxClients (zwraca ustawienie 'maxplayers' tak samo jak get_maxplayers())

chodzi mi o znaczace roznice miedzy tymi sposobami przy pracy na graczach w petli


  • +
  • -
  • 0

#9 grankee

    Godlike

  • Support Team

Reputacja: 517
Wszechwiedzący

  • Postów:1 500
  • Lokalizacja:Radom
Offline

Napisano 11.03.2016 02:55

Zakładam, że w pętli nie ma 1000 linijek kodu, w tym 100 funkcji przesyłających dane między pluginem-modułem-silnikiem i nazad, żeby jej wykonanie dla maxplayers 32 a faktycznym miało zauważalne dla zużycia zasobów znaczenie.

Ponadto powtarzam już nie dziesiąty a setny raz, id gracza MOŻE przyjąć wartość większą niż maxplayers. Nie umiem tego wyjaśnić, ale było mi dane to kiedyś zobaczyć podczas testów pluginu gdzie nie miałem pojęcia dlaczego jeden gracz jest pomijany. Może to był błąd i został już dawno naprawiony, ale bez dłuższych testów nie można tego stwierdzić. Najbezpieczniej zatem przyjąć liczbę 32 lub co najmniej o kilka większą od faktycznego maxplayers.


  • +
  • -
  • 0




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

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