Tutaj proponuje kod do podmianki aby ułatwić graczom rozdzielanie punktów.
Należy podmienić obie funkcje
public skilltree(id) i public skill_menu(id, key)
na przyciskach 5-8 możemy przydzielić wszystkie punkty w jedną umiejętność a na przyciskach od 1-4 jest przyśpieszone rozdawanie punktów (zamiast 1 to 2)
Na samym początku public skill_menu(id,key) jest zadeklarowana maksymalna ilość punktów jakie możemy dać dla jednej umiejętności ( new
max_skill=Xi dla 100 leveli za X podstawiamy 50, dla 200 leveli to bedzie 100, dla 400 to bedzie 200
Przykład: Gracz ma 44 level - 86 punktów do rozdzielenia, wciska 5 i 6 i ma już rozdzielone punkty 50 w inteligencje a to co zostało czyli 36 punktów w siłe a to wszystko po 2 kliknięciach.
public skilltree(id)
{
new text[513]
new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)
format(text, 512, "\yWybierz Staty- \rPunkty: %i^n^n\w1. Inteligencja [%i] [Wieksze obrazenia czarami]^n\w2. Sila [%i] [Wiecej zycia]^n\w3. Zrecznosc [%i] [Bronie zadaja ci mniejsze obrazenia]^n\w4. Zwinnosc [%i] [Szybciej biegasz i magia zadaje ci mniejsze obrazenia]^n\w5. Wszystko w Inteligencje ^n\w6. Wszystko w sile ^n\w7. Wszystko w zrecznosc ^n\w8. Wszystko w zwinosc",player_point[id],player_intelligence[id],player_strength[id],player_agility[id],player_dextery[id])
keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)
show_menu(id, keys, text)
return PLUGIN_HANDLED
}
public skill_menu(id, key)
{
new max_skill=X
switch(key)
{
case 0:
{
if (player_intelligence[id]<max_skill){
player_point[id]-=2
player_intelligence[id]+=2
}
else client_print(id,print_center,"Maxymalny poziom inteligencji osiagniety")
}
case 1:
{
if (player_strength[id]<max_skill){
player_point[id]-=2
player_strength[id]+=2
}
else client_print(id,print_center,"Maxymalny poziom sily osiagniety")
}
case 2:
{
if (player_agility[id]<max_skill){
player_point[id]-=2
player_agility[id]+=2
player_damreduction[id] = (47.3057*(1.0-floatpower( 2.7182, -0.06798*float(player_agility[id])))/100)
}
else client_print(id,print_center,"Maxymalny poziom zrecznosci osiagniety")
}
case 3:
{
if (player_dextery[id]<max_skill){
player_point[id]-=2
player_dextery[id]+=2
set_speedchange(id)
}
else client_print(id,print_center,"Maxymalny poziom zwinnosci osiagniety")
}
case 4:
{
if (player_point[id]+player_intelligence[id] <= max_skill)
{
player_intelligence[id]+=player_point[id]
player_point[id]=0
}
else
{
player_point[id]-=max_skill-player_intelligence[id]
player_intelligence[id]=max_skill
client_print(id,print_center,"Maxymalny poziom inteligencji osiagniety")
}
}
case 5:
{
if (player_point[id]+player_strength[id] <= max_skill)
{
player_strength[id]+=player_point[id]
player_point[id]=0
}
else
{
player_point[id]-=max_skill-player_strength[id]
player_strength[id]=max_skill
client_print(id,print_center,"Maxymalny poziom sily osiagniety")
}
}
case 6:
{
if (player_point[id]+player_agility[id]<max_skill)
{
player_agility[id]+=player_point[id]
player_point[id]=0
}
else
{
player_point[id]-=max_skill-player_agility[id]
player_agility[id]=max_skill
client_print(id,print_center,"Maxymalny poziom zrecznosci osiagniety")
}
player_damreduction[id] = (47.3057*(1.0-floatpower( 2.7182, -0.06798*float(player_agility[id])))/100)
}
case 7:
{
if (player_point[id]+player_dextery[id]<max_skill)
{
player_dextery[id]+=player_point[id]
player_point[id]=0
}
else
{
player_point[id]-=max_skill-player_dextery[id]
player_dextery[id]=max_skill
client_print(id,print_center,"Maxymalny poziom zwinnosci osiagniety")
}
set_speedchange(id)
}
}
if (player_point[id] > 0)
skilltree(id)
return PLUGIN_HANDLED
}
Mala poprawka, dla punktow zwinnosci byla literowka w funkcji i jesli ktos mial mniej punktow niz max_skill i wrzucal je w zwinnosc to wychodzily liczby ujemne. Kod juz jest poprawiony a Ci ktorzy wgrali go wczesniej proszeni sa o aktualizacje.
Użytkownik ZiuTeK edytował ten post 27.04.2010 19:08


Dodatki SourceMod













