Some updates

This commit is contained in:
ineedbots 2021-05-09 17:04:48 -06:00
parent 6df432e267
commit 2985c64118
2 changed files with 152 additions and 61 deletions

View File

@ -1054,19 +1054,13 @@ _WaypointsToKDTree(waypoints, dem)
return; return;
callbacksort = undefined; callbacksort = undefined;
switch(dem) if (dem == 0) // COMPILER bug! cannot assign variables outside the switch statement
{ callbacksort = ::HeapSortCoordX;
case 0: else if (dem == 1)
callbacksort = ::HeapSortCoordX; callbacksort = ::HeapSortCoordY;
break; else
case 1: callbacksort = ::HeapSortCoordZ;
callbacksort = ::HeapSortCoordY;
break;
case 2:
callbacksort = ::HeapSortCoordZ;
break;
}
heap = NewHeap(callbacksort); heap = NewHeap(callbacksort);

View File

@ -58,6 +58,8 @@ init()
level.waypoints = []; level.waypoints = [];
level.waypointCount = 0; level.waypointCount = 0;
test();
level waittill( "connected", player); level waittill( "connected", player);
player thread onPlayerSpawned(); player thread onPlayerSpawned();
@ -73,6 +75,119 @@ onPlayerSpawned()
} }
} }
test()
{
// regression
a = 801;
if (a <= -800)
a = 800;
logstring(a); // 801
// regression
dir = "yo";
r = 3;
j = 0;
while (j < 24)
{
a = 9;
j++;
}
b = 2;
logstring(dir); // yo
logstring(r); // 3
// test arg passing
e = spawnStruct();
e.a = 4;
f = ::test_func;
[[f]](e, 4); // test_func 4 4
logstring(e.a); // 5
test_func2(::test_func3, "hi"); // hi
e.b = ::test_func3;
[[e.b]]("ahaha"); // ahaha
callbacksort = undefined;
y = 0;
switch ("kek")
{
case "lol":
logstring("FUCKKKKKKKK"); // 1 1
break;
case "kek":
logstring("HAHAHAHAHAAH"); // 1 1
break;
}
switch(randomInt(3))
{
case 0:
callbacksort = ::test_func;
y = 1;
break;
case 1:
callbacksort = ::test_func2;
y = 1;
break;
case 2:
callbacksort = ::test_func3;
y = 1;
break;
}
logstring(isDefined(callbacksort) + " " + y); // 1 1
// test heap sorting
sort = NewHeap(maps\mp\bots\_bot_utility::ReverseHeap);
sort HeapInsert(3);
sort HeapInsert(4);
sort HeapInsert(1);
sort HeapInsert(3);
sort HeapInsert(87);
sort HeapInsert(-123);
sort HeapInsert(0);
str = "";
while (sort.data.size)
{
str += sort.data[0] + ", ";
sort HeapRemove();
}
logstring(str); // -123, 0, 1, 3, 3, 4, 87,
}
test_func(a, b)
{
logstring("test_func " + b + " " + a.a);
a.a += 1;
}
test_func2(a, b)
{
[[a]](b);
}
test_func3(a)
{
logstring(a);
}
StartDev() StartDev()
{ {
self endon("disconnect"); self endon("disconnect");
@ -108,20 +223,6 @@ StartDev()
self thread watchAstarCommand(); self thread watchAstarCommand();
self thread sayExtras(); self thread sayExtras();
//self LoadWaypoints(); // actionslot 2 not working?
// COMPILER loops bugging out
// crashes on map reload if too big?
level.waypoints = maps\mp\bots\waypoints\dome::Dome();
level.waypointCount = level.waypoints.size;
wait 4;
level.waypoints = [];
level.waypointCount = 0;
iPrintLn("del");
// this fixes the crash on map_rotate.... seems like if theres too much vars being used, it crashes
} }
sayExtras() sayExtras()
@ -150,9 +251,6 @@ watchAstarCommand()
{ {
self waittill("astar"); self waittill("astar");
if (1)
continue;
self iprintln("Start AStar"); self iprintln("Start AStar");
self.astar = undefined; self.astar = undefined;
astar = spawnStruct(); astar = spawnStruct();
@ -253,7 +351,7 @@ showWpLink(i, h)
dash = spawn( "script_model", end); dash = spawn( "script_model", end);
dash setModel("weapon_parabolic_knife"); dash setModel("weapon_parabolic_knife");
//dash.angles = dir; // COMPILER loops are bugging out variables dash.angles = dir;
level.drawn_links[level.drawn_links.size] = dash; level.drawn_links[level.drawn_links.size] = dash;
} }
@ -354,7 +452,7 @@ updateWaypointsStats()
self iPrintLnBold(self.nearest + " children: " + buildChildString(self.nearest)); self iPrintLnBold(self.nearest + " children: " + buildChildString(self.nearest));
} }
if (isDefined(self.astar)) /*if (isDefined(self.astar))
{ {
print3d(self.astar.start + (0, 0, 35), "start", (0,0,1), 2); print3d(self.astar.start + (0, 0, 35), "start", (0,0,1), 2);
print3d(self.astar.goal + (0, 0, 35), "goal", (0,0,1), 2); print3d(self.astar.goal + (0, 0, 35), "goal", (0,0,1), 2);
@ -371,7 +469,7 @@ updateWaypointsStats()
} }
line(prev, self.astar.goal + (0, 0, 35), (0,1,1)); line(prev, self.astar.goal + (0, 0, 35), (0,1,1));
} }*/
} }
} }
@ -380,10 +478,10 @@ watchLoadWaypointsCommand()
self endon("disconnect"); self endon("disconnect");
self endon("death"); self endon("death");
self notifyOnPlayerCommand("[{+actionslot 2}]", "+actionslot 2"); self notifyOnPlayerCommand("[{+actionslot 5}]", "+actionslot 5");
for( ;; ) for( ;; )
{ {
self waittill("[{+actionslot 2}]"); self waittill("[{+actionslot 5}]");
self LoadWaypoints(); self LoadWaypoints();
} }
} }
@ -648,63 +746,59 @@ UnLinkWaypoint(nwp)
LinkWaypoint(nwp) LinkWaypoint(nwp)
{ {
level.temp_vars = []; if(nwp == -1 || distance(self.origin, level.waypoints[nwp].origin) > getDvarFloat("bots_main_debug_minDist"))
level.temp_vars[0] = nwp;
level.temp_vars[1] = true;
if(level.temp_vars[0] == -1 || distance(self.origin, level.waypoints[level.temp_vars[0]].origin) > getDvarFloat("bots_main_debug_minDist"))
{ {
self iprintln("Waypoint Link Cancelled "+level.wpToLink); self iprintln("Waypoint Link Cancelled "+level.wpToLink);
level.wpToLink = -1; level.wpToLink = -1;
return; return;
} }
if(level.wpToLink == -1 || level.temp_vars[0] == level.wpToLink) if(level.wpToLink == -1 || nwp == level.wpToLink)
{ {
level.wpToLink = level.temp_vars[0]; level.wpToLink = nwp;
self iprintln("Waypoint Link Started "+level.temp_vars[0]); self iprintln("Waypoint Link Started "+nwp);
return; return;
} }
weGood = true;
for (i = 0; i < level.waypoints[level.wpToLink].childCount; i++) for (i = 0; i < level.waypoints[level.wpToLink].childCount; i++)
{ {
child = level.waypoints[level.wpToLink].children[i]; child = level.waypoints[level.wpToLink].children[i];
if(child == level.temp_vars[0]) if(child == nwp)
{ {
level.temp_vars[1] = false; weGood = false;
break; break;
} }
} }
if(level.temp_vars[1]) if(weGood)
{ {
for (i = 0; i < level.waypoints[level.temp_vars[0]].childCount; i++) for (i = 0; i < level.waypoints[nwp].childCount; i++)
{ {
child = level.waypoints[level.temp_vars[0]].children[i]; child = level.waypoints[nwp].children[i];
if(child == level.wpToLink) if(child == level.wpToLink)
{ {
level.temp_vars[1] = false; weGood = false;
break; break;
} }
} }
} }
// COMPILER BUG ATM!! vars getting over written, using level.temp_vars for now
if (!level.temp_vars[1] ) if (!weGood )
{ {
self iprintln("Waypoint Link Cancelled "+level.temp_vars[0]+" and "+level.wpToLink+" already linked."); self iprintln("Waypoint Link Cancelled "+nwp+" and "+level.wpToLink+" already linked.");
level.wpToLink = -1; level.wpToLink = -1;
return; return;
} }
level.waypoints[level.wpToLink].children[level.waypoints[level.wpToLink].childcount] = level.temp_vars[0]; level.waypoints[level.wpToLink].children[level.waypoints[level.wpToLink].childcount] = nwp;
level.waypoints[level.wpToLink].childcount++; level.waypoints[level.wpToLink].childcount++;
level.waypoints[level.temp_vars[0]].children[level.waypoints[level.temp_vars[0]].childcount] = level.wpToLink; level.waypoints[nwp].children[level.waypoints[nwp].childcount] = level.wpToLink;
level.waypoints[level.temp_vars[0]].childcount++; level.waypoints[nwp].childcount++;
self iprintln("Waypoint " + level.temp_vars[0] + " Linked to " + level.wpToLink); self iprintln("Waypoint " + nwp + " Linked to " + level.wpToLink);
level.wpToLink = -1; level.wpToLink = -1;
} }
@ -735,8 +829,6 @@ DeleteWaypoint(nwp)
level.waypoints[i].children[h]--; level.waypoints[i].children[h]--;
} }
} }
// COMPILER vars are bugging out, dont use!
for ( entry = 0; entry < level.waypointCount; entry++ ) for ( entry = 0; entry < level.waypointCount; entry++ )
{ {
@ -806,6 +898,13 @@ DeleteAllWaypoints()
{ {
level.waypoints = []; level.waypoints = [];
level.waypointCount = 0; level.waypointCount = 0;
level.waypointsKDTree = WaypointsToKDTree();
level.waypointsCamp = [];
level.waypointsTube = [];
level.waypointsGren = [];
level.waypointsClay = [];
level.waypointsJav = [];
self iprintln("DelAllWps"); self iprintln("DelAllWps");
} }
@ -850,9 +949,7 @@ destroyOnDeath(hud)
{ {
hud endon("death"); hud endon("death");
self waittill_either("death","disconnect"); self waittill_either("death","disconnect");
hud notify("death");
hud destroy(); hud destroy();
hud = undefined;
} }
initHudElem(txt, xl, yl) initHudElem(txt, xl, yl)
@ -882,7 +979,7 @@ initHudElem(txt, xl, yl)
initHudElem2() initHudElem2()
{ {
infotext = NewHudElem(); infotext = NewHudElem();
infotext setText("^1Welcome to the MW3 Waypoint Editor for Bot Warfare!"); // not working?? infotext setText("^1[{+smoke}]-AddWp ^2[{+melee_zoom}]-LinkWp ^3[{+reload}]-UnLinkWp ^4[{+actionslot 3}]-DeleteWp ^5[{+actionslot 4}]-DelAllWps ^6[{+actionslot 5}]-LoadWPS ^7[{+actionslot 1}]-SaveWp");
infotext.alignX = "center"; infotext.alignX = "center";
infotext.alignY = "bottom"; infotext.alignY = "bottom";
infotext.horzAlign = "center"; infotext.horzAlign = "center";