Wystarczy podmienić dwie funkcje na poniższe:
Spoiler
public skilltree(id)
{
new text[513]
new keys
format(text, 512, "\yWybierz Staty- \rPunkty: \w[\r%i\w]^n^n\w1. \yInteligencja \w[\r%i\w] [\dWieksze obrazenia czarami\w]^n\w2. \ySila \w[\r%i\w] [\dWiecej zycia o \r%i\w]^n\w3. \yZrecznosc \w[\r%i\w] [\dBronie zadaja ci mniejsze obrazenia\w]^n\w4. \yZwinnosc \w[\r%i\w] [\dSzybciej biegasz i magia zadaje ci mniejsze obrazenia\w]^n\yMenu bY \rJLB. Leo",player_point[id],player_intelligence[id],player_strength[id],player_strength[id]*2,player_agility[id],player_dextery[id])
keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)
/* Start - Limit Statów */
new max_int //inteligencja
new max_sila //siła
new max_zre //zręczność
new max_zwin //zwinność
/************************************ ! UWAGA ! **********************************/
/* Poniżej ustalamy maksymalną ilość rozdania każdej umiejętności dla danej klasy */
/* Należy tak to rozplanować, żeby wszystkie klasy miały ŁĄCZNIE tyle samu punktów */
/* Żeby nie było Bugów, suma powinna wynosić (MAXLVL-1)*2, np. dla max 101 jest 200 */
switch(player_class[id])
{
case Mag:
{
max_int = 100
max_sila = 50
max_zre = 20
max_zwin = 30
}
case Druid:
{
max_int = 70
max_sila = 60
max_zre = 30
max_zwin = 40
}
// No i dalej już chyba wiesz jak dodać reszte klas, albo jakieś swoje nowe
}
/* Koniec - Limit Statów */
show_menu(id, keys, text)
return PLUGIN_HANDLED
}
public skill_menu(id, key)
{
switch(key)
{
case 0:
{
if (player_intelligence[id]<max_int){
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_sila){
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_zre){
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_zwin){
player_point[id]-=2
player_dextery[id]+=2
set_speedchange(id)
}
else client_print(id,print_center,"Maxymalny poziom zwinnosci osiagniety")
}
}
if (player_point[id] > 0)
skilltree(id)
return PLUGIN_HANDLED
}
A poniżej jest wersja z dodatkiem - na każdy lvl odblokowuje się tylko część punktów dla każdej ze statystyk.
Tzn, dostajemy na 2 lvl'u 2 punkty do rozdania, ale możemy dodać tylko po jednym do każdej statystyki! Nie można dać wszystkich dwóch w siłę. Z każdym lvlem możemy co raz więcej dodawać punktów w jedną statystykę.
Spoiler
public skilltree(id)
{
new text[513]
new keys
format(text, 512, "\yWybierz Staty- \rPunkty: \w[\r%i\w]^n^n\w1. \yInteligencja \w[\r%i\w] [\dWieksze obrazenia czarami\w]^n\w2. \ySila \w[\r%i\w] [\dWiecej zycia o \r%i\w]^n\w3. \yZrecznosc \w[\r%i\w] [\dBronie zadaja ci mniejsze obrazenia\w]^n\w4. \yZwinnosc \w[\r%i\w] [\dSzybciej biegasz i magia zadaje ci mniejsze obrazenia\w]^n\yMenu bY \rJLB. Leo",player_point[id],player_intelligence[id],player_strength[id],player_strength[id]*2,player_agility[id],player_dextery[id])
keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)
/* Start - Limit Statów */
new max_int //inteligencja
new max_sila //siła
new max_zre //zręczność
new max_zwin //zwinność
new max_lvl_stats //max staty na lvl
for(i=0;i<player_lvl[id];i++)
max_lvl_stats+=1 // tutaj ustawiamy, ile można dać punktów na lvl dla jednej umiejętności. Ja radzę połowę otrzymywanych punktów, jezeli co lvl dostajemy 2 pkt do rozdania, powinna tu zostać jedynka, jak np. 5 to lepsza byłaby wartość "3". Standardowo 1.
/************************************ ! UWAGA ! **********************************/
/* Poniżej ustalamy maksymalną ilość rozdania każdej umiejętności dla danej klasy */
/* Należy tak to rozplanować, żeby wszystkie klasy miały ŁĄCZNIE tyle samu punktów */
/* Żeby nie było Bugów, suma powinna wynosić (MAXLVL-1)*2, np. dla max 101 jest 200 */
switch(player_class[id])
{
case Mag:
{
max_int = 100
max_sila = 50
max_zre = 20
max_zwin = 30
}
case Druid:
{
max_int = 70
max_sila = 60
max_zre = 30
max_zwin = 40
}
// No i dalej już chyba wiesz jak dodać reszte klas, albo jakieś nowe
}
/* Koniec - Limit Statów */
show_menu(id, keys, text)
return PLUGIN_HANDLED
}
public skill_menu(id, key)
{
switch(key)
{
case 0:
{
if (player_intelligence[id]<max_int)
{
if (player_intelligence[id]<max_lvl_stats)
{
player_point[id]-=2
player_intelligence[id]+=2
}
else client_print(id,print_center,"Nie mozesz dodac wiecej do inteligencji na tym lvl'u, wbij wyzszy poziom!")
}
else client_print(id,print_center,"Maxymalny poziom inteligencji osiagniety")
}
case 1:
{
if (player_strength[id]<max_sila)
{
if (player_strength[id]<max_lvl_stats)
{
player_point[id]-=2
player_strength[id]+=2
}
else client_print(id,print_center,"Nie mozesz dodac wiecej do sily na tym lvl'u, wbij wyzszy poziom!")
}
else client_print(id,print_center,"Maxymalny poziom sily osiagniety")
}
case 2:
{
if (player_agility[id]<max_zre)
{
if (player_agility[id]<max_lvl_stats)
{
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,"Nie mozesz dodac wiecej do zrecznosci na tym lvl'u, wbij wyzszy poziom!")
}
else client_print(id,print_center,"Maxymalny poziom zrecznosci osiagniety")
}
case 3:
{
if (player_dextery[id]<max_zwin)
{
if (player_dextery[id]<max_lvl_stats)
{
player_point[id]-=2
player_dextery[id]+=2
set_speedchange(id)
}
else client_print(id,print_center,"Nie mozesz dodac wiecej do zwinnosci na tym lvl'u, wbij wyzszy poziom!")
}
else client_print(id,print_center,"Maxymalny poziom zwinnosci osiagniety")
}
}
if (player_point[id] > 0)
skilltree(id)
return PLUGIN_HANDLED
}
Użytkownik JLB. Leo edytował ten post 30.05.2011 20:12