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

Losuje caly czas ta sama osobe csgomod jackpot


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
Brak odpowiedzi do tego tematu

#1 faken

    Profesjonalista

  • Użytkownik

Reputacja: 35
Życzliwy

  • Postów:192
  • Lokalizacja:Warszawa
Offline

Napisano 16.02.2020 20:06

#include <amxmodx>
#include <colorchat>
#include <csgo>

#define MIN_VALUE 50 // minimalna cena w loterii
#define MAX_VALUE 250 // maksymalna cena w loterii

new pula_gracza[33];
new maxplayers, nextlosowanie, maxpula;

public plugin_init()
{
	register_plugin("Losowanie", "1.0", "Linux`");
	register_clcmd("cena_puli", "LosPula_Wystawienie");	

	register_clcmd("say /jackpot", "LosMenu");
	register_clcmd("say_team /jackpot", "LosMenu");

	register_clcmd("say /pula", "PulaInfo");
	register_clcmd("say_team /pula", "PulaInfo");

	maxplayers = get_maxplayers();
	nextlosowanie = -1;
	maxpula = 0;
}
public client_authorized(id)
{
	pula_gracza[id] = 0;
}
public client_disconnect(id)
{
	if(pula_gracza[id])
	{
		maxpula -= pula_gracza[id];
		pula_gracza[id] = 0;
	}
}
public LosMenu(id)
{
	new opis[65];
	if(nextlosowanie >= 0)
		format(opis, charsmax(opis), "Pula Nagrod: %i Monet\r (Koniec puli za %i minut)", maxpula, nextlosowanie);
	else
		format(opis, charsmax(opis), "Pula Nagrod: %i Monet\r (Nikt nie gra, badz pierwszy!)", maxpula);

	new menu = menu_create(opis, "LosMenu_Handler");
	menu_additem(menu, "Dolacz do puli");
	menu_additem(menu, "Wyswietl graczy w puli");
	menu_display(id, menu);
	return PLUGIN_CONTINUE;
}
public LosMenu_Handler(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}
	switch(item)
	{
		case 0:
		{
			client_print(id, print_center, "Podaj Cene");
			client_cmd(id, "messagemode cena_puli");
		}
		case 1:
		{
			if(nextlosowanie >= 0)
			{
				new pula;
				new name[32], opis[65];
				new menu = menu_create("Lista graczy bioracych udzial w losowaniu:", "LosMenu_Handler2");
				for(new i = 1; i <= maxplayers; i ++)
				{
					if(!is_user_connected(i))
						continue;

					pula = pula_gracza[i];
					if(!pula)
						continue;

					get_user_name(i, name, charsmax(name));
					format(opis, charsmax(opis), "%s (%i Monet | Szansa na Win: %0.1f%%)", name, pula, float((pula*100)/maxpula));
					menu_additem(menu, opis);
				}

				menu_display(id, menu);
			}
			else
				client_print(id, print_chat, "[jackpot] Aktualnie nikt nie bierze udzialu w losowaniu, badz pierwszy!");
		}
	}
	return PLUGIN_CONTINUE;
}
public LosMenu_Handler2(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_CONTINUE;
	}

	LosMenu(id);
	return PLUGIN_CONTINUE;
}
public LosPula_Wystawienie(id)
{
	if(pula_gracza[id])
	{
		client_print(id, print_chat, "[jackpot] Aktualnie bierzesz juz udzial w losowaniu. Musisz zaczekac na jego koniec!");
		return PLUGIN_CONTINUE;
	}

	new arg[8];
	read_argv(1, arg, charsmax(arg));
	new cena = str_to_num(arg);
	new kasa = csgo_get_user_coin(id);

	if(kasa < MIN_VALUE)
	{
		LosMenu(id);
		client_print(id, print_chat, "[jackpot] Niepoprawna wartosc (MIN: %i, MAX. %i)", MIN_VALUE, (kasa > MAX_VALUE)? MAX_VALUE: kasa);
		return PLUGIN_CONTINUE;
	}
	if(cena > kasa)
	{
                LosMenu(id);
		client_print(id, print_chat, "Masz za malo");
		return PLUGIN_HANDLED;
	}
	if(cena < MIN_VALUE || cena > MAX_VALUE)
	{
		LosMenu(id);
		client_print(id, print_chat, "[jackpot] Niepoprawna wartosc (MIN: %i, MAX. %i)", MIN_VALUE, (kasa > MAX_VALUE)? MAX_VALUE: kasa);
		return PLUGIN_CONTINUE;
	}

	new time = get_timeleft()/60;
	if(time <= 6)
	{
		LosMenu(id);
		client_print(id, print_chat, "[jackpot] Mozliwosc dolaczenia do puli zostala zablokowana na 6 minut przed koncem mapy.");
		return PLUGIN_CONTINUE;
	}

	if(nextlosowanie == -1)
	{
		nextlosowanie = 5;
		set_task(60.0, "ZakonczLosowanie");
	}

	maxpula += cena;
	pula_gracza[id] = cena;
	csgo_set_user_coin(id, kasa-cena);

	new name[32];
	get_user_name(id, name, charsmax(name));
	ColorChat(0, GREEN, "[jackpot]^x01 Gracz^x03 %s^x01 wzial udzial w puli nagrod, dodajac^x03 %i Monety^x01.", name, cena);
	return PLUGIN_CONTINUE;
}
public PulaInfo(id)
{
	client_print(id, print_chat, "[jackpot] Aktualnie w puli nagrod znajduje sie: %i Monet", maxpula);
}
public ZakonczLosowanie()
{
	if(nextlosowanie > 0)
	{
		nextlosowanie --;
		set_task(60.0, "ZakonczLosowanie");
	}
	else if(maxpula)
	{
		new id_wygrywajacego = LosowanieGracza();
		if(is_user_connected(id_wygrywajacego))
		{
			new kasa = csgo_get_user_coin(id_wygrywajacego)+maxpula;
			if(kasa > 16000)
				kasa = 16000;

			new name[33];
			get_user_name(id_wygrywajacego, name, charsmax(name));
			csgo_set_user_coin(id_wygrywajacego, kasa);
			ColorChat(0, GREEN, "[jackpot]^x01 Gracz^x03 %s^x01 wygral ^x03 %i Monety^x01 w puli nagrod! Gratulujemy.", name, maxpula);
		}
		else
			ColorChat(0, GREEN, "[jackpot]^x01 Nikt nie wygral ^x03 %i Monet^x01 w puli nagrod! Moze nastepnym razem dopisze komus szczescie.", maxpula);

		maxpula = 0;
		nextlosowanie = -1;
	}
}
public LosowanieGracza()
{
	new wylosowany[33][2];
	new players, id_wylosowanego;

	for(new i = 1; i <= maxplayers; i ++)
	{
		if(!is_user_connected(i))
			continue;

		new pula = pula_gracza[i];
		if(!pula)
			continue;

		pula_gracza[i] = 0;
		wylosowany[players][0] = i;
		wylosowany[players][1] = pula/100;
		players ++;
	}
	if(players)
	{
		new ilosc_ponawianych_losowan = 64;
		for(new l = 1; l <= ilosc_ponawianych_losowan; l ++)
		{
			new id = random(players);
			if(random_num(1, 100) <= wylosowany[id][1])
			{
				id_wylosowanego = id;
				break;
			}
		}
	}

	return wylosowany[id_wylosowanego][0];
} 

Tak jak w temacie, losuje cały czas tę samą osobę jeśli weźmie udział w jackpocie tytusa? Gdzie błąd w pluginie?


Użytkownik ksaju edytował ten post 16.02.2020 20:10

  • +
  • -
  • 0




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

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