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
CoD Nowy

Klasa z Auto - GranatnikiemGranat ścigający swoją ofiarę

cod nowy auto-granatnik angel

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

#1 Angel of Death

    Banned

  • Zbanowany

Reputacja: 33
Życzliwy

  • Postów:150
  • GG:
  • Imię:Tomasz
  • Lokalizacja:Ornontowice
Offline

Napisano 16.03.2012 12:48

*
Popularny

############# Opis Klasy #############


Klasa uzbrojona jest w "Auto-Granatnik" (zamiast standardowego HE) znany z "Gun XP Mod'a" ponadto posiada Desert Eagle'a i jest bardzo wytrzymała.


############# Wymagane moduły #############


<amxmodx>
<codmod>
<colorchat>
<cstrike>
<fakemeta>
<fun>
<xs>
<gunxpmod>
<hamsandwich>


Moduł "gunxpmod.inc" w załączniku (wymagany do kompilacji lokalnej)


############# Instalacja #############


Standardowa

Modele do katalogu "models/valkiria/" lub innego (opisane poniżej)



############# Screen / Filmik #############


1. Screen modelu granatnika

Dołączona grafika


2. Krótki Filmik

Klasa - Angel na potrzeby amxx.pl - YouTube


* W pliku .sma nie ma zaimpletowanej smugi która zostaje za granatem - uzyskane jest to przy pomocy pluginu "Grenade Trail" dostępnym tutaj: http://amxx.pl/topic...-grenade-trail/

* Filmik zaś wyciągnięty został z HLTV dlatego nie ma na nim pokazanego modelu


############# Kod źródłowy #############

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <codmod>
#include <colorchat>
#include <cstrike>
#include <fakemeta>
#include <fun>
#include <xs>
#include <gunxpmod>
#include <hamsandwich>

#define fm_is_valid_ent(%1) pev_valid(%1)

new const nazwa[] = "Angel";
new const opis[] = "Posiada granatnik";
new const bronie = 1<<CSW_DEAGLE | 1<<CSW_HEGRENADE;
new const zdrowie = 0;
new const kondycja = 0;
new const inteligencja = 0;
new const wytrzymalosc = 75;

new bool:ma_klase[33];

new cvar_maxdis
new sprite_trail,g_trail;

new const g_he_model[] = "models/valkiria/w_heseek.mdl"
new const HE_MDL[] =	 "models/valkiria/v_heseek2.mdl"

new bool:g_NadeSeek[33]

public plugin_init() {
	register_plugin(nazwa, "1.0", "QTM_Peyote");
	
	cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);

	cvar_maxdis = register_cvar("heatseekhe_max_dis", "500.0")
	register_forward(FM_Think,	 "fwd_think")
	register_forward(FM_Touch,	 "fwd_touch")
	register_forward(FM_SetModel,	 "fwd_setmodel")
	register_event("CurWeapon",	"Event_CurWeapon", "be", "1=1")
	register_event("ResetHUD",	 "ResetHUD", "abe");
	RegisterHam(Ham_TakeDamage, "player","fwTakeDamage",0);
}

public plugin_precache()
{
	sprite_trail = precache_model("sprites/laserbeam.spr")
	g_trail = precache_model("sprites/smoke.spr");
	precache_model(g_he_model)
	precache_model(HE_MDL)
}

public cod_class_enabled(id)
{
	ColorChat(id, GREEN, "Klasa stworzona przez Angel przy wspolpracy radim dla sieci XXX");
	ma_klase[id] = true;
	g_NadeSeek[id] = true;
	ResetHUD(id);
}
public cod_class_disabled(id)
{
	ma_klase[id] = false;
	g_NadeSeek[id] = false;
	set_user_footsteps(id, 1)
}

public client_connect(id)
{
	g_NadeSeek[id] = false
}
public fwTakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
{
if(!is_user_alive(this) || !is_user_connected(this) || !is_user_connected(idattacker) || get_user_team(this) == get_user_team(idattacker)){
return HAM_IGNORED;
}
new weapon = get_user_weapon(idattacker);
if(weapon ==CSW_HEGRENADE)
cod_inflict_damage(idattacker, this, 1.0, 0.038, idinflictor, damagebits)
return HAM_IGNORED;
}

public ResetHUD(id)
	set_task(0.1, "ResetHUDx", id);
		
public ResetHUDx(id)
{
	if(!is_user_connected(id)) return;
		
	if(!ma_klase[id]) return;
		
	cs_set_user_bpammo(id, CSW_HEGRENADE, 3);
}

public Event_CurWeapon(id)
{
	if (!g_NadeSeek[id])
	return PLUGIN_CONTINUE;
	
	if (!ma_klase[id])
	return PLUGIN_CONTINUE;

	new Gun = read_data(2)
	
	if( Gun == CSW_HEGRENADE)
	{
		set_pev(id, pev_viewmodel2, HE_MDL)
	}
	return PLUGIN_CONTINUE;
}

public grenade_throw(id,gid,wid)
{
	if(wid != CSW_HEGRENADE || !g_NadeSeek[id] || !ma_klase[id])
		return PLUGIN_CONTINUE;
		
	Follow(gid,g_trail,10,12,255,0,0,195);
	return PLUGIN_CONTINUE;
}
Follow(entity,index,life,width,red,green,blue,alpha)
{
	message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
	write_byte(TE_BEAMFOLLOW);
	write_short(entity);
	write_short(index);
	write_byte(life);
	write_byte(width);
	write_byte(red);
	write_byte(green);
	write_byte(blue);
	write_byte(alpha);
	message_end();
}
public fwd_setmodel(ent, model[])
{
	if(!fm_is_valid_ent(ent))
		return FMRES_IGNORED
		
	static classname[32]; pev(ent, pev_classname, classname, 31)
	if(equali(model, "models/w_hegrenade.mdl") && pev(ent, pev_iuser1) == 0)
	{
		new id = pev(ent, pev_owner)
		if(g_NadeSeek[id] || ma_klase[id])
		{
			engfunc(EngFunc_SetModel, ent, g_he_model)
			set_pev(ent, pev_iuser1, 1)
			set_pev(ent, pev_iuser2, get_user_team(id))
			set_pev(ent, pev_iuser3, 0)
			return FMRES_SUPERCEDE;
		}
	}
	return FMRES_IGNORED
}

public fwd_touch(ent, id)
{
	if(!fm_is_valid_ent(ent) || !is_user_alive(id))
		return FMRES_IGNORED
		
	new classname[32]
	pev(ent, pev_classname, classname, (32-1))

	if(equali(classname, "grenade"))
	{
		if((pev(ent, pev_iuser1) != 1))
			return FMRES_IGNORED
			
		if(get_user_team(id) == pev(ent, pev_iuser2))
			return FMRES_IGNORED
			
		set_pev(ent, pev_iuser1, 0)
		set_pev(ent, pev_iuser2, 0)
		set_pev(ent, pev_iuser3, 0)
		
		set_pev(ent, pev_dmgtime, 0.0)
		//set_pev(ent, pev_movetype, MOVETYPE_FOLLOW)
		//set_pev(ent, pev_sequence, 0)
	}
	return FMRES_IGNORED
}

public fwd_think(ent)
{
	if(!fm_is_valid_ent(ent))
		return FMRES_IGNORED
	
	new classname[32]
	pev(ent, pev_classname, classname, (32-1))
	
	if(equali(classname, "grenade"))
	{
		if(pev(ent, pev_iuser1) != 1)
			return FMRES_IGNORED
		  
		static Float:nadeorigin[3]
		pev(ent, pev_origin, nadeorigin)
		
		new target = pev(ent, pev_iuser3)
		
		if(!is_user_alive(target))
		{
			static players[32], num
			get_players(players, num, "a")
		
			for(new i = 0; i < num; ++i)	
			{
				new id = players[i]
		
				if(get_user_team(id) == pev(ent, pev_iuser2))
					continue
				
				if(!fm_is_ent_visible(ent, id))
					continue
		
				static Float:origin[3]
				pev(id, pev_origin, origin)
				
				new Float:maxdistance = get_pcvar_float(cvar_maxdis)
				new Float:distance = get_distance_f(origin, nadeorigin)
				
				if(distance < maxdistance)
				{
					set_pev(ent, pev_iuser3, id)
		
					message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
					write_byte(TE_BEAMFOLLOW)
					write_short(ent)
					write_short(sprite_trail)
					write_byte(30)
					write_byte(10)
					write_byte(255)
					write_byte(0)
					write_byte(0)
					write_byte(100)
					message_end()
					
					break
				}
			}
		}
		else
			entity_set_follow(ent, target, float(fm_get_speed(ent)))
	}
	return FMRES_IGNORED
}

stock entity_set_follow(entity, target, Float:speed)
{
	if(!fm_is_valid_ent(entity) || !fm_is_valid_ent(target))
		return 0

	new Float:entity_origin[3], Float:target_origin[3]
	pev(entity, pev_origin, entity_origin)
	pev(target, pev_origin, target_origin)

	new Float:diff[3]
	diff[0] = target_origin[0] - entity_origin[0]
	diff[1] = target_origin[1] - entity_origin[1]
	diff[2] = target_origin[2] - entity_origin[2]

	new Float:length = floatsqroot(floatpower(diff[0], 2.0) + floatpower(diff[1], 2.0) + floatpower(diff[2], 2.0))

	new Float:velocity[3]
	velocity[0] = diff[0] * (speed / length)
	velocity[1] = diff[1] * (speed / length)
	velocity[2] = diff[2] * (speed / length)

	set_pev(entity, pev_velocity, velocity)

	return 1
}
stock fm_get_speed(entity) {
	new Float:Vel[3]
	pev(entity, pev_velocity, Vel)

	return floatround(vector_length(Vel))
}
stock bool:fm_is_ent_visible(index, entity, ignoremonsters = 0) {
	new Float:start[3], Float:dest[3]
	pev(index, pev_origin, start)
	pev(index, pev_view_ofs, dest)
	xs_vec_add(start, dest, start)

	pev(entity, pev_origin, dest)
	engfunc(EngFunc_TraceLine, start, dest, ignoremonsters, index, 0)

	new Float:fraction
	get_tr2(0, TR_flFraction, fraction)
	if (fraction == 1.0 || get_tr2(0, TR_pHit) == entity)
		return true

	return false
}

(Zdaje sobie sprawę kod źródłowy jest dłuższy niż 200 znaków, jednak jest tutaj wklejony nie po to by drażnić moderatora lecz by zoobrazować niektórym w jaki sposób edytować sobie klasę, co ma zapobiec spamowaniu w temacie banalnymi prośbami)

############# Edytowanie klasy dla początkujących #############


1. Edycja stopki:
* Szukamy:

ColorChat(id, GREEN, "Klasa stworzona przez Angel przy wspolpracy radim dla sieci XXX");

* Następnie frazę "XXX" zamieniamy na nazwę własnej sieci, lub jeśli nie chcemy by po wyborze klasy nie wyświetlało się kto jest jej twórcą i dla kogo została stworzona usuwamy całą linijkę

2. Edycja podstawowych atrybutów klasy:
*Szukamy:

new const nazwa[] = "Angel";
new const opis[] = "Posiada granatnik";
new const bronie = 1<<CSW_DEAGLE | 1<<CSW_HEGRENADE;
new const zdrowie = 0;
new const kondycja = 0;
new const inteligencja = 0;
new const wytrzymalosc = 75;

* Wytłumaczenie:
1. Nazwa:
new const nazwa[] = "Angel";
Jeśli chcemy by klasa nazywała się inaczej wpisujemy zamiast "Angel" na przykład "Czupakabra"
2. Opis:
new const opis[] = "Posiada granatnik";
Tutaj w nawiasie wpisujemy co ma się pojawić jako opis klasy przykładowo "Super, zajeb... mega klasa"
3. Bronie:
new const bronie = 1<<CSW_DEAGLE | 1<<CSW_HEGRENADE;
Ta linia odpowiada za broń jaką klasa otrzyma na starcie, lista broni dostępna jest na forum, link: http://amxx.pl/topic...ive-item-speed/

Ważne!
By klasa poprawnie działała wymagane jest by nie usuwać jej:

1<<CSW_HEGRENADE;

4. Statystyki:
new const zdrowie = 0;
new const kondycja = 0;
new const inteligencja = 0;
new const wytrzymalosc = 75;

* Zdrowie -> Tutaj ustawiamy ile startowego HP ma mieć klasa, przykładowo jeśli ustawimy tą statystykę na 20 to klasa będzie mieć 100 (bazowego) + 20 HP - co łącznie da 120 HP na start.
* Kondycja -> Jak szybko postać ma biegać, chyba nie trzeba nic tłumaczyć
* Inteligencja -> O ile % klasa ma mieć zwiększone umiejętności z Perków/Itemów
* Wytrzymałość -> O ile klasa ma mieć zmniejszone obrażenia jakie otrzymuje

5. Ścieżka do modelu granatnika:
* Szukamy:
new const g_he_model[] = "models/valkiria/w_heseek.mdl"
new const HE_MDL[] =	 "models/valkiria/v_heseek2.mdl"
Ta linia interesuje nas jeśli chcemy by modele granatnika i granatu pobierało do innego folderu niż ten ustawiony w pluginie zmieniamy frazę "valkiria" na przykładowo "ziomki"

6. Ustalenie ile grantów ma otrzymać klasa:
* Szukamy
cs_set_user_bpammo(id, CSW_HEGRENADE, 3);
Jeśli chcemy zmienić ilość grantów które można wystrzelić przy pomocy granatnika wystarczy zmienić zmienną "3" na dowolnie wybraną przez nas liczbę na przykład "5"

Kodu się nie czepiać! :P
Wiem że napisany anarchicznie ale działa ;)

Wiem że znajdzie się pewnie spora liczba osób które niejako "wyśmieją" to że pokazuję jak edytować klasę, jednak nie należy zapominać o początkujących bo przecież każdy z nas kiedyś zaczynał i zadawał zdawało by się mniej lub bardziej błahe pytania, ja robię to nadal ;D

Na koniec:
1. sma. w załączniku
2. include (.inc) w załączniku
3. modele w załączniku

Polecam kompilację lokalną: temat tutaj:
http://amxx.pl/topic...ilacja-lokalna/


Uwagi, spostrzeżenia, poprawki proszę pisać w tym temacie.
Pozdrawiam Angel ;)

Załączone pliki


Dołączona grafika

#2 pfkers

    Banned

  • Zbanowany

Reputacja: 90
Zaawansowany

  • Postów:759
  • GG:
  • Imię:Krzysiek
  • Lokalizacja:Płock
Offline

Napisano 16.03.2012 13:21

a mozna go jakos przeniesc na starego ?? ;)

#3 Angel of Death

    Banned

  • Autor tematu
  • Zbanowany

Reputacja: 33
Życzliwy

  • Postów:150
  • GG:
  • Imię:Tomasz
  • Lokalizacja:Ornontowice
Offline

Napisano 16.03.2012 13:37

Wybacz ale już od dawna nie zajmuje się starym CoD Modem ;)
Myślę że jeśli wkleisz .sma to może Radim coś poradzi
Dołączona grafika

#4 Bloody_

    Wszechpomocny

  • Użytkownik

Reputacja: 170
Profesjonalista

  • Postów:319
  • GG:
  • Lokalizacja:.
Offline

Napisano 16.03.2012 20:05

myślę że wgramy to z kumplem na serwerka ;P
  • +
  • -
  • 0

http://amxx.pl/topic...-bloodman-vol6/ - roundsound vol. 06
http://amxx.pl/topic...po-x-sekundach/ - blokada rakiet na X sekund


#5 heroes

    Zaawansowany

  • Użytkownik

Reputacja: 21
Życzliwy

  • Postów:118
  • Imię:xxx
  • Lokalizacja:xxx
Offline

Napisano 16.03.2012 22:51

zapewne obrażenia zmieniamy tutaj:
cod_inflict_damage(idattacker, this, 1.0, 0.038, idinflictor, damagebits)

  • +
  • -
  • 0
Dołączona grafika

Dołączona grafika

#6 radim

    Godlike

  • Moderator

Reputacja: 939
Master

  • Postów:2 725
  • Steam:steam
  • Imię:Arkadiusz
  • Lokalizacja:Janów Lub.
Offline

Napisano 16.03.2012 23:33

"Zapewne" tak :D A dokładniej "tutej"
1.0

Użytkownik radim edytował ten post 16.03.2012 23:33

  • +
  • -
  • 0

Chcąc napisać do mnie prywatną wiadomość, wpierw zapoznaj się ze stroną "O mnie" w moim profilu użytkownika [ radim ] !


#7 Pietras11

    Wszechwiedzący

  • Power User

Reputacja: 89
Zaawansowany

  • Postów:518
  • GG:
  • Steam:steam
  • Imię:Piotr
  • Lokalizacja:Gniezno
Offline

Napisano 17.03.2012 06:18

Dobra klasa przyda się.+
  • +
  • -
  • 0

#8 xXxKarolxXx

    Zaawansowany

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:82
  • Imię:Karol
  • Lokalizacja:Mragowo
Offline

Napisano 17.03.2012 17:30

A jak zrobić żeby było to na flash i smok granat i żeby flash miał biała smugę a smok zielona??
  • +
  • -
  • 0

#9 radim

    Godlike

  • Moderator

Reputacja: 939
Master

  • Postów:2 725
  • Steam:steam
  • Imię:Arkadiusz
  • Lokalizacja:Janów Lub.
Offline

Napisano 18.03.2012 11:40

cod_class_angel_flash.sma - z samym fleszem
cod_class_angel_smoke.sma - z samym smokiem
cod_class_angel_smoke_and_flash.sma - z fleszem i smokiem

Załączone pliki


  • +
  • -
  • 1

Chcąc napisać do mnie prywatną wiadomość, wpierw zapoznaj się ze stroną "O mnie" w moim profilu użytkownika [ radim ] !






Również z jednym lub większą ilością słów kluczowych: cod nowy, auto-granatnik, angel

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

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