Skocz do zawartości
CebulaPL

Skrypt przybrał na wadze

Rekomendowane odpowiedzi

Mam takie pytanie, dodałem do skryptu system monitoringu oraz narkotyków po tym jak to dodałem waga gamemode(.amx) z 8,30 MB do 11,4 MB. To jest normalne, czy robię coś źle i to jest tego powodem?

Pozdrawiam.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
1 minutę temu, DaGaXeR napisał:

Waga pliku .amx zależy od ilości wpisanego tekstu w .pwn. Pamiętaj, że każda literka to ileś tam bajtów (czy coś takiego :D ). 

Głupota totalna. Wersja .amx jest przekompilowaną wersją .pwn.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
10 minut temu, CeKa napisał:

Głupota totalna. Wersja .amx jest przekompilowaną wersją .pwn.

Co nie zmienia faktu tego co napisałem - prawda? Bo jednak .amx ma więcej bajtów niż .pwn.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
13 minut temu, DaGaXeR napisał:

Co nie zmienia faktu tego co napisałem - prawda? Bo jednak .amx ma więcej bajtów niż .pwn.

Oczywiście, że zmienia. Bo nijak ma się do ilości "literek".

Z3RKYTb.png

http://pastebin.com/BR3petWL <- Można oczywiście dodać reszte include, by plik był "większy", ale i tak .amx będzie takie same.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
3 minuty temu, CeKa napisał:

Oczywiście, że zmienia. Bo nijak ma się do ilości "literek".

Z3RKYTb.png

http://pastebin.com/BR3petWL <- Można oczywiście dodać reszte include, by plik był "większy", ale i tak .amx będzie takie same.

Wytłumacz mi to, bo nie rozumiem. :D Wydawało mi się, że wszystko co wpiszesz do .pwn ma znaczenie jeśli chodzi o późniejszą wielkość. 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@CebulaPLSkoro działa to czym się przejmujesz? Co innego jeśli zacznie źle działać, wtedy jest czym się przejmować :P

Ewentualnie możesz skompilować bez informacji o debugowaniu (-d0), wtedy uzyskasz mniejszy rozmiar pliku wykonywalnego, ale np crashdetect wtedy (gdy coś się wysypie - runtime error) niewiele ci podpowie.

Edytowane przez PrzMas

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

@DaGaXeR @CebulaPL, odpowiem obu:

 

#include <a_samp>

main()
{
}

new tablica[500000] = {1,2,3,...};
new tablica2[500000] = {1,2,3,...};
new tablica3[500000] = {1,2,3,...};
new tablica4[500000] = {1,2,3,...};
new tablica5[500000] = {1,2,3,...};
new tablica6[500000] = {1,2,3,...};

public OnGameModeInit()
{
	tablica[123] = 1;
	return 1;
}

.amx: 1457kb
.pwn: 1kb

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Skoro już zeszło się tak od tematu...

#include <a_samp>

main()
{
  // ...
}

new L1[500000]= {3, 5, 7, 11, ...}; // liczby pierwsze
new L2[500000]= {2, 4, 8, 16, ...}; // kolejne potęgi liczby 2

public OnGameModeInit()
{
  printf("L1_5: %d", L1[4]);
  printf("L2_5: %d", L2[4]);

  return 1;
}

Zadziała? :P

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
3 minuty temu, PrzMas napisał:

Skoro już zeszło się tak od tematu...


#include <a_samp>

main()
{
  // ...
}

new L1[500000]= {3, 5, 7, 11, ...}; // liczby pierwsze
new L2[500000]= {2, 4, 8, 16, ...}; // kolejne potęgi liczby 2

public OnGameModeInit()
{
  printf("L1_5: %d", L1[4]);
  printf("L2_5: %d", L2[4]);

  return 1;
}

Zadziała? :P

Na pewno nie będzie większej wartości, niż 2147483647. Dlatego może mieć chyba problem :) Daj w pętle i wyprintuj wszystkie indeksy.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
40 minut temu, CeKa napisał:

Na pewno nie będzie większej wartości, niż 2147483647. Dlatego może mieć chyba problem :) Daj w pętle i wyprintuj wszystkie indeksy.

W obydwu przypadkach (jeśli chodzi o rozmiary obydwu tablic) takowego problemu nie będzie (nie dojdzie do przepełnienia), bo kompilator nie rozróżnia innych ciągów liczbowych oprócz arytmetycznego, gdzie pierwszym elementem (ciągu, nie tablicy) jest ostatnia liczba przed "...", a jego różnica wyliczana jest na podstawie dwóch ostatnich liczb przed "...".

Gdyby kompilator rozróżniał ciągi, to taka tablica z określonymi podczas deklaracji wartościami początkowymi komórek zapewne zajmowałaby 1/3 aktualnego rozmiaru (wartości początkowe przechowywane są w pliku wykonywalnym, skąd są tylko wczytywane, dlatego nie widać różnicy w informacjach kompilatora w sekcji "Data size", ale widać ją już w rozmiarze pliku AMX).

Edytowane przez PrzMas
literówki

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×