←  Poradniki oraz Łatki

AMXX.pl: Support AMX Mod X i SourceMod

»

Tutorial
Dodawanie mocy do klasy.

  • +
  • -
Vertricus's Photo Vertricus 23.04.2010

W tym krótkim poradniku dowiecie się jak dodać gotową moc do klasy, tak aby nie było potem dopisków w /item oraz żeby klasa nie traciła ich po rundzie, straceniu przedmiotu.
Moim przykładem będzie skok, jednak dam wam kilka prostych krokach dzięki którym powinniście zrozumieć to dla każdej innej mocy.
1. Deklarujemy nową zmienną tj. tablice np. new zmienna[33] < dodajemy to przy innych mocach
2. Wszystkie instrukcje z tym związane zmieniamy w taki sposób:
Z if (innazmienna[id]/* tu cos naprawdopodobniej będzie */)
na if if (innazmienna[id]/* tu cos naprawdopodobniej będzie */ || zmienna[id] /* to co tam najprawdopodobniej było */)
3. W menu klas przed switch(key) zerujemy naszą zmienną w ten sposób dodając zmienna[id] = 0, a po wyborze tj. w "case" pod player_class[id] = JAKAS_KLASA przypisujemy zmiennej żądaną wartość.

PRZYKŁAD - Dodawanie kilku skoków klasie:
Spoiler

Poradnik napisany jest dosyć chaotycznie ze względu iż nie mam jak dać przykładów do wszystkich mocy.
Jeśli nie rozumiesz co tu jest napisane to nie pisz że nie rozumiesz a zacznij od czegoś prostszego i zapoznaj się bardziej z PAWN'em.
W miarę wynajdywania czasu postaram się go zrobić bardziej przyswajalnym ;>
sebul (19.12.2011 18:32):
"W miarę wynajdywania czasu postaram się go zrobić bardziej przyswajalnym ;>"
A poradnik w dalszym ciągu jest mało przyswajalny ;]
Quote

  • +
  • -
false's Photo false 26.04.2010

Ok ok juz Verticus ; p twoj tutek jest bardziej przydatny. Teraz zrobilem nowa moc ; ]
Quote

Veeq's Photo Veeq 27.04.2010

Ja tego tutka w ogóle nie moge zrozumieć... Chce dodać moz z player_b_theif to tez mam dołączyć do tego if (player_b_jumpx[id] > 0) Prethink_Doublejump(id)??

27 kwiecień 2010 - 16:06:
Vertricus ty chyba piszesz te poradniki dla tych co to już potrafią zrobić lub ostro ogarniają :/
Edited by Veeq, 27.04.2010 16:09.
Quote

Screeaam...'s Photo Screeaam... 27.04.2010

Ja tego tutka w ogóle nie moge zrozumieć... Chce dodać moz z player_b_theif to tez mam dołączyć do tego if (player_b_jumpx[id] > 0) Prethink_Doublejump(id)??

27 kwiecień 2010 - 16:06:
Vertricus ty chyba piszesz te poradniki dla tych co to już potrafią zrobić lub ostro ogarniają :/



OMG! Vertricus napisał przykład dla skoków, nie dla player theif!!! -.-

Robisz zmienną

new c_theif[33]

Szukasz:

public add_theif_bonus(id,attacker_id)
{
	if (player_b_theif[attacker_id] > 0)
	{
		new roll1 = random_num(1,5)
		if (roll1 == 1)
		{
			if (cs_get_user_money(id) > player_b_theif[attacker_id])
			{
				cs_set_user_money(id,cs_get_user_money(id)-player_b_theif[attacker_id])
				if (cs_get_user_money(attacker_id) + player_b_theif[attacker_id] <= 16000)
				{
					cs_set_user_money(attacker_id,cs_get_user_money(attacker_id)+player_b_theif[attacker_id])		
				}
			}
			else
			{
				new allthatsleft = cs_get_user_money(id)
				cs_set_user_money(id,0)
				if (cs_get_user_money(attacker_id) + allthatsleft <= 16000)
				{
					cs_set_user_money(attacker_id,cs_get_user_money(attacker_id) + allthatsleft)			
				}
			}
		}
	}
}

Zamieniasz na:

public add_theif_bonus(id,attacker_id)
{
	if (player_b_theif[attacker_id] > 0)
	{
		new roll1 = random_num(1,5)
		if (roll1 == 1)
		{
			if (cs_get_user_money(id) > player_b_theif[attacker_id])
			{
				cs_set_user_money(id,cs_get_user_money(id)-player_b_theif[attacker_id])
				if (cs_get_user_money(attacker_id) + player_b_theif[attacker_id] <= 16000)
				{
					cs_set_user_money(attacker_id,cs_get_user_money(attacker_id)+player_b_theif[attacker_id])		
				}
			}
			else
			{
				new allthatsleft = cs_get_user_money(id)
				cs_set_user_money(id,0)
				if (cs_get_user_money(attacker_id) + allthatsleft <= 16000)
				{
					cs_set_user_money(attacker_id,cs_get_user_money(attacker_id) + allthatsleft)			
				}
			}
		}
	}
if (c_theif[attacker_id] > 0)
	{
		new roll1 = random_num(1,5)
		if (roll1 == 1)
		{
			if (cs_get_user_money(id) > c_theif[attacker_id])
			{
				cs_set_user_money(id,cs_get_user_money(id)-c_theif[attacker_id])
				if (cs_get_user_money(attacker_id) + c_theif[attacker_id] <= 16000)
				{
					cs_set_user_money(attacker_id,cs_get_user_money(attacker_id)+c_theif[attacker_id])		
				}
			}
			else
			{
				new allthatsleft = cs_get_user_money(id)
				cs_set_user_money(id,0)
				if (cs_get_user_money(attacker_id) + allthatsleft <= 16000)
				{
					cs_set_user_money(attacker_id,cs_get_user_money(attacker_id) + allthatsleft)			
				}
			}
		}
	}
}

W menu wyboru klasy

c_theif[id] = X

X-Ilość kasy.

przed switch
c_theif[id] = 0

Gosh. -.-
Edited by Screeaam..., 27.04.2010 16:58.
Quote

Veeq's Photo Veeq 28.04.2010

Działa + 4 you :]

28 kwiecień 2010 - 15:39:
a jak zrobić tak z player_b_teamheal ?? Bo w ogóle jest coś innego :/ Dziwne to troche.
Quote

  • +
  • -
Vertricus's Photo Vertricus 28.04.2010

Veeq skoro nie rozumiesz proszę cie zacznij od czegoś prostszego jak inne łatki ctrl+c, ctrl+v.
Za spam bd nagradzał minusami :kwiaty: Screaam już się tam troszku orientuje i potrafi i nie zaczynał od czegoś co wymaga myślenia bardziej zaawansowanego a podstaw.
Quote

Screeaam...'s Photo Screeaam... 28.04.2010

Veeq, o ile sie nie myle, musisz zrobic zmienną, podpiąć do check_magic, następnie skopiować funkcje od item_teamshield i tam gdzie jest player_b_teamheal dać twoją zmienną, bo chyba z || tego się nie da zrobić, znaczy może da, ale nie jestem wtajemniczony...

@Up.

^D^
Quote

bogery15's Photo bogery15 18.05.2010

< dodajemy to przy innych mocach

a jak sie nazywaja inne moce ?

18 maj 2010 - 18:39:
pozatym tego nie rozumiem, chce zrobic ze daje 20sek co 5 sek tylko jak -.-?
Edited by bogery15, 18.05.2010 18:31.
Quote

Zawodowy's Photo Zawodowy 22.05.2010

tak samo jak jak bogery15, nic z tego nie rozumiem....

23 maj 2010 - 02:39:
omg co za forum nie mozna nic napisac bo od razu minus, ogarnij sie
Quote

  • +
  • -
Vertricus's Photo Vertricus 23.05.2010

Wyraźnie napisałem że nie wszyscy są w stanie pojąć tych kilku kroków dlatego pisząc "nie rozumie", w odpowiedzi na prośbę pisania "nie rozumie" sam skazujesz się na minusa.
Quote

  • +
  • -
SoLiD's Photo SoLiD 24.05.2010

Jak to zrobić dla:
public item_gravitybomb(id)
Quote

  • +
  • -
Joke's Photo Joke 05.06.2010

Dodałem
new c_amp[33]



public add_damage_bonus(id,damage,attacker_id)
{
if (player_b_damage[attacker_id] > 0 && get_user_health(id)>player_b_damage[attacker_id])
{
change_health(id,-player_b_damage[attacker_id],attacker_id,"")

if (random_num(0,2) == 1) Effect_Bleed(id,248)
}
if (c_amp[attacker_id] > 0 && get_user_health(id)>c_amp[attacker_id])
{
change_health(id,-c_amp[attacker_id],attacker_id,"")

if (random_num(0,2) == 1) Effect_Bleed(id,248)
}
}


Przed switch dodałem
	c_amp[id] = 0


i pod klasą dodałem :
c_amp[id] = 10


i nie działa, coś źle ? ;)
Quote

  • +
  • -
TaKieCos's Photo TaKieCos 13.06.2010

Co to znaczy:
1. Deklarujemy nową zmienną tj. tablice np. new zmienna[33] < dodajemy to przy innych mocach

???????
Quote

szczepaneto's Photo szczepaneto 24.06.2010

a jak zrobić c_heal i c_ghost na nóż bo jak robiłem heal to po naładowaniu dodaje po 1 hp i totem to samo a ghost to wogóle nie mam pojęcia jak zrobić z góry dziekuje ;)
Quote

  • +
  • -
Vertricus's Photo Vertricus 24.06.2010

W case od danej klasy po załadowaniu noża c_heal[id] += 3 :X
Załóż osobny topic
Quote

  • +
  • -
TaKieCos's Photo TaKieCos 26.06.2010

dodaje to według poradnika ale nie działa.. wstawiam kawalek sma gdzie wydaje mi sie ze jest błąd

public select_class_menu(id, key) 
{
new lx[13]
g_haskit[id] = 0
c_jump[id] = 0
c_grenade[id] = 0
switch(key)
{
case 0:
{
player_class[id] = Mag
}
case 1:
{
player_class[id] = Mnich
}
case 2:
{
player_class[id] = Paladyn
}
case 3:
{
player_class[id] = Zabojca
}
case 4:
{
player_class[id] = Nekromanta
g_haskit[id] = 1
}
case 5:
{
player_class[id] = Barbarzynca
}
case 6:
{
player_class[id] = Ninja
}
case 7:
{
player_class[id] = Hunter
g_GrenadeTrap[id] = 1
}
case 8:{
ShowKlasy(id,lx)

}
}

LoadXP(id, player_class[id])
CurWeapon(id)

give_knife(id)

return PLUGIN_HANDLED
}


public ShowKlasy(id,lx[]) {
new text2[512]
asked_klass[id]=0
format(text2, 511,"\rWybierz klase - ^n\r1. Skoczek Level :%i^n2. Shaman Level :%i^n3. Duch Level :%i^n^n0.Wstecz^n",player_class_lvl[id][9],player_class_lvl[id][10],player_class_lvl[id][11])
show_menu(id, KeysKlasy,text2, -1, "Klasy")


}
public PressedKlasy(id, key) {
/* Menu:
* Wybierz klase:
* 1:Skoczek
* 2:Shaman
* 3:Duch
* 0:Wstecz
*/
new lx[13]
g_haskit[id] = 0
c_jump[id] = 0
c_grenade[id] = 0
switch (key)
{
case 0: { // 1
player_class[id] = Skoczek
c_jump[id] = 3
LoadXP(id, player_class[id])

}
case 1: { // 2
player_class[id] = Shaman
c_grenade[id] = 6
LoadXP(id, player_class[id])

}
case 2: { // 3
player_class[id] = Duch
LoadXP(id, player_class[id])
}
case 9: { // 0
select_class(id,lx)
}
}
CurWeapon(id)
give_knife(id)

return PLUGIN_HANDLED
}
Quote

Screeaam...'s Photo Screeaam... 26.06.2010

To co podałeś jest dobre. -.- Daj funkcje od tych zmiennych.
Quote

  • +
  • -
TaKieCos's Photo TaKieCos 27.06.2010

nie dziala moc na klasie jak i item przestal dzialac. Wstawiam swoje sma i mam prosbe czy ktos mógłby zrobić skoki na moim sma??

Attached Files

Quote

  • +
  • -
GOH4n's Photo GOH4n 28.06.2010

A mozna dawac kilka takich mocy?? 1 moc mi sie udalo (illusionist) , a np fireballa juz nie.
Quote

  • +
  • -
Vertricus's Photo Vertricus 28.06.2010

Można
Quote