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.
|
Szanse na wylosowanie czegoś w procentach
#1
Napisano 18.12.2012 19:32
#2
Napisano 18.12.2012 19:40
Następnie w warunku, sprawdzasz czy random(liczba) == 0, jeżeli tak daj graczowi granat
If you can dream it, you can do it.
#3
Napisano 18.12.2012 19:45
#4
Napisano 18.12.2012 19:47
http://amxx.pl/dokum...cja/f359/random
Następnie w warunku, sprawdzasz czy random(liczba) == 0, jeżeli tak daj graczowi granat
A można też zrobić case 1..20, case 21..50, prawda?
Użytkownik Krytykiewicz edytował ten post 18.12.2012 19:47
#5
Napisano 18.12.2012 19:59
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "Administrator" public plugin_init(){ register_plugin(PLUGIN, VERSION, AUTHOR); register_clcmd("say /test", "GiveHe"); } public GiveHe(id){ if(is_user_alive(id) && random(5) == 0){ //Daj granat } }
If you can dream it, you can do it.
#6
Napisano 18.12.2012 20:02
Edit: a czym może być tak if(random_num(1,100)<=20) ( 20% szans na wylosowanie ) ??
Użytkownik fakeN edytował ten post 18.12.2012 20:06
#7
Napisano 18.12.2012 20:48
@edit
Wyjaśnienie kodu speedkill
if(is_user_alive(id) && random(4) == 0){ //Daj granat }random(4) - czyli losuje 4 liczb (0, 1, 2, 3), więc 1/4 - 25%
@edit czyli speedkillu ty też dałeś błędny kod, bo chciał 20% , a ja tobie zaufałem
Sorry za błąd, ale zawsze uzywam random_num'a ;D
@edit2 spoko
Użytkownik HubertTM edytował ten post 19.12.2012 15:19
Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!
Na zlecenie i bez zlecenia zresztą też!
#8
Napisano 18.12.2012 21:40
#9
Napisano 18.12.2012 22:28
new bool: ma_losowac[33]
Później w plugin_init zarejestrować zdarzenie początku rundy
register_logevent("PoczatekRundy", 2, "1=Round_Start")
Następnie public, moim zdaniem lepiej z taskiem na parę sekund:
public PoczatekRundy(){
ma_losowac[id] = true;
set_task(3.0, "losowanie", id)
}
I funkcja do losowania:
public losowanie(id){
if(is_user_alive(id) && ma_losowac[id] == true){
if(random(5) == 0){
give_item(id, "weapon_hegrenade")
ma_losowac[id] = false
}
}
}
Standardowo mogłem oczywiście(a pewnie to zrobiłem) coś pokiełbasić. W sumie nie wiem, czy w ogóle trzeba do tego robić zmienną, bo początek rundy jest tylko raz w każdej rundzie.
Użytkownik `NN edytował ten post 18.12.2012 22:29
#10
Napisano 18.12.2012 22:38
public losowanie(id){
if(ma_losowac[id] && is_user_alive(id)){
if(random(5) == 0){
give_item(id, "weapon_hegrenade")
ma_losowac[id] = false
}
}
}
według mnie tak to powinno być. Nie trzeba sprawdzać czy true, wystarczy "!" lub bez. Natomiast lepiej będzie najpierw sprawdzić czy losował aniżeli wysyłać najpierw sprawdzenie do Metamoda:P czy on żyje. Benio na to zwracał uwagę w poradniku.
#11 Gość_21977_*
Napisano 19.12.2012 00:26
btw. Dla n=0 nie wywołujemy kodu w ogóle, dla n=100 zawsze, ∀n∈ℕ∩[2;99] warunek powinien przyjąć postać
if(random(100/NWD(n, 100))<n/(NWD(n, 100)))Dla n=1 zaś wykonamy
if(!random(n))
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych