[Tutorial] Perk Fala Smierci
MarWit
30.06.2011
Tutorial pokazujący jak zrobić perk "Fala Śmierci" ktory po uzyciu zadaje określone obrażenia przez okreslony czas co sec.
Tworzymy nowy perk np.
Pod include <codmod> dodajemy:
pod
dodajemy
Do plugin_init() dodajemy
Pod
dajemy
Na sam koniec sma dodajemy
Dla leni dodaje gotowca w załączniku
Użytkownik MarWit edytował ten post 05.10.2011 13:37
Tworzymy nowy perk np.
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <codmod>
new const perk_name[] = "Fala smierci";
new const perk_desc[] = "Po uzyciu na przeciwnikach, zadajesz im X obrazen co sec przez X sec.";
public plugin_init()
{
register_plugin("codperk_falasmierci", "1.0", "MarWit")
cod_register_perk(perk_name, perk_desc);
}
Pod include <codmod> dodajemy:
#include <engine>
#include <fun>
#define FALA_SMIERCI 7845
#define OBRAZENIA 5 //tu mozesz zmienic wartosc zadawanych obrazen na sec
#define CZAS_OBRAZEN 8 //tu mozesz zmienic czas efektu (w sec.)
new sprite_white
pod
new const perk_desc[] = "Po uzyciu na przeciwnikach, zadajesz im 5 obrazen co sec przez 8 sec.";
dodajemy
new ilosc_fal[33] = 0
new czas_obrazen[33]
new ma_perk[33]
Do plugin_init() dodajemy
register_event("ResetHUD", "ResetHUD", "abe");
Pod
public plugin_init()
{
cod_register_perk(perk_name, perk_desc);
register_event("ResetHUD", "ResetHUD", "abe");
}
dajemy
public cod_perk_enabled(id)
{
ma_perk[id] = true
ilosc_fal[id] = 5 //tu wpisz ilosc fal na runde
}
public cod_perk_disabled(id)
{
ma_perk[id] = false
ilosc_fal[id]=0
}
public cod_perk_used(id)
{
if(ilosc_fal[id] == 0 || !is_user_alive(id) || !ma_perk[id])
return PLUGIN_CONTINUE
ilosc_fal[id]--;
new iOrigin[3];
get_user_origin(id, iOrigin);
message_begin( MSG_BROADCAST, SVC_TEMPENTITY, iOrigin );
write_byte( TE_BEAMCYLINDER );
write_coord( iOrigin[0] );
write_coord( iOrigin[1] );
write_coord( iOrigin[2] );
write_coord( iOrigin[0] );
write_coord( iOrigin[1] + 300 );
write_coord( iOrigin[2] + 300 );
write_short( sprite_white );
write_byte( 0 );
write_byte( 0 );
write_byte( 10 );
write_byte( 120 );
write_byte( 255 );
write_byte( 255 );
write_byte( 0 );
write_byte( 0 );
write_byte( 100 );
write_byte( 4 );
message_end();
new entlist[33];
new numfound = find_sphere_class(id, "player", 300.0, entlist, 32);
for (new i=0; i < numfound; i++)
{
new vic = entlist[i];
if (is_user_alive(vic) && get_user_team(id) != get_user_team(vic)){
czas_obrazen[vic] = CZAS_OBRAZEN
set_task(1.0, "FalaSmierci_task", vic+FALA_SMIERCI, _, _, "b")
}
}
return PLUGIN_CONTINUE;
}
public FalaSmierci_task(id)
{
id -= FALA_SMIERCI
czas_obrazen[id]--
set_user_health(id, (get_user_health(id)-OBRAZENIA))
if(!(is_user_alive(id)) || !(is_user_connected(id)) || czas_obrazen[id] <= 0){
if(task_exists(id+FALA_SMIERCI)) remove_task(id+FALA_SMIERCI)
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
Na sam koniec sma dodajemy
public ResetHUD(id)
ilosc_fal[id]=5; //tu wpisz ilosc fal na runde
Dla leni dodaje gotowca w załączniku
Załączone pliki
Użytkownik MarWit edytował ten post 05.10.2011 13:37
Nomaf
30.06.2011
Eee, jak to działa? Na czym ma to polegać?
Jak fala to chyba wokół używającego jakiś krąg się robi i ich rani, czy jak?
Fajny pomysł, nawet.
Jak fala to chyba wokół używającego jakiś krąg się robi i ich rani, czy jak?
Fajny pomysł, nawet.
MarWit
01.07.2011
@Abes, załącznik dodany. Na śmierć zapomniałem
@Nomaf, perk działa tak, ze po jego uruchomieniu tworzy się fala podobna do wybuchu dynamitu czy "rozbłysku", działająca na obszarze 300 unitów. Kazdy wrogi gracz ktory znajdzie sie w zasiegu zostaje "zainfekowany" i zadawane jest mu dane dmg co sec, przez dany czas, np. tak jak w przykładzie 5dmg/s przez 8sec. Na początku plugin-u, po to są definy, żeby newbie tez mógł ustawic pod swoje zachcianki
Użytkownik MarWit edytował ten post 01.07.2011 13:28
@Nomaf, perk działa tak, ze po jego uruchomieniu tworzy się fala podobna do wybuchu dynamitu czy "rozbłysku", działająca na obszarze 300 unitów. Kazdy wrogi gracz ktory znajdzie sie w zasiegu zostaje "zainfekowany" i zadawane jest mu dane dmg co sec, przez dany czas, np. tak jak w przykładzie 5dmg/s przez 8sec. Na początku plugin-u, po to są definy, żeby newbie tez mógł ustawic pod swoje zachcianki
Użytkownik MarWit edytował ten post 01.07.2011 13:28
V3ko
01.07.2011
Tylko dlaczego w COD'ie nie było czegoś takiego, jak już mod ma odwzorować CallOfDuty, to jak najdokładniej
Użytkownik V3ko edytował ten post 01.07.2011 17:50
Użytkownik V3ko edytował ten post 01.07.2011 17:50
HaDeS From HELL
01.07.2011
Tutorial pokazujący jak zrobić klase
Tam chyba miało być perk zamiast ,,klase"
MarWit
01.07.2011
Heh, jaki głupi błąd, poprawione. dzięki Szybcioor
Użytkownik MarWit edytował ten post 13.10.2011 12:20
Użytkownik MarWit edytował ten post 13.10.2011 12:20
ToRRent
01.07.2011
nie sprawdzałem jeszcze tego ale domyślam się że gracz wytwarza wizualną falę
i takie pytanie, która linijka odpowiada za możliwość zmiany koloru rgb ?
i takie pytanie, która linijka odpowiada za możliwość zmiany koloru rgb ?
KariiO
02.07.2011
nie sprawdzałem jeszcze tego ale domyślam się że gracz wytwarza wizualną falę
i takie pytanie, która linijka odpowiada za możliwość zmiany koloru rgb ?
write_byte( 120 ); write_byte( 255 ); write_byte( 255 );
Gdzie zmienić obszar ,,ataku"?
new numfound = find_sphere_class(id, "player", 300.0, entlist, 32);
MarWit
02.07.2011
Kairo, nie myl, za kolory odpowiada
@=ToRRent=, tak, wytwarza fale podobna do tej z perku "rozbłysk" czy dynamitu tak jak pisalem wczesniej
Użytkownik MarWit edytował ten post 02.07.2011 13:54
write_byte( 255 ); //red
write_byte( 0 ); //green
write_byte( 0 ); //blue]
@=ToRRent=, tak, wytwarza fale podobna do tej z perku "rozbłysk" czy dynamitu tak jak pisalem wczesniej
Użytkownik MarWit edytował ten post 02.07.2011 13:54
MarWit
02.07.2011
@UP
Użytkownik MarWit edytował ten post 02.07.2011 18:28
write_byte( 120 ); //width
write_byte( 255 ); //amplitude
write_byte( 255 ); //color red
Użytkownik MarWit edytował ten post 02.07.2011 18:28
Kendzior87
28.07.2011
Ja też byłbym bardzo zainteresowany wersją do starego CoD'a. Pozdrawiam
MariO ak Killer 30.09.2011
Tutaj macie do starego coda http://amxx.pl/topic...907#entry301907
Jak się nazwać
01.10.2011
+
Ale ja bym dodał jeszcze
#define ILOSC_FALI 5
i w resethudzie oraz class enabled
ilosc_fal = ILOSC_FALI
@@ Edit
Działać działa ale nie daje fraga tylko jakbyś wpisał kill w konsoli
@@ Edit #2
Załączam poprawną wersję tzn dającą fraga
Użytkownik Jak się nazwać edytował ten post 01.10.2011 08:11
Ale ja bym dodał jeszcze
#define ILOSC_FALI 5
i w resethudzie oraz class enabled
ilosc_fal = ILOSC_FALI
@@ Edit
Działać działa ale nie daje fraga tylko jakbyś wpisał kill w konsoli
@@ Edit #2
Załączam poprawną wersję tzn dającą fraga
Załączone pliki
Użytkownik Jak się nazwać edytował ten post 01.10.2011 08:11
ewciak
01.10.2011
Hmm a jakiś dokładniejszy opis? Gdzie się zmienia czas trwania fali?
// już dojrzałam Myśle że to może być coś fajnego, leci plusik
Użytkownik ewciak edytował ten post 01.10.2011 07:50
// już dojrzałam Myśle że to może być coś fajnego, leci plusik
#define CZAS_OBRAZEN 8 //tu mozesz zmienic czas efektu (w sec.)
Użytkownik ewciak edytował ten post 01.10.2011 07:50
MarWit
04.10.2011
[UPDATE] Dodałem nową wersje ( tzw. dodaje fragi, optymalniejsza ). proszę o info czy działa ( sam nie mam jak sprawdzić ). Jeżeli będzie działać zmodyfikuje tutorial.
Ciuchcia:D
05.10.2011
Ten nowy nie dziala. Testowalem go.
Taka jest przyczyna kiedy wcisniesz klawisz C przy wrogu to ci sie zawiesza serwer.
Nie polecam tego.
PS. Popraw to
Taka jest przyczyna kiedy wcisniesz klawisz C przy wrogu to ci sie zawiesza serwer.
Nie polecam tego.
PS. Popraw to
MarWit
05.10.2011
@UP, teraz powinno być OK ( testowane na botach ) Czekam na potwierdzenie, jezeli działa poprawie tutka i pliki.
Użytkownik MarWit edytował ten post 05.10.2011 13:44
Użytkownik MarWit edytował ten post 05.10.2011 13:44