Skip to content
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Donate
Collapse

Plutonium

  1. Home
  2. MW3 Modding Releases & Resources
  3. [Preview][Animated movement(not fully)] AIBots

[Preview][Animated movement(not fully)] AIBots

Scheduled Pinned Locked Moved MW3 Modding Releases & Resources
34 Posts 13 Posters 4.6k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S3VDITOundefined S3VDITO

    VERsingthegamez
    not yet.
    I can’t implement some functions for bots due to problems in Chai.

    VERsingthegamezundefined Offline
    VERsingthegamezundefined Offline
    VERsingthegamez
    wrote on last edited by
    #21

    S3VDITO limitations or just problems that you have not learned?

    1 Reply Last reply
    0
    • S3VDITOundefined Offline
      S3VDITOundefined Offline
      S3VDITO
      wrote on last edited by
      #22

      VERsingthegamez
      limitations

      VERsingthegamezundefined 1 Reply Last reply
      0
      • S3VDITOundefined S3VDITO

        VERsingthegamez
        limitations

        VERsingthegamezundefined Offline
        VERsingthegamezundefined Offline
        VERsingthegamez
        wrote on last edited by
        #23

        S3VDITO limitations you think you can overcome?

        S3VDITOundefined 1 Reply Last reply
        0
        • VERsingthegamezundefined VERsingthegamez

          S3VDITO limitations you think you can overcome?

          S3VDITOundefined Offline
          S3VDITOundefined Offline
          S3VDITO
          wrote on last edited by
          #24

          VERsingthegamez I can’t say it in advance, but until my efforts bearing works results

          1 Reply Last reply
          0
          • VERsingthegamezundefined Offline
            VERsingthegamezundefined Offline
            VERsingthegamez
            wrote on last edited by
            #25

            any new updates?

            S3VDITOundefined 1 Reply Last reply
            0
            • VERsingthegamezundefined VERsingthegamez

              any new updates?

              S3VDITOundefined Offline
              S3VDITOundefined Offline
              S3VDITO
              wrote on last edited by
              #26

              VERsingthegamez not yet

              VERsingthegamezundefined 1 Reply Last reply
              0
              • S3VDITOundefined S3VDITO

                VERsingthegamez not yet

                VERsingthegamezundefined Offline
                VERsingthegamezundefined Offline
                VERsingthegamez
                wrote on last edited by
                #27

                S3VDITO the anticipation is killing me. 😧

                1 Reply Last reply
                0
                • INeedGamesundefined Offline
                  INeedGamesundefined Offline
                  INeedGames
                  wrote on last edited by
                  #28

                  Cool work!

                  1 Reply Last reply
                  0
                  • VERsingthegamezundefined Offline
                    VERsingthegamezundefined Offline
                    VERsingthegamez
                    wrote on last edited by
                    #29

                    any update?

                    1 Reply Last reply
                    0
                    • S3VDITOundefined Offline
                      S3VDITOundefined Offline
                      S3VDITO
                      wrote on last edited by
                      #30

                      Further development is on hold, i am waiting for the PlutoIW5 update to continue what i started.

                      VERsingthegamezundefined 1 Reply Last reply
                      0
                      • S3VDITOundefined S3VDITO

                        Further development is on hold, i am waiting for the PlutoIW5 update to continue what i started.

                        VERsingthegamezundefined Offline
                        VERsingthegamezundefined Offline
                        VERsingthegamez
                        wrote on last edited by
                        #31

                        S3VDITO what update?

                        S3VDITOundefined 1 Reply Last reply
                        0
                        • VERsingthegamezundefined VERsingthegamez

                          S3VDITO what update?

                          S3VDITOundefined Offline
                          S3VDITOundefined Offline
                          S3VDITO
                          wrote on last edited by
                          #32

                          VERsingthegamez updating the script engine, which is unlikely, but possible

                          1 Reply Last reply
                          0
                          • RmRsundefined Offline
                            RmRsundefined Offline
                            RmRs
                            wrote on last edited by
                            #33

                            I'm actually looking forward to the development of this. I really want bots to move, even if its just walking. So I can use them as target practice. Good luck

                            1 Reply Last reply
                            2
                            • S3VDITOundefined S3VDITO

                              Since I try to make Survival Mod, the first thing I started is the bots, or rather their logic of movement and attack.

                              At the moment I only implemented LookLogic (not fully)

                              This is just a preview, I think in the future I can give the bots full logic, but my plans are only related to Survival Mod, I do not consider other modes yet (FFA is currently working)

                              Send me PM, if you have any ideas for realizing

                              Watching logic
                              https://www.youtube.com/watch?v=RDlMABVC9Vw

                              Move logic
                              https://www.youtube.com/watch?v=N81LXQvNl3k

                              Animated move
                              https://www.youtube.com/watch?v=3brC8vSBS1w

                              Implemeted:

                              1. Look logic (default target player with num 0)
                              2. Move logic (default target player with num 0) IF BOT SEE YOU
                              3. Animated movement

                              [this list will be updated]

                              Download only look logic

                              Download move logic added

                              Download movement animation added

                              Source:

                              // This is preview version 
                              // This is only the beginning of creating bots with the logic of movement and attack, 
                              // but first of all I want to create Survival mode, so do not expect bots that can play in TDM, FFA, DZ and other.
                              // I guess I would do it after creating this script
                              
                              // AIBots by S3VDITO
                              // Ver 0.0.0.3
                              // Realized: 
                              // 1 - watching for player function (not works now)
                              // 2 - move logic [not fully] [without check collision] (in progress...)
                              // 3 - animated movement
                              
                              gsc.setDvar("testClients_doAttack", 0);
                              gsc.setDvar("testClients_doCrouch", 0);
                              gsc.setDvar("testClients_doMove", 0);
                              gsc.setDvar("testClients_doReload", 0);
                              gsc.setDvar("testClients_doWatchKillcam", 0);
                              
                              gsc.setDvarIfUninitialized("testClients_doSpeed", 4);
                              
                              global bot_speed = to_float(gsc.getDvar("testClients_doSpeed"));
                              
                              global bots_list = [];
                              
                              global player_target_list = [];
                              
                              level.onNotify("connected", fun(args) {
                              	var player = args[0];
                              	print(player.getGuid().find("bot"));
                              	if(player.getGuid().find("bot") != 0)
                              	{
                              		print("Player connected");
                              		player_target_list.push_back_ref(player);
                              	}
                              });
                              
                              level.onNotify("prematch_done", fun(args) {
                              	if(gsc.getDvar("g_gametype") == "dm") {
                              		for(var entRef = 0; entRef < 18; ++entRef)
                              		{
                              			var tempEntBot = gsc.getEntByNum(entRef);
                              			if(tempEntBot.getGuid().find("bot") == 0)
                              			{
                              				var animBody = gsc.spawn("script_model", tempEntBot.getOrigin());
                              				animBody.setmodel("mp_body_delta_elite_assault_ab");
                              				animBody.notsolid();
                              				
                              				animBody.LinkTo(tempEntBot, "tag_origin", [-4, 0, -1], [-4, 0, -1]);
                              				
                              				bots_list.push_back_ref(tempEntBot);
                              				
                              				setInterval(fun[tempEntBot, animBody]() { 
                              					botMove(tempEntBot, gsc.getEntByNum(0), animBody); 
                              				}, 50);
                              				
                              				setInterval(fun[animBody]() { 
                              					animBody.scriptModelPlayAnim("pb_stumble_pistol_walk_forward");
                              				}, 1000);
                              			}
                              		}
                              	}
                              });
                              
                              def botMove(bot, target, animModel)
                              {		
                              	var bot_weapon_origin = bot.getTagOrigin("tag_weapon_left");
                              
                              	HideTestClientParts(bot);
                              	
                              	if(LockSightTest(bot, target) == false)
                              	{
                              		// animModel.scriptModelPlayAnim("pb_stand_alert_pistol");
                              		return;
                              	}
                              	else
                              	{
                              		
                              	
                              		var angle = gsc.vectorToAngles([target.getTagOrigin("j_helmet")[0] - bot_weapon_origin[0], target.getTagOrigin("j_helmet")[1] - bot_weapon_origin[1], target.getTagOrigin("j_helmet")[2] - bot_weapon_origin[2]]);
                              		bot.setPlayerAngles(angle);
                              		
                              		// Spaming field bug =(
                              		//animModel.set("angles", bot.getPlayerAngles());
                              	}
                              	
                              	var moveTarget = target.getOrigin();
                              	var distance = gsc.distanceSquared(moveTarget, bot.getOrigin());
                              	if(gsc.distance(moveTarget, bot.getOrigin()) <= 64)
                              	{
                              		// bot_speed = 0;
                              	}
                              	else
                              	{
                              		bot_speed = to_float(gsc.getDvar("testClients_doSpeed"));
                              		var normalize = gsc.vectorNormalize([moveTarget[0] - bot.getOrigin()[0], moveTarget[1] - bot.getOrigin()[1], moveTarget[2] - bot.getOrigin()[2]]);
                              		bot.setOrigin([bot.getOrigin()[0] + normalize[0] * bot_speed, bot.getOrigin()[1] + normalize[1] * bot_speed, bot.getOrigin()[2] + normalize[2] * bot_speed]);
                              	}
                              }
                              
                              def HideTestClientParts(bot)
                              {
                              	bot.hidepart("j_ankle_le");
                              	bot.hidepart("j_hiptwist_le");
                              	bot.hidepart("j_head");
                              	bot.hidepart("j_helmet");
                              	bot.hidepart("j_eyeball_le");
                              	bot.hidepart("j_clavicle_le");
                              }
                              
                              
                              // Stolen from _stinger.gsc :)
                              def LockSightTest(self, target)
                              {
                              	var eyePos = self.GetEye();
                              	
                              	var passed = gsc.SightTracePassed(eyePos, target.getOrigin(), false, target);
                              	if ( passed == 1)
                              	{
                              		return true;
                              	}
                              
                              	var front = target.GetPointInBounds(1, 0, 0);
                              	passed = gsc.SightTracePassed( eyePos, front, false, target );
                              	if (passed == 1)
                              	{
                              		return true;
                              	}	
                              
                              	var back = target.GetPointInBounds(-1, 0, 0);
                              	passed = gsc.SightTracePassed( eyePos, back, false, target );
                              	if (passed == 1)
                              	{
                              		return true;
                              	}
                              
                              	return false;
                              }
                              
                              
                              dimssadityaundefined Offline
                              dimssadityaundefined Offline
                              dimssaditya
                              wrote on last edited by
                              #34

                              please fix only logic bots mod link, because it's error

                              1 Reply Last reply
                              0
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              • 1
                              • 2
                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Recent
                              • Tags
                              • Popular
                              • Users
                              • Groups
                              • Donate