←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Funkcja dająca losową broń z podanego prze...


Best Answer ChesterShield 24.01.2014 00:53

#refresh - czy jest ktos chetny do pomocy ?

Go to the full post
Locked

  • +
  • -
ChesterShield's Photo ChesterShield 22.01.2014

Witam mam do was prośbę, program działa lecz samo przydzielenie losowej broni jest jednak źle napisane i w momencie uruchomienia funkcji przydziela wszystkie możliwe warianty graczowi, moje starania dążyły do tego by zrobić tak, żeby funkcja przydzielała 1 broń z 1 ammo. Kodzik podaję poniżej, jeżeli źle napisany kod proszę zwrócić mi uwagę na błędy ze względu na to, iż jestem świeży w temacie lecz z ogólnym schematem kodu miałem styczność przez naukę języka C oraz C++, pozdrawiam :).

handleRollGun(id)
{
	new ile=0;
	new ktoraOP = random(5);
	new Float:fTime = halflife_time();
	new jakieBronie = random(25);
	if (jakieBronie > 0 && jakieBronie <10 || !gunUsed[id])
	{
		do {
			if (ktoraOP == 1) { do {
						give_item(id, "weapon_p228");
						cs_set_weapon_ammo(find_ent_by_owner(1, "weapon_p228", id),1);
						gunUsed[id] = true;
						client_print(id, print_center, "Wylosowales P228 !");
						}while (gunUsed[id] != true);
					}
			else if (ktoraOP == 2) { do {
						give_item(id, "weapon_shield");
						client_print(id, print_center, "Wylosowales SHIELD !");
						gunUsed[id] = true;
						}while (gunUsed[id] != true);
							
					}
			else if (ktoraOP == 3) { do {
						give_item(id, "weapon_scout");
						cs_set_weapon_ammo(find_ent_by_owner(1, "weapon_scout", id),1);
						client_print(id, print_center, "Wylosowales SCOUT !");
						gunUsed[id] = true;
						}while (gunUsed[id] != true);
					}
			else if (ktoraOP == 4) { do {
						give_item(id, "weapon_xm1014"); 
						cs_set_weapon_ammo(find_ent_by_owner(1, "weapon_xm1014", id),1);
						client_print(id, print_center, "Wylosowales XM1014 !");
						gunUsed[id] = true;
						}while (gunUsed[id] != true);
					}
			else if (ktoraOP == 5) { do {
						give_item(id, "weapon_mac10"); 
						cs_set_weapon_ammo(find_ent_by_owner(1, "weapon_mac10", id),1);
						client_print(id, print_center, "Wylosowales MAC10 !");
						gunUsed[id] = true;
						}while (gunUsed[id] != true);
					}
			else if(ktoraOP > 5) { do {
						client_print(id, print_center, "Niestety nie udalo Ci sie wylosowac broni !");
						gunUsed[id] = true;
						}while (gunUsed[id] != true);
					}
			ile++;
		}while (ile <= 0);
	}
	g_gun_next_use[id] = fTime + get_cvar_float("bm_gunTimeOut");
	return PLUGIN_HANDLED;
}
actionGun(id, OverrideTimer)
{
	g_gun_next_use[id] =get_cvar_float("bm_gunTimeOut");
	new Float:fTime = halflife_time();
	if(get_user_team(id) == 1 && is_user_alive(id) && !gunUsed[id] && (g_gun_next_use[id] - fTime)!=0 || (g_gun_next_use[id] - fTime) < 0 || OverrideTimer)
	{	
		handleRollGun(id);
	}else if (get_user_team(id) == 2)
	{
		set_hudmessage(gHudRed, gHudGreen, gHudBlue, gfTextX, gfTextY, gHudEffects, gfHudFxTime, gfHudHoldTime, gfHudFadeInTime, gfHudFadeOutTime, gHudChannel);
		show_hudmessage(1, "Niestety niebiescy nie moga korzystac z danego bloku !");
		
	}else if ((g_gun_next_use[id] - fTime) != 0)
	{
		set_hudmessage(gHudRed, gHudGreen, gHudBlue, gfTextX, gfTextY, gHudEffects, gfHudFxTime, gfHudHoldTime, gfHudFadeInTime, gfHudFadeOutTime, gHudChannel);
		show_hudmessage(1, "Oczekiwany czas na ponowne uzycie bloku: %1f", g_gun_next_use[id] - fTime);
	}
} 
Quote

  • +
  • -
Best Answer ChesterShield's Photo ChesterShield 24.01.2014

#refresh - czy jest ktos chetny do pomocy ?

Quote
Locked