←  Poradniki, Łatki oraz Pluginy

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
Klasa Truciciel i perk

  • +
  • -
Intex - zdjęcie Intex 17.02.2012

Dodałem tutorial jak dodać do klasy moc zatruwania, teraz dodam klasę i perk z tą mocą, dla osób, które nie potrafią same tego dodać.



Dołączona grafika

Klasa, która po naładowaniu noża zatruwa. Ładując moc nie można się ruszać.
Perk, robi to samo co wyżej. Ładując moc nie można się ruszać.

Dołączona grafika

Standardowa

Dołączona grafika

Jak w perku tak samo i w klasie, tu zmieniamy długość czasu ładowania mocy. Czas podajemy w sekundach.

#define CZAS_LADOWANIA X

X - tu podajecie czas w sekundach.
Należy potem ponownie skompilować.

Dołączona grafika

Załączone pliki

Odpowiedz

  • +
  • -
JawoR1337 - zdjęcie JawoR1337 17.02.2012

W jaki sposób ona zatruwa? Wszystkich z przeciwnego teamu? Czy jak naładuje się a następnie będe strzelać w gracza?

Oczywiście zassysam
Odpowiedz

  • +
  • -
Intex - zdjęcie Intex 17.02.2012

Jak naładujesz moc na nożu i strzelisz w gracza. To co x sekund zabiera mu wyznaczoną ilość hp. A to ustawisz w SMA :P
Odpowiedz

Name166 - zdjęcie Name166 17.02.2012

@ UP nie lepiej na cvary zrobić ?
Odpowiedz

  • +
  • -
Intex - zdjęcie Intex 17.02.2012

Nie wiem:P ja nie lubię się bawić w cvary wolę zmienić w sma i mieć święty spokój :P Jak ktoś woli to przecież może sobie dodać :P albo poprosić o dodanie :)
Odpowiedz

  • +
  • -
LionHeart - zdjęcie LionHeart 18.02.2012

Przydała by się jeszcze informacja dla gracza atakującego ta klasa jakiego gracza zaraził. Czyli strzelam w gracza o nicku Player i wyświetla się napis ; Zaraziłeś Player.
Odpowiedz

  • +
  • -
ZarzadCSB - zdjęcie ZarzadCSB 18.02.2012

Zrób może tak że jak się naładuje na nożu to może otruć jednego gracza aż do 1 hp.
A nie że naładuje raz poskanuje wszyscy otruci :)
Odpowiedz

  • +
  • -
LionHeart - zdjęcie LionHeart 18.02.2012

Ale to mało hp zabiera wiec można wszystkich atakujących zatruwać ;]
Odpowiedz

  • +
  • -
Intex - zdjęcie Intex 18.02.2012

Ilość zabieranych HP można sobie zmienić :P
Odpowiedz

  • +
  • -
LionHeart - zdjęcie LionHeart 18.02.2012

No tak i to w łatwy sposób lecz rozważ moja powyższą propozycje ;]
Odpowiedz

sekio - zdjęcie sekio 05.03.2012

Chyba lepiej by bylo bez naładowania noza bo kampią na mapach :)
Odpowiedz

  • +
  • -
korski - zdjęcie korski 06.03.2012

Nie kampią z tego co zauważyłem, lecz strzelają i uciekają ,ale gdzie mogę zmienić wartość zabieranego hp? Jest ona aktualnie zależna od inteligencji ,więc pewni gracze robią /reset dodają 100 inty i zabierają 200 życia.
Odpowiedz

  • +
  • -
niemamkonta - zdjęcie niemamkonta 10.03.2012

Jak zmniejszyć ilość zabieranego hp po zatruciu?

Wrzucam sma bo załączniki z pierwszego postu nie działają.

/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <codmod>
#include <fakemeta>
#define TASK_ID 128000
#define CZAS_LADOWANIA 10 // Jak dlugo ma sie ladowac moc w sekundach
new bool:moc_zaladowana[33];
new bool:ma_klase[33];
new msg_bartime;
new const nazwa[] = "Truciciel";
new const opis[] = "AK47, 1 HE, 1SG, po naladowaniu noza - zatruwa swoich wrogow pociskami.";
new const bronie = 1<<CSW_HEGRENADE | 1<<CSW_SMOKEGRENADE | 1<<CSW_AK47;
new const zdrowie = 20;
new const kondycja = 10;
new const inteligencja = 2;
new const wytrzymalosc = 0;
public plugin_init()
{
register_plugin(nazwa, "1.0", "QTM_Peyote");
register_event("CurWeapon", "CurWeapon", "be", "1=1");
register_event("ResetHUD", "ResetHUD", "abe");
register_event("Damage", "Damage", "be", "2!0", "3=0", "4!0")
msg_bartime = get_user_msgid("BarTime");
  
register_forward(FM_PlayerPreThink, "client_PreThink");
cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);

}
public cod_class_enabled(id)
ma_klase[id] = true;
public cod_class_disabled(id)
ma_klase[id] = false;

public client_PreThink(id)
{
	if(!task_exists(id+TASK_ID))
		return;
	  
	if(pev(id, pev_button) & (IN_MOVELEFT+IN_MOVERIGHT+IN_FORWARD+IN_BACK+IN_JUMP+IN_DUCK))
	{
		change_task(id+TASK_ID, CZAS_LADOWANIA.0);
		set_bartime(id, CZAS_LADOWANIA);
	}
}
public CurWeapon(id)
{
	if(get_user_weapon(id) == CSW_KNIFE && !moc_zaladowana[id] && ma_klase[id])
	{
		set_task(CZAS_LADOWANIA.0, "MocZaladowana", id+TASK_ID);
		set_bartime(id, CZAS_LADOWANIA);
	}
	else
	{
		remove_task(id+TASK_ID);
		set_bartime(id, 0);
	}
}
stock set_bartime(id, czas)
{
	message_begin((id)?MSG_ONE:MSG_ALL, msg_bartime, _, id)
	write_short(czas);
	message_end();  
}
public MocZaladowana(id)
{
	id -= TASK_ID;
  
	if(!ma_klase[id]) return;
  
	moc_zaladowana[id] = true;
	client_print(id, print_center, "POCISKI ZOSTALY ZATRUTE!");
	CurWeapon(id);
}
  
  
public ResetHUD(id) moc_zaladowana[id] = false;
#define TASK_ZATRUCIE 64000
new zatruwajacy[33];
public Damage(id)
{
	new attacker = get_user_attacker(id);
	if(!is_user_alive(attacker)) return;
  
	if(!moc_zaladowana[attacker]) return;
  
	zatruwajacy[id] = attacker;
	if(!task_exists(id+TASK_ZATRUCIE)) set_task(1.0, "Zatruj", id+TASK_ZATRUCIE, _, _, "a", 5);
}
public Zatruj(id)
{
	id -= TASK_ZATRUCIE;
	client_print(id, print_center, "Zostales zatruty!!");
	cod_inflict_damage(zatruwajacy[id], id, 8.0, 0.15);
}

Wydawało mi się że chodzi o tą ostatnią funkcję i podejrzewam(nie pamietam dokładnie) że gdy próbowałem to zmieniłem
cod_inflict_damage(zatruwajacy[id], id, 8.0, 0.3);
na
cod_inflict_damage(zatruwajacy[id], id, 8.0, 0.15);

Ale to chyba nic nie dało :| To hp za szybko schodzi.

Edit: nieaktualne

poszukałem natywu cod_inflict_damage i znalazłem że to 8.0 jest odpowiedzialne za obrażenia, a ta druga wartość za inteligencję
Użytkownik niemamkonta edytował ten post 10.03.2012 21:37
Odpowiedz