Raised This Month: $ Target: $400
 0% 

Help me


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Podarok
BANNED
Join Date: Jan 2011
Location: Narnia
Old 03-14-2013 , 16:24   Help me
Reply With Quote #1

Hello. I have a weird problem, I dunno whats wrong in this code. It crashes server after a mapchange when its called by function begin_changelevel(), it goes okay, but when it starts to load a new map, server crashes. I mean session of old map ends, but new one wont start - server crashes. Could you please tell me whats wrong and also help me to optimise this code where it can be done. And I dunno why but the map change message in chat is written twise, that means map change function is called twise (or even more sometimes), can that cause a crash ?
Function :
Code:
public begin_changelevel(){     g_bChangeLevel = true;         new ent;     if((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", npc_classname)) != 0)         npc_remove(ent);         for(new id=1; id<g_maxplayers; id++)     {         if(is_user_alive(id))         {             set_pev(id, pev_velocity, 1.0);             set_pev(id, pev_maxspeed, 1.0);         }     }         server_cmd("amx_map zm_toxic_house2"); }

Here are random errors which HAVE NEVER SHOWN UP, they popped up only after changing map by that plugin and after that server has crashed : (I will repeat again, THESE ERRORS NEVER POPPED UP)
Code:
L 03/14/2013 - 15:50:42: ** Map 'zp_boss_city' ended L 03/14/2013 - 15:50:42: Invalid array handle provided (0) L 03/14/2013 - 15:50:42: [AMXX] Run time error 10 (plugin "amxbans_main.amxx") (native "ArraySize") - debug not enabled! L 03/14/2013 - 15:50:42: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes). L 03/14/2013 - 15:50:42: [war3ft.amxx] [ERROR] '[CSTRIKE] Invalid player 6' '10' '0' 'Run time error 10 (plugin "war3ft.amxx") (native "cs_get_user_team") - debug not enabled!' L 03/14/2013 - 15:50:42: [CSTRIKE] Invalid player 6 L 03/14/2013 - 15:50:42: [AMXX] Run time error 10 (plugin "war3ft.amxx") (native "log_amx") - debug not enabled! L 03/14/2013 - 15:50:42: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes). L 03/14/2013 - 15:50:42: Invalid array handle provided (0) L 03/14/2013 - 15:50:42: [AMXX] Run time error 10 (plugin "amxbans_main.amxx") (native "ArrayDestroy") - debug not enabled! L 03/14/2013 - 15:50:42: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes). L 03/14/2013 - 15:50:42: [MySQL] Invalid handle: 2 L 03/14/2013 - 15:50:42: [AMXX] Run time error 10 (plugin "amxbans_core.amxx") (native "SQL_FreeHandle") - debug not enabled! L 03/14/2013 - 15:50:42: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes). L 03/14/2013 - 15:50:42: [MySQL] Invalid handle: 3 L 03/14/2013 - 15:50:42: [AMXX] Run time error 10 (plugin "vip.amxx") (native "SQL_FreeHandle") - debug not enabled! L 03/14/2013 - 15:50:42: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes). L 03/14/2013 - 15:50:42: ** Map 'zp_boss_city' ended L 03/14/2013 - 15:50:42: [war3ft.amxx] [ERROR] '[MySQL] Invalid handle: 1' '10' '0' 'Run time error 10 (plugin "war3ft.amxx") (native "SQL_FreeHandle") - debug not enabled!' L 03/14/2013 - 15:50:42: [MySQL] Invalid handle: 1 L 03/14/2013 - 15:50:42: [AMXX] Run time error 10 (plugin "war3ft.amxx") (native "log_amx") - debug not enabled! L 03/14/2013 - 15:50:42: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes). L 03/14/2013 - 15:50:42: Invalid array handle provided (0) L 03/14/2013 - 15:50:42: [AMXX] Run time error 10 (plugin "rcon_defencer.amxx") (native "ArrayDestroy") - debug not enabled! L 03/14/2013 - 15:50:42: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes). L 03/14/2013 - 15:50:42: Invalid array handle provided (0) L 03/14/2013 - 15:50:42: [AMXX] Run time error 10 (plugin "block_advertising.amxx") (native "ArrayDestroy") - debug not enabled! L 03/14/2013 - 15:50:42: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).

The whole source code :

Code:
#include <amxmodx> #include <amxmisc> #include <engine> #include <cstrike> #include <hamsandwich> #include <fakemeta> #include <fun> #include <zombieplague> #include <dhudmessage> #define PLUGIN "[ZS] Alien Boss" #define VERSION "3.0" #define AUTHOR "Remake muxaz" #define ANIM_DUMMY 0 #define ANIM_DEATH 1 #define ANIM_IDLE 2 #define ANIM_WALK 3 #define ANIM_RUN 4 #define ANIM_SHOCKWAVE 5 #define ANIM_JUSTICESWING 6 #define ANIM_MAHADASH 7 #define ALIEN_HEALTH 100000.0 // Жизнь Босса //#define ALIEN_BONUS_KILL 5000 // Бонус для убийства Босса #define ALIEN_ATTACK_DELAY 1.0 // Промежуток между атаками Босса #define ALIEN_ATTACK_DISTANCE 160.0 // Дистанция для атаки Босса #define ALIEN_DASH_DISTANCE 200.0 // Дистанция на каторую Босс прыгает #define ALIEN_JUMP_AFTER_SWING_COUNT 4 // Отсчет между скиллами #define ALIEN_TASK 231211 #define ALIEN_TASK1 113713 #define ALIEN_TASK2 123714 #define ALIEN_TASK3 133715 #define ALIEN_TASK4 143716 // Agression one - 1-ый уровенить агресси #define ALIEN_SPEED_AG1 240 // Скорость Босса при 1 агрессии #define ALIEN_DAMAGE_ATTACK_AG1 200.0 // Урон Босса при 1 агрессии #define ALIEN_DASH_DAMAGE_AG1 150 // Урон Босса при использование скилла в 1 агрессии #define ALIEN_SHOCK_SCREEN_RADIUS_AGRES1 800 // Радиус тряски и урона при волне в 1 агрессии #define ALIEN_SHOCK_SCREEN_DAMAGE_AGRES1 50 // Урон от волны в 1 агрессии // Agression two - 2-ой уровень агресси когда мень 50 % жизни у алиена #define ALIEN_SPEED_AG2 280 // Скорость Босса при 2 агрессии #define ALIEN_DAMAGE_ATTACK_AG2 300.0 // Урон Босса при 2 агрессии #define ALIEN_DASH_DAMAGE_AG2 250 // Урон Босса при использование скилла в 2 агрессии #define ALIEN_SHOCK_SCREEN_RADIUS_AGRES2 500 // Радиус тряски и урона при волне в 1 агрессии #define ALIEN_SHOCK_SCREEN_DAMAGE_AGRES2 300 // Урон от волны в 2 агрессии // Xp Rewards for kill #define RANDOM_XP_MIN   3000 #define RANDOM_XP_MAX   5000 #define npc_classname   "zs_alien" #define npc_model       "models/zombie_plague/boss_alien.mdl" // Модель Босса #define npc_sprite      "sprites/alien_health.spr" // Спрайт жизни Босса #define SPRITE_Z         250 // Высота спрайта жизни new const g_AlienSound[][] = {     "zombie_plague/boss_death.wav",     "zombie_plague/boss_dash.wav",     "zombie_plague/boss_swing.wav",     "zombie_plague/boss_shokwave.wav" } new const g_CountSound[][] = {     "zombie_plague/one.wav",     "zombie_plague/two.wav",     "zombie_plague/three.wav",     "zombie_plague/four.wav",     "zombie_plague/five.wav",     "zombie_plague/six.wav",     "zombie_plague/seven.wav",     "zombie_plague/eight.wav",     "zombie_plague/nine.wav",     "zombie_plague/ten.wav" } enum {     FM_CS_TEAM_UNASSIGNED = 0,     FM_CS_TEAM_T,     FM_CS_TEAM_CT,     FM_CS_TEAM_SPECTATOR } new Float:g_dmg[512] new Float:g_distance[512] new Float:g_lastat[512] new Float:g_atdelay[512] new g_speed[512] new g_moves[512] new g_alive[512] new g_target[512] //new g_reward[512] new g_animrun[512] new g_exprew[512] new g_animattack[512] new g_ability new g_timer new g_game_start new g_can_jump new g_maxplayers new g_pBeam new g_pSprite new g_jump_count[512] new bool:start_swing[512] new bool:start_knock[512] new bool:g_bAlienLevel new spr_blood_drop, spr_blood_spray new g_screenshake new const UNIT_SECOND = (1<<12) // HoLLyWooD #define TASK_CREATE_NPC     123124 #define ALIEN_CREATE_TASK   21341 new Float:g_fUserDamage[33] new g_iRandomSkills = ALIEN_JUMP_AFTER_SWING_COUNT; new bool:g_bChangeLevel = false; // Command for changelevel //new const g_sVoteCommand[] = "amx_map de_cityrush"; new msgID_deathMsg, msgID_sayText; new g_szName[33][32] public plugin_init() {     register_plugin(PLUGIN, VERSION, AUTHOR)     RegisterHam(Ham_Killed, "info_target", "npc_killed");     RegisterHam(Ham_Killed, "player", "player_killed");     RegisterHam(Ham_Think, "info_target", "npc_think");     RegisterHam(Ham_TraceAttack, "info_target", "npc_traceattack");     RegisterHam(Ham_TakeDamage, "info_target", "npc_takedamage")     register_forward(FM_PlayerPreThink, "fw_PlayerPreThink");     register_forward(FM_UpdateClientData, "fwd_UpdateClientData", 1);     register_logevent("round_end", 2, "1=Round_End")     register_event("DeathMsg", "event_death", "ae")     register_clcmd("+attack", "block", g_timer)     g_screenshake = get_user_msgid("ScreenShake")         g_maxplayers = get_maxplayers()         g_pSprite = create_entity("info_target");         entity_set_model(g_pSprite, npc_sprite);         entity_set_int(g_pSprite, EV_INT_rendermode, kRenderTransTexture);     entity_set_float(g_pSprite, EV_FL_renderamt, 0.0);         msgID_deathMsg = get_user_msgid("DeathMsg");     msgID_sayText = get_user_msgid("SayText");         register_message(msgID_deathMsg, "msg_deathMsg") } public plugin_precache() {     new mapname[32]     get_mapname(mapname, charsmax(mapname))         if(equali(mapname, "zp_boss_city"))     {         set_task(15.0, "begin_create_npc", TASK_CREATE_NPC);     }else{         pause("ad");     }         precache_model(npc_model)     precache_model(npc_sprite)     new i;     for(i = 0 ; i < sizeof g_CountSound ; i++)     precache_sound(g_CountSound[i]);     for(i = 0 ; i < sizeof g_AlienSound ; i++)     precache_sound(g_AlienSound[i]);         spr_blood_drop = precache_model("sprites/blood.spr")     spr_blood_spray = precache_model("sprites/bloodspray.spr")     g_pBeam = precache_model( "sprites/shockwave.spr" ) } public block(id)     return PLUGIN_HANDLED; public begin_create_npc(){     spawn_alien(); } public client_connect(id){     g_fUserDamage[id] = 0.0 } public spawn_alien() {       set_task(1.0, "count_start", ALIEN_TASK)     g_timer = 15 //26         set_task(16.0, "create_alien", ALIEN_CREATE_TASK); } public create_alien() {     new Float:origin[3];         // Origins for center map     origin[0] = -27.0     origin[0] = 24.0     origin[2] = 460.0     origin[1] += 50.0         new ent = npc_alien_spawn(1, 1);           set_pev(ent, pev_origin, origin);         start_swing[ent] = false     start_knock[ent] = false     g_ability = false     g_game_start = false     g_jump_count[ent] = 0         origin[2] += SPRITE_Z;         entity_set_origin(g_pSprite, origin);         entity_set_int(g_pSprite, EV_INT_rendermode, kRenderNormal);     entity_set_float(g_pSprite, EV_FL_renderamt, 16.0);         entity_set_float(g_pSprite, EV_FL_frame, 100.0);         g_game_start = true; } public npc_alien_spawn(anim_run, exprew) {     new ent = create_entity("info_target");         if(!ent) return 0;         entity_set_string(ent, EV_SZ_classname, npc_classname);     entity_set_model(ent, npc_model);         entity_set_int(ent, EV_INT_iuser4, 0);     entity_set_int(ent, EV_INT_solid, SOLID_BBOX);     entity_set_int(ent, EV_INT_movetype, MOVETYPE_PUSHSTEP);         entity_set_float(ent, EV_FL_takedamage, 1.0);     entity_set_float(ent, EV_FL_gravity, 1.0);     entity_set_float(ent, EV_FL_health, ALIEN_HEALTH);     entity_set_float(ent, EV_FL_animtime, get_gametime());     entity_set_float(ent, EV_FL_nextthink, get_gametime() + 1.0)         Util_PlayAnimation(ent, ANIM_SHOCKWAVE);     new Float: maxs[3] = { 16.0, 16.0, 60.0 }     new Float: mins[3] = {-16.0, -16.0, -36.0}     entity_set_size(ent, mins, maxs)     g_alive[ent] = 1     g_dmg[ent] = ALIEN_DAMAGE_ATTACK_AG1     g_animrun[ent] = ANIM_RUN     //g_reward[ent] = ALIEN_BONUS_KILL     g_speed[ent] = ALIEN_SPEED_AG1     g_distance[ent] = ALIEN_ATTACK_DISTANCE     g_atdelay[ent] = ALIEN_ATTACK_DELAY     g_lastat[ent] = 0.0     g_exprew[ent] = exprew     g_target[ent] = find_closes_enemy(ent)     set_task(5.0, "update_target", ent)     return ent; } public npc_think(ent) {     if(!is_valid_ent(ent))         return;     static className[32], animation;     animation = 0;     entity_get_string(ent, EV_SZ_classname, className, charsmax(className))     if(!equali(className, npc_classname))         return;         if (!g_bAlienLevel)         if (entity_get_float(ent, EV_FL_health) <= (ALIEN_HEALTH / 2.0))         {             g_bAlienLevel = true;                         g_speed[ent] = ALIEN_SPEED_AG2;             g_dmg[ent] = ALIEN_DAMAGE_ATTACK_AG2;         }         if(g_alive[ent])     {         new Float:vecOrigin[3];                 entity_get_vector(ent, EV_VEC_origin, vecOrigin);                 vecOrigin[2] += SPRITE_Z;                 entity_set_origin(g_pSprite, vecOrigin);                 if(g_game_start)         {             new Float:velocity[3]             pev(ent,pev_velocity,velocity)             velocity[0] += velocity[1] + velocity[2]             if(!is_user_alive(g_target[ent]))                 g_target[ent] = find_closes_enemy(ent)                     new Float:angle[3], Float:zmaim[3]             pev(g_target[ent], pev_origin, zmaim)             aim_at_origin(ent, zmaim, angle)             angle[0] = 0.0             entity_set_vector(ent, EV_VEC_angles, angle)             if(g_target[ent])             {                 new Float:origins[3]                 pev(ent, pev_origin, origins)                 new Float:flDistance = get_distance_f(origins, zmaim)                   if(flDistance> 170.0)                 {                     if(g_moves[ent])                     {                         zmaim[0] += random_num(1, -1) * 80.0                         zmaim[1] += random_num(1, -1) * 80.0                         g_moves[ent] -= 1                     }                     else if(!g_moves[ent] && random_num(1, 5) == 1)                         g_moves[ent] = 20                 }                 if(flDistance <= ALIEN_ATTACK_DISTANCE) g_moves[ent] = 0                 if(flDistance <= g_distance[ent] && get_gametime() - g_lastat[ent] > g_atdelay[ent])                 {                     if(!start_swing[ent] && !start_knock[ent])                     {                         g_lastat[ent] = get_gametime()                                 new anim = ANIM_JUSTICESWING                         Util_PlayAnimation(ent, ANIM_IDLE)                         Util_PlayAnimation(ent, anim)                                                 ExecuteHamB(Ham_TakeDamage, g_target[ent] , 0, 0, g_dmg[ent], DMG_BULLET);                                                 set_task(2.0, "reset_swing", ent + ALIEN_TASK3)                         start_swing[ent] = true                         g_animattack[ent] = anim                                             if(anim == ANIM_JUSTICESWING)                             emit_sound(ent, CHAN_VOICE, g_AlienSound[2], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)                                             if(g_jump_count[ent] < g_iRandomSkills)                             g_jump_count[ent]++                     }                 }                 else                 {                                   new Float:frames                     if(g_animattack[ent] == ANIM_JUSTICESWING) frames = 1.5                             if(get_gametime() - g_lastat[ent] > frames)                     {                         if(flDistance <= g_distance[ent])                             Util_PlayAnimation(ent, ANIM_IDLE)                         else                         {                             if(g_jump_count[ent] == g_iRandomSkills && flDistance <= 400.0)                             {                                 // change skill delay                                 g_iRandomSkills = random_num(2,4);                                                                 if(!task_exists(ent + ALIEN_TASK2) && !task_exists(ent + ALIEN_TASK1))                                 {                                     new task_args[4]                                     task_args[0] = ent                                     task_args[1] = floatround(zmaim[0]*100000, floatround_floor)                                     task_args[2] = floatround(zmaim[1]*100000, floatround_floor)                                     task_args[3] = floatround(zmaim[2]*100000, floatround_floor)                                                                     if(!g_ability)                                     {                                         g_ability = true                                         Util_PlayAnimation(ent, ANIM_MAHADASH)                                         emit_sound(ent, CHAN_VOICE, g_AlienSound[1], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)                                                                         set_task(0.8, "go_jump", ent + ALIEN_TASK1, task_args, 4)                                                                                 animation = 1;                                     }                                     else                                     {                                         if (entity_get_float(ent, EV_FL_health) > (ALIEN_HEALTH / 2))                                         {                                             server_print("--------- 1");                                             Util_PlayAnimation(ent, ANIM_SHOCKWAVE)                                             start_knock[ent] = true                                             set_task(2.1, "go_knock_agres1", ent + ALIEN_TASK1, task_args, 4)                                         }                                         else if (entity_get_float(ent, EV_FL_health) <= (ALIEN_HEALTH / 2))                                         {                                             server_print("--------- 2");                                             Util_PlayAnimation(ent, ANIM_SHOCKWAVE)                                             start_knock[ent] = true                                             set_task(2.1, "go_knock_agres2", ent + ALIEN_TASK1, task_args, 4)                                         }                                                                                 animation = 2;                                     }                                 }                             }                             else                             {                                 ent_move_to(ent, zmaim, g_speed[ent])                                 Util_PlayAnimation(ent, g_animrun[ent])                             }                         }                     }                 }             }             if(!g_target[ent]) Util_PlayAnimation(ent, ANIM_IDLE)         }         else if(g_can_jump)             Util_PlayAnimation(ent, ANIM_IDLE)         else             Util_PlayAnimation(ent, ANIM_IDLE)         if(animation == 1)             entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.8);         else if(animation == 2)             entity_set_float(ent, EV_FL_nextthink, get_gametime() + 2.1);         else             entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.01);     } } public check_dash_damage(ent, id) {     ent = ent - ALIEN_TASK4         for(new i = 0; i < g_maxplayers; i++)     {         if(is_user_alive(i))         {             new Float:range_distance = entity_range(ent, i)             new health = get_user_health(i)                         if(ALIEN_DASH_DISTANCE < floatround(range_distance) < ALIEN_ATTACK_DISTANCE)             {                           if (g_bAlienLevel)                 {                     if(health - ALIEN_DASH_DAMAGE_AG2 > 0)                         set_user_health(i, health - ALIEN_DASH_DAMAGE_AG2)                     else                     {                         user_silentkill(i)                         message_begin(MSG_ALL, get_user_msgid("DeathMsg"))                         write_byte(ent)                         write_byte(i)                         write_byte(0)                         write_string("Boss Alien")                         message_end()                     }                 }                 else                 {                     if(health - ALIEN_DASH_DAMAGE_AG1 > 0)                         set_user_health(i, health - ALIEN_DASH_DAMAGE_AG1)                     else                     {                         user_silentkill(i)                         message_begin(MSG_ALL, get_user_msgid("DeathMsg"))                         write_byte(ent)                         write_byte(i)                         write_byte(0)                         write_string("Boss Alien")                         message_end()                     }                 }             }         }     } } public go_knock_agres1(args[], id) {     new ent = args[0]     new Float:origin[3]         pev(ent,pev_origin,origin)     message_begin(MSG_BROADCAST, SVC_TEMPENTITY );     write_byte(TE_BEAMCYLINDER)     write_coord(floatround(origin[0]))     write_coord(floatround(origin[1]))     write_coord(floatround(origin[2])-16)     write_coord(floatround(origin[0]))     write_coord(floatround(origin[1]))     write_coord(floatround(0.0))     write_short(g_pBeam) // sprite     write_byte(0) // startframe     write_byte(0) // framerate     write_byte(25) // life     write_byte(60) // width     write_byte(0) // noise     write_byte(255) // red     write_byte(255) // green     write_byte(0) // blue     write_byte(200) // brightness     write_byte(0) // speed     message_end()             emit_sound(ent, CHAN_VOICE, g_AlienSound[3], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)         set_task(1.0, "reset_knock", ent + ALIEN_TASK2)     static Float:flOrigin[3] , Float:flDistance , Float:flSpeed     for(new iVictim=1;iVictim <= 32;iVictim++)     {         new health = get_user_health(iVictim)         if(is_user_connected(iVictim) && is_user_alive(iVictim))         {             pev(iVictim, pev_origin, flOrigin)             flDistance = get_distance_f ( origin, flOrigin )               if(flDistance <= ALIEN_SHOCK_SCREEN_RADIUS_AGRES1)             {                 ScreenShake(iVictim)                 flSpeed = 1400.0                                 static Float:flNewSpeed                 flNewSpeed = flSpeed * ( 1.0 - ( flDistance / 1000.0 ) )                 set_user_health(iVictim, health - ALIEN_SHOCK_SCREEN_DAMAGE_AGRES1)                                 static Float:flVelocity [ 3 ]                 get_speed_vector ( origin, flOrigin, flNewSpeed, flVelocity )                                 set_pev ( iVictim, pev_velocity,flVelocity )             }         }     } } public go_knock_agres2(args[], id) {     new ent = args[0]     new Float:origin[3]         pev(ent,pev_origin,origin)     message_begin(MSG_BROADCAST, SVC_TEMPENTITY );     write_byte(TE_BEAMCYLINDER)     write_coord(floatround(origin[0]))     write_coord(floatround(origin[1]))     write_coord(floatround(origin[2])-16)     write_coord(floatround(origin[0]))     write_coord(floatround(origin[1]))     write_coord(floatround(0.0))     write_short(g_pBeam) // sprite     write_byte(0) // startframe     write_byte(0) // framerate     write_byte(10) // life     write_byte(60) // width     write_byte(0) // noise     write_byte(250) // red     write_byte(0) // green     write_byte(0) // blue     write_byte(200) // brightness     write_byte(0) // speed     message_end()             emit_sound(ent, CHAN_VOICE, g_AlienSound[3], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)         set_task(1.0, "reset_knock", ent + ALIEN_TASK2)     static Float:flOrigin[3] , Float:flDistance , Float:flSpeed     for(new iVictim=1;iVictim <= 32;iVictim++)     {         new health = get_user_health(iVictim)         if(is_user_connected(iVictim) && is_user_alive(iVictim))         {             pev(iVictim, pev_origin, flOrigin)             flDistance = get_distance_f ( origin, flOrigin )               if(flDistance <= ALIEN_SHOCK_SCREEN_RADIUS_AGRES2)             {                 ScreenShake(iVictim)                 flSpeed = 1400.0                                 static Float:flNewSpeed                 flNewSpeed = flSpeed * ( 1.0 - ( flDistance / 1000.0 ) )                 set_user_health(iVictim, health - ALIEN_SHOCK_SCREEN_DAMAGE_AGRES2)                                 static Float:flVelocity [ 3 ]                 get_speed_vector ( origin, flOrigin, flNewSpeed, flVelocity )                                 set_pev ( iVictim, pev_velocity,flVelocity )             }         }     } } public ScreenShake(id) {     if(!is_user_alive(id))         return;     message_begin(MSG_ONE_UNRELIABLE, g_screenshake, _, id)     write_short(UNIT_SECOND*7) // amplitude     write_short(UNIT_SECOND*5) // duration     write_short(UNIT_SECOND*15) // frequency     message_end() } public reset_knock(ent) {     ent = ent - ALIEN_TASK2         start_knock[ent] = false     g_ability = false     g_jump_count[ent] = 0 } public go_jump(args[]) {     new ent = args[0]     new Float:zmaim[3]         zmaim[0]=float(args[1]/100000)     zmaim[1]=float(args[2]/100000)     zmaim[2]=float(args[3]/100000)         ent_jump_to(ent, zmaim, 1700)         g_can_jump = true         set_task(0.6, "check_dash_damage", ent + ALIEN_TASK4)     set_task(1.4, "reset_jump", ent + ALIEN_TASK2) } public reset_swing(ent) {     ent = ent - ALIEN_TASK3     start_swing[ent] = false } public reset_jump(ent) {     ent = ent - ALIEN_TASK2     g_jump_count[ent] = 0     set_task(0.5, "reset_time", ent + 55555) } public reset_time()     g_can_jump = false public zp_user_infected_pre(id, inflector, nemesis){     zp_disinfect_user(id, 1);     return ZP_PLUGIN_HANDLED; } public zp_user_infect_attempt(id, inflector, nemesis){     zp_disinfect_user(id, 1);     return ZP_PLUGIN_HANDLED; }     public npc_takedamage(ent, inflictor, attacker, Float:damage, damage_type) {     if(!is_user_alive(attacker) || !is_valid_ent(ent))         return;     new className[32];     entity_get_string(ent, EV_SZ_classname, className, charsmax(className))     if(!equali(className, npc_classname) || !g_alive[ent])         return;         g_fUserDamage[attacker] += damage;         //client_print(attacker, print_center, "%f" , g_fUserDamage[attacker]);     if(g_fUserDamage[attacker] >= 2000){         g_fUserDamage[attacker] -= 2000;                 zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker)+1);     }         entity_set_float(g_pSprite, EV_FL_frame, entity_get_float(ent, EV_FL_health) / (ALIEN_HEALTH / 100.0)); } public fw_PlayerPreThink(id) {     if(cs_get_user_team(id) == CS_TEAM_T)         cs_set_user_team(id, CS_TEAM_CT) } public force_team(id) {     engclient_cmd(id, "jointeam", "2", "3") } public npc_traceattack(ent, attacker, Float: damage, Float: direction[3], trace, damageBits) {     if(!is_valid_ent(ent) || !g_alive[ent])         return;     new className[32];     entity_get_string(ent, EV_SZ_classname, className, charsmax(className))     if(!equali(className, npc_classname) || !g_alive[ent])         return;     new Float: end[3]     get_tr2(trace, TR_vecEndPos, end);     message_begin(MSG_BROADCAST, SVC_TEMPENTITY)     write_byte(TE_BLOODSPRITE)     engfunc(EngFunc_WriteCoord, end[0])     engfunc(EngFunc_WriteCoord, end[1])     engfunc(EngFunc_WriteCoord, end[2])     write_short(spr_blood_spray)     write_short(spr_blood_drop)     write_byte(247)     write_byte(random_num(5, 10))     message_end() } public player_killed(ent, attacker) {       for(new id=1;id<g_maxplayers;id++)     {         if(is_user_alive(id))             return;     }         begin_changelevel();     client_print(0, print_chat, "All people are dead. Mapchange is starting!"); } public npc_killed(ent, attacker) {     new className[32];     new clientName[64];     get_user_name(attacker, clientName, 63);     new random = random_num(RANDOM_XP_MIN,RANDOM_XP_MAX);     entity_get_string(ent, EV_SZ_classname, className, charsmax(className))     if(!equali(className, npc_classname) || !g_alive[ent])         return HAM_IGNORED;     g_alive[ent] = 0     Util_PlayAnimation(ent, ANIM_DEATH);     emit_sound(ent, CHAN_VOICE, g_AlienSound[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)     remove_task(ent)     set_pev(ent, pev_solid, SOLID_NOT)     set_task(4.5, "npc_remove", ent)     entity_set_int(ent, EV_INT_iuser4, 1);     //cs_set_user_money(attacker, cs_get_user_money(attacker) + g_reward[ent])         server_cmd( "wc3_givexp %s %d", clientName, random );           zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + random_num(40,60));         entity_set_int(g_pSprite, EV_INT_rendermode, kRenderTransTexture);     entity_set_float(g_pSprite, EV_FL_renderamt, 0.0);         begin_changelevel();         client_print(0, print_chat, "Boss is dead! Mapchange is starting soon!");     return HAM_SUPERCEDE; } public round_end() {       remove_task(ALIEN_TASK)     remove_task(ALIEN_TASK1)     remove_task(ALIEN_TASK2)     remove_task(ALIEN_TASK3)     remove_task(ALIEN_TASK4)     g_game_start = false         begin_changelevel(); } public event_death(id) {     static ent = -1;         while ((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", npc_classname)) != 0)     {         if(g_target[ent] == id)             g_target[ent] = find_closes_enemy(ent)     }     client_cmd(id, "stopsound")         new iVictim = read_data(2)     new iKiller = read_data(1)     new iHS = read_data(3)     new szWeapon[24]     read_data(4, szWeapon, 23)         if(!is_user_connected(iVictim))     {         do_deathmsg(iKiller, iVictim, iHS, szWeapon)         return PLUGIN_CONTINUE     }         if(!is_user_connected(iKiller) && iKiller != ent)     {         do_deathmsg(iKiller, iVictim, iHS, szWeapon)         return PLUGIN_CONTINUE     }         if(iKiller != iVictim && iKiller == ent)     {               new iNewKiller         for(new i = 1; i < g_maxplayers; i++){             if(is_user_connected(i) && i != iVictim && !is_user_admin(id))             {                 iNewKiller = i;                 break;             }         }                 if(!iNewKiller || iNewKiller == iKiller)         {             do_deathmsg(iVictim, iVictim, iHS, szWeapon)             return PLUGIN_HANDLED;         }                 new szName[32];         get_user_name(iNewKiller, szName, 31)         g_szName[iNewKiller] = szName         set_msg_block(msgID_sayText, BLOCK_ONCE);         set_user_info(iNewKiller, "name", "ALIEN BOSS");                 new args[4]         args[0] = iVictim         args[1] = iNewKiller         args[2] = iHS                 set_task(0.01, "player_diePost", 0, args, 3)     }     else     {         do_deathmsg(iVictim, iVictim, iHS, szWeapon)     }         return PLUGIN_CONTINUE; } public player_diePost(arg[]) {     new szWeapon[24] = "allien_boss_attack";     new iKiller = arg[1]         new CsTeams:tempteam = cs_get_user_team(iKiller);     cs_set_user_team(iKiller, CS_TEAM_T);         do_deathmsg(iKiller, arg[0], arg[2], szWeapon)         cs_set_user_team(iKiller, tempteam);     set_msg_block(msgID_sayText, BLOCK_ONCE)     set_user_info(iKiller, "name", g_szName[iKiller])     return PLUGIN_CONTINUE } public npc_remove(ent) {       remove_task(ALIEN_TASK)     remove_task(ALIEN_TASK1)     remove_task(ALIEN_TASK2)     remove_task(ALIEN_TASK3)     remove_task(ALIEN_TASK4)         remove_entity(ent)     remove_task(ent)         g_jump_count[ent] = 0     g_game_start = false } public count_start(ent) {     g_timer = g_timer - 1         if(g_timer > 0)         client_print(0, print_center, "The game will start in %d.", g_timer)         if(g_timer < 11)         client_cmd(0, "spk zombie_plague/vox/%d", g_timer)         if(g_timer >= 0)         set_task(1.0, "count_start", ALIEN_TASK)             if(g_timer == 0)     {         client_print(0, print_center, "Alien Boss has arrived~~!")         g_game_start = true     } } public update_target(ent) {     if(!is_valid_ent(ent))         return;     g_target[ent] = find_closes_enemy(ent)     set_task(5.0, "update_target", ent) } public msg_deathMsg()     return PLUGIN_HANDLED; public begin_changelevel(){     g_bChangeLevel = true;         new ent;     if((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", npc_classname)) != 0)         npc_remove(ent);         for(new id=1; id<g_maxplayers; id++)     {         if(is_user_alive(id))         {             set_pev(id, pev_velocity, 1.0);             set_pev(id, pev_maxspeed, 1.0);         }     }         server_cmd("amx_map zm_toxic_house2"); } public fwd_UpdateClientData(id, weapons, cd) {     if(id < 0 || id > g_maxplayers)         return FMRES_IGNORED             if(g_bChangeLevel)     {         set_cd(cd, CD_flNextAttack, 0.5)         set_cd(cd, CD_MaxSpeed, 1.0)         return FMRES_HANDLED     }         return FMRES_IGNORED } stock do_deathmsg(iKiller, iVictim, iHS, const szWeapon[]) {     message_begin(MSG_ALL, msgID_deathMsg)     write_byte(iKiller)     write_byte(iVictim)     write_byte(iHS)     write_string(szWeapon)     message_end() } stock find_closes_enemy(ent) {     new enemy, Float:dist, Float:distmin, Float:origin[3], Float:originT[3]     pev(ent, pev_origin, origin)     origin[2] += 120.0         for(new id=1; id<=32; id++)     {         if (!is_user_alive(id)) continue;         dist = entity_range(ent, id)         pev(id, pev_origin, originT)         if ((!distmin || dist <= distmin))         {             distmin = dist             enemy = id         }     }       return enemy } stock ent_move_to(ent, Float:target[3], speed) {     static Float:vec[3]     aim_at_origin(ent, target, vec)     engfunc(EngFunc_MakeVectors, vec)     global_get(glb_v_forward, vec)     vec[0] *= speed     vec[1] *= speed     vec[2] *= speed * 0.1     set_pev(ent, pev_velocity, vec)             new Float:angle[3]     aim_at_origin(ent, target, angle)     angle[0] = 0.0     entity_set_vector(ent, EV_VEC_angles, angle) } stock ent_jump_to(ent, Float:target[3], speed) {     static Float:vec[3]     aim_at_origin(ent, target, vec)     engfunc(EngFunc_MakeVectors, vec)     global_get(glb_v_forward, vec)     vec[0] *= speed     vec[1] *= speed     vec[2] *= speed * 0.1     set_pev(ent, pev_velocity, vec)             new Float:angle[3]     aim_at_origin(ent, target, angle)     angle[0] = 0.0     entity_set_vector(ent, EV_VEC_angles, angle)     } stock aim_at_origin(id, Float:target[3], Float:angles[3]) {     static Float:vec[3]     pev(id, pev_origin, vec)     vec[0] = target[0] - vec[0]     vec[1] = target[1] - vec[1]     vec[2] = target[2] - vec[2]     engfunc(EngFunc_VecToAngles, vec, angles)     angles[0] *= -1.0, angles[2] = 0.0 } stock get_speed_vector(const Float:origin1[3], const Float:origin2[3], Float:speed, Float:new_velocity[3]) {     new_velocity[0] = origin2[0] - origin1[0]     new_velocity[1] = origin2[1] - origin1[1]     new_velocity[2] = origin2[2] - origin1[2]     new Float:num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2]))     new_velocity[0] *= num     new_velocity[1] *= num     new_velocity[2] *= num             return 1; } stock Util_PlayAnimation(index, sequence, Float: framerate = 1.0) {     if(entity_get_int(index, EV_INT_sequence) == sequence) return;     entity_set_float(index, EV_FL_animtime, get_gametime());     entity_set_float(index, EV_FL_framerate, framerate);     entity_set_float(index, EV_FL_frame, 0.0);     entity_set_int(index, EV_INT_sequence, sequence); } stock bool:is_hull_vacant(const Float:origin[3], hull,id) {     static tr     engfunc(EngFunc_TraceHull, origin, origin, 0, hull, id, tr)     if (!get_tr2(tr, TR_StartSolid) || !get_tr2(tr, TR_AllSolid))     return true     return false } stock fm_set_user_health(id, health) {     (health > 0) ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id); }

Last edited by Podarok; 03-15-2013 at 00:55.
Podarok is offline
wickedd
Veteran Member
Join Date: Nov 2009
Old 03-14-2013 , 18:13   Re: Help me
Reply With Quote #2

Remove the code and attach the .sma.
__________________
Just buy the fucking game!!!!
I hate No-Steamers and lazy ass people.
wickedd is offline
ConnorMcLeod
Veteran Member
Join Date: Jul 2006
Location: France (95)
Old 03-14-2013 , 19:00   Re: Help me
Reply With Quote #3

Use get_players to loop players.
velocity is a vector, so :

set_pev(id, pev_velocity, 1.0);

is wrong.
__________________
- tired and retired -

- my plugins -
ConnorMcLeod is offline
Podarok
BANNED
Join Date: Jan 2011
Location: Narnia
Old 03-15-2013 , 00:59   Re: Help me
Reply With Quote #4

Got it. Thanks Connor. Could you please look through the code abd tell what is causing the crash? Because crash is very weird, shows some Invalid Array Handle and SQL errors.


EDIT : removed velocity and for cycle at all (no need in them) still crashing , please help!

Last edited by Podarok; 03-15-2013 at 16:10.
Podarok is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 21:50.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode