←  Poradniki, Łatki oraz Pluginy

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
[Tutorial] Perk Fala Smierci

  • +
  • -
MarWit - zdjęcie 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.
/* 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 Dołączona grafika

Załączone pliki


Użytkownik MarWit edytował ten post 05.10.2011 13:37
Odpowiedz

  • +
  • -
Nomaf - zdjęcie 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.
Odpowiedz

  • +
  • -
MarWit - zdjęcie MarWit 01.07.2011

@Abes, załącznik dodany. Na śmierć zapomniałem Dołączona grafika

@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
Odpowiedz

  • +
  • -
V3ko - zdjęcie V3ko 01.07.2011

Tylko dlaczego w COD'ie nie było czegoś takiego, jak już mod ma odwzorować CallOfDuty, to jak najdokładniej :D
Użytkownik V3ko edytował ten post 01.07.2011 17:50
Odpowiedz

  • +
  • -
HaDeS From HELL - zdjęcie HaDeS From HELL 01.07.2011

Tutorial pokazujący jak zrobić klase 


Tam chyba miało być perk zamiast ,,klase"
Odpowiedz

  • +
  • -
MarWit - zdjęcie 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
Odpowiedz

  • +
  • -
ToRRent - zdjęcie 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 ? :)
Odpowiedz

  • +
  • -
Na 5tyk - zdjęcie Na 5tyk 02.07.2011

Gdzie zmienić obszar ,,ataku"?
Odpowiedz

  • +
  • -
KariiO - zdjęcie 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);
Odpowiedz

  • +
  • -
MarWit - zdjęcie MarWit 02.07.2011

Kairo, nie myl, za kolory odpowiada
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
Odpowiedz

  • +
  • -
KariiO - zdjęcie KariiO 02.07.2011

UP@
w takim razie co to jest co ja podałem ?
Odpowiedz

  • +
  • -
MarWit - zdjęcie MarWit 02.07.2011

@UP

write_byte( 120 ); //width
write_byte( 255 ); //amplitude
write_byte( 255 ); //color red

Użytkownik MarWit edytował ten post 02.07.2011 18:28
Odpowiedz

  • +
  • -
ExTaza?! - zdjęcie ExTaza?! 04.07.2011

Zaplace plusikami jak pokażesz wersje do starego cod moda ; ]
Odpowiedz

  • +
  • -
Kendzior87 - zdjęcie Kendzior87 28.07.2011

Ja też byłbym bardzo zainteresowany wersją do starego CoD'a. Pozdrawiam
Odpowiedz

MariO ak Killer - zdjęcie MariO ak Killer 30.09.2011

Tutaj macie do starego coda http://amxx.pl/topic...907#entry301907
Odpowiedz

  • +
  • -
Jak się nazwać - zdjęcie 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 ;P

@@ 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
Odpowiedz

  • +
  • -
ewciak - zdjęcie 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

#define CZAS_OBRAZEN 8 //tu mozesz zmienic czas efektu (w sec.)

Użytkownik ewciak edytował ten post 01.10.2011 07:50
Odpowiedz

  • +
  • -
MarWit - zdjęcie 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.
Odpowiedz

  • +
  • -
Ciuchcia:D - zdjęcie 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
Odpowiedz

  • +
  • -
MarWit - zdjęcie MarWit 05.10.2011

@UP, teraz powinno być OK ( testowane na botach ) :D Czekam na potwierdzenie, jezeli działa poprawie tutka i pliki.
Użytkownik MarWit edytował ten post 05.10.2011 13:44
Odpowiedz