Advertisement
Guest User

Untitled

a guest
Aug 17th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1.  
  2.  
  3. //==================================================================
  4. function getWayPointlist(%trigger)
  5. {
  6. %waypointlist = new arrayobject();
  7. %probabilityMark = 0;
  8. for (%i=0;%i<8;%i++)
  9. {
  10. if (isObject(%trigger.waypoint[%i]))
  11. {
  12. %waypoint = %trigger.waypoint[%i];
  13. %probabilityMark += %trigger.probability[%i];
  14. %waypointlist.add(%waypoint,%probabilityMark);
  15. }
  16. else
  17. {
  18. %waypointlist.add(-1,0);
  19. }
  20. }
  21. return %waypointlist;
  22. }
  23.  
  24. function AIPlayer::pickWayPoint(%this,%trigger)
  25. {
  26. %waypointlist = getWayPointlist(%trigger);
  27.  
  28. //roll on the resulting WayPoint-'table'
  29. %count = %waypointlist.count();
  30. %roll = getRandom()*100;
  31.  
  32. %ourPos = %this.getWorldBoxCenter();
  33. %enemyDist = 99999;
  34. if (isObject(%this.enemy))
  35. %enemyDist = %this.getDistanceBias(%this.enemy);
  36.  
  37. for (%i=0; %i<%count; %i++)
  38. {
  39. if (%waypoint $= "")
  40. {
  41. if (%roll <= %waypointlist.getValue(%i))
  42. {
  43. %waypoint = %waypointlist.getKey(%i);
  44.  
  45. %waypointPos = %waypoint.getWorldBoxCenter();
  46. %waypointDist = VectorDist(%waypointPos, %ourPos);
  47. if (%waypointDist/10000<%enemyDist)
  48. {
  49. %this.setPathDestination(%waypoint.getPosition());
  50. %this.nextCommandTime = $Sim::Time + %waypointDist*$botStateDuration[$botstate_WaypointMove]/10000;
  51. }
  52. return;
  53. }
  54. }
  55. }
  56. if (%waypoint $= "")
  57. %this.PathToNearest();
  58. }
  59.  
  60. function NavTrigger::onEnterTrigger( %this, %trigger, %obj)
  61. {
  62. if (%obj.isBot)
  63. {
  64. %obj.pickWayPoint(%trigger);
  65. }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement