I. Jako item
Szukamy linijki z napisem
Public Damage();
u mnie wygląda to tak
public Damage(id)
{
new attacker = get_user_attacker(id);
new damage = read_data(2);
if(!is_user_alive(attacker) || !is_user_connected(attacker) || id == attacker || !klasa_gracza[attacker])
return PLUGIN_CONTINUE;
if(informacje_przedmiotu_gracza[attacker][0] == 12 && random_num(1, informacje_przedmiotu_gracza[id][1]) == 1 || klasa_gracza[attacker] == Predator && random_num(1,3) == 2)
Display_Fade(id,1<<14,1<<14 ,1<<16,255,155,50,230);
if(get_user_team(id) != get_user_team(attacker))
{
while(damage>20)
{
damage-=20;
doswiadczenie_gracza[attacker]++;
}
}
SprawdzPoziom(attacker);
return PLUGIN_CONTINUE;
}pod "new damage = read_data(2);" dodajemy to "new hp = get_user_health(attacker);"
Pomiędzy
Display_Fade(id,1<<14,1<<14 ,1<<16,255,155,50,230);, a
if(get_user_team(id) != get_user_team(attacker))
wstawiamy to:
if(get_user_team(id) != get_user_team(attacker) && informacje_przedmiotu_gracza[attacker][0] == numer perka)
{
if(hp>=maksymalne_zdrowie_gracza[attacker])
{
return PLUGIN_CONTINUE;
}
else
{
hp+=floatround(1.0*damage/(informacje_przedmiotu_gracza[attacker][1]), floatround_floor);
set_user_health(attacker, min(hp, maksymalne_zdrowie_gracza[attacker]));
}
}UWAGA!!! Ten kod musicie wstawic PRZED takim kodem
if(get_user_team(id) != get_user_team(attacker))
{
while(damage>20)
{
damage-=20;
doswiadczenie_gracza[attacker]++;
}
} w przeciwnym razie jak zadasz <20 dmg item działa dobrze, powyżej tego dmg występuje bład itemu..
W moim przypadku numer perka to 50, a nazwałem go "Naboje Życia". Zastanawia was, dlaczego 1.0*damage, ponieważ bez "1.0", może wyskoczyć błąd typu "Warning: Tag mismatch on line xxxx", niby to nie przeszkadza w kompilowaniu, ale to wpływa na sam item w grze.
W "public DajPrzedmiotX(id, przedmiot)", dodajemy
case "numer perka":
{
informacje_przedmiotu_gracza[id][1] == random_num(2, 5);
{W moim przypadku to zakres 2 - 5, czyli możliwe losowania to 1/5, 1/4, 1/3, 1/2. Oczywiscie zakres losowania zostawiam wedle waszego gustu ;d.Dokładnie to samo dajemy w "public DajPrzedmiot(id, przedmiot)".
Tak powinno wyglądać:
public Damage(id)
{
new attacker = get_user_attacker(id);
new damage = read_data(2);
new hp = get_user_health(attacker);
if(!is_user_alive(attacker) || !is_user_connected(attacker) || id == attacker || !klasa_gracza[attacker])
return PLUGIN_CONTINUE;
if(informacje_przedmiotu_gracza[attacker][0] == 12 && random_num(1, informacje_przedmiotu_gracza[id][1]) == 1 || klasa_gracza[attacker] == Predator && random_num(1,3) == 2)
Display_Fade(id,1<<14,1<<14 ,1<<16,255,155,50,230);
if(get_user_team(id) != get_user_team(attacker) && informacje_przedmiotu_gracza[attacker][0] == 50)
{
if(hp>=maksymalne_zdrowie_gracza[attacker])
{
return PLUGIN_CONTINUE;
}
else
{
hp+=floatround(1.0*damage/(informacje_przedmiotu_gracza[attacker][1]), floatround_floor);
set_user_health(attacker, min(hp, maksymalne_zdrowie_gracza[attacker]));
}
}
if(get_user_team(id) != get_user_team(attacker))
{
while(damage>20)
{
damage-=20;
doswiadczenie_gracza[attacker]++;
}
}
SprawdzPoziom(attacker);
return PLUGIN_CONTINUE;
}II Jako Klasa
wystarczy zamienić treść
informacje_przedmiotu_gracza[attacker][0] == "nazwa perka"na
klasa_gracza[attacker] == "nazwa klasy"W moim przypadku to Komandos
Jeżeli chcemy nadać stałą, np. zawsze 1/3 dmg do HP to zamiast
hp+=floatround(1.0*damage/(informacje_przedmiotu_gracza[attacker][1]), floatround_floor);dajemy to
hp+=floatround(damage/3.0, floatround_floor);
U mnie tak to wygląda
public Damage(id)
{
new attacker = get_user_attacker(id);
new damage = read_data(2);
new hp = get_user_health(attacker);
if(!is_user_alive(attacker) || !is_user_connected(attacker) || id == attacker || !klasa_gracza[attacker])
return PLUGIN_CONTINUE;
if(informacje_przedmiotu_gracza[attacker][0] == 12 && random_num(1, informacje_przedmiotu_gracza[id][1]) == 1 || klasa_gracza[attacker] == Predator && random_num(1,3) == 2)
Display_Fade(id,1<<14,1<<14 ,1<<16,255,155,50,230);
if(get_user_team(id) != get_user_team(attacker) && klasa_gracza[attacker] == Komandos)
{
if(hp>=maksymalne_zdrowie_gracza[attacker])
{
return PLUGIN_CONTINUE;
}
else
{
hp+=floatround(damage/3.0, floatround_floor);
set_user_health(attacker, min(hp, maksymalne_zdrowie_gracza[attacker]));
}
}
if(get_user_team(id) != get_user_team(attacker))
{
while(damage>20)
{
damage-=20;
doswiadczenie_gracza[attacker]++;
}
}
SprawdzPoziom(attacker);
return PLUGIN_CONTINUE;
}III jako item i klasa
Prezentacja
public Damage(id)
{
new attacker = get_user_attacker(id);
new damage = read_data(2);
new hp = get_user_health(attacker);
if(!is_user_alive(attacker) || !is_user_connected(attacker) || id == attacker || !klasa_gracza[attacker])
return PLUGIN_CONTINUE;
if(informacje_przedmiotu_gracza[attacker][0] == 12 && random_num(1, informacje_przedmiotu_gracza[id][1]) == 1 || klasa_gracza[attacker] == Predator && random_num(1,3) == 2)
Display_Fade(id,1<<14,1<<14 ,1<<16,255,155,50,230);
if(get_user_team(id) != get_user_team(attacker) && informacje_przedmiotu_gracza[attacker][0] == 50)
{
if(hp>=maksymalne_zdrowie_gracza[attacker])
{
return PLUGIN_CONTINUE;
}
else
{
hp+=floatround(1.0*damage/(informacje_przedmiotu_gracza[attacker][1]), floatround_floor);
set_user_health(attacker, min(hp, maksymalne_zdrowie_gracza[attacker]));
}
}
if(get_user_team(id) != get_user_team(attacker) && klasa_gracza[attacker] == Komandos)
{
if(hp>=maksymalne_zdrowie_gracza[attacker])
{
return PLUGIN_CONTINUE;
}
else
{
hp+=floatround(damage/3.0, floatround_floor);
set_user_health(attacker, min(hp, maksymalne_zdrowie_gracza[attacker]));
}
}
if(get_user_team(id) != get_user_team(attacker))
{
while(damage>20)
{
damage-=20;
doswiadczenie_gracza[attacker]++;
}
}
SprawdzPoziom(attacker);
return PLUGIN_CONTINUE;
}oczywiście w III przypadku w "Public DajPrzedmiotX(id, przedmiot)" oraz w "Public DajPrzedmiot(id, przedmiot)"
musimy dać to:
case "numer perka":
{
if(klasa_gracza[id] == "Nazwa klasy z "wrodzonym" itemem)
{
DajPrzedmiot(id, random_num(1, sizeof nazwy_przedmiotow-1));
}
informacje_przedmiotu_gracza[id][1] = random_num(a,b);
}Tyle rozpisania na temat tej właściwości, myślę że nie poszło na marne ;d


Dodatki SourceMod














