Witam,
Chciałbym zoptymalizować sobie plugin ruletka. Zamiast robić zmienną do każdego bonusu by np. wykorzystać go w dodatkowych obrażeniach itp. to chciałbym zrobić jedną zmienną a raczej funkcję BonusGracza(index, wartosc). Przykładowe użycie tej funkcji:
public Ruletka(id) { if(!is_user_alive(id) || !is_user_connected(id) || g_Used[id]) return PLUGIN_CONTINUE; new koszt = 1100; new kasa = cs_get_user_money(id); if(!cs_get_user_buyzone(id)) { ColorChat(id, RED, "Musisz byc w strefie kupowania"); return PLUGIN_CONTINUE; } if(kasa < koszt) { ColorChat(id, RED, "Koszt ruletki to 1100$"); return PLUGIN_CONTINUE; } new name[64]; get_user_name(id, name, 63); cs_set_user_money(id, kasa-koszt); g_Used[id] = true; switch(random_num(1, 2)) { case 1: { ColorChat(id, GREEN, "^x03[%s]^x04 Wygrales wieksze obrazenia", prefix); BonusGracza(id, 1); } case 2: { ColorChat(id, GREEN, "^x03[%s]^x04 Wygrales AutoBH", prefix); BonusGracza(id, 2); } } return PLUGIN_CONTINUE; }
I teraz odpowiednio w funkcjach odpowiednich do uzyskania bonusy było by sprawdzenie np.
public fw_TakeDamagePre(this, idinflictor, idattacker, Float:damage, damagebits) { if(!is_user_alive(idattacker) || !is_user_alive(this)) return HAM_IGNORED; if(idinflictor == idattacker) return HAM_IGNORED; if(BonusGracza(id, 1)) SetHamParamFloat(4, damage+7.0); return HAM_HANDLED; }
I teraz sama funkcja BonusGracza.
public BonusGracza(id, bonus) { if(bonus > 0) return true; else return false; }
Dobrze myślę?