Wybuch dla klasy po śmierci
d0naciak
03.12.2011
W tym tutku pokaże jak zrobić klase, która wybucha po śmierci, a wię tak, pod ;
Dodajemy:
Do plugin_init dodajemy
Jeżeli nie mamy zarejestrowanego publica cod_class_enabled i cod_class_disabled, dodajemy to :
Jeżeli mamy cod_class_enabled i cod_class_disabled to zamiast tego wyżej dajemy to :
I cieszymy się nową klasą
Użytkownik d0n tHe Pr0oo edytował ten post 03.02.2013 11:24
#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
d0naciak
04.12.2011
tak, normalnie wybuchasz automatycznie, coś jak autodestrukcja, lecz zamiast po przyciśnięciu c, jest po śmierci
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);
radim
06.12.2011
Usuwasz:
register_event("DeathMsg", "DeathMsg", "a");I zamiast:
public DeathMsg(id)dajesz:
public cod_class_skill_used(id)
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;
}
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 } */
d0naciak
07.12.2011
@uo ta linijka odpowiada za zadane dmg
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
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
sekio 07.12.2011
To to sam wiem tak powinno działać ale ja zadaje na 1 lvl 500 hp i nie wiem dlaczego.
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 ?
sekio 08.12.2011
new numfound = find_sphere_class(id, "player", 300.0 , entlist, 32);
Najprawdopodobniej to jest zasięg
Najprawdopodobniej to jest zasięg
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
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.