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

[ROZWIĄZANE] losowanie gracza - prośba o poprawe kodu


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

#1 Oporowiec

    Wszechobecny

  • Zbanowany

Reputacja: 119
Zaawansowany

  • Postów:441
  • GG:
  • Imię:Maciej
  • Lokalizacja:Małopolska
Offline

Napisano 31.08.2014 21:15

cześć.

możecie mi poprawić ten kod? Nie chce się skompilować :(

public Losowanie(id)
{
	losuj = random_num(1, 32);
	
	if(!is_user_alive(losuj))
		losuj()
	
	wylosuj_bonus(id)
}

zmienna:

new losuj;

Aktualny projekt: Dokumentacja Offline || [ 10% ]


#2 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1 592
Godlike

  • Postów:2 733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 31.08.2014 21:19

Losowanie jest złe, użyj tego: http://amxx.pl/topic...gracza-z-teamu/
  • +
  • -
  • 2

If you can dream it, you can do it.


#3 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 31.08.2014 21:19

Zmienna nie może się nazywać tak samo, jak jakaś funkcja.
  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#4 xenos

    Wszechobecny

  • Użytkownik

Reputacja: 216
Profesjonalista

  • Postów:467
  • GG:
  • Imię:Konrad
  • Lokalizacja:Rzeszów
Offline

Napisano 31.08.2014 21:30

public Losowanie()
{
    losuj = random_num(1, 32);
    
    if(!is_user_alive(losuj))
        Losowanie()
    
    wylosuj_bonus(losuj)
}

  • +
  • -
  • 1
"Jeśli potrafię to pomogę, jeśli nie potrafię to wskaże drogę którą trzeba dążyć by znaleźć odpowiedz" 

Pluginy:
Szukanie Aktywnych Banów w AmxBansie
Drop After Death
Kto postawił mine

#5 Oporowiec

    Wszechobecny

  • Autor tematu
  • Zbanowany

Reputacja: 119
Zaawansowany

  • Postów:441
  • GG:
  • Imię:Maciej
  • Lokalizacja:Małopolska
Offline

Napisano 31.08.2014 21:32

Losowanie jest złe, użyj tego: http://amxx.pl/topic...gracza-z-teamu/

dlaczego złe ?

 

public Losowanie()
{
    losuj = random_num(1, 32);
    
    if(!is_user_alive(losuj))
        Losowanie()
    
    wylosuj_bonus(losuj)
}

zaraz sprawdzę i dam znać :P

@edit
xenos, Twoja wersja się kompiluje // zaraz dam znać czy działa

@edit 2
xenos, Twoja wersja działa jednak "losuje kilka razy" :/
dasz radę ogarnąć ?


Użytkownik RPK. Macior edytował ten post 31.08.2014 21:42

Aktualny projekt: Dokumentacja Offline || [ 10% ]


#6 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1 592
Godlike

  • Postów:2 733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 31.08.2014 21:44

Jak myślisz co się stanie jak nie będzie żadnego gracza? Chyba tłumaczyć nie muszę ;)
  • +
  • -
  • 2

If you can dream it, you can do it.


#7 Oporowiec

    Wszechobecny

  • Autor tematu
  • Zbanowany

Reputacja: 119
Zaawansowany

  • Postów:441
  • GG:
  • Imię:Maciej
  • Lokalizacja:Małopolska
Offline

Napisano 31.08.2014 21:47

domyślam się - crash ? :(
13249 a jest możliwość żeby w moim kodzie nie było tego bugu gdy serwer jest pusty?
chodzi mi o jakieś dopracowanie go.


Aktualny projekt: Dokumentacja Offline || [ 10% ]


#8 xenos

    Wszechobecny

  • Użytkownik

Reputacja: 216
Profesjonalista

  • Postów:467
  • GG:
  • Imię:Konrad
  • Lokalizacja:Rzeszów
Offline

Napisano 31.08.2014 21:53

public Losowanie()
{
if(get_playersnum()!=0)
{

losuj = random_num(1, 32);
    
if(!is_user_alive(losuj))
        Losowanie();
else 
wylosuj_bonus(losuj)
}
}



  • +
  • -
  • 1
"Jeśli potrafię to pomogę, jeśli nie potrafię to wskaże drogę którą trzeba dążyć by znaleźć odpowiedz" 

Pluginy:
Szukanie Aktywnych Banów w AmxBansie
Drop After Death
Kto postawił mine

#9 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 31.08.2014 21:53

domyślam się - crash ? sad.png
13249 a jest możliwość żeby w moim kodzie nie było tego bugu gdy serwer jest pusty?
chodzi mi o jakieś dopracowanie go.

Tutaj nie ma co dopracowywać, bo po prostu ten sposób jest bardzo nieoptymalny, skorzystaj z kodu, który został Ci podany.
  • +
  • -
  • 1

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


#10 xenos

    Wszechobecny

  • Użytkownik

Reputacja: 216
Profesjonalista

  • Postów:467
  • GG:
  • Imię:Konrad
  • Lokalizacja:Rzeszów
Offline

Napisano 31.08.2014 21:56

Tutaj nie ma co dopracowywać, bo po prostu ten sposób jest bardzo nieoptymalny, skorzystaj z kodu, który został Ci podany.

W tym przypadku rekurencja bardziej jest opłacalna niż pętla z użyciem tablicy.
A sposób zabezpieczenia wystarczy pobrać czy na serwerze jest więcej niż 0 graczy i tyle :]
  • +
  • -
  • 0
"Jeśli potrafię to pomogę, jeśli nie potrafię to wskaże drogę którą trzeba dążyć by znaleźć odpowiedz" 

Pluginy:
Szukanie Aktywnych Banów w AmxBansie
Drop After Death
Kto postawił mine

#11 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 31.08.2014 22:03

Tutaj nie ma co dopracowywać, bo po prostu ten sposób jest bardzo nieoptymalny, skorzystaj z kodu, który został Ci podany.

W tym przypadku rekurencja bardziej jest opłacalna niż pętla z użyciem tablicy.
A sposób zabezpieczenia wystarczy pobrać czy na serwerze jest więcej niż 0 graczy i tyle :]

facepalm.png
Gdy na serwerze będzie mało graczy (a szczególnie gdy będzie jeden) to losowanie na sztywno liczby od 1 do 32 nie jest czymś optymalnym, bo poprawne id może wylosować się dopiero po X razie (przy jednym graczu jest 1/32 szansy na to), więc żadna rekurencja nie będzie tutaj bardziej opłacalna. A pętla i tablica? To w żaden sposób nie przeciąży serwera, a średnio na pewno będzie wymagać mniejszych zasobów niż taka rekurencja.
  • +
  • -
  • 3

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


#12 xenos

    Wszechobecny

  • Użytkownik

Reputacja: 216
Profesjonalista

  • Postów:467
  • GG:
  • Imię:Konrad
  • Lokalizacja:Rzeszów
Offline

Napisano 31.08.2014 22:10

Tutaj nie ma co dopracowywać, bo po prostu ten sposób jest bardzo nieoptymalny, skorzystaj z kodu, który został Ci podany.

W tym przypadku rekurencja bardziej jest opłacalna niż pętla z użyciem tablicy.
A sposób zabezpieczenia wystarczy pobrać czy na serwerze jest więcej niż 0 graczy i tyle :]

facepalm.png
Gdy na serwerze będzie mało graczy (a szczególnie gdy będzie jeden) to losowanie na sztywno liczby od 1 do 32 nie jest czymś optymalnym, bo poprawne id może wylosować się dopiero po X razie (przy jednym graczu jest 1/32 szansy na to), więc żadna rekurencja nie będzie tutaj bardziej opłacalna. A pętla i tablica? To w żaden sposób nie przeciąży serwera, a średnio na pewno będzie wymagać mniejszych zasobów niż taka rekurencja.


O pluginie wiemy jedynie że ma losować gracza,nie ma informacji w jakich warunkach.
Może losowanie odbywać się przy pełnym serwerze.
Zawsze wartość 32 można zamienić na get_playersnum() czyli na aktualną ilość osób.
A z tego co kiedyś uczyli na algorytmice, pętla+tablica -> rząd N
  • +
  • -
  • 1
"Jeśli potrafię to pomogę, jeśli nie potrafię to wskaże drogę którą trzeba dążyć by znaleźć odpowiedz" 

Pluginy:
Szukanie Aktywnych Banów w AmxBansie
Drop After Death
Kto postawił mine

#13 Oporowiec

    Wszechobecny

  • Autor tematu
  • Zbanowany

Reputacja: 119
Zaawansowany

  • Postów:441
  • GG:
  • Imię:Maciej
  • Lokalizacja:Małopolska
Offline

Napisano 31.08.2014 22:11

dobra, dzięki wszystkim za odpowiedzi / podpowiedzi :)
wezmę kod który podał 13249.

temat do zamknięcia.


Aktualny projekt: Dokumentacja Offline || [ 10% ]


#14 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 31.08.2014 22:15

O pluginie wiemy jedynie że ma losować gracza,nie ma informacji w jakich warunkach.
Może losowanie odbywać się przy pełnym serwerze.
Zawsze wartość 32 można zamienić na get_playersnum() czyli na aktualną ilość osób.
A z tego co kiedyś uczyli na algorytmice, pętla+tablica -> rząd N

O ile w ostatnim zdaniu masz rację, o tyle id gracza może być większe od "get_playersnum", jak już można tam wstawić "get_maxplayers" (a najlepiej pobrać to tylko raz), wtedy nie wiem co będzie bardziej optymalne/opłacalne, ale według mnie ta rekurencja i tak jest tutaj najgorszym sposobem losowania, mimo że sam kiedyś coś podobnego zrobiłem.
  • +
  • -
  • 0

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


#15 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 31.08.2014 22:16

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, report.png raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 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