local ROOT = getroottable() 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("uberchain" in ROOT) return ::uberchain <- { function OnGameEvent_recalculate_holidays(_) { if(GetRoundState() == 3) {delete ::uberchain clean() } } function OnGameEvent_player_spawn(params) { local hPlayer = GetPlayerFromUserID(params.userid) if (hPlayer.IsFakeClient()) { hTestBot = hPlayer } printl("this runs") hTestBot.ValidateScriptScope() hTestBot.GetScriptScope().pair <- this hTestBot.GetScriptScope().Think <- function() { return uberchain.Think() } AddThinkToEnt(hTestBot, "Think") } function clean() { foreach (player in findAllPlayer()) { player.TerminateScriptScope() } } function Think() { //return -10 local team = hTestBot.GetTeam() local pos_start = hTestBot.GetOrigin() local pos_end = findRandomPlayer().GetOrigin() local area_start = GetNavArea(pos_start, 128.0) local area_end = GetNavArea(pos_end, 128.0) if (!area_start) area_start = GetNearestNavArea(pos_start, 128.0, false, true) if (!area_end) area_end = GetNearestNavArea(pos_end, 128.0, false, true) //printl(area_start + " " + area_end) if (!area_start || !area_end) { printl("failed") return -1 } local path_areas = {} local closestArea = null; local functor = CTFBotPathCost(hTestBot, 0) if ( !NavAreaBuildPath(GetCTFNavAreaWrapper(area_start), GetCTFNavAreaWrapper(area_end), pos_end, functor, closestArea, 0.0, team, false) ) { printl(false) return 2 } else { ConstructPathToTable(GetCTFNavAreaWrapper(area_end), path_areas) } local color = Vector(255,255,255) local prevPos = findRandomPlayer().GetOrigin() //local prevPos = hTestBot.GetOrigin() local currentPos = Vector() local count = 0 local prevArea = null local path_count = path_areas.len() for (local i = 0; i < path_count; ++i) { local area = path_areas["area"+i] currentPos = area.GetCenter() DebugDrawLine_vCol(prevPos, currentPos, color, true, 2) prevPos = currentPos //print(area + "<-") //if (prevArea) // printl("is this connected: " + area + "/" + prevArea + " : " + area.IsConnected(prevArea, -1)) //prevArea = area } //printl("") //local prevPos = findRandomPlayer().GetOrigin() local prevPos = hTestBot.GetOrigin() DebugDrawLine_vCol(currentPos, prevPos, color, true, 2) return 2 } hTestBot = null function test() { local cost = CTFBotPathCost( hTestBot, 0 ) printl(cost.operator( CTFNavArea(GetNavAreaByID(47)), CTFNavArea(GetNavAreaByID(180)), null, null, 0)) printl(cost.operator( GetCTFNavAreaWrapper(GetNavAreaByID(3186)), GetCTFNavAreaWrapper(GetNavAreaByID(2632)), null, null, 0)) } function test2() { //local cost = CTFBotPathCost( hTestBot, 0 ) printl( GetCTFNavAreaWrapper(GetNavAreaByID(47)).ComputeAdjacentConnectionHeightChange(GetCTFNavAreaWrapper(GetNavAreaByID(180)))) printl( GetCTFNavAreaWrapper(GetNavAreaByID(2632)).ComputeAdjacentConnectionHeightChange(GetCTFNavAreaWrapper(GetNavAreaByID(3186)))) } function test3(int) { //local cost = CTFBotPathCost( hTestBot, 0 ) printl( GetCTFNavAreaWrapper(GetNavAreaByID(int)).ComputeFuncNavCost( hTestBot )) } function test4() { local team = hTestBot.GetTeam() local pos_start = hTestBot.GetOrigin() local pos_end = findRandomPlayer().GetOrigin() local area_start = GetNavArea(pos_start, 128.0) local area_end = GetNavArea(pos_end, 128.0) if (!area_start) area_start = GetNearestNavArea(pos_start, 128.0, false, true) if (!area_end) area_end = GetNearestNavArea(pos_end, 128.0, false, true) //printl(area_start + " " + area_end) if (!area_start || !area_end) return false //if (!GetNavAreasFromBuildPath(area_start, area_end, pos_end, 0.0, team, false, path_areas)) printl("preparing is okay") local closestArea = null; local functor = CTFBotPathCost(hTestBot, 0) if ( !NavAreaBuildPath(GetCTFNavAreaWrapper(area_start), GetCTFNavAreaWrapper(area_end), pos_end, functor, closestArea, 0.0, team, false) ) return false return true } function test5() { //local cost = CTFBotPathCost( hTestBot, 0 ) //printl( GetCTFNavAreaWrapper(GetNavAreaByID(47)).ComputeAdjacentConnectionHeightChange(GetCTFNavAreaWrapper(GetNavAreaByID(180)))) //GetCTFNavAreaWrapper(GetNavAreaByID(47)).test() printl(CTFNavArea.m_openList) printl(GetCTFNavAreaWrapper(GetNavAreaByID(47)).m_openList) GetCTFNavAreaWrapper(GetNavAreaByID(47)).test() CTFNavArea.ClearSearchLists() printl("") printl(CTFNavArea.m_openList.area) printl(GetCTFNavAreaWrapper(GetNavAreaByID(47)).m_openList) GetCTFNavAreaWrapper(GetNavAreaByID(47)).test() return GetCTFNavAreaWrapper(GetNavAreaByID(47)) } function test6(int) { local table = {} GetNavAreaByID(3050).GetAdjacentAreas(int, table) foreach (area in table) print(area + " ") } function box(int) { printl( GetCTFNavAreaWrapper(GetNavAreaByID(int)).ComputeFuncNavCost( hTestBot )) local targetNav = GetCTFNavAreaWrapper(GetNavAreaByID(int)) foreach (cost in targetNav.m_funcNavCostVector) { local myEnt = cost.cost DebugDrawBox(myEnt.GetOrigin(), myEnt.GetBoundingMins(), myEnt.GetBoundingMaxs(), 255, 255, 255, 1, 10) } } function testent( num = 0 ) { if (num == 0) EntFireByHandle(FindByName(null,"tank_barricade_fixup"),"trigger", null, 0, null, null) else if (num == 1) EntFireByHandle(FindByName(null,"warehouse_door"),"open", null, 0, null, null) else if (num == 2) EntFireByHandle(FindByName(null,"warehouse_door"),"close", null, 0, null, null) else if (num == 3) AddOutput(FindByName( null, "tank_combat_loop_1" ), "OnPass", "tank_barricade_fixup", "trigger", null, 0, -1 ) else if (num == 4) AddOutput(FindByName( null, "tank_combat_loop_15" ), "OnPass", "warehouse_door", "open", null, 0, -1 ) else if (num == 5) { local ent = FindByName( null, "tank_combat_loop_2" ) local scope = ent.GetScriptScope() scope.test <- function() { printl("HELLLOOOOO") EntFireByHandle(FindByName(null,"tank_barricade_fixup"),"trigger", null, 0, null, null) } ent.ConnectOutput( "OnPass", "test" ) } else if (num == 6) printl(FindByName( FindByName( null, "tank_combat_loop_2" ), "tank_combat_loop_2" )) else if (num == 7) printl(FindByName( null, "tank_combat_loop_4" )) else if (num == 7) AddOutput(FindByName( null, "tank_path_2" ), "OnPass", "tank_barricade_fixup", "trigger", null, 0, -1 ) } function printpath() { local pathname = "tank_path_b_" local pathnum = 1 //printl(FindByName( null, format("%s%i", pathname, pathnum))) local node for (node = FindByName( null, format("%s%i", pathname, pathnum) ); node; ) { printl( format("Vector( %i, %i, %i )", node.GetOrigin().x, node.GetOrigin().y, node.GetOrigin().z)) pathnum++ node = FindByName( null, format("%s%i", pathname, pathnum) ) } printl(pathnum) pathname = "tank_path_a_" pathnum = 25 node = FindByName( null, format("%s%i", pathname, pathnum) ) printl( format("Vector( %i, %i, %i )", node.GetOrigin().x, node.GetOrigin().y, node.GetOrigin().z)) pathnum = 33 node = FindByName( null, format("%s%i", pathname, pathnum) ) printl( format("Vector( %i, %i, %i )", node.GetOrigin().x, node.GetOrigin().y, node.GetOrigin().z)) for ( pathnum = 24 ; pathnum != 20; pathnum-- ) { node = FindByName( null, format("%s%i", pathname, pathnum) ) if (node == null) break printl( format("Vector( %i, %i, %i )", node.GetOrigin().x, node.GetOrigin().y, node.GetOrigin().z)) } pathnum = 32 node = FindByName( null, format("%s%i", pathname, pathnum) ) printl( format("Vector( %i, %i, %i )", node.GetOrigin().x, node.GetOrigin().y, node.GetOrigin().z)) pathnum = 31 node = FindByName( null, format("%s%i", pathname, pathnum) ) printl( format("Vector( %i, %i, %i )", node.GetOrigin().x, node.GetOrigin().y, node.GetOrigin().z)) for ( pathnum = 20 ; pathnum != 16; pathnum-- ) { node = FindByName( null, format("%s%i", pathname, pathnum) ) printl( format("Vector( %i, %i, %i )", node.GetOrigin().x, node.GetOrigin().y, node.GetOrigin().z)) } } function switchcase(iint) { switch (iint) { case 1: printl("1") case 2: printl("2") case 3: printl("3") } } function findflag() { local ent = Entities.FindByClassname(null, "item_teamflag") while (ent) { //printl(GetPropEntity(ent, "m_hOwnerEntity")) printl(ent) ent = Entities.FindByClassname(ent, "item_teamflag") } } function test_new() { class MyClass { // called automatically for every declared member function _newmember(index, value, attributes, isstatic) { ::print("New member declared: " + index + ", isstatic=" + isstatic + ", attributes=" + attributes + ", value type=" + typeof value + "\n"); // store manually if you want rawset(index, value); } // Members below will trigger _newmember at declaration time x = 42 function Foo() { return "Hello!" } } printl(MyClass.x) printl(MyClass.Foo()) } } __CollectGameEventCallbacks(uberchain) //ROOT.mytesttable <- {} IncludeScript("nopey_lib", ROOT) IncludeScript("NavAreaBuildPath", ROOT) IncludeScript("popextensions/constants", ROOT) //rcon script fun.CreateMarker() //rcon script fun.hMarker.SetAbsOrigin(findRandomPlayer().GetOrigin()) //rcon script printl(GetNavArea(findRandomPlayer().GetOrigin(), 100)) //rcon script UpdateAllNavCostDecoration()