W tym tutorialu postaram się przedstawić w jaki sposób możemy dodać automatyczny wybór klasy dla gracza po określonym przez nas czasie.
Na początku dodajemy nowe zmienne globalne:
new auto_klasa_gracza[65], Float:time_klasa_gracza[65];
teraz do public Action:UsunUmiejetnosci(client) dodajemy ich resetowanie a więc:
auto_klasa_gracza[client] = 0; time_klasa_gracza[client] = 0.0;
następnie przechodzimy do public Action:PokazInformacje(Handle:timer, any:client) i zamieniamy go na:
public Action:PokazInformacje(Handle:timer, any:client)
{
if(!IsValidClient(client))
return;
if(IsPlayerAlive(client))
{
WybierzAutoKlase(client);
if(auto_klasa_gracza[client])
PrintHintText(client, "<font color='#008000'>[Klasa: <b>%s</b> (<b>%is</b>)]\n[Xp: <b>%i</b> | Lv: <b>%i</b>]\n[Item: <b>%s</b> [<b>%i%%</b>]]</font>", nazwy_klas[klasa_gracza[client]], auto_klasa_gracza[client], doswiadczenie_gracza[client], poziom_gracza[client], nazwy_itemow[item_gracza[client]], wytrzymalosc_itemu_gracza[client]);
else
PrintHintText(client, "<font color='#008000'>[Klasa: <b>%s</b>]\n[Xp: <b>%i</b> | Lv: <b>%i</b>]\n[Item: <b>%s</b> [<b>%i%%</b>]]</font>", nazwy_klas[klasa_gracza[client]], doswiadczenie_gracza[client], poziom_gracza[client], nazwy_itemow[item_gracza[client]], wytrzymalosc_itemu_gracza[client]);
}
else
{
new spect = GetEntProp(client, Prop_Send, "m_iObserverMode");
if(spect == 4 || spect == 5)
{
new target = GetEntPropEnt(client, Prop_Send, "m_hObserverTarget");
if(target != -1 && IsValidClient(target))
PrintHintText(client, "<font color='#FFFFFF'>[Klasa: <b>%s</b>]\n[Xp: <b>%i</b> | Lv: <b>%i</b>]\n[Item: <b>%s</b> [<b>%i%%</b>]]</font>", nazwy_klas[klasa_gracza[target]], doswiadczenie_gracza[target], poziom_gracza[target], nazwy_itemow[item_gracza[target]], wytrzymalosc_itemu_gracza[target]);
}
}
hud_task[client] = CreateTimer(0.5, PokazInformacje, client, TIMER_FLAG_NO_MAPCHANGE);
}
oraz gdzieś na dole pluginu dodajemy:
public Action:WybierzAutoKlase(client)
{
new Float:gametime = GetGameTime();
if(gametime > time_klasa_gracza[client]+1.0)
{
if(!klasa_gracza[client])
{
if(!auto_klasa_gracza[client])
auto_klasa_gracza[client] = IsFakeClient(client)? 3: 30; // czas wyboru klasy przez bota 3 sekundy, przez gracza 30;
if(wczytane_dane[client] && !freezetime)
{
if(auto_klasa_gracza[client] > 1)
auto_klasa_gracza[client] --;
else
{
nowa_klasa_gracza[client] = GetRandomInt(1, ilosc_klas);
UstawNowaKlase(client);
ZastosujAtrybuty(client);
DajBronie(client);
PrintToChat(client, "[COD:MW] Twoja klasa zostala wybrana automatycznie.");
}
}
}
else if(auto_klasa_gracza[client])
auto_klasa_gracza[client] = 0;
time_klasa_gracza[client] = gametime;
}
return Plugin_Continue;
}
teraz wystarczy już zapisać i ponownie skompilować silnik by cieszyć się dodatkiem.
Silnik wraz z paczką modyfikacji, można nabyć wyłącznie poprzez kontakt ze mną. Więcej o tym w sygnaturze.


Dodatki SourceMod















