Hello!
I was trying to make a C4 for my mod. Once you press USE, a C4 pack appears on the ground. When you press it again, it explodes.
It works well but sometimes it crashes and I have no idea why. Can someone rescribe me the function to make it well working?
PHP Code:
public Bug_Ciche_Chodzenie(id)
{
new szNoMines[128], szNoC4[128];
formatex(szNoMines, charsmax(szNoMines), "%L", LANG_PLAYER, "MSG_NOMINES");
formatex(szNoC4, charsmax(szNoC4), "%L", LANG_PLAYER, "MSG_NOC4");
if(is_user_alive(id))
{
new Float:fVector[3];
pev(id, pev_velocity, fVector);
new Float: fSpeed = floatsqroot(fVector[0]*fVector[0]+fVector[1]*fVector[1]+fVector[2]*fVector[2]);
if((fm_get_user_maxspeed(id) * 5) > (fSpeed*9))
set_pev(id, pev_flTimeStepSound, 300);
if(is_user_alive(id)){
new buttons = pev(id, pev_button) // buttons in current frame
new oldbuttons = pev(id, pev_oldbuttons) // buttons in previous frame
if( buttons & IN_USE && !(oldbuttons & IN_USE))
{
if(equipment2[id] == 6)
{
if (!ilosc_min_gracza[id])
{
client_print(id, print_center, szNoMines);
}
else
{
new Float:origin[3];
entity_get_vector(id, EV_VEC_origin, origin);
new ent = create_entity("info_target");
entity_set_string(ent ,EV_SZ_classname, "claymore");
entity_set_edict(ent ,EV_ENT_owner, id);
entity_set_int(ent, EV_INT_movetype, MOVETYPE_TOSS);
entity_set_origin(ent, origin);
entity_set_int(ent, EV_INT_solid, SOLID_BBOX);
entity_set_model(ent, modelMiny);
entity_set_size(ent,Float:{-16.0,-16.0,0.0},Float:{16.0,16.0,2.0});
drop_to_floor(ent);
ilosc_min_gracza[id]--;
}
}
else if(equipment2[id] == 4)
{
if(!ilosc_dynamitow_gracza[id])
{
client_print(id, print_center, szNoC4);
}
else{
{
static dynamit_gracza[33];
if(is_valid_ent(dynamit_gracza[id]))
{
ilosc_dynamitow_gracza[id]--;
new Float:fOrigin[3];
entity_get_vector(dynamit_gracza[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_dynamit);
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] + 250 );
write_coord( iOrigin[2] + 250 );
write_short( sprite_white_dynamit );
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(dynamit_gracza[id], "player", 250.0 , entlist, 32);
new pid;
for (new i=0; i<numfound; i++)
{
pid = entlist[i];
if (is_user_alive(pid))
ExecuteHamB(Ham_TakeDamage, pid, dynamit_gracza[id], id, 200.0, (1<<24));
}
remove_entity(dynamit_gracza[id]);
}
else
{
new Float:origin[3];
entity_get_vector(id, EV_VEC_origin, origin);
dynamit_gracza[id] = create_entity("info_target");
entity_set_string(dynamit_gracza[id], EV_SZ_classname, "C4");
entity_set_edict(dynamit_gracza[id], EV_ENT_owner, id);
entity_set_int(dynamit_gracza[id], EV_INT_movetype, MOVETYPE_TOSS);
entity_set_origin(dynamit_gracza[id], origin);
entity_set_int(dynamit_gracza[id], EV_INT_solid, SOLID_BBOX);
entity_set_model(dynamit_gracza[id], "models/wiwi249_bf3/w_c4.mdl");
entity_set_size(dynamit_gracza[id], Float:{-16.0,-16.0,0.0}, Float:{16.0,16.0,2.0});
drop_to_floor(dynamit_gracza[id]);
}
}
}
}
}
}
}
}
Bug_Ciche_Chodzenie is a Fakemeta Client_PreThink function.
Regs, looking forward for your help.