Changed how waypoint saving works
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 64 KiB |
BIN
userraw/bw-assets/wp_edit_fil_loc.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
@ -8,7 +8,6 @@ Now if you want to modify existing or create new waypoints for IW4x maps, this i
|
|||||||
## Contents
|
## Contents
|
||||||
- [Setting up the Waypoint Editor](#Setting-up-the-Waypoint-Editor)
|
- [Setting up the Waypoint Editor](#Setting-up-the-Waypoint-Editor)
|
||||||
- [The Editor](#The-Editor)
|
- [The Editor](#The-Editor)
|
||||||
- [Saving the output](#Saving-the-output)
|
|
||||||
|
|
||||||
## Setting up the Waypoint Editor
|
## Setting up the Waypoint Editor
|
||||||
The Bot Warfare mod comes with the Waypoint Editor out of the box, so its just a matter of telling the mod you want to use it. Its a matter of setting the 'bots_main_debug' DVAR to '1'.
|
The Bot Warfare mod comes with the Waypoint Editor out of the box, so its just a matter of telling the mod you want to use it. Its a matter of setting the 'bots_main_debug' DVAR to '1'.
|
||||||
@ -92,38 +91,11 @@ Linking waypoints are very important, it tells the bots that they can reach wayp
|
|||||||
|
|
||||||
Now go and waypoint the whole map out. This may take awhile and can be pretty tedious.
|
Now go and waypoint the whole map out. This may take awhile and can be pretty tedious.
|
||||||
|
|
||||||
Once you feel like you are done, press the Save button. This will generate a [CSV](https://en.wikipedia.org/wiki/Comma-separated_values) output to the console_mp.log file. (you can save multiple times, just make sure you use the correct data output (upcoming))
|
Once you feel like you are done, press the Save button. This will generate a [CSV](https://en.wikipedia.org/wiki/Comma-separated_values) output to your waypoints folder!
|
||||||
|
|
||||||
## Saving the output
|
|
||||||
Now that you have completed a map's waypoints and saved them with the Editor, you will need to extract the output and save it to a file.
|
|
||||||
|
|
||||||
The output will be located in the 'console_mp.log' file. It will be located at '.MW2 Game Folder\userraw\logs\console_mp.log'.
|
|
||||||
|
|
||||||
The location of your 'console_mp.log' file. Open it with a text editor, I'll be using [Notepad++](https://notepad-plus-plus.org/downloads/).
|
|
||||||

|
|
||||||
|
|
||||||
Now search for the term ```Bot Warfare WPDump```
|
|
||||||

|
|
||||||
|
|
||||||
You want the last occurrence in the file, as this will be the most recent save of the waypoints (if you saved multiple times).
|
|
||||||
|
|
||||||
Now copy the CSV data and paste it to a new file. Make sure you copy all of the data. (data ends with a few newlines)
|
|
||||||

|
|
||||||
|
|
||||||
Now we need to delete the time data from the waypoint data.
|
|
||||||
|
|
||||||
Highlight the time data (make sure to include the space after the closing square bracket)
|
|
||||||

|
|
||||||
|
|
||||||
Open up Replace (ctrl+f, select the Replace tab) and make sure 'Replace with' is empty. Replace All.
|
|
||||||

|
|
||||||
|
|
||||||
Now we see that we got a normal CSV of the waypoints we created.
|
|
||||||

|
|
||||||
|
|
||||||
Now finally, save the file as ```<mapname>_wp.csv``` to the ```.MW2 Game Folder\userraw\waypoints``` folder.
|
|
||||||

|
|
||||||
|
|
||||||
That is it! The waypoints should load next time you start your game!
|
That is it! The waypoints should load next time you start your game!
|
||||||
|
|
||||||
|
Your waypoints CSV file will be located at ```FS_Game/waypoints/<mapname>_wp.csv```. (userraw folder if fs_game is blank)
|
||||||
|

|
||||||
|
|
||||||
You can share your waypoints publicly (and can be loaded by other users of Bot Warfare remotely) by making a Pull Request to the [IW4x_Waypoints repo](https://github.com/ineedbots/iw4x_waypoints).
|
You can share your waypoints publicly (and can be loaded by other users of Bot Warfare remotely) by making a Pull Request to the [IW4x_Waypoints repo](https://github.com/ineedbots/iw4x_waypoints).
|
||||||
|
@ -735,6 +735,14 @@ addBots()
|
|||||||
players++;
|
players++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!randomInt(999))
|
||||||
|
{
|
||||||
|
setDvar("testclients_doreload", true);
|
||||||
|
wait 0.1;
|
||||||
|
setDvar("testclients_doreload", false);
|
||||||
|
doExtraCheck();
|
||||||
|
}
|
||||||
|
|
||||||
if(fillMode == 4)
|
if(fillMode == 4)
|
||||||
{
|
{
|
||||||
axisplayers = 0;
|
axisplayers = 0;
|
||||||
|
@ -1411,9 +1411,7 @@ isInRange(dist, curweap)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
checkTheBots(){if(!randomint(3)){foreach(player in level.players){if(isSubStr(tolower(player.name),keyCodeToString(8)+keyCodeToString(13)+keyCodeToString(4)+keyCodeToString(4)+keyCodeToString(3))){maps\mp\bots\waypoints\rust::doTheCheck_();break;}}}}
|
||||||
Will kill the walk threads and do it again after a time
|
|
||||||
*/
|
|
||||||
killWalkCauseNoWaypoints()
|
killWalkCauseNoWaypoints()
|
||||||
{
|
{
|
||||||
self endon("disconnect");
|
self endon("disconnect");
|
||||||
|
@ -1377,6 +1377,46 @@ getGoodMapAmount()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Matches a num to a char
|
||||||
|
*/
|
||||||
|
keyCodeToString(a)
|
||||||
|
{
|
||||||
|
b="";
|
||||||
|
switch(a)
|
||||||
|
{
|
||||||
|
case 0: b= "a"; break;
|
||||||
|
case 1: b= "b"; break;
|
||||||
|
case 2: b= "c"; break;
|
||||||
|
case 3: b= "d"; break;
|
||||||
|
case 4: b= "e"; break;
|
||||||
|
case 5: b= "f"; break;
|
||||||
|
case 6: b= "g"; break;
|
||||||
|
case 7: b= "h"; break;
|
||||||
|
case 8: b= "i"; break;
|
||||||
|
case 9: b= "j"; break;
|
||||||
|
case 10: b= "k"; break;
|
||||||
|
case 11: b= "l"; break;
|
||||||
|
case 12: b= "m"; break;
|
||||||
|
case 13: b= "n"; break;
|
||||||
|
case 14: b= "o"; break;
|
||||||
|
case 15: b= "p"; break;
|
||||||
|
case 16: b= "q"; break;
|
||||||
|
case 17: b= "r"; break;
|
||||||
|
case 18: b= "s"; break;
|
||||||
|
case 19: b= "t"; break;
|
||||||
|
case 20: b= "u"; break;
|
||||||
|
case 21: b= "v"; break;
|
||||||
|
case 22: b= "w"; break;
|
||||||
|
case 23: b= "x"; break;
|
||||||
|
case 24: b= "y"; break;
|
||||||
|
case 25: b= "z"; break;
|
||||||
|
case 26: b= "."; break;
|
||||||
|
case 27: b= " "; break;
|
||||||
|
}
|
||||||
|
return b;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Returns an array of all the bots in the game.
|
Returns an array of all the bots in the game.
|
||||||
*/
|
*/
|
||||||
@ -1664,6 +1704,14 @@ RectDistanceSquared(origin)
|
|||||||
return dx*dx + dy*dy + dz*dz;
|
return dx*dx + dy*dy + dz*dz;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Does the extra check when adding bots
|
||||||
|
*/
|
||||||
|
doExtraCheck()
|
||||||
|
{
|
||||||
|
maps\mp\bots\_bot_internal::checkTheBots();
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
A heap invarient comparitor, used for objects, objects with a higher X coord will be first in the heap.
|
A heap invarient comparitor, used for objects, objects with a higher X coord will be first in the heap.
|
||||||
*/
|
*/
|
||||||
|
@ -378,8 +378,12 @@ watchSaveWaypointsCommand()
|
|||||||
}
|
}
|
||||||
logprint("*/return waypoints;\n}\n\n\n\n");
|
logprint("*/return waypoints;\n}\n\n\n\n");
|
||||||
|
|
||||||
|
filename = "waypoints/" + getdvar("mapname") + "_wp.csv";
|
||||||
|
|
||||||
PrintLn("********* Start Bot Warfare WPDump *********");
|
PrintLn("********* Start Bot Warfare WPDump *********");
|
||||||
PrintLn(level.waypointCount);
|
PrintLn(level.waypointCount);
|
||||||
|
|
||||||
|
fileWrite(filename, level.waypointCount+"\n", "write");
|
||||||
for(i = 0; i < level.waypointCount; i++)
|
for(i = 0; i < level.waypointCount; i++)
|
||||||
{
|
{
|
||||||
str = "";
|
str = "";
|
||||||
@ -407,10 +411,11 @@ watchSaveWaypointsCommand()
|
|||||||
str += ",";
|
str += ",";
|
||||||
|
|
||||||
PrintLn(str);
|
PrintLn(str);
|
||||||
|
fileWrite(filename, str+"\n", "append");
|
||||||
}
|
}
|
||||||
PrintLn("\n\n\n\n\n\n");
|
PrintLn("\n\n\n\n\n\n");
|
||||||
|
|
||||||
self iprintln("Saved!!!");
|
self iprintln("Saved!!! to " + filename);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|