help me smart guyZ. in create_lasermine i need new think for vectors because when mine is active the vector is immobile.I need to update it each second . in Mine_Activate func there is nextthink stuff> I tried to add it to create lasermine but without success
these vectors
PHP Code:
vBeamEnd[0] = vNewOrigin[0] + random_num(-150,150) vBeamEnd[1] = vNewOrigin[1] + 150 vBeamEnd[2] = vNewOrigin[2] + 150
new Float:vTracedBeamEnd[3] trace_line(-1, vNewOrigin, vBeamEnd, vTracedBeamEnd) entity_set_vector(Mine, EV_VEC_vuser1, vTracedBeamEnd)
I need to set that vector each second it should use new direction each time (update itselft with random_num(-150,150)
PHP Code:
public Create_Mine(id) { new Mine = create_entity("info_target") if(is_valid_ent(Mine)) { if(g_PlayerMines[id] <= 0) { client_print(id,3,"You have reached the maximum") return PLUGIN_HANDLED_MAIN } entity_set_string(Mine, EV_SZ_classname, "lasermine") entity_set_int(Mine, EV_INT_movetype, MOVETYPE_FLY) entity_set_int(Mine, EV_INT_solid, SOLID_NOT) entity_set_model(Mine, "models/v_tripmine.mdl") entity_set_float(Mine, EV_FL_frame, 0.0) entity_set_int(Mine, EV_INT_body, 3) entity_set_int(Mine, EV_INT_sequence, 7) entity_set_float(Mine, EV_FL_framerate, 0.0)
entity_set_float(Mine, EV_FL_takedamage, 1.0) entity_set_float(Mine, EV_FL_dmg, 100.0) entity_set_float(Mine, EV_FL_health, float(MINE_HEALTH))
entity_set_int(Mine, EV_INT_iuser2, 0)
new Float:MinBox[3] = {-8.0, -8.0, -8.0} new Float:MaxBox[3] = {8.0, 8.0, 8.0} entity_set_size(Mine, MinBox, MaxBox)
new Float:vOrigin[3] entity_get_vector(id, EV_VEC_origin, vOrigin) new Float:flVelocity[3] VelocityByAim(id, 64, flVelocity)
new Float:vTraceEnd[3] vTraceEnd[0] = flVelocity[0] + vOrigin[0] vTraceEnd[1] = flVelocity[1] + vOrigin[1] vTraceEnd[2] = flVelocity[2] + vOrigin[2]
new Float:vTraceResult[3] trace_line(id, vOrigin, vTraceEnd, vTraceResult)
new Float:vNormal[3] if(trace_normal(id, vOrigin, vTraceEnd, vNormal) < 1) { remove_entity(Mine) client_print(id, print_chat, "You must plant the Laser mine on a wall") return PLUGIN_HANDLED_MAIN } new Float:vNewOrigin[3] vNewOrigin[0] = vTraceResult[0] + (vNormal[0] * 8.0) vNewOrigin[1] = vTraceResult[1] + (vNormal[1] * 8.0) vNewOrigin[2] = vTraceResult[2] + (vNormal[2] * 8.0) entity_set_origin(Mine, vNewOrigin) new Float:vMineAngles[3] vector_to_angle(vNormal, vMineAngles) entity_set_vector(Mine, EV_VEC_angles, vMineAngles) new Float:vBeamEnd[3] vBeamEnd[0] = vNewOrigin[0] + random_num(-150,150) vBeamEnd[1] = vNewOrigin[1] + 150 vBeamEnd[2] = vNewOrigin[2] + 150 new Float:vTracedBeamEnd[3] trace_line(-1, vNewOrigin, vBeamEnd, vTracedBeamEnd) entity_set_vector(Mine, EV_VEC_vuser1, vTracedBeamEnd) emit_sound(Mine, CHAN_WEAPON, "weapons/mine_deploy.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) emit_sound(Mine, CHAN_ITEM, "weapons/mine_charge.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) new PlayerTeam = get_user_team(id) entity_set_int(Mine, MINE_INT_TEAM, PlayerTeam) entity_set_int(Mine, MINE_OWNER, id) client_print(id, print_chat, "Planted mine") client_print(id, print_chat, "%d mines left", g_PlayerMines[id] - 1) g_PlayerMines[id] -= 1 new param[1] param[0] = Mine set_task(1.5, "Mine_Activate", 0, param, 1) } return PLUGIN_HANDLED_MAIN }
public Mine_Activate(param[]) { new Mine = param[0] if(is_valid_ent(Mine)) { entity_set_int(Mine, EV_INT_iuser2, 1) entity_set_int(Mine, EV_INT_solid, 2) entity_set_float(Mine, EV_FL_nextthink, halflife_time() + 0.1) emit_sound(Mine, CHAN_ITEM, "weapons/mine_activate.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) } }
public Lasermine_Think(Mine) { if(is_valid_ent(Mine)) { new TeamColor[3], MineTeam = entity_get_int(Mine, MINE_INT_TEAM) switch(MineTeam) { case 1: { TeamColor[0] = 255 TeamColor[1] = 0 TeamColor[2] = 0 } case 2: { TeamColor[0] = 0 TeamColor[1] = 0 TeamColor[2] = 255 } } new Float:vOrigin[3], Float:vEnd[3] entity_get_vector(Mine, EV_VEC_origin, vOrigin) entity_get_vector(Mine, EV_VEC_vuser1, vEnd) message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(0) write_coord(floatround(vOrigin[0])) write_coord(floatround(vOrigin[1])) write_coord(floatround(vOrigin[2])) write_coord(floatround(vEnd[0])) write_coord(floatround(vEnd[1])) write_coord(floatround(vEnd[2])) write_short(beam) write_byte(0) write_byte(0) write_byte(3) write_byte(5) write_byte(0) write_byte(TeamColor[0]) write_byte(TeamColor[1]) write_byte(TeamColor[2]) write_byte(255) write_byte(0) message_end() if(entity_get_int(Mine, EV_INT_iuser2) == 1) { if(entity_get_float(Mine, EV_FL_health) <= 50) { Detonate_Mine(Mine) } else { new Float:vOrigin[3], Float:vEnd[3] entity_get_vector(Mine, EV_VEC_origin, vOrigin) entity_get_vector(Mine, EV_VEC_vuser1, vEnd) new Float:vTrace[3], id = trace_line(Mine, vOrigin, vEnd, vTrace) if(is_user_connected(id) && is_user_alive(id)) { new bool:doDamage new VictimTeam = get_user_team(id) new MineTeam = entity_get_int(Mine, MINE_INT_TEAM) new FriendlyFire = get_cvar_num("mp_friendlyfire") switch(FriendlyFire) { case 0: { if(VictimTeam != MineTeam) { doDamage = true } else { doDamage = false } } case 1: doDamage = true } if(doDamage) { new VictimHealth = get_user_health(id) new Damage = VictimHealth - get_pcvar_num(minedamage) if(Damage <= 0) { new MineOwner = entity_get_int(Mine, MINE_OWNER) Create_Kill(id, MineOwner, "Lasermine") } else { set_user_health(id, Damage) message_begin(MSG_ONE_UNRELIABLE, g_msgDamage, {0, 0, 0}, id) write_byte(get_pcvar_num(minedamage)) write_byte(get_pcvar_num(minedamage)) write_long(DMG_ACID) write_coord(floatround(vOrigin[0])) write_coord(floatround(vOrigin[1])) write_coord(floatround(vOrigin[2])) message_end() } emit_sound(id, CHAN_WEAPON, "debris/beamstart9.wav", 1.0, ATTN_NORM, 0, PITCH_NORM) } } } } } entity_set_float(Mine, EV_FL_nextthink, halflife_time() + 0.01) }
__________________
VDS in Europe 1 gb/s unmetered.Any configurations.
I accept Paypal, Moneybookers,etc
Last edited by avril-lavigne; 03-07-2013 at 07:04.
|