And its really crash the game after adding "spawn info_pathnode" in .scr file.(To think that after spending 1 hrs on it)
Now I'm trying bdbodger method.
raiser_land.......Moderator: Moderators
raiser_land.......btw where is it?My first attemp at making such a tool You can create nodes by simply pressing the fire button, now making a function to remove faulty nodes as well
Code: Select all
// bot test script
// by jv_map
main:
waitthread makepathnodes
level waittill spawn
thread nodes
end
makepathnodes:
// copy & paste output log here
// so you can load the existing paths
// if you want to make a change :)
end
nodes:
wait 5
level.nodeID = 0
waitthread makebeams 512 // makes # beams
// init commands
level.cmdlist = "writescript"::"removenode"
for(local.i = 1; local.i <= level.cmdlist.size; local.i++)
setcvar ("ne_" + level.cmdlist[local.i]) "0"
// add existing nodes
for(local.i = 1; local.i <= level.botnodes.size; local.i++)
{
waitthread addnode level.botnodes[local.i].origin
}
while(1)
{
local.cmd = NULL
while (!($player.fireheld) && local.cmd == NULL)
{
waitframe
local.cmd = waitthread processcommands
}
if(local.cmd != NULL)
{
switch(local.cmd)
{
writescript:
waitthread writescript
break
removenode:
waitthread removenode
break
default:
println "unknow cmd " local.cmd "... bug bug bug! :("
}
waitframe
}
else
{
waitthread addnode $player.origin
while ($player.fireheld)
waitframe
}
}
end
processcommands:
for(local.i = 1; local.i <= level.cmdlist.size; local.i++)
{
local.cvar = "ne_" + level.cmdlist[local.i]
local.str = getcvar local.cvar
if(local.str != "0")
{
setcvar local.cvar "0"
end level.cmdlist[local.i]
}
}
end NULL
makebeams local.num:
for(local.i = 1; local.i <= local.num; local.i++)
{
level.beams[local.i] = spawn func_beam
level.beams[local.i] maxoffset 0.0
level.beams[local.i] persist 1
level.beams[local.i].inuse = 0
}
end
getbeam:
for(local.i = 1; local.i <= level.beams.size; local.i++)
{
local.beam = level.beams[local.i]
if(local.beam.inuse == 0)
{
local.beam.inuse = 1
end local.beam
}
}
println "WARNING: no more beams in stack :("
// create a new beam
//local.beam = spawn func_beam
//local.beam.notstacked = 1
end local.beam
releasebeam local.beam:
if(local.beam)
{
local.beam deactivate
local.beam.inuse = 0
}
end
addnode local.origin:
local.node = spawn script_model model models/fx/corona_red.tik origin (local.origin + (0 0 32)) scale 3.0
local.node notsolid
local.node.numinbeams = 0
local.node thread nodescale
// make beams from this node to connecting nodes
waitthread makenodebeams local.node
level.nodeID++
level.nodes[level.nodeID] = local.node
end
nodescale:
while(self)
{
local.dist = vector_length (self.origin - $player.origin)
if(local.dist <= 512)
self.scale = 6.0
else
self.scale = 3.0
wait 0.5
}
end
makenodebeams local.node:
local.node.numoutbeams = 0
for(local.i = 1; local.i <= level.nodeID; local.i++)
{
local.othernode = level.nodes[local.i]
if(local.othernode)
{
local.dist = vector_length (local.othernode.origin - local.node.origin)
if(local.dist <= 512)
{
if(sighttrace local.othernode local.node 128)
{
local.beam = waitthread getbeam
local.beam origin local.node.origin
local.beam endpoint local.othernode.origin
//local.beam updateendpoint
local.beam color (0.0 1.0 0.0)
local.beam doActivate
local.beam thread beamvisibility
local.node.numoutbeams++
local.node.outbeams[local.node.numoutbeams] = local.beam
local.othernode.numinbeams++
local.othernode.inbeams[local.othernode.numinbeams] = local.beam
}
}
}
}
end
beamvisibility:
while(self && self.inuse == 1)
{
local.dist = vector_length (self.origin - $player.origin)
if(local.dist <= 1024)
self show
else
self hide
wait 1.0
}
end
removenode:
println "--- removenode ---"
// find nearest node
for(local.i = 1; local.i <= level.nodeID; local.i++)
{
local.node = level.nodes[local.i]
if(local.node)
{
local.dist = vector_length($player.origin - local.node.origin)
if(local.smallestdist == NIL || local.dist < local.smallestdist)
{
local.smallestdist = local.dist
local.nearestnode = local.node
}
}
}
if(local.nearestnode)
{
// first remove any beams to and from this node
for(local.i = 1; local.i <= local.nearestnode.numoutbeams; local.i++)
{
local.beam = local.nearestnode.outbeams[local.i]
waitthread releasebeam local.beam
}
for(local.i = 1; local.i <= local.nearestnode.numinbeams; local.i++)
{
local.beam = local.nearestnode.inbeams[local.i]
waitthread releasebeam local.beam
}
local.nearestnode remove
}
end
writescript:
// write out the script
println "--- writescript ---"
level.loop_protection = 0
setcvar "logfile" "1"
println "8< ------------"
local.j = 0
for(local.i = 1; local.i <= level.nodeID; local.i++)
{
local.node = level.nodes[local.i]
if(local.node)
{
local.j++
waitthread writeblock local.node local.j
}
}
println "-------------- >8"
setcvar "logfile" "0"
level.loop_protection = 1
println "--- " local.j " nodes written to main/qconsole.log ---"
end
writeblock local.node local.num:
local.vec = "( " + local.node.origin[0] + " " + local.node.origin[1] + " " + local.node.origin[2] + " )"
println "level.botnodes[" local.num "] = spawn info_pathnode origin " local.vec " spawnflags 4"
end
Code: Select all
waitthread makepathnodes seems like nothing,sry if im being a noob ,its just my 1st experience with bot stuff. I delete the .pth file since the .scr file have include the details of nodepaths and everythings. AND IT WORKS WITHOUT THE .pth FILE
Code: Select all
<----------- Botpath node writeout--------------->
local.botnodes[0] = spawn info_pathnode origin ( -121.803 -413.253 5.287 ) spawnflags 4
local.botnodes[1] = spawn info_pathnode origin ( 3.615 -412.875 1.447 ) spawnflags 4
local.botnodes[2] = spawn info_pathnode origin ( 129.267 -415.558 -2.686 ) spawnflags 4
local.botnodes[3] = spawn info_pathnode origin ( 254.536 -418.561 -16.998 ) spawnflags 4
local.botnodes[4] = spawn info_pathnode origin ( 378.467 -421.532 -25.331 ) spawnflags 4
local.botnodes[5] = spawn info_pathnode origin ( 501.819 -424.639 -30.525 ) spawnflags 4
local.botnodes[6] = spawn info_pathnode origin ( 626.391 -428.654 -35.797 ) spawnflags 4
local.botnodes[7] = spawn info_pathnode origin ( 740.726 -474.060 -39.875 ) spawnflags 4
local.botnodes[8] = spawn info_pathnode origin ( 827.841 -563.355 -39.875 ) spawnflags 4
local.botnodes[9] = spawn info_pathnode origin ( 904.262 -661.888 -39.875 ) spawnflags 4
local.botnodes[10] = spawn info_pathnode origin ( 953.139 -788.332 -39.875 ) spawnflags 4
local.botnodes[11] = spawn info_pathnode origin ( 987.910 -911.777 -39.875 ) spawnflags 4
local.botnodes[12] = spawn info_pathnode origin ( 1022.407 -1045.394 -39.875 ) spawnflags 4
local.botnodes[13] = spawn info_pathnode origin ( 1053.025 -1166.837 -39.479 ) spawnflags 4
local.botnodes[14] = spawn info_pathnode origin ( 1086.252 -1298.629 -34.710 ) spawnflags 4
local.botnodes[15] = spawn info_pathnode origin ( 1116.976 -1420.488 -30.300 ) spawnflags 4
local.botnodes[16] = spawn info_pathnode origin ( 1150.000 -1551.476 -23.765 ) spawnflags 4
local.botnodes[17] = spawn info_pathnode origin ( 1181.056 -1674.077 -17.179 ) spawnflags 4
local.botnodes[18] = spawn info_pathnode origin ( 1217.649 -1807.122 -5.274 ) spawnflags 4
local.botnodes[19] = spawn info_pathnode origin ( 1254.088 -1938.307 9.010 ) spawnflags 4
local.botnodes[20] = spawn info_pathnode origin ( 1290.374 -2068.939 22.524 ) spawnflags 4
local.botnodes[21] = spawn info_pathnode origin ( 1322.028 -2192.403 35.398 ) spawnflags 4 

Code: Select all
writeing script
writeing script
made node
made node
writeing script
made node
made node
writeing script
made node
writeing script
Disconnected from server
----- Server Shutdown -----
---------------------------
------- S_StopAllSounds (stop music) -------
------- S_StopAllSounds Complete-------