Regeneracja HP - co x sekund dostajesz (punkty tej statystyki/y = HP)
Spoiler
Do public plugin_init() :
Na dół sma :
ZMIENNA_TEJ_STATYSTYKI[id] - myślę że logiczne...przykładowo może być:
X - co ile sekund.
Do public plugin_init() :
register_think("Regeneracja", "RegeneracjaThink");
LeczacyBot();Na dół sma :
LeczacyBot()
{
new Bot = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
if (Bot)
{
set_pev(Bot, pev_classname, "Regeneracja");
dllfunc(DLLFunc_Spawn, Bot);
set_pev(Bot, pev_nextthink, get_gametime() + 5.0);
}
}
public RegeneracjaThink(Bot)
{
new iPlayers[32], iNum, id;
get_players(iPlayers, iNum);
for(new i; i<inum; i++)="" {="" id="iPlayers[i];" if="" (!is_user_alive(id))="" continue;="" (zmienna_tej_statystyki[id]="">0)
change_health(id,ZMIENNA_TEJ_STATYSTYKI[id]/Y,0,"");
}
set_pev(Bot, pev_nextthink, get_gametime() + X.0);
}ZMIENNA_TEJ_STATYSTYKI[id] - myślę że logiczne...przykładowo może być:
player_regeneracja[id]Y - co ile punktów ZMIENNA_TEJ_STATYSTYKI[id] ma dodawać HP...przykładowo gdy wpiszemy tam 5 to gdy będziemy mieć 5 punktów danych w tą statystyką będzie dodawało nam co Y sekund 1 HP , 10 punktów - 2 HP co Y sekund itd...
X - co ile sekund.
EXP
Spoiler
Znajdujemy funkcję public Give_Xp(id,amount) a w niej:
I w tym momencie zmieniamy na :
Co 1 punkt w tą statykę dodaję nam dodatkowo 1 punkt XP(oczywiście można np. co 5 punktów w tą statykę...tak jak w funkcji wyżej).
Znajdujemy funkcję public Give_Xp(id,amount) a w niej:
player_xp[id]+=amount
I w tym momencie zmieniamy na :
if (ZMIENNA_TEJ_STATYSTYKI[id]>0) player_xp[id]+=amount+ZMIENNA_TEJ_STATYSTYKI[id] else player_xp[id]+=amount
Co 1 punkt w tą statykę dodaję nam dodatkowo 1 punkt XP(oczywiście można np. co 5 punktów w tą statykę...tak jak w funkcji wyżej).
Grawitacja
Spoiler
Znajdujemy :
Gdy będziemy mieć w nią dane 100 punktów - 100:25 = 4 i teraz 1.0 dzielone przez 4 da nam 0.25 czyli 800 (grawitacja standardowa) dzielona przez 0.25 (4) da nam 200.

Ostrzeżenie:
Nie sprawdzałem jak się to ma z Ninją i innymi klasami z niewidzialnością.
public set_gravitychange(id)
{
if(is_user_alive(id) && is_user_connected(id))
{
if(player_class[id] == Ninja)
{
if(player_b_gravity[id]>6) set_user_gravity(id, 0.17)
else if(player_b_gravity[id]>3) set_user_gravity(id, 0.2)
else set_user_gravity(id, 0.25)
}
else
{
set_user_gravity(id,1.0*(1.0-player_b_gravity[id]/12.0))
}
}
}I zmieniamy na:public set_gravitychange(id)
{
if(is_user_alive(id) && is_user_connected(id))
{
if(player_class[id] == Ninja)
{
if(player_b_gravity[id]>6) set_user_gravity(id, 0.17)
else if(player_b_gravity[id]>3) set_user_gravity(id, 0.2)
else set_user_gravity(id, 0.25)
}
else if(ZMIENNA_TEJ_STATYSTYKI[id]>0)
{
set_user_gravity(id,1.0:(ZMIENNA_TEJ_STATYSTYKI[id]/25))
}
else
{
set_user_gravity(id,1.0*(1.0-player_b_gravity[id]/12.0))
}
}
}Przykładowo jeżeli ta statystyka wynosi maximum 100 zadziała to tak:Gdy będziemy mieć w nią dane 100 punktów - 100:25 = 4 i teraz 1.0 dzielone przez 4 da nam 0.25 czyli 800 (grawitacja standardowa) dzielona przez 0.25 (4) da nam 200.
100:25=4 1.0:4=0.25 800:0.25(4)=200Nie jestem pewien na 100 % czy dobrze z tym myślę więc jakby jednak nie proszę o poprawę
Ostrzeżenie:
Nie sprawdzałem jak się to ma z Ninją i innymi klasami z niewidzialnością.
Niewidzialność
Spoiler
W public set_renderchange(id) znajdujemy :
Oczywiście możemy też zrobić tak:
Ostrzeżenie:
Nie sprawdzałem jak się to ma z Ninją i innymi klasami z niewidzialnością.
W public set_renderchange(id) znajdujemy :
new render=255Dodajemy pod:
new renderX=255Potem:
else if(invisible_cast[id]==1)
{
if(player_b_inv[id]>0) set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, floatround((10.0/255.0)*(255-player_b_inv[id])))
else set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 10)
}Dodajemy pod:else if(ZMIENNA_TEJ_STATYSTYKI[id]>0)
{
renderX = 255-ZMIENNA_TEJ_STATYSTYKI[id]
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha,renderX)
}W momencie gdy nasza zmienna będzie równa 100 = niewidzialność będzie równa 155.Oczywiście możemy też zrobić tak:
renderX = 255-(ZMIENNA_TEJ_STATYSTYKI[id]*2)Wtedy każdy punkt dany w tą statystykę będzie odejmował dwa punkty od niewidzialności.
Ostrzeżenie:
Nie sprawdzałem jak się to ma z Ninją i innymi klasami z niewidzialnością.
Wszelkie błędy/niedogodności proszę zgłaszać w temacie.
Tego dodatku zabrania się kopiowania na inne fora itp. bez zgody autora.


Dodatki SourceMod














