Witam! Poszukuje linijki kodu na błyskawice.
Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Błyskawice CoDMoD
Najlepsza odpowiedź Toldi, 14.04.2017 18:07
Znajdź klasę, która coś takiego posiada. Od razu będziesz miał przykład jak tam jest zrobione.
Masz niżej kod. Jak widzisz tu jest trochę więcej linijek dlatego daje cały kod klasy bo nie ma sensu wycinać kodu.
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <codmod> #include <engine> #include <hamsandwich> #include <fakemeta> #define MAX 32 #define x 0 #define y 1 #define z 2 new ilosc_blyskawic[33],poprzednia_blyskawica[33]; new const gszSound[] = "misc/piorun.wav"; new sprite_lgt, sprite_smoke; new const nazwa[] = "Zeus"; new const opis[] = "Na E uderza piorunem, ktory rozpruwa przeciwka. Rozprucie spowalnia przeciwnika na 1 sekunde i zadaje mu 65 DMG + int/2"; new const bronie = 1<<CSW_P90; new const zdrowie = 40; new const kondycja = 30; new const inteligencja = 0; new const wytrzymalosc = 20; new bool:ma_klase[33] public plugin_init() { register_plugin(nazwa, "1.0", "sharkowy"); cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); register_event("ResetHUD", "ResetHUD", "abe"); } public plugin_precache() { sprite_smoke = precache_model("sprites/steam1.spr") sprite_lgt = precache_model("sprites/lgtning.spr") precache_sound(gszSound); } public cod_class_enabled(id) { ilosc_blyskawic[id] = 5; ma_klase[id] = true; } public cod_class_disabled(id) { ma_klase[id] = false; ilosc_blyskawic[id] = 0; } public cod_class_skill_used(id) { if(!is_user_alive(id)) return PLUGIN_HANDLED; if(!ilosc_blyskawic[id]) { return PLUGIN_HANDLED; } new target = Find_Best_Angle(id,750.0,false) if (!is_valid_ent(target)) { client_print(id,print_center,"Brak celu w zasiegu 750") return PLUGIN_CONTINUE } if(is_user_alive(target)){ if(get_user_team(target) == get_user_team(id)) { return PLUGIN_HANDLED; } if(poprzednia_blyskawica[id]+15.0>get_gametime()) { client_print(id,print_center,"Pioruna mozesz uzyc raz na 15 sek."); return PLUGIN_HANDLED; } poprzednia_blyskawica[id] = floatround(get_gametime()); ilosc_blyskawic[id]--; puscBlyskawice(id, target); } return PLUGIN_HANDLED; } thunder_effects(Float:fl_Origin[3]) { new Float:fX = fl_Origin[0], Float:fY = fl_Origin[1], Float:fZ = fl_Origin[2] // Beam effect between two points engfunc(EngFunc_MessageBegin, MSG_BROADCAST, SVC_TEMPENTITY, fl_Origin, 0) write_byte(TE_BEAMPOINTS) // 0 engfunc(EngFunc_WriteCoord, fX + 150.0) // start position engfunc(EngFunc_WriteCoord, fY + 150.0) engfunc(EngFunc_WriteCoord, fZ + 800.0) engfunc(EngFunc_WriteCoord, fX) // end position engfunc(EngFunc_WriteCoord, fY) engfunc(EngFunc_WriteCoord, fZ) write_short(sprite_lgt) // sprite index write_byte(1) // starting frame write_byte(15) // frame rate in 0.1's write_byte(10) // life in 0.1's write_byte(80) // line width in 0.1's write_byte(30) // noise amplitude in 0.01's write_byte(232) // red write_byte(232) // green write_byte(0) // blue write_byte(250) // brightness write_byte(200) // scroll speed in 0.1's message_end() // Sparks message_begin(MSG_PVS, SVC_TEMPENTITY) write_byte(TE_SPARKS) // 9 engfunc(EngFunc_WriteCoord, fX) // position engfunc(EngFunc_WriteCoord, fY) engfunc(EngFunc_WriteCoord, fZ + 10.0) message_end() // Smoke engfunc(EngFunc_MessageBegin, MSG_BROADCAST, SVC_TEMPENTITY, fl_Origin, 0) write_byte(TE_SMOKE) // 5 engfunc(EngFunc_WriteCoord, fX) // position engfunc(EngFunc_WriteCoord, fY) engfunc(EngFunc_WriteCoord, fZ + 10.0) write_short(sprite_smoke) // sprite index write_byte(10) // scale in 0.1's write_byte(10) // framerate message_end() // Blood engfunc(EngFunc_MessageBegin, MSG_BROADCAST, SVC_TEMPENTITY, fl_Origin, 0) write_byte(TE_LAVASPLASH) // 10 engfunc(EngFunc_WriteCoord, fX) // position engfunc(EngFunc_WriteCoord, fY) engfunc(EngFunc_WriteCoord, fZ + 12.0) message_end() } puscBlyskawice(id, target){ //Obrazenia new ent = create_entity("info_target"); new Float:fl_Origin[3] pev(target, pev_origin, fl_Origin) ExecuteHam(Ham_TakeDamage, target, id, id, 65.0+cod_get_user_intelligence(id)/2, 1); ScreenFade(target, 3, {232, 232, 0}, 80) message_begin(MSG_ONE,get_user_msgid("ScreenShake"),{0,0,0},target); write_short(7<<14); write_short(2<<13); write_short(3<<14); message_end(); remove_entity(ent); //Piorun thunder_effects(fl_Origin) //Dzwiek emit_sound(id, CHAN_WEAPON, gszSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); emit_sound(target, CHAN_WEAPON, gszSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); } public ResetHUD(id) { if(ma_klase[id]) ilosc_blyskawic[id] = 5; } stock Find_Best_Angle(id,Float:dist, same_team = false) { new Float:bestangle = 0.0 new winner = -1 for (new i=0; i < MAX; i++) { if (!is_user_alive(i) || i == id || (get_user_team(i) == get_user_team(id) && !same_team)) continue if (get_user_team(i) != get_user_team(id) && same_team) continue //User has spell immunity, don't target new Float:c_angle = Find_Angle(id,i,dist) if (c_angle > bestangle && Can_Trace_Line(id,i)) { winner = i bestangle = c_angle } } return winner } stock Float:Find_Angle(Core,Target,Float:dist) { new Float:vec2LOS[2] new Float:flDot new Float:CoreOrigin[3] new Float:TargetOrigin[3] new Float:CoreAngles[3] pev(Core,pev_origin,CoreOrigin) pev(Target,pev_origin,TargetOrigin) if (get_distance_f(CoreOrigin,TargetOrigin) > dist) return 0.0 pev(Core,pev_angles, CoreAngles) for ( new i = 0; i < 2; i++ ) vec2LOS[i] = TargetOrigin[i] - CoreOrigin[i] new Float:veclength = Vec2DLength(vec2LOS) //Normalize V2LOS if (veclength <= 0.0) { vec2LOS[x] = 0.0 vec2LOS[y] = 0.0 } else { new Float:flLen = 1.0 / veclength; vec2LOS[x] = vec2LOS[x]*flLen vec2LOS[y] = vec2LOS[y]*flLen } //Do a makevector to make v_forward right engfunc(EngFunc_MakeVectors,CoreAngles) new Float:v_forward[3] new Float:v_forward2D[2] get_global_vector(GL_v_forward, v_forward) v_forward2D[x] = v_forward[x] v_forward2D[y] = v_forward[y] flDot = vec2LOS[x]*v_forward2D[x]+vec2LOS[y]*v_forward2D[y] if ( flDot > 0.5 ) { return flDot } return 0.0 } stock Float:Vec2DLength( Float:Vec[2] ) { return floatsqroot(Vec[x]*Vec[x] + Vec[y]*Vec[y] ) } stock bool:Can_Trace_Line(id, target) { for (new i=-35; i < 60; i+=35) { new Float:Origin_Id[3] new Float:Origin_Target[3] new Float:Origin_Return[3] pev(id,pev_origin,Origin_Id) pev(target,pev_origin,Origin_Target) Origin_Id[z] = Origin_Id[z] + i Origin_Target[z] = Origin_Target[z] + i trace_line(-1, Origin_Id, Origin_Target, Origin_Return) if (get_distance_f(Origin_Return,Origin_Target) < 25.0) return true } return false } stock ScreenFade(target, Timer, Colors[3], Alpha) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenFade"), _, target); write_short((1<<12) * Timer) write_short(1<<12) write_short(0) write_byte(Colors[0]) write_byte(Colors[1]) write_byte(Colors[2]) write_byte(Alpha) message_end() }
- Nie możesz napisać tematu
- Zaloguj się, aby dodać odpowiedź
#2 Toldi
Napisano 14.04.2017 18:07 Najlepsza odpowiedź
Znajdź klasę, która coś takiego posiada. Od razu będziesz miał przykład jak tam jest zrobione.
Masz niżej kod. Jak widzisz tu jest trochę więcej linijek dlatego daje cały kod klasy bo nie ma sensu wycinać kodu.
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <codmod> #include <engine> #include <hamsandwich> #include <fakemeta> #define MAX 32 #define x 0 #define y 1 #define z 2 new ilosc_blyskawic[33],poprzednia_blyskawica[33]; new const gszSound[] = "misc/piorun.wav"; new sprite_lgt, sprite_smoke; new const nazwa[] = "Zeus"; new const opis[] = "Na E uderza piorunem, ktory rozpruwa przeciwka. Rozprucie spowalnia przeciwnika na 1 sekunde i zadaje mu 65 DMG + int/2"; new const bronie = 1<<CSW_P90; new const zdrowie = 40; new const kondycja = 30; new const inteligencja = 0; new const wytrzymalosc = 20; new bool:ma_klase[33] public plugin_init() { register_plugin(nazwa, "1.0", "sharkowy"); cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); register_event("ResetHUD", "ResetHUD", "abe"); } public plugin_precache() { sprite_smoke = precache_model("sprites/steam1.spr") sprite_lgt = precache_model("sprites/lgtning.spr") precache_sound(gszSound); } public cod_class_enabled(id) { ilosc_blyskawic[id] = 5; ma_klase[id] = true; } public cod_class_disabled(id) { ma_klase[id] = false; ilosc_blyskawic[id] = 0; } public cod_class_skill_used(id) { if(!is_user_alive(id)) return PLUGIN_HANDLED; if(!ilosc_blyskawic[id]) { return PLUGIN_HANDLED; } new target = Find_Best_Angle(id,750.0,false) if (!is_valid_ent(target)) { client_print(id,print_center,"Brak celu w zasiegu 750") return PLUGIN_CONTINUE } if(is_user_alive(target)){ if(get_user_team(target) == get_user_team(id)) { return PLUGIN_HANDLED; } if(poprzednia_blyskawica[id]+15.0>get_gametime()) { client_print(id,print_center,"Pioruna mozesz uzyc raz na 15 sek."); return PLUGIN_HANDLED; } poprzednia_blyskawica[id] = floatround(get_gametime()); ilosc_blyskawic[id]--; puscBlyskawice(id, target); } return PLUGIN_HANDLED; } thunder_effects(Float:fl_Origin[3]) { new Float:fX = fl_Origin[0], Float:fY = fl_Origin[1], Float:fZ = fl_Origin[2] // Beam effect between two points engfunc(EngFunc_MessageBegin, MSG_BROADCAST, SVC_TEMPENTITY, fl_Origin, 0) write_byte(TE_BEAMPOINTS) // 0 engfunc(EngFunc_WriteCoord, fX + 150.0) // start position engfunc(EngFunc_WriteCoord, fY + 150.0) engfunc(EngFunc_WriteCoord, fZ + 800.0) engfunc(EngFunc_WriteCoord, fX) // end position engfunc(EngFunc_WriteCoord, fY) engfunc(EngFunc_WriteCoord, fZ) write_short(sprite_lgt) // sprite index write_byte(1) // starting frame write_byte(15) // frame rate in 0.1's write_byte(10) // life in 0.1's write_byte(80) // line width in 0.1's write_byte(30) // noise amplitude in 0.01's write_byte(232) // red write_byte(232) // green write_byte(0) // blue write_byte(250) // brightness write_byte(200) // scroll speed in 0.1's message_end() // Sparks message_begin(MSG_PVS, SVC_TEMPENTITY) write_byte(TE_SPARKS) // 9 engfunc(EngFunc_WriteCoord, fX) // position engfunc(EngFunc_WriteCoord, fY) engfunc(EngFunc_WriteCoord, fZ + 10.0) message_end() // Smoke engfunc(EngFunc_MessageBegin, MSG_BROADCAST, SVC_TEMPENTITY, fl_Origin, 0) write_byte(TE_SMOKE) // 5 engfunc(EngFunc_WriteCoord, fX) // position engfunc(EngFunc_WriteCoord, fY) engfunc(EngFunc_WriteCoord, fZ + 10.0) write_short(sprite_smoke) // sprite index write_byte(10) // scale in 0.1's write_byte(10) // framerate message_end() // Blood engfunc(EngFunc_MessageBegin, MSG_BROADCAST, SVC_TEMPENTITY, fl_Origin, 0) write_byte(TE_LAVASPLASH) // 10 engfunc(EngFunc_WriteCoord, fX) // position engfunc(EngFunc_WriteCoord, fY) engfunc(EngFunc_WriteCoord, fZ + 12.0) message_end() } puscBlyskawice(id, target){ //Obrazenia new ent = create_entity("info_target"); new Float:fl_Origin[3] pev(target, pev_origin, fl_Origin) ExecuteHam(Ham_TakeDamage, target, id, id, 65.0+cod_get_user_intelligence(id)/2, 1); ScreenFade(target, 3, {232, 232, 0}, 80) message_begin(MSG_ONE,get_user_msgid("ScreenShake"),{0,0,0},target); write_short(7<<14); write_short(2<<13); write_short(3<<14); message_end(); remove_entity(ent); //Piorun thunder_effects(fl_Origin) //Dzwiek emit_sound(id, CHAN_WEAPON, gszSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); emit_sound(target, CHAN_WEAPON, gszSound, VOL_NORM, ATTN_NORM, 0, PITCH_NORM); } public ResetHUD(id) { if(ma_klase[id]) ilosc_blyskawic[id] = 5; } stock Find_Best_Angle(id,Float:dist, same_team = false) { new Float:bestangle = 0.0 new winner = -1 for (new i=0; i < MAX; i++) { if (!is_user_alive(i) || i == id || (get_user_team(i) == get_user_team(id) && !same_team)) continue if (get_user_team(i) != get_user_team(id) && same_team) continue //User has spell immunity, don't target new Float:c_angle = Find_Angle(id,i,dist) if (c_angle > bestangle && Can_Trace_Line(id,i)) { winner = i bestangle = c_angle } } return winner } stock Float:Find_Angle(Core,Target,Float:dist) { new Float:vec2LOS[2] new Float:flDot new Float:CoreOrigin[3] new Float:TargetOrigin[3] new Float:CoreAngles[3] pev(Core,pev_origin,CoreOrigin) pev(Target,pev_origin,TargetOrigin) if (get_distance_f(CoreOrigin,TargetOrigin) > dist) return 0.0 pev(Core,pev_angles, CoreAngles) for ( new i = 0; i < 2; i++ ) vec2LOS[i] = TargetOrigin[i] - CoreOrigin[i] new Float:veclength = Vec2DLength(vec2LOS) //Normalize V2LOS if (veclength <= 0.0) { vec2LOS[x] = 0.0 vec2LOS[y] = 0.0 } else { new Float:flLen = 1.0 / veclength; vec2LOS[x] = vec2LOS[x]*flLen vec2LOS[y] = vec2LOS[y]*flLen } //Do a makevector to make v_forward right engfunc(EngFunc_MakeVectors,CoreAngles) new Float:v_forward[3] new Float:v_forward2D[2] get_global_vector(GL_v_forward, v_forward) v_forward2D[x] = v_forward[x] v_forward2D[y] = v_forward[y] flDot = vec2LOS[x]*v_forward2D[x]+vec2LOS[y]*v_forward2D[y] if ( flDot > 0.5 ) { return flDot } return 0.0 } stock Float:Vec2DLength( Float:Vec[2] ) { return floatsqroot(Vec[x]*Vec[x] + Vec[y]*Vec[y] ) } stock bool:Can_Trace_Line(id, target) { for (new i=-35; i < 60; i+=35) { new Float:Origin_Id[3] new Float:Origin_Target[3] new Float:Origin_Return[3] pev(id,pev_origin,Origin_Id) pev(target,pev_origin,Origin_Target) Origin_Id[z] = Origin_Id[z] + i Origin_Target[z] = Origin_Target[z] + i trace_line(-1, Origin_Id, Origin_Target, Origin_Return) if (get_distance_f(Origin_Return,Origin_Target) < 25.0) return true } return false } stock ScreenFade(target, Timer, Colors[3], Alpha) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenFade"), _, target); write_short((1<<12) * Timer) write_short(1<<12) write_short(0) write_byte(Colors[0]) write_byte(Colors[1]) write_byte(Colors[2]) write_byte(Alpha) message_end() }
Użytkownik Toldi edytował ten post 14.04.2017 18:11
#3 d0naciak
Napisano 14.04.2017 18:30
https://amxx.pl/topi...klasa-elektryk/
W 10 sekund znalazłem, szukajcie a nie potraficie tylko pytania zadawać i czekacie na gotowe.
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych