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

Szybsze rozdzielanie punktów

Tutorial

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

#1 ZiuTeK

    Wszechwiedzący

  • Użytkownik

Reputacja: 135
Zaawansowany

  • Postów:507
  • Lokalizacja:inąd
Offline

Napisano 24.04.2010 08:29

Zdarza się, że ktoś zmodyfikuje diablo aby było w nim 200, 400 a nawet 1000 leveli. Jeśli równocześnie zwiększy ilość rozdzielanych punktów to takie rozdzielanie może trwać godzinami
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=X
i 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

  • +
  • -
  • 3

#2 Change

    Super Hero

  • Użytkownik

Reputacja: 129
Zaawansowany

  • Postów:1 161
  • Lokalizacja:Konin
Offline

Napisano 24.04.2010 21:02

Błędy błędy :)
Dodaje wszystkie punkty w 1 owszem, ale jedynie jeśli masz mniej pkt niż max dozwolona ilość. Jesli nie zostają minusowe staty i rozniaste błędy sie robią ;] zresztą sam łatwo dojdziesz gdzie jest źle bo ja nie bardzo sie orientuje w diablo a przyuważyłem w kodzie to ;] (działanie sprawdzone , błędy :P )
  • +
  • -
  • 0

#3 ZiuTeK

    Wszechwiedzący

  • Autor tematu
  • Użytkownik

Reputacja: 135
Zaawansowany

  • Postów:507
  • Lokalizacja:inąd
Offline

Napisano 25.04.2010 02:00

No wlasnie jak mi lepiej wytlumaczysz w jakiej sytuacji powstaly bledy to moze sie zorientuje, bo w tym momencie nie mam zielonego pojecia. Testowalem to na swoim diablo 50 leveli i nie bylo problemu. Jakie minusowe staty ?
Na pewno zmieniles wartosc max_skilll na taka jak wymienilem? Wrzuc jakies screeny i opisz lepiej jak to u ciebie wyglada to będę mogl cos poradzic.

Użytkownik ZiuTeK edytował ten post 25.04.2010 07:59

  • +
  • -
  • 0

#4 Change

    Super Hero

  • Użytkownik

Reputacja: 129
Zaawansowany

  • Postów:1 161
  • Lokalizacja:Konin
Offline

Napisano 25.04.2010 09:57

Wszystko zmieniałem, tzn. na 200 - tak jak to u mnie jest.
Hmm lepiej wyjaśnić, mówie co wiem od graczy, nie gram na diablo :) Wytłumaczono mi to tak, że np. ma X lvl wiec 300 pkt do rozdania. Jesli wezmie reset i da wszystko w 1 klasę, to wyjdzie mu statystyka -100 (do 200 doda, a potem przeszło w minus oO)
  • +
  • -
  • 0

#5 ZiuTeK

    Wszechwiedzący

  • Autor tematu
  • Użytkownik

Reputacja: 135
Zaawansowany

  • Postów:507
  • Lokalizacja:inąd
Offline

Napisano 25.04.2010 11:00

A wgrywales fixa zeby nie miec u siebie ujemnych statow ?
Jesli nie to sprobuj naprawic ujemne staty z tego poradnika:
Ujemne punkty (int,sila,zrecznosc, zwinnosc) - Nieoficjalny polski support AMX Mod X
  • +
  • -
  • 0

#6 Change

    Super Hero

  • Użytkownik

Reputacja: 129
Zaawansowany

  • Postów:1 161
  • Lokalizacja:Konin
Offline

Napisano 25.04.2010 11:24

No, teraz lepiej :)
Ale jednak polecam zrobić sobie tak jak ja, np. dodaj 10 w siłe, czy tam 50.

Użytkownik Change edytował ten post 25.04.2010 11:35

  • +
  • -
  • 0

#7 ZiuTeK

    Wszechwiedzący

  • Autor tematu
  • Użytkownik

Reputacja: 135
Zaawansowany

  • Postów:507
  • Lokalizacja:inąd
Offline

Napisano 25.04.2010 12:08

Mimo wszystko nadal nie rozumiem czemu to ma służyć albo czemu to ma zapobiec ?
  • +
  • -
  • 0

#8 Tiger_pl

    Profesjonalista

  • Zbanowany

Reputacja: 15
Początkujący

  • Postów:161
  • GG:
  • Lokalizacja:Warszawa
Offline

Napisano 26.04.2010 05:23

Ja myśle ,że te minusowe punkty umiejetności wynikają z nie zmienienia n/w parametrow :
public skill_menu(id, key) 
{ 
	switch(key) 
	{ 
		case 0: 
		{	
			if (player_intelligence[id]<60){
				player_point[id]-=1
				player_intelligence[id]+=1
			}
			else client_print(id,print_center,"Maxymalny poziom inteligencji osiagniety")
			
		}
		case 1: 
		{	
			if (player_strength[id]<150){
				player_point[id]-=1	
				player_strength[id]+=1
			}
			else client_print(id,print_center,"Maxymalny poziom sily osiagniety")
		}
		case 2: 
		{	
			if (player_agility[id]<150){
				player_point[id]-=1
				player_agility[id]+=1
				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]<150){
				player_point[id]-=1
				player_dextery[id]+=1
				set_speedchange(id)
			}
			else client_print(id,print_center,"Maxymalny poziom zwinnosci osiagniety")
Ja u siebie na Diablo zmienilem tak :
(player_intelligence[id]<60){
(player_strength[id]<150){
(player_agility[id]<150){
(player_dextery[id]<150)
I max inteligencji można miec 60 puntow
strength - 150
agility- 150
dextery - 150
dlatego wydaje mi się ,że jak zmieniasz to co chcesz to te parametry blokują "gryzą się " z tym co zamierzasz zrobić.
Stąd też wychodzą minusowe punkty umiejetności.

#9 ZiuTeK

    Wszechwiedzący

  • Autor tematu
  • Użytkownik

Reputacja: 135
Zaawansowany

  • Postów:507
  • Lokalizacja:inąd
Offline

Napisano 28.04.2010 19:16

To nie ma nic do rzeczy, punkty ujemne powstaja od pewnych itemow i zeby ich nie bylo nalezy podmienic funkcje ktora podalem w linku do tamtego tematu a w tym poradniku byl blad ktorego nie zauwazylem na poczatku.
W case 7 (dla zwinnosci)
bylo:
player_dextery[id]-=player_point[id] dlatego punkty wychodzily na minusie ale jedynie dla zwinnosci. Blad dostrzeglem i poprawilem wiec teraz juz jest ok.
  • +
  • -
  • 0

#10 Owner123

    Wszechpomocny

  • Użytkownik

Reputacja: 146
Zaawansowany

  • Postów:331
  • Lokalizacja:Barty ;]
Offline

Napisano 21.06.2010 20:29

Dlaczego raz dajesz <= a raz < ? O.o
  • +
  • -
  • 0

#11 WizZi

    Pomocny

  • Użytkownik

Reputacja: 5
Nowy

  • Postów:67
  • Imię:Piotrek
  • Lokalizacja:Gąbin
Offline

Napisano 17.10.2010 13:36

Error: Input line too long (after substitutions) on line 1991

new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)
wyskakuje mi error przy tej linijce. WHY? :/

Dobra już działa dzięki, +4 you :D

Użytkownik WizZi edytował ten post 20.10.2010 14:50

  • +
  • -
  • 0

#12 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 04.11.2010 23:31

Według mnie te rozdzielanie niestety jest trochę beznadziejne, ma się powiedzmy te 80 pkt i 2 razy klikamy i już pkt nie ma, lepiej chyba będzie zrobić coś takiego
case 4: {
if(player_intelligence[id]<max_skill) {
if(player_point[id]>=5) {
player_point[id]-=5
player_intelligence[id]+=5
}
else
client_print(id, print_center, "Nie masz tylu punktow")
}
else
client_print(id, print_center, "Maxymalny poziom inteligencji dla tego poziomu zostal osiagniety")
}
case 5: {
if(player_strength[id]<max_skill) {
if(player_point[id]>=5) {
player_point[id]-=5
player_strength[id]+=5
}
else
client_print(id, print_center, "Nie masz tylu punktow")
}
else
client_print(id, print_center, "Maxymalny poziom sily dla tego poziomu zostal osiagniety")
}
case 6: {
if(player_agility[id]<max_skill) {
if(player_point[id]>=5) {
player_point[id]-=5
player_agility[id]+=5
player_damreduction[id] = (47.3057*(1.0-floatpower(2.7182, -0.06798*float(player_agility[id])))/100)
}
else
client_print(id, print_center, "Nie masz tylu punktow")
}
else
client_print(id, print_center, "Maxymalny poziom zrecznosci dla tego poziomu zostal osiagniety")
}
case 7: {
if(player_dextery[id]<max_skill) {
if(player_point[id]>=5) {
player_point[id]-=5
player_dextery[id]+=5
set_speedchange(id)
}
else
client_print(id, print_center, "Nie masz tylu punktow")
}
else
client_print(id, print_center, "Maxymalny poziom zwinnosci dla tego poziomu zostal osiagniety")
}

oczywiście tą "5" można zamienić na obojętnie jaką liczbę.
  • +
  • -
  • 1

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#13 Juma

    Wszechpomocny

  • Użytkownik

Reputacja: 64
Pomocny

  • Postów:373
  • GG:
  • Steam:steam
  • Imię:Arek
  • Lokalizacja:Haynau
Offline

Napisano 06.11.2010 14:42

Hmm.. Takie pytanie idiotyczne, z mojej strony.

A gdzie tutaj ustawić maksymalny poziom danej statystyki, przykładowo, siły 450, a zręczności 100 ?

Bo z tego co zrozumiałem, max_skill = twoj_lvl, oznacza maksymalną ilość wpakowania stat w jedną umiejętność, i dla każdej jest ona taka sama..
  • +
  • -
  • 0

#14 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 06.11.2010 15:12

To wpisujesz zamiast max_skill swoją wartość przy sile, czy zręczności... :o
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#15 Juma

    Wszechpomocny

  • Użytkownik

Reputacja: 64
Pomocny

  • Postów:373
  • GG:
  • Steam:steam
  • Imię:Arek
  • Lokalizacja:Haynau
Offline

Napisano 06.11.2010 16:51

Tiaa.. Wpadłem i na ten pomysł, i nie działa.

Mam zamienić za każde max_skill (opowiadające danej statystyce), czy tylko za wybrane ? Może drobny poradniczek dla mnie ;) ?


Bo rozchodzi się o to, że chcę dla każdej statystyki inną maksymalną liczbę wpakowania stat, i jak to zrobić.

Dodano 06 listopad 2010 - 17:25:
Dobra, już doszedłem do tego sam, jak zrobić dla każdej statystyki inną maksymalną liczbę pkt. do rozdania.

Użytkownik Juma edytował ten post 06.11.2010 17:15

  • +
  • -
  • 0

#16 Zacco

    Początkujący

  • Użytkownik

Reputacja: 6
Nowy

  • Postów:10
  • Lokalizacja:Kopenhaga
Offline

Napisano 24.11.2010 12:57

A ja mam mały problem... Zrobiłem wszystko według tego co tutaj Ziutek napisał i gdy wchodze na serwer zdobywam 15 pkt umiejetnosci (przykład ;)i dodaje wszystko w siłe. Mam to pod 6. I w następnej rundzie znowu muszę dodać te same punkty umiejętności tylko, że juz nie ma 5,6,7,8 :P Wiecie jak to naprawić??
  • +
  • -
  • 0
Daj plusika jeśli pomogłem ;P Chcecie parę fajnych pluginów?? Zerknijcie na tą paczkę ;P
Moja paczka z fajnymi pluginami

DiabloMod by Zacco
v1 |||||||||| KONIEC
v2|||||||||| KONIEC. KTO CHCE PISAĆ NA PW :)





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