Page 1 of 2

Error deathhmsg3!

Posted: 2011 May 01 20:03
by nuodas159

Code: Select all

L 05/01/2011 - 20:10:53: [AMXX] Displaying debug trace (plugin "xaxaxa.amxx")L 05/01/2011 - 20:10:53: [AMXX] Run time error 4: index out of bounds L 05/01/2011 - 20:10:53: [AMXX]    [0] xaxaxa.sma::event_deathmsg3 (line 1300)

Gal galetum istaisyti? +karma

Code: Select all

g_timeleft[id] = get_pcvar_num(cvar_time)

Re: Error deathhmsg3!

Posted: 2011 May 01 20:28
by hleV
Kažkas su [id] matyt.

Re: Error deathhmsg3!

Posted: 2011 May 01 20:39
by nuodas159
Tai kaip istaisyti?

Re: Error deathhmsg3!

Posted: 2011 May 01 23:33
by hleV
Ką žn. Nematau kaip sukūrei tą g_timeleft[] nei iš kur id gauni.

Re: Error deathhmsg3!

Posted: 2011 May 01 23:37
by aaarnas
index out of bound iškyla tada, kai kreipiesi į neegzistuojantį masyvo elementą. Tarkim turi masyvą su 33 elementais (0-32) ir kreipiesi į 45. Tokio juk nėra.
Iš funkcijos pavadinimo sprendžiu, kad id, tai nužudytojo id, tad nužudytojas gali būti ne tik žaidėjas, bet ir koks nors pasaulio objektas. Parodyk visą funkciją, tada bus galima tiksliau pasakyti.

Re: Error deathhmsg3!

Posted: 2011 May 02 14:15
by nuodas159

Code: Select all

public event_deathmsg3(id, player){    new victim = read_data(2)    new attacker = read_data(1)        new iplayersID[32];    new xPlayers;    get_players(iplayersID, xPlayers, "a");    new origin[3];    get_user_origin( victim, origin );        new targetorigin[3], i, distancebetween    for ( i = 0; i < xPlayers; ++i )    {        attacker = iplayersID[i]        get_user_origin ( attacker, targetorigin );        distancebetween = get_distance ( origin, targetorigin );        if ( ( distancebetween < 200 ) && gInfected[victim] && get_user_team(victim) == 1 && iClass[victim] == 2 && get_user_team(attacker) != get_user_team(victim))        {            new iOrigin[ 3 ];            get_user_origin( victim, iOrigin );                    new gmsgShake = get_user_msgid("ScreenShake")                 message_begin(MSG_ONE, gmsgShake, _, attacker)            write_short(255<< 14 ) //ammount             write_short(5 << 14) //lasts this long                 write_short(255<< 14) //frequency             message_end()                                    message_begin(MSG_ONE, g_msgScreenFade, _, attacker);        write_short(4096 * 3);            write_short(4096 * 3);        write_short(4096);          write_byte(0);        write_byte(220);        write_byte(0);        write_byte(220);            message_end();             Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, 0, 255, 0, 100, 0 );                 emit_sound(attacker, CHAN_BODY, g_boomer_boom, 1.0, ATTN_NORM, 0, PITCH_NORM);        }        else if ( ( distancebetween < 200 ) && gInfected[victim] && get_user_team(victim) == 1 && iClass[victim] == 5 && get_user_team(attacker) != get_user_team(victim))        {            new iOrigin[ 3 ];            get_user_origin( victim, iOrigin );             new gmsgShake = get_user_msgid("ScreenShake")                 message_begin(MSG_ONE, gmsgShake, _, attacker)            write_short(255<< 14 ) //ammount             write_short(5 << 14) //lasts this long                 write_short(255<< 14) //frequency             message_end()                  message_begin(MSG_ONE, g_msgScreenFade, _, attacker);                write_short(4096 * 3);                write_short(4096 * 3);                write_short(4096);                write_byte(150);                write_byte(0);                write_byte(0);                write_byte(220);                message_end();             static id            id = read_data(2)        ExecuteHam(Ham_TakeDamage, attacker, victim, victim, 20.0, DMG_ACID);        set_task(get_pcvar_float(cvar_time), "respawnag", victim)        g_timeleft[id] = get_pcvar_num(cvar_time)            set_task(1.0, "count", TID_RESP+id)            set_hudmessage( 200, 0, 0, -1.0, 0.29, 1, 6.0, 12.0 )            format(g_msg, 63, "You will respawn in %d seconds.", g_timeleft[id])            ShowSyncHudMsg(id, g_HudSync, g_msg)             Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, 255, 0, 0, 100, 0 );        }        else if( ( distancebetween > 200 ) && gInfected[victim] && iClass[victim] == 2)        {            new iOrigin[ 3 ];            get_user_origin( victim, iOrigin );             Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, 0, 255, 0, 100, 0 );        }        else if( ( distancebetween > 200 ) && gInfected[victim] && iClass[victim] == 5)        {            new iOrigin[ 3 ];            get_user_origin( victim, iOrigin );             Create_BeamCylinder( iOrigin, 120, gCylinderSprite, 0, 0, 6, 16, 0, 255, 0, 0, 100, 0 );        }    }}  

Re: Error deathhmsg3!

Posted: 2011 May 02 14:48
by aaarnas
Pala, pala. Parodyk dar kaip registrutas event_deathmsg3 forwardas.

Re: Error deathhmsg3!

Posted: 2011 May 02 15:01
by nuodas159

Code: Select all

register_event("DeathMsg", "event_deathmsg3", "a")
Tik tas tiera

Re: Error deathhmsg3!

Posted: 2011 May 02 15:22
by hleV
Nu ir supistas tas kodas.

Re: Error deathhmsg3!

Posted: 2011 May 02 15:35
by nuodas159
Tai ka daryti man? :D Istaisyti noriu as sita error.