←  Poradniki, Łatki oraz Pluginy

AMXX.pl: Support AMX Mod X i SourceMod

»

CoD Nowy
Wybuch dla klasy po śmierci

  • +
  • -
d0naciak - zdjęcie d0naciak 03.12.2011

W tym tutku pokaże jak zrobić klase, która wybucha po śmierci, a wię tak, pod ;

#include <codmod>


Dodajemy:

#include <engine>

new ma_klase[33]; //Jeżeli mamy już to dodane, nie trzeba robic tego drugi raz
new sprite_blast, sprite_white;


Do plugin_init dodajemy

register_event("DeathMsg", "DeathMsg", "a");


Jeżeli nie mamy zarejestrowanego publica cod_class_enabled i cod_class_disabled, dodajemy to :

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

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

public plugin_precache()
{
sprite_white = precache_model("sprites/white.spr");
sprite_blast = precache_model("sprites/dexplo.spr");
}

public DeathMsg()
{
new id = read_data(2);
if(!ma_klase[id])
return PLUGIN_CONTINUE;

new Float:fOrigin[3];
entity_get_vector(id, EV_VEC_origin, fOrigin);

new iOrigin[3];
for(new i=0;i<=2;i++)
iOrigin[i] = floatround(fOrigin[i]);

message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
write_byte(TE_EXPLOSION);
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2]);
write_short(sprite_blast);
write_byte(32);
write_byte(20);
write_byte(0);
message_end();

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] + 200 );
write_coord( iOrigin[2] + 200 );
write_short( sprite_white );
write_byte( 0 );
write_byte( 0 );
write_byte( 10 );
write_byte( 10 );
write_byte( 255 );
write_byte( 255 );
write_byte( 100 );
write_byte( 100 );
write_byte( 128 );
write_byte( 0 );
message_end();

new entlist[33];
new numfound = find_sphere_class(id, "player", 200.0 , entlist, 32);

for (new i=0; i <=numfound; i++)
{
new pid = entlist[i];

if (is_user_alive(pid) && get_user_team(id) != get_user_team(pid))
cod_inflict_damage(id, pid, float(get_user_health(pid)), 0.0);
}

return PLUGIN_CONTINUE;
}


Jeżeli mamy cod_class_enabled i cod_class_disabled to zamiast tego wyżej dajemy to :

public plugin_precache()
{
sprite_white = precache_model("sprites/white.spr");
sprite_blast = precache_model("sprites/dexplo.spr");
}

public DeathMsg()
{
new id = read_data(2);

if(!ma_klase[id])
return PLUGIN_CONTINUE;

new Float:fOrigin[3];
entity_get_vector(id, EV_VEC_origin, fOrigin);

new iOrigin[3];
for(new i=0;i<=2;i++)
iOrigin[i] = floatround(fOrigin[i]);

message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
write_byte(TE_EXPLOSION);
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2]);
write_short(sprite_blast);
write_byte(32);
write_byte(20);
write_byte(0);
message_end();

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] + 200 );
write_coord( iOrigin[2] + 200 );
write_short( sprite_white );
write_byte( 0 );
write_byte( 0 );
write_byte( 10 );
write_byte( 10 );
write_byte( 255 );
write_byte( 255 );
write_byte( 100 );
write_byte( 100 );
write_byte( 128 );
write_byte( 0 );
message_end();

new entlist[33];
new numfound = find_sphere_class(id, "player", 200.0 , entlist, 32);

for (new i=0; i<=numfound; i++)
{
new pid = entlist[i];

if (is_user_alive(pid) && get_user_team(id) != get_user_team(pid))
cod_inflict_damage(id, pid, float(get_user_health(pid)), 0.0);
}

return PLUGIN_CONTINUE;
}



I cieszymy się nową klasą :]
Użytkownik d0n tHe Pr0oo edytował ten post 03.02.2013 11:24
Odpowiedz

  • +
  • -
M&M's - zdjęcie M&M's 03.12.2011

Wybuch zabija automatycznie?
Odpowiedz

  • +
  • -
d0naciak - zdjęcie d0naciak 04.12.2011

tak, normalnie wybuchasz automatycznie, coś jak autodestrukcja, lecz zamiast po przyciśnięciu c, jest po śmierci
Odpowiedz

Jeansy - zdjęcie Jeansy 04.12.2011

Dla leniwych już gotowiec:)

Załączone pliki

Odpowiedz

  • +
  • -
freetu - zdjęcie freetu 05.12.2011

gdzie ustawiać siłę wybuchu (dmg jakie zada wybuch?)
Odpowiedz

  • +
  • -
radim - zdjęcie radim 05.12.2011

Wybuch zabija od razu każdego w zasięgu. Aby był mniejszy dmg np. 60 to zamieniasz:
cod_inflict_damage(id, pid, float(get_user_health(pid)), 0.0);
na:

cod_inflict_damage(id, pid, 60.0, 0.0);
Odpowiedz

Jeansy - zdjęcie Jeansy 06.12.2011

A jak ustawic np na przycisk wybuch??
Odpowiedz

  • +
  • -
radim - zdjęcie radim 06.12.2011

Usuwasz:
register_event("DeathMsg", "DeathMsg", "a");
I zamiast:
public DeathMsg(id)
dajesz:

public cod_class_skill_used(id)
Odpowiedz

  • +
  • -
d0naciak - zdjęcie d0naciak 06.12.2011

@Up, żeby jeszcze przy użyciu tego przycisku dedał, zamień public cod_class_skill_used na

public cod_class_skill_used(id)
{
if(!is_user_alive(id))
return PLUGIN_CONTINUE;

new Float:fOrigin[3];
entity_get_vector(id, EV_VEC_origin, fOrigin);

new iOrigin[3];
for(new i=0;i<3;i++)
iOrigin[i] = floatround(fOrigin[i]);

message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
write_byte(TE_EXPLOSION);
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2]);
write_short(sprite_blast);
write_byte(32);
write_byte(20);
write_byte(0);
message_end();

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] + 200 );
write_coord( iOrigin[2] + 200 );
write_short( sprite_white );
write_byte( 0 );
write_byte( 0 );
write_byte( 10 );
write_byte( 10 );
write_byte( 255 );
write_byte( 255 );
write_byte( 100 );
write_byte( 100 );
write_byte( 128 );
write_byte( 0 );
message_end();

new entlist[33];
new numfound = find_sphere_class(id, "player", 200.0 , entlist, 32);

for (new i=0; i < numfound; i++)
{
new pid = entlist[i];

if (is_user_alive(pid) && get_user_team(id) != get_user_team(pid))
cod_inflict_damage(id, pid, float(get_user_health(pid)), 0.0);
}
user_silentkill(id);

return PLUGIN_CONTINUE;
}
Odpowiedz

Jeansy - zdjęcie Jeansy 06.12.2011

Dzięki macie plusy:)
Odpowiedz

sekio - zdjęcie sekio 06.12.2011

Tak wygląda moja klasa niby wszystko dobrze ale i tak zabija od razu po wybuchy nieważne ile typek ma hp

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <codmod>
#include <engine>
#include <fun>
#include <cstrike>

new bool:ma_klase[33];

new const nazwa[] = "bLA BLA";
new const opis[] = "Wybucha po smierci zadajac 30(+intelgencja) obrazen ma 3 HE";
new const bronie = 1<< CSW_GALI  | 1<< CSW_VESTHELM | 1<< CSW_HEGRENADE | 1<< CSW_SMOKEGRENADE ;
new const zdrowie = 20;
new const kondycja = 15;
new const inteligencja = 0;
new const wytrzymalosc = 0;

new sprite_blast, sprite_white;

public plugin_init() 
{
register_plugin(nazwa, "1.0", "QTM_Peyote");

cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc);

register_event("DeathMsg", "Death", "ade");

register_event("ResetHUD", "ResetHUD", "abe");
}

public plugin_precache()
{
sprite_white = precache_model("sprites/white.spr") ;
sprite_blast = precache_model("sprites/dexplo.spr");
}

public cod_class_enabled(id)
{
set_user_armor(id, 125);
ma_klase[id] = true;
}

public cod_class_disabled(id)
{
set_user_armor(id, 0)
ma_klase[id] = false;
}
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 Death()
{
new id = read_data(2);
if(ma_klase[id])
Eksploduj(id);
}

public Eksploduj(id)
{
new Float:fOrigin[3], iOrigin[3];
entity_get_vector( id, EV_VEC_origin, fOrigin);
iOrigin[0] = floatround(fOrigin[0]);
iOrigin[1] = floatround(fOrigin[1]);
iOrigin[2] = floatround(fOrigin[2]);

message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
write_byte(TE_EXPLOSION);
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2]);
write_short(sprite_blast);
write_byte(32);
write_byte(20);
write_byte(0);
message_end();

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 ); // startframe
write_byte( 0 ); // framerate
write_byte( 10 ); // life
write_byte( 10 ); // width
write_byte( 255 ); // noise
write_byte( 255 ); // r, g, b
write_byte( 100 );// r, g, b
write_byte( 100 ); // r, g, b
write_byte( 128 ); // brightness
write_byte( 8 ); // speed
message_end();

new entlist[33];
new numfound = find_sphere_class(id, "player", 300.0 , entlist, 32);

for (new i=0; i < numfound; i++)
{ 
new pid = entlist[i];

if (!is_user_alive(pid) || get_user_team(id) == get_user_team(pid))
continue;
cod_inflict_damage(id, pid, 30.0, 0.2);
}
return PLUGIN_CONTINUE;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/
Odpowiedz

  • +
  • -
d0naciak - zdjęcie d0naciak 07.12.2011

@uo ta linijka odpowiada za zadane dmg
cod_inflict_damage(id, pid, 30.0, 0.2);

1 pkt inteligencji dodaje 0.2 dmg, jęzeli masz dużo lvli, to jak koleś ma ze 500 inta, to zabiera ze 130 dmg
Użytkownik d0n tHe Pr0oo edytował ten post 07.12.2011 20:29
Odpowiedz

sekio - zdjęcie sekio 07.12.2011

To to sam wiem tak powinno działać ale ja zadaje na 1 lvl 500 hp :/ i nie wiem dlaczego.
Odpowiedz

  • +
  • -
d0naciak - zdjęcie d0naciak 08.12.2011

new numfound = find_sphere_class(id, "player", 300.0 , entlist, 32);


Nie wiem od czego ta linijka, więc to może to ?
Odpowiedz

  • +
  • -
FORMOZA - zdjęcie FORMOZA 08.12.2011

Można by to dodać do http://amxx.pl/generator-klas/ .. ;)
Odpowiedz

sekio - zdjęcie sekio 08.12.2011

new numfound = find_sphere_class(id, "player", 300.0 , entlist, 32);
Najprawdopodobniej to jest zasięg :/
Odpowiedz

  • +
  • -
ToRRent - zdjęcie ToRRent 10.12.2011

@up tak to 300.0
Odpowiedz

  • +
  • -
mat70 - zdjęcie mat70 30.01.2013

Siema mam sprawe ja jestem nowy i czy mogli byscie mi zrobic klasa. żeby bylo tak Samobujca ZDR Ak47 HP:200 po smierci wybucha posiada 2 rakiety
Odpowiedz

Tytanowy - zdjęcie Tytanowy 30.01.2013

Siema mam sprawe ja jestem nowy i czy mogli byscie mi zrobic klasa. żeby bylo tak Samobujca ZDR Ak47 HP:200 po smierci wybucha posiada 2 rakiety


Wykorzystaj do tego ten temat + http://amxx.pl/forum...generator-klas/ ten link, albo najzwyczajniej załóż nowy temat w odpowiednim dziale.
Odpowiedz

  • +
  • -
MAGNET - zdjęcie MAGNET 19.02.2013

A jak zrobić, żeby była szansa na wybuch np. 1/3??
Odpowiedz