Jump to content


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

Posted Image Posted Image

Guest Message by DevFuse
 

[ROZWIĄZANE] Zmienianie się szansy na coś wraz ze wzrostem zmiennej


Best Answer sebul , 12.05.2014 15:01

random(100)

Coś takiego losuje nam liczby z przedziału od 0 do 99, czyli jest 100 wartości, więc jeśli damy taki warunek
random(100) < 5

to będzie 5% szansy na jego spełnienie, a jeśli taki
random(100) < 19

to będzie 19% szansy. Chyba reszty nie trzeba tłumaczyć?

A co do warunku
if(!random(unikChance))

on spełni się tylko wtedy, gdy wylosowaną wartością będzie liczba 0, czyli jeśli "unikChance" będzie równe powiedzmy 40, to na spełnienie tego warunku będziemy mieli 1/40, czyli 2.5%. Go to the full post


  • This topic is locked This topic is locked
5 replies to this topic

#1 Rivit

    Godlike

  • Support Team

  • Reputacja: 1,319
    Godlike

  • Postów:4,381
Offline

Posted 12.05.2014 14:28

Witam,

Zrobiłem sobie takiego stats moda i nwm jak zrobić dalej statystykę unik.

new unikChance = floatround(unik_gracza[vid] * 0.5, floatround_floor)
            
if(!random(unikChance)) return HAM_IGNORED; //pomin obrazenia

Chodzi mi o to, żeby to była procentowa szansa na unik.

Czyli jeśli mam 2 punkty w statystyce unik to mam 1% szansy na unik.

 

Czy to będzie poprawne?

Widziałem jeszcze coś takiego:

if(random(100) > unikChance)

  • +
  • -
  • 0

#2 BlackPerfum

    Pseudo interakcja??

  • Power User

  • Reputacja: 459
    Wszechobecny

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

Posted 12.05.2014 14:44

Ja bym zrobił to tak:

new x //Liczba pkt. uniku gracza
if((random(100)+1) <= floatround(float(x)/2.0)) // Jee Zrobilismy unik

(random(100)+1) - losowa liczba z przedziału 1,100 (1,100 takze sie wlicza)

floatround(float(x)/2.0) - połowa liczby pkt. gracza bo chciałeś by 2 pkt to 1%

 

To wcale nie jest trudne do wymyślenia xD

Teraz jeśli gracz będzie miał 10 pkt to będzie miał 5% dlaczego?

Bo będzie miał 5% na to że zostanie wylosowana liczba mniejsza lub równa 5


  • +
  • -
  • 1
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

#3 Rivit

    Godlike

  • Autor tematu
  • Support Team

  • Reputacja: 1,319
    Godlike

  • Postów:4,381
Offline

Posted 12.05.2014 15:00

No okej ale czy random nie losuje od 0 do max-1 ?

random(2)  // 0 lub 1

A mój sposób? Jest zły?


  • +
  • -
  • 0

#4 sebul

    Godlike

  • Przyjaciel

  • Reputacja: 2,035
    Godlike

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

Posted 12.05.2014 15:01   Best Answer

random(100)

Coś takiego losuje nam liczby z przedziału od 0 do 99, czyli jest 100 wartości, więc jeśli damy taki warunek
random(100) < 5

to będzie 5% szansy na jego spełnienie, a jeśli taki
random(100) < 19

to będzie 19% szansy. Chyba reszty nie trzeba tłumaczyć?

A co do warunku
if(!random(unikChance))

on spełni się tylko wtedy, gdy wylosowaną wartością będzie liczba 0, czyli jeśli "unikChance" będzie równe powiedzmy 40, to na spełnienie tego warunku będziemy mieli 1/40, czyli 2.5%.
  • +
  • -
  • 2

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


#5 Rivit

    Godlike

  • Autor tematu
  • Support Team

  • Reputacja: 1,319
    Godlike

  • Postów:4,381
Offline

Posted 12.05.2014 15:08

            new unikChance = floatround(unik_gracza[vid] * 0.5, floatround_floor)
            
            if(random(100) < unikChance)//unik

Takie coś mam czy pierwsza linia jest dobra? Nie chcę dzielić przez 2 (wole mnożenie)


  • +
  • -
  • 0

#6 BlackPerfum

    Pseudo interakcja??

  • Power User

  • Reputacja: 459
    Wszechobecny

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

Posted 12.05.2014 15:34

Nie chcę dzielić przez 2 (wole mnożenie)

 

Ależ nie ma róznicy (no prawie bo nwm jak ująć dzielenie przez 0 mnożeniem)

 

Takie coś mam czy pierwsza linia jest dobra

 

Względnie tak a nawet powiem więcej druga także jest dobra


  • +
  • -
  • 1
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




  


1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users

Coinsy CSGOPolygon Za SMS, PSC , Przelew - CoinSell.pro
Skiny do CS:GO za SMS, PSC, Przelew - CSGOPaka.com
Automatyczny Bot Levelowania Steam - LVLUPSteam.com
CSGO Gambling Sites and Free Betting Codes - DreamCodes.gg

Sign In