Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

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

[ROZWIĄZANE] Tworzenie tablicy w pętli (optymalne?)


Najlepsza odpowiedź BlackPerfum, 27.06.2014 13:04

Nie bardzo rozumiem Ciebie. Czyli wynika po jednym obrocie pętli zmienne z poprzedniego obrotu są czyszczone? Tak?

Nie :(

 

Wytłumacze o co chodzi w tym kodzie:

1. Pętla obraca się poraz pierwszy i zmienna "i" równa sie "0"

- wykonuje sie warunek nr. 1

- tworze zmienną "dane"1 i "dane2" (w tej kolejności)

- Wyświetlam aresy zmiennych z wynikiem "dane: x1 | dane2: x2"

 

 

 

Pamiętajmy iż x1 < x2

 

 

2.Pętla obraca się poraz drugi:

- wykonuje się warunek nr. 2

- tworze zmienną "dane2" i "dane" (w tej kolejności)

- Wyświetlam aresy zmiennych z wynikiem "dane: x1 | dane2: x2"

 

 

Wniosek: Po obrocie pętli zmienne mają te same adresy. Albo w jakiś sposób adresy zostały zapisane albo pamięć nie została zwolniona. Wtf?

Przejdź do postu


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

#1 TibacK

    Diler pod gimnazjum dla niepełnosprawnych dzieci

  • Power User

Reputacja: 466
Wszechobecny

  • Postów:2448
Offline

Napisano 25.06.2014 08:18

Witam.

Mam taki skrawek kodu:

public zapisz_do_pliku()
{
		new sciezka[40];
		formatex(sciezka, charsmax(sciezka), "addons/amxmodx/staty%i.txt", iLicznik)

		for(new id = 1; id <= MAX_PLAYERS; id++)
		{
			if(is_user_connected(id))
			{
                                new dane[256];
				formatex(dane, charsmax(dane), "Nick: %s | Fragi: %i (%i HS)", nazwa_gracza[id], fragi_gracza[id], hs_gracza[id])
				write_file(sciezka, dane)
			}
		}
}

ta funkcja wywołuje się po każdym zabiciu (w client_death). Teraz pytanie. Czy jest to optymalne rozwiązanie? Bo wg mnie to tak:

  1. sciezka jest ciagle formatowana do tablicy
  2. tablica dane jest tworzona tyle razy ile jest graczy na serwerze

 

I nie wiem czy po jednym przebiegu pętli stworzy się x (x - ilosc graczy) tablic dane i będa zajmowały miejsce w pamięci (chodzi o taki nakładanie i rezerwowanie tej pamięci)?


  • +
  • -
  • 0

Sprzedam Paczkę CoD pod CS 1.6 (JEST WIELE WERSJI DO WYBORU TEJ PACZKI) na lvl od 201 - 601

Silnik (8 nowych statystyk, poprawiony zapis, dodatkowy exp, pozbyto się CurWeapon). Ponad 100 perków (do wyboru do koloru). Sklep, NOWE MISJE (QUESTY), premium i super premium, AUKCJE, KLANY, zapis nVault, 4 zestawy modeli bronii do wyboru!

JESTEŚ ZAINTERESOWANY KUPNEM? NAPISZ WIADOMOŚĆ DO MNIE!


#2 CheQ

    Nie wiem, nie znam się, nie orientuję się, zarobiony jestem.

  • Junior Admin

Reputacja: 1984
Godlike

  • Postów:5534
  • Imię:Adaś
  • Lokalizacja:Glinianka
Offline

Napisano 25.06.2014 09:05

nie widzę gdzie przekazujesz parametr ID do funkcji ale mniejsza ;)

 

Napisz proszę co chcesz osiągnąć (na przykładzie) - co do tego co widzę - ścieżka jest stała - możesz ją w zmienną Globalną wrzucić.

 


  • +
  • -
  • 0

b_560_95_1.png


#3 TibacK

    Diler pod gimnazjum dla niepełnosprawnych dzieci

  • Autor tematu
  • Power User

Reputacja: 466
Wszechobecny

  • Postów:2448
Offline

Napisano 25.06.2014 09:09

nie widzę gdzie przekazujesz parametr ID do funkcji ale mniejsza ;)

 

Napisz proszę co chcesz osiągnąć (na przykładzie) - co do tego co widzę - ścieżka jest stała - możesz ją w zmienną Globalną wrzucić.

 

pętlą to robię. Po id wszystkich

 

ścieżka nie jest stała (już)

formatex(sciezka, charsmax(sciezka), "addons/amxmodx/staty_%i.txt", iLicznik)

iLicznik - numer rundy

 

Czyli trzeba formatować ją co wywołanie.

 

A co z pętlą i tworzeniem tablicy wewnątrz niej?

Czy za każdym przebiegiem pętli tworzona jest tablica?

1 - przebieg - tablica po raz pierwszy

2 - przebieg - tablica po raz drugi

...

 

Czy też jest to ta sama tablica przechowywana w pamięci?


  • +
  • -
  • 0

Sprzedam Paczkę CoD pod CS 1.6 (JEST WIELE WERSJI DO WYBORU TEJ PACZKI) na lvl od 201 - 601

Silnik (8 nowych statystyk, poprawiony zapis, dodatkowy exp, pozbyto się CurWeapon). Ponad 100 perków (do wyboru do koloru). Sklep, NOWE MISJE (QUESTY), premium i super premium, AUKCJE, KLANY, zapis nVault, 4 zestawy modeli bronii do wyboru!

JESTEŚ ZAINTERESOWANY KUPNEM? NAPISZ WIADOMOŚĆ DO MNIE!


#4 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 453
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 25.06.2014 13:05

W przedstawionym kodzie najbardziej nieoptymalne jest uzywanie write_file (w najgorszym wypadku 32 razy) za kazdym razem jak ktoś kogoś zabije :D

Napisz nam co dokładnie chcesz osiągnąć a pokażemy najkrótszą/najoptymalniejszą drogę


  • +
  • -
  • 0
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#5 TibacK

    Diler pod gimnazjum dla niepełnosprawnych dzieci

  • Autor tematu
  • Power User

Reputacja: 466
Wszechobecny

  • Postów:2448
Offline

Napisano 25.06.2014 14:11

Kod jest dobry.
Co z tablicą dane? Ona jest tworzona co przebieg pętli i co sie z nią dzieje potem? Zostaje w pamięci czy sie usuwa?
  • +
  • -
  • 0

Sprzedam Paczkę CoD pod CS 1.6 (JEST WIELE WERSJI DO WYBORU TEJ PACZKI) na lvl od 201 - 601

Silnik (8 nowych statystyk, poprawiony zapis, dodatkowy exp, pozbyto się CurWeapon). Ponad 100 perków (do wyboru do koloru). Sklep, NOWE MISJE (QUESTY), premium i super premium, AUKCJE, KLANY, zapis nVault, 4 zestawy modeli bronii do wyboru!

JESTEŚ ZAINTERESOWANY KUPNEM? NAPISZ WIADOMOŚĆ DO MNIE!


#6 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 453
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 25.06.2014 19:23

Jeśli pętla wykona się x (x!=1) razy to tablica dane powstanie 1 raz i zostanie usunięta 1 raz tzn. masz do niej dostęp tylko w pętli :(


  • +
  • -
  • 0
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#7 TibacK

    Diler pod gimnazjum dla niepełnosprawnych dzieci

  • Autor tematu
  • Power User

Reputacja: 466
Wszechobecny

  • Postów:2448
Offline

Napisano 25.06.2014 19:55

Czyli po skonczeniu sie petli to zostanie zwolniona pamiec?

A dlaczego np nie 5 razy (przy 5 obrotach) skoro jest to w petli?
  • +
  • -
  • 0

Sprzedam Paczkę CoD pod CS 1.6 (JEST WIELE WERSJI DO WYBORU TEJ PACZKI) na lvl od 201 - 601

Silnik (8 nowych statystyk, poprawiony zapis, dodatkowy exp, pozbyto się CurWeapon). Ponad 100 perków (do wyboru do koloru). Sklep, NOWE MISJE (QUESTY), premium i super premium, AUKCJE, KLANY, zapis nVault, 4 zestawy modeli bronii do wyboru!

JESTEŚ ZAINTERESOWANY KUPNEM? NAPISZ WIADOMOŚĆ DO MNIE!


#8 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6033
Godlike

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

Napisano 25.06.2014 20:04

Bo przy każdym obrocie pętli pamięć która została zarezerwowana w niej zostaje zwolniona


  • +
  • -
  • 1

#9 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 453
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 25.06.2014 20:10

Optymalizacja pawn'a. Wywnioskowałem to z tego kodu:

for(new i;i<2;i++)
{
    if(i==0)
    {
        new dane
        new dane2
        log_amx("Dane: %i | Dane2: %i",get_var_addr(dane),get_var_addr(dane2))
    }

    if(i==1)
    {
        new dane2
        new dane
        log_amx("Dane: %i | Dane2: %i",get_var_addr(dane),get_var_addr(dane2))
    }
}

A wynik:

Dane: x1 | Dane2: x2
Dane: x1 | Dane2: x2

  • +
  • -
  • 0
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#10 TibacK

    Diler pod gimnazjum dla niepełnosprawnych dzieci

  • Autor tematu
  • Power User

Reputacja: 466
Wszechobecny

  • Postów:2448
Offline

Napisano 26.06.2014 07:01

@UP

 

Nie bardzo rozumiem Ciebie. Czyli wynika po jednym obrocie pętli zmienne z poprzedniego obrotu są czyszczone? Tak?

 

 

@DarkGL

 

Dzięki o to chodziło.


  • +
  • -
  • 0

Sprzedam Paczkę CoD pod CS 1.6 (JEST WIELE WERSJI DO WYBORU TEJ PACZKI) na lvl od 201 - 601

Silnik (8 nowych statystyk, poprawiony zapis, dodatkowy exp, pozbyto się CurWeapon). Ponad 100 perków (do wyboru do koloru). Sklep, NOWE MISJE (QUESTY), premium i super premium, AUKCJE, KLANY, zapis nVault, 4 zestawy modeli bronii do wyboru!

JESTEŚ ZAINTERESOWANY KUPNEM? NAPISZ WIADOMOŚĆ DO MNIE!


#11 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 453
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 27.06.2014 13:04   Najlepsza odpowiedź

Nie bardzo rozumiem Ciebie. Czyli wynika po jednym obrocie pętli zmienne z poprzedniego obrotu są czyszczone? Tak?

Nie :(

 

Wytłumacze o co chodzi w tym kodzie:

1. Pętla obraca się poraz pierwszy i zmienna "i" równa sie "0"

- wykonuje sie warunek nr. 1

- tworze zmienną "dane"1 i "dane2" (w tej kolejności)

- Wyświetlam aresy zmiennych z wynikiem "dane: x1 | dane2: x2"

 

 

 

Pamiętajmy iż x1 < x2

 

 

2.Pętla obraca się poraz drugi:

- wykonuje się warunek nr. 2

- tworze zmienną "dane2" i "dane" (w tej kolejności)

- Wyświetlam aresy zmiennych z wynikiem "dane: x1 | dane2: x2"

 

 

Wniosek: Po obrocie pętli zmienne mają te same adresy. Albo w jakiś sposób adresy zostały zapisane albo pamięć nie została zwolniona. Wtf?


Użytkownik BlackPerfum edytował ten post 27.06.2014 13:17

  • +
  • -
  • 0
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#12 TibacK

    Diler pod gimnazjum dla niepełnosprawnych dzieci

  • Autor tematu
  • Power User

Reputacja: 466
Wszechobecny

  • Postów:2448
Offline

Napisano 28.06.2014 20:06

Moglby ktos podac czy adresy zostaly zapisane czy pamiec zwolniona?
  • +
  • -
  • 0

Sprzedam Paczkę CoD pod CS 1.6 (JEST WIELE WERSJI DO WYBORU TEJ PACZKI) na lvl od 201 - 601

Silnik (8 nowych statystyk, poprawiony zapis, dodatkowy exp, pozbyto się CurWeapon). Ponad 100 perków (do wyboru do koloru). Sklep, NOWE MISJE (QUESTY), premium i super premium, AUKCJE, KLANY, zapis nVault, 4 zestawy modeli bronii do wyboru!

JESTEŚ ZAINTERESOWANY KUPNEM? NAPISZ WIADOMOŚĆ DO MNIE!





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

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