local ROOT = getroottable() IncludeScript("nopey_lib", ROOT) IncludeScript("popextensions/constants", ROOT) // IncludeScript("popextensions/botbehavior", ROOT) //IncludeScript("NavAreaBuildPath", ROOT) foreach(k, v in ::NetProps.getclass()) if (k != "IsValid" && !(k in ROOT)) ROOT[k] <- ::NetProps[k].bindenv(::NetProps) foreach(k, v in ::Entities.getclass()) if (k != "IsValid" && !(k in ROOT)) ROOT[k] <- ::Entities[k].bindenv(::Entities) if("metest" in ROOT) return ::metest <- { function OnGameEvent_recalculate_holidays(_) { if(GetRoundState() == 3) { clean() } } function OnGameEvent_player_spawn(params) { local hPlayer = GetPlayerFromUserID(params.userid) if (hPlayer.IsFakeClient()) { CreateTimer(function() { if (hPlayer.HasBotTag("jbirds_pro_sniper")) { metest.assign(hPlayer) } }, 0.2) printl("this runs") } else { } } function OnGameEvent_player_death(params) { local hPlayer = GetPlayerFromUserID(params.userid) } function OnGameEvent_player_hurt(params) { local hPlayer = GetPlayerFromUserID(params.userid) foreach (k, v in params) printl(k + " " + v) } function assign(hBot) { printl("assign: " + hBot) ListOfProSnipers.append( ProSniperBot(hBot) ) } function ChangeBotAttributes() { EntFire("point_populator_interface", "ChangeBotAttributes", "Uber1") } function ChangeBotAttributes_saw() { EntFire("point_populator_interface", "ChangeBotAttributes", "Saw1") } function list() { printl(MedicOne) printl(MedicTwo) } function show() { foreach (pair in ListOfPairs) pair.showMember() } function showme() { printl(ListOfPairs.len()) } function clean() { foreach (player in findAllPlayer()) { player.TerminateScriptScope() } delete ::metest //if ( hMarker != null ) // hMarker.TerminateScriptScope() } a = [1, 2, 3] function show2() { local index = 2 CreateTimer(function() {printl("hi") printl(uberchain.a[index])}, 1) } function test(int) { //NetProps.SetPropVector(findRandomPlayer(), "pl.v_angle", VectorAngles(birded.ListOfBirds[0].hOwner.GetBoneOrigin(int) - findRandomPlayer().EyePosition()) + Vector()) } function mission(int, bool = true) { ListOfProSnipers[0].setmission(int, bool) } function find( pos = Vector() ) { printl("class num: " + birded.ListOfBirds[0].hOwner.GetPlayerClass()) local tray = head_data[birded.ListOfBirds[0].hOwner.GetPlayerClass()] local middlePoint = ( tray.mins + tray.maxs ) * (0.5) printl("middlePoint: " + middlePoint) local boneIndex = birded.ListOfBirds[0].hOwner.LookupBone("bip_head") printl(boneIndex) printl("boneIndex: " + boneIndex) printl("tray.bone: " + tray.bone) //bot.GetLocomotionInterface().FaceTowards(birded.ListOfBirds[0].hOwner.GetBoneOrigin(tray.bone) - middlePoint) local rotation = birded.ListOfBirds[0].hOwner.EyeAngles() rotation.x = 0 local middle = RotatePosition( Vector(), rotation, tray.middle ) //local des = birded.ListOfBirds[0].hOwner.GetBoneOrigin(tray.bone) + middle local vec = birded.ListOfBirds[0].hOwner.GetBoneOrigin(tray.bone) + middle // + middlePoint //local vec = birded.ListOfBirds[0].hOwner.EyePosition() //rcon script findRandomPlayer().SnapEyeAngles(VectorAngles(birded.ListOfBirds[0].hOwner.GetBoneOrigin(10) - findRandomPlayer().EyePosition())) findRandomPlayer().SnapEyeAngles(VectorAngles(vec - findRandomPlayer().EyePosition() + pos)) } function pose(dir = Vector()) { birded.ListOfBirds[0].hOwner.SnapEyeAngles(VectorAngles(dir)) birded.ListOfBirds[0].hOwner.SetAbsOrigin(birded.ListOfBirds[0].hOwner.GetOrigin() + Vector(0,0,30)) //birded.ListOfBirds[0].hOwner.SetAbsOrigin(birded.ListOfBirds[0].hOwner.GetOrigin() + Vector(0,0,30)) //SetPropInt(birded.ListOfBirds[0].hOwner, "m_afButtonForced", IN_DUCK) } ListOfProSnipers = [] ListOfRedSnipers = [] MedicOne = null MedicTwo = null text = "m_hMyWeapons" text2 = "m_flNextPrimaryAttack" text3 = "m_flFirstPrimaryAttack" text9 = "m_flNextSecondaryAttack" text10 = "m_afButtonDisabled" text11 = "m_Shared.m_flChargeMeter" text12 = "m_iStunFlags" text13 = "m_iTeamNum" text14 = "m_nForcedSkin" text15 = "m_bForcedSkin" text16 = "m_bJumping" text17 = "is_a_sword" text4 = "m_flLastFireTime" text5 = "m_bDucked" text6 = "m_bDuckToggled" text7 = "m_afButtonForced" text8 = "m_nButtons" //rcon script GetPropEntityArray(findRandomPlayer(), metest.text, 0).PrimaryAttack() //rcon script NetProps.SetPropFloat(GetPropEntityArray(findRandomPlayer(), metest.text, 0), metest.text2, 0) //rcon script printl(NetProps.GetPropFloat(GetPropEntityArray(findRandomPlayer(), metest.text, 0), metest.text2)) //bind q"rcon script metest.pose(Vector(1,0,-1))";bind e"rcon script metest.find(Vector(1.5,0,4))" testHandle = null head_data = { [TF_CLASS_SCOUT] = { name = "bip_head" bone = 6 mins = Vector(-5.5, -9, -7.0500001907349) maxs = Vector(5.5, 4, 4.9499998092651) middle = Vector(3,0,4) }, [TF_CLASS_SOLDIER] = { name = "bip_head" bone = 6 mins = Vector(-6.25, -9, -7.5500001907349) maxs = Vector(6.25, 5, 5.4499998092651) middle = Vector(1.5,0,4) }, [TF_CLASS_PYRO] = { name = "bip_head" bone = 6 mins = Vector(-6, -9.5, -8) maxs = Vector(6, 3.5, 5) middle = Vector(3,-1,2) }, [TF_CLASS_DEMOMAN] = { name = "bip_head" bone = 16 mins = Vector(-6, -8, -7.5) maxs = Vector(6, 5, 4.5) middle = Vector(3,0,3) }, [TF_CLASS_HEAVYWEAPONS] = { name = "bip_head" bone = 11 mins = Vector(-6, -9.3500003814697, -8.6999998092651) maxs = Vector(6, 4.6500000953674, 4.3000001907349) middle = Vector(3,0,4) }, [TF_CLASS_ENGINEER] = { name = "bip_head" bone = 8 mins = Vector(-6, -11, -8) maxs = Vector(6, 4, 6) middle = Vector(1,0,4) }, [TF_CLASS_MEDIC] = { name = "bip_head" bone = 6 mins = Vector(-5, -8, -7.5) maxs = Vector(5, 5, 3.5) middle = Vector(2,0,2) }, [TF_CLASS_SNIPER] = { name = "bip_head" bone = 6 mins = Vector(-6, -10.5, -7.5500001907349) maxs = Vector(6, 3.5, 5.4499998092651) middle = Vector(1,0,2) }, [TF_CLASS_SPY] = { name = "bip_head" bone = 6 mins = Vector(-5, -7.75, -7.5) maxs = Vector(5, 3.75, 3.5) middle = Vector(3,0,2) }, } function recalculateRedSniperCount() { printl("recalculated") ListOfRedSnipers.clear() foreach ( player in findAllPlayer(true) ) if ( player.GetPlayerClass() == TF_CLASS_SNIPER ) ListOfRedSnipers.append(player) } function Think() { foreach ( redSniper in ListOfRedSnipers ) { foreach ( metest in ListOfProSnipers ) { //printl("redSniper/metest: " + redSniper + metest.hOwner) if ( redSniper.InCond( TF_COND_ZOOMED ) && IsInFieldOfView( redSniper, metest.hOwner, true ) && !metest.hOwner.InCond(51) ) { //SetPropInt(metest.hOwner, "m_afButtonForced", IN_DUCK) metest.challagedByASniper = true //printl("there is an enemy sniper") } else { //SetPropInt(metest.hOwner, "m_afButtonForced", 0) metest.challagedByASniper = false } } } return -1 } function IsInFieldOfView(attacker, target, isAimingAt = false, custom_tolerance = null ) { local cur_eye_pos = attacker.EyePosition() local cur_eye_fwd = attacker.EyeAngles().Forward() local tolerance = 0.5736 // cos(110/2) if ( custom_tolerance != null) tolerance = custom_tolerance else if ( isAimingAt ) tolerance = 0.999 // cos(2/2) local delta = target.GetOrigin() - cur_eye_pos delta.Norm() if (cur_eye_fwd.Dot(delta) >= tolerance) return true delta = target.GetCenter() - cur_eye_pos delta.Norm() if (cur_eye_fwd.Dot(delta) >= tolerance) return true delta = target.EyePosition() - cur_eye_pos delta.Norm() return (cur_eye_fwd.Dot(delta) >= tolerance) } hMarker = SpawnEntityFromTable("prop_dynamic", { targetname = "pumpk" model = "models/props_halloween/pumpkin_01.mdl" solid = 0 origin = "3100 1000 450" }) } __CollectGameEventCallbacks(metest)