←  Poradniki, Łatki oraz Pluginy

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Stary
[COD]Jak dodać Item/Klasę/Moc Spadochron(i...

  • +
  • -
camilost's Photo camilost 07.08.2010

Zamieszczam tutorial jak połączyć ze sobą plugin Spadochron, aby w COD:MW Modzie można było dać klasie spadochron, zrobić klasę Spadochroniarz, dodać item Spadochron.

Otwieramy SMA Cod Moda i:

1. Szukamy
new doswiadczenie_za_bombe;
Po tym dodajemy
new SpadochronDetach;
new SpadochronSpadanie;

2. Szukamy
new ilosc_skokow_gracza[33];
Po tym dodajemy
new ilosc_spadochronow_gracza[33];
new para_ent[33];

3. Szukamy
doswiadczenie_za_bombe = get_cvar_num("cod_bombxp");
Po tym dodajemy
SpadochronSpadanie = register_cvar("cod_spadochron_fallspeed", "100");
	SpadochronDetach = register_cvar("cod_spadochron_detach", "1");

4. Szukamy
precache_model("models/mine.mdl");
Po tym dodajemy
precache_model("models/parachute.mdl");

5. Szukamy w public Odrodzenie(id)
switch(klasa_gracza[id])
Nad tym dodajemy (Dodałem dodatkowe linie, aby zapobiec bugom, iż po odrodzeniu mamy item z poprzedniej klasy [jeśli go nie wykorzystaliśmy])
ilosc_rakiet_gracza[id] = 0;
	ilosc_apteczek_gracza[id] = 0;
	ilosc_min_gracza[id] = 0;
	ilosc_dynamitow_gracza[id] = 0;
	ilosc_skokow_gracza[id] = 0;
	ilosc_spadochronow_gracza[id] = 0;
	if(para_ent[id] > 0) {
		remove_entity(para_ent[id])
		set_user_gravity(id, 1.0)
		para_ent[id] = 0
	}

6. Szukamy w public client_disconnect(id)
UsunPrzedmiot(id);
Po tym dodajemy
parachute_reset(id);

7. Szukamy w public Death()
if(!is_user_alive(attacker) || !is_user_connected(attacker))
Nad tym dodajemy
parachute_reset(id);

8. Na sam koniec kodu dodajemy to co w spoilerze:
Spoiler





Poradnik jak dodać do klasy X spadochronów, do przedmiotu, jak zrobić klasę spadochroniarz.

1. Gdy dodajemy nową klasę zgodnie z TYM poradnikiem:
w switch(klasa_gracza[id])
I pod daną klasie bronią dodajemy po prostu
ilosc_spadochronow_gracza[id] = 3;

Tak np. wyglądała by klasa Komandos
case Komandos:
		{
			give_item(id, "weapon_deagle");
			ilosc_spadochronow_gracza[id] = 3;
		}

2. Zrobiliśmy klasę Spadochroniarz i chcemy, aby miała nieskończoność spadochronów w public client_PreThink(id)
Szukamy
if ((button & IN_USE) && (ilosc_spadochronow_gracza[id] > 0))
I zamieniamy na np.:
if (button & IN_USE && (ilosc_spadochronow_gracza[id] > 0 || klasa_gracza[id] == Spadochroniarz))

3. Dodajemy nowy przedmiot według kolejności (nazwa,opis)
np. u mnie nr. przedmiotu spadochron w kolejności to będzie 29.

Szukamy w public Odrodzenie(id) np. przedmiotu Szpieg:
if(informacje_przedmiotu_gracza[id][0] == 9)
		ZmienUbranie(id, 0);
I po nim dodajemy
if(informacje_przedmiotu_gracza[id][0] == 29)
		ilosc_spadochronow_gracza[id] = 5; // W zaleznosci ile daliscie w opisie, mozecie tez dodac tak jak z klasa spadochroniarz (patrz wyżej)


Jeżeli sam nie potrafisz tego zrobić
Załóż osobny temat w dziale Scripting/Pluginy załącz SMA i powiedz o co prosisz.


Jeśli nie posiadasz modelu spadochronu łap (Wrzucasz do models/ plik parachute.mdl): Attached File  parachute.rar   60.83KB   191 downloads

@Zakaz kopiowania ^.^


Edited by QTM. Peyote, 18.12.2010 22:14.
Quote

  • +
  • -
OnlyDiabloMod's Photo OnlyDiabloMod 30.08.2010

Nie mogę znaleść doswiadczenie_za_fail = 1; nawet w czystym codzie
Quote

  • +
  • -
b0bek's Photo b0bek 30.08.2010

Zamiast:

doswiadczenie_za_fail = 1;

Znajdź:

new doswiadczenie_za_bombe;

Quote

  • +
  • -
OnlyDiabloMod's Photo OnlyDiabloMod 30.08.2010

Niestety mi nie działa robiłem 4x razy i nic, nie mam błędów podczas komplikacji.

Do tego psuje itemki, w ogóle sie nie dostaje za zabicie itemku
Edited by OnlyDiabloMod, 31.08.2010 01:07.
Quote

  • +
  • -
camilost's Photo camilost 31.08.2010

No jakoś innym działa wogóle. poradnika : > Czyli z Twojej strony błąd. Widziałem już serwery z tym. ; ]
Quote

  • +
  • -
OnlyDiabloMod's Photo OnlyDiabloMod 31.08.2010

No jakoś innym działa wogóle. poradnika : > Czyli z Twojej strony błąd. Widziałem już serwery z tym. ; ]


na pewno nie z mojej winy, robiłem to na czystym codzie już z 8 razy wszystkie inne poradniki nawet twoje działają, a propo nie wiadomo czy to z twojego poradnika robili jak mają na serwerze bo tematów jest mnóstwo.

Mniejsza nie polecam.
Quote

  • +
  • -
b0bek's Photo b0bek 31.08.2010

Daj .sma wykonam to za Ciebie.
Quote

  • +
  • -
KSC21's Photo KSC21 31.08.2010

Też mi nie działało, daj nam *sma. ( Załóż nowy temat ). Wiem co trzeba zrobić ;)
Edited by KSC21, 31.08.2010 10:09.
Quote

  • +
  • -
camilost's Photo camilost 31.08.2010

No jakoś innym działa wogóle. poradnika : > Czyli z Twojej strony błąd. Widziałem już serwery z tym. ; ]


na pewno nie z mojej winy, robiłem to na czystym codzie już z 8 razy wszystkie inne poradniki nawet twoje działają, a propo nie wiadomo czy to z twojego poradnika robili jak mają na serwerze bo tematów jest mnóstwo.

Mniejsza nie polecam.


Dziecko 12letnie sobie poradziło (2lata różnicy), a Ty nie potrafisz prostych zadań (poszukaj, wklej, nad/pod)?

Zrobiłem na czystym dokładnie wogóle. poradnika i o dziwo działa?!

Poradnik jest dobry. Sprawdzałem drugi raz, wszystko wogóle. poradnika.
Ty nie polecasz, a ja Ci polecam uczyć się polskiego.


Masz dalej problem osobny temat, jeśli przeczytać napisu niebieskiego nie potrafisz. ; ]
Quote

  • +
  • -
KSC21's Photo KSC21 31.08.2010

No jakoś innym działa wogóle. poradnika : > Czyli z Twojej strony błąd. Widziałem już serwery z tym. ; ]


na pewno nie z mojej winy, robiłem to na czystym codzie już z 8 razy wszystkie inne poradniki nawet twoje działają, a propo nie wiadomo czy to z twojego poradnika robili jak mają na serwerze bo tematów jest mnóstwo.

Mniejsza nie polecam.

To jest tylko Twoja wina, poradnik dobrze napisany, sam sprawdzałem, wsio działa ^^

@Topic:
Pewny jesteś, że zrobiłeś ten punkt? ;]

2. Zrobiliśmy klasę Spadochroniarz i chcemy, aby miała nieskończoność spadochronów w public client_PreThink(id)
Szukamy

if ((button & IN_USE) && (ilosc_spadochronow_gracza[id] > 0))
I zamieniamy na np.:
if (button & IN_USE && (ilosc_spadochronow_gracza[id] > 0 || klasa_gracza[id] == Spadochroniarz))


Edited by KSC21, 31.08.2010 16:50.
Quote

  • +
  • -
OnlyDiabloMod's Photo OnlyDiabloMod 01.09.2010

A nie sorka :D za "nie polecam"

miałem 2x razy public client_PreThink(id)
które potem połączyłem w jedno i zapomniałem o pewnym błędzie.

Może ktoś mi pomóc z połaczeniem tych dwóch client_PreThink(id)?? Jak próbuję połączyć to mam problemy z return_plugin continue

Tak wygląda mój od skoczka
public client_PreThink(id) {
if (entity_get_int(id, EV_INT_button) & 2 && klasa_gracza[id] == Skoczek) {
new flags = entity_get_int(id, EV_INT_flags)

if (flags & FL_WATERJUMP)
return PLUGIN_CONTINUE
if ( entity_get_int(id, EV_INT_waterlevel) >= 2 )
return PLUGIN_CONTINUE
if ( !(flags & FL_ONGROUND) )
return PLUGIN_CONTINUE

new Float:velocity[3]
entity_get_vector(id, EV_VEC_velocity, velocity)
velocity[2] += 250.0
entity_set_vector(id, EV_VEC_velocity, velocity)

entity_set_int(id, EV_INT_gaitsequence, 6)

}
return PLUGIN_CONTINUE
}



A tutaj czysty ten z góry od spadochroniarza:
public client_PreThink(id)
{
//parachute.mdl animation information
//0 - deploy - 84 frames
//1 - idle - 39 frames
//2 - detach - 29 frames

if (!is_user_alive(id)) return

new Float:fallspeed = get_pcvar_float(SpadochronSpadanie) * -1.0
new Float:frame

new button = get_user_button(id)
new oldbutton = get_user_oldbutton(id)
new flags = get_entity_flags(id)

if (para_ent[id] > 0 && (flags & FL_ONGROUND)) {

if (get_pcvar_num(SpadochronDetach))
{
if (get_user_gravity(id) == 0.1) set_user_gravity(id, 1.0)

if (entity_get_int(para_ent[id],EV_INT_sequence) != 2) {
entity_set_int(para_ent[id], EV_INT_sequence, 2)
entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
entity_set_float(para_ent[id], EV_FL_frame, 0.0)
entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
entity_set_float(para_ent[id], EV_FL_framerate, 0.0)
return
}

frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 2.0
entity_set_float(para_ent[id],EV_FL_fuser1,frame)
entity_set_float(para_ent[id],EV_FL_frame,frame)

if (frame > 254.0) {
remove_entity(para_ent[id])
para_ent[id] = 0
}
}
else {
remove_entity(para_ent[id])
set_user_gravity(id, 1.0)
para_ent[id] = 0
}

return
}

if ((button & IN_USE) && (ilosc_spadochronow_gracza[id] > 0))
{
new Float:velocity[3]
entity_get_vector(id, EV_VEC_velocity, velocity)

if (velocity[2] < 0.0) {

if(para_ent[id] <= 0) {
para_ent[id] = create_entity("info_target")
if(para_ent[id] > 0) {
entity_set_string(para_ent[id],EV_SZ_classname,"parachute")
entity_set_edict(para_ent[id], EV_ENT_aiment, id)
entity_set_edict(para_ent[id], EV_ENT_owner, id)
entity_set_int(para_ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
entity_set_model(para_ent[id], "models/parachute.mdl")
entity_set_int(para_ent[id], EV_INT_sequence, 0)
entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
entity_set_float(para_ent[id], EV_FL_frame, 0.0)
entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
}

}

if (para_ent[id] > 0) {
entity_set_int(id, EV_INT_sequence, 3)
entity_set_int(id, EV_INT_gaitsequence, 1)
entity_set_float(id, EV_FL_frame, 1.0)
entity_set_float(id, EV_FL_framerate, 1.0)
set_user_gravity(id, 0.1)

velocity[2] = (velocity[2] + 40.0 < fallspeed) ? velocity[2] + 40.0 : fallspeed
entity_set_vector(id, EV_VEC_velocity, velocity)

if (entity_get_int(para_ent[id],EV_INT_sequence) == 0) {

frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 1.0
entity_set_float(para_ent[id],EV_FL_fuser1,frame)
entity_set_float(para_ent[id],EV_FL_frame,frame)

if (frame > 100.0) {
entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
entity_set_float(para_ent[id], EV_FL_framerate, 0.4)
entity_set_int(para_ent[id], EV_INT_sequence, 1)
entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
entity_set_float(para_ent[id], EV_FL_frame, 0.0)
entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
}
}
}
}
else if (para_ent[id] > 0) {
remove_entity(para_ent[id])
set_user_gravity(id, 1.0)
para_ent[id] = 0
ilosc_spadochronow_gracza[id]--;
}
}
else if ((oldbutton & IN_USE) && para_ent[id] > 0) {
remove_entity(para_ent[id])
set_user_gravity(id, 1.0)
para_ent[id] = 0;
ilosc_spadochronow_gracza[id]--;
}
}

Edited by OnlyDiabloMod, 01.09.2010 02:11.
Quote

  • +
  • -
camilost's Photo camilost 01.09.2010

Sprawdź, ostatnio też ktoś prosił, abym mu skleił te oba ^^ i miałem formata i przepadło (Nie pamiętam jak robiłem)

public client_PreThink(id)
{
	//parachute.mdl animation information
	//0 - deploy - 84 frames
	//1 - idle - 39 frames
	//2 - detach - 29 frames

	if (!is_user_alive(id)) return

	new Float:fallspeed = get_pcvar_float(SpadochronSpadanie) * -1.0
	new Float:frame

	new button = get_user_button(id)
	new oldbutton = get_user_oldbutton(id)
	new flags = get_entity_flags(id)
	
	if (para_ent[id] > 0 && (flags & FL_ONGROUND)) {

		if (get_pcvar_num(SpadochronDetach))
		{
			if (get_user_gravity(id) == 0.1) set_user_gravity(id, 1.0)

			if (entity_get_int(para_ent[id],EV_INT_sequence) != 2) {
				entity_set_int(para_ent[id], EV_INT_sequence, 2)
				entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
				entity_set_float(para_ent[id], EV_FL_frame, 0.0)
				entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
				entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
				entity_set_float(para_ent[id], EV_FL_framerate, 0.0)
				return
			}

			frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 2.0
			entity_set_float(para_ent[id],EV_FL_fuser1,frame)
			entity_set_float(para_ent[id],EV_FL_frame,frame)

			if (frame > 254.0) {
				remove_entity(para_ent[id])
				para_ent[id] = 0
			}
		}
		else {
			remove_entity(para_ent[id])
			set_user_gravity(id, 1.0)
			para_ent[id] = 0
		}

		return
	}

	if ((button & IN_USE) && (ilosc_spadochronow_gracza[id] > 0))
	{
		new Float:velocity[3]
		entity_get_vector(id, EV_VEC_velocity, velocity)

		if (velocity[2] < 0.0) {

			if(para_ent[id] <= 0) {
				para_ent[id] = create_entity("info_target")
				if(para_ent[id] > 0) {
					entity_set_string(para_ent[id],EV_SZ_classname,"parachute")
					entity_set_edict(para_ent[id], EV_ENT_aiment, id)
					entity_set_edict(para_ent[id], EV_ENT_owner, id)
					entity_set_int(para_ent[id], EV_INT_movetype, MOVETYPE_FOLLOW)
					entity_set_model(para_ent[id], "models/parachute.mdl")
					entity_set_int(para_ent[id], EV_INT_sequence, 0)
					entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
					entity_set_float(para_ent[id], EV_FL_frame, 0.0)
					entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
				}
				
			}

			if (para_ent[id] > 0) {
				entity_set_int(id, EV_INT_sequence, 3)
				entity_set_int(id, EV_INT_gaitsequence, 1)
				entity_set_float(id, EV_FL_frame, 1.0)
				entity_set_float(id, EV_FL_framerate, 1.0)
				set_user_gravity(id, 0.1)

				velocity[2] = (velocity[2] + 40.0 < fallspeed) ? velocity[2] + 40.0 : fallspeed
				entity_set_vector(id, EV_VEC_velocity, velocity)

				if (entity_get_int(para_ent[id],EV_INT_sequence) == 0) {

					frame = entity_get_float(para_ent[id],EV_FL_fuser1) + 1.0
					entity_set_float(para_ent[id],EV_FL_fuser1,frame)
					entity_set_float(para_ent[id],EV_FL_frame,frame)

					if (frame > 100.0) {
						entity_set_float(para_ent[id], EV_FL_animtime, 0.0)
						entity_set_float(para_ent[id], EV_FL_framerate, 0.4)
						entity_set_int(para_ent[id], EV_INT_sequence, 1)
						entity_set_int(para_ent[id], EV_INT_gaitsequence, 1)
						entity_set_float(para_ent[id], EV_FL_frame, 0.0)
						entity_set_float(para_ent[id], EV_FL_fuser1, 0.0)
					}
				}
			}
		}
		else if (para_ent[id] > 0) {
			remove_entity(para_ent[id])
			set_user_gravity(id, 1.0)
			para_ent[id] = 0
			ilosc_spadochronow_gracza[id]--;
		}
	}
	else if ((oldbutton & IN_USE) && para_ent[id] > 0) {
		remove_entity(para_ent[id])
		set_user_gravity(id, 1.0)
		para_ent[id] = 0;
		ilosc_spadochronow_gracza[id]--;
	}
	
	if (entity_get_int(id, EV_INT_button) & 2 && klasa_gracza[id] == Skoczek) {
		new flags = entity_get_int(id, EV_INT_flags)
		if (flags & FL_WATERJUMP)
		return
		if (entity_get_int(id, EV_INT_waterlevel) >= 2)
		return
		if (!(flags & FL_ONGROUND))
		return
		
		new Float:velocity[3]
		entity_get_vector(id, EV_VEC_velocity, velocity)
		velocity[2] += 250.0
		entity_set_vector(id, EV_VEC_velocity, velocity)
		entity_set_int(id, EV_INT_gaitsequence, 6)
	}
	return
}

Edited by camilost, 01.09.2010 10:17.
Quote

  • +
  • -
OnlyDiabloMod's Photo OnlyDiabloMod 01.09.2010

Ech to widze ze ktoś kopiował moją moc skoczka z mojego coda. :P dzięki zaraz sprawdze

Jeszzce 1 sprawa możesz mi powiedziećk który fragment kodu odpowiada za dostawanie itemku za zabicie?
Quote

  • +
  • -
camilost's Photo camilost 01.09.2010

if(!informacje_przedmiotu_gracza[attacker][0])
			DajPrzedmiot(attacker, random_num(1, sizeof nazwy_przedmiotow-1));
w public Death()
Quote

  • +
  • -
MenTo(S)'s Photo MenTo(S) 17.09.2010

        ilosc_rakiet_gracza[id] = 0;
ilosc_apteczek_gracza[id] = 0;
ilosc_min_gracza[id] = 0;
ilosc_dynamitow_gracza[id] = 0;
ilosc_skokow_gracza[id] = 0;
ilosc_spadochronow_gracza[id] = 0;
if(para_ent[id] > 0) {
remove_entity(para_ent[id])
set_user_gravity(id, 1.0)
para_ent[id] = 0
}


Gdzie to dodac ?
Edited by MenTo(S), 17.09.2010 10:44.
Quote

  • +
  • -
camilost's Photo camilost 17.09.2010

5. Szukamy w public Odrodzenie(id) i dalszy ciąg punktu.
Quote

abc24abc's Photo abc24abc 21.10.2010

ja mam w tym taki problem ;/ bo zrobilem wszystko tak jak powinno a jak ktos ma ta klase to jak chce isc do przodu to nie moze tak jagby go odbijalo ;/
Edited by abc24abc, 21.10.2010 20:52.
Quote

  • +
  • -
camilost's Photo camilost 21.10.2010

Na pewno z tym problem -,- A jeśli nawet to coś wyraźnie napisane pod koniec (Specjalnie napisane dużymi, ale i tak tego nie zauważyłeś pewnie) - Twój post to OFFTOPIC.
Masz tylko to czy coś jeszcze dograne? Skąd mam wiedzieć wszystko. Myślisz, że napiszesz jaki masz problem i bez większej ilości info ktoś Ci je dopisze?

Inny dział i tyle, powiesz co dogrywałeś, co zmieniałeś i do tego SMA (Nie samo sma, bo komu się będzie chciało szukać każdej zmian w Twoim sma)
Quote

  • +
  • -
Lolson's Photo Lolson 08.04.2011

ej dlaczego mam bugi itemow zmniejszajacych dmg i bugi notatek kapitana??
Quote

  • +
  • -
dzej-dzej's Photo dzej-dzej 16.09.2011

Witam podłącze się,czy ten spolier to sma spadochronu?? np można w ten sposób inne pluginy dodawać dla klasy?
Quote