Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
Tutorial

Inny limit punktów dla każdej klasy

Tutorial

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
6 odpowiedzi w tym temacie

#1 JLB. Leo

    Profesjonalista

  • Zbanowany

Reputacja: 59
Pomocny

  • Postów:180
  • Imię:Paweł
  • Lokalizacja:Bielawa
Offline

Napisano 28.05.2011 22:52

W tym poradniku pokażę jak łatwo i optymalnie ustawić zupełnie różne maksymalne limity punktów dla każdej z klas i każdej ze statystyk

Wystarczy podmienić dwie funkcje na poniższe:

Spoiler



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

Użytkownik JLB. Leo edytował ten post 30.05.2011 20:12


#2 Death_Player

    Wszechpomocny

  • Użytkownik

Reputacja: 25
Życzliwy

  • Postów:325
  • Lokalizacja:Warszawa
Offline

Napisano 14.06.2011 19:29

Nie wiem czy wam też ale przy "switch(player_class[id])" wywala mi błąd

"Error: Invalid function or declaration on line 1527
Error: Invalid function or declaration on line 1529
Error: Invalid function or declaration on line 1538


3 Errors.
Could not locate output file F:\Users\xxx\Desktop\diablo.amx (compile failed)."

      1527   switch(player_class[id])
1528 {
1529 case Satan:
itd... {
max_int = 134
max_sila = 0
max_zre = 133
max_zwin = 133
}
}
show_menu(id, keys, text)
1538 return PLUGIN_HANDLED
}

Użytkownik Death_Player edytował ten post 14.06.2011 19:31

  • +
  • -
  • 0

#3 JLB. Leo

    Profesjonalista

  • Autor tematu
  • Zbanowany

Reputacja: 59
Pomocny

  • Postów:180
  • Imię:Paweł
  • Lokalizacja:Bielawa
Offline

Napisano 20.06.2011 20:19

pokaż proszę całą funkcję

#4 Death_Player

    Wszechpomocny

  • Użytkownik

Reputacja: 25
Życzliwy

  • Postów:325
  • Lokalizacja:Warszawa
Offline

Napisano 25.06.2011 16:26

 
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_int=100 //inteligencja
new max_sila=100 //siła
new max_zre=100 //zręczność
new max_zwin=100 //zwinność

switch(key)
{
case 0:
{
if (player_intelligence[id]<max_int)
{
player_point[id]-=1
player_intelligence[id]+=1
}
else client_print(id,print_center,"Maxymalny poziom inteligencji osiagniety")
}
case 1:
{
if (player_strength[id]<max_sila)
{
player_point[id]-=1
player_strength[id]+=1
}
else client_print(id,print_center,"Maxymalny poziom sily osiagniety")
}
case 2:
{
if (player_agility[id]<max_zre)
{
player_point[id]-=1
player_agility[id]+=1
player_damreduction[id] = (47.3057*(1.0-floatpower( 2.7182, -0.06798*float(player_agility[id])))/50)
}
else client_print(id,print_center,"Maxymalny poziom zrecznosci osiagniety")
}
case 3:
{
if (player_dextery[id]<max_zwin)
{
player_point[id]-=1
player_dextery[id]+=1
set_speedchange(id)
}
else client_print(id,print_center,"Maxymalny poziom zwinnosci osiagniety")
}
case 4:
{
if (player_point[id]+player_intelligence[id] <= max_int)
{
player_intelligence[id]+=player_point[id]
player_point[id]=0
}
else
{
player_point[id]-=max_int-player_intelligence[id]
player_intelligence[id]=max_int
client_print(id,print_center,"Maxymalny poziom inteligencji osiagniety")
}
}
case 5:
{
if (player_point[id]+player_strength[id] <= max_sila)
{
player_strength[id]+=player_point[id]
player_point[id]=0
}
else
{
player_point[id]-=max_sila-player_strength[id]
player_strength[id]=max_sila
client_print(id,print_center,"Maxymalny poziom sily osiagniety")
}
}
case 6:
{
if (player_point[id]+player_agility[id]<max_zre)
{
player_agility[id]+=player_point[id]
player_point[id]=0
}
else
{
player_point[id]-=max_zre-player_agility[id]
player_agility[id]=max_zre
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_zwin)
{
player_dextery[id]+=player_point[id]
player_point[id]=0
}
else
{
player_point[id]-=max_zwin-player_dextery[id]
player_dextery[id]=max_zwin
client_print(id,print_center,"Maxymalny poziom zwinnosci osiagniety")
}
set_speedchange(id)
}
}

if (player_point[id] > 0)
skilltree(id)
return PLUGIN_HANDLED
}


Dodano 25 czerwiec 2011 - 16:51:
Poprawiłem trochę.

Dodano 26 czerwiec 2011 - 20:33:
Leo da radę coś z tym zrobić ?

Dodano 27 czerwiec 2011 - 12:48:
Okey działa, myśle że wina stała po stronie określenia zmiennych lokalnych w publicu skilltree, zamiast skill_menu.

Użytkownik Death_Player edytował ten post 27.06.2011 12:35

  • +
  • -
  • 0

#5 yetj

    Pomocny

  • Użytkownik

Reputacja: 5
Nowy

  • Postów:56
  • Imię:Kamil
  • Lokalizacja:Polska
Offline

Napisano 05.07.2011 15:16

Nie żebym się czepiał ale, żeby to zadziałało poprawnie i się poprawnie skompilowało to wszystko od
/* Start - Limit Statów */

do samego
/* Koniec - Limit Statów */


powinno znajdować się pod
public skill_menu(id, key)      
{


W przeciwnym wypadku kompilator pluje błędami i jak by nie było ma rację, bo w funkcji skilltree() nie używasz zadeklarownych zmiennych, a w skill_menu() nie ma takich zmiennych.

Dodatkowo cała ta pętla nie zawiera deklaracji zmiennej i

for(i=0;i<player_lvl[id];i++)
max_lvl_stats+=1

oraz jest zbędna bo można ją zastąpić zwykłym mnożeniem:
max_lvl_stats = player_lvl[id] * 2


Czyli całość powinna wyglądać mniej więcej tak:

Spoiler

  • +
  • -
  • 0

#6 Dalinor

    Zaawansowany

  • Użytkownik

Reputacja: 28
Życzliwy

  • Postów:77
  • GG:
  • Lokalizacja:Rabka :)
Offline

Napisano 05.07.2011 18:28

@UP
Ty wiesz do czego jest ta pętla ? ...

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łę.


Czytanie ze zrozumieniem ^^
  • +
  • -
  • 0

#7 yetj

    Pomocny

  • Użytkownik

Reputacja: 5
Nowy

  • Postów:56
  • Imię:Kamil
  • Lokalizacja:Polska
Offline

Napisano 05.07.2011 21:57

Ale czy to co ja napisałem nie jest równe tej pętli?
Oczywiście, że jest i jest dużo prostsze w wykonaniu, a efekt ten sam.
  • +
  • -
  • 0





Również z jednym lub większą ilością słów kluczowych: Tutorial

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych