Beispiel #1
0
 static void Postfix()
 {
     players.ForEach((ServerRoundPlayer serverRoundPlayer) =>
     {
         Vector3 position = serverRoundPlayer.PlayerTransform.position;
         List <int> ids   = new List <int>();
         for (int i = 0; i < maxBot; i++)
         {
             ids.Add(Framework.addCarbonPlayer("test01"));
         }
         ids.ForEach((id) =>
         {
             position.z += 1;
             Framework.CarbonPlayer player = Framework.getCarbonPlayer(id);
             player.spawn(serverRoundPlayer.PlayerStartData.Faction, PlayerClass.ArmyLineInfantry);
             posCache.Add(id, position);
         });
         if (playerToBot.ContainsKey(serverRoundPlayer.NetworkPlayerID))
         {
             playerToBot.Remove(serverRoundPlayer.NetworkPlayerID);
         }
         playerToBot.Add(serverRoundPlayer.NetworkPlayerID, ids);
     });
     players.Clear();
 }
Beispiel #2
0
        private static void spawnTarget(FactionCountry faction, Vector3 position, Vector3 forward, int distance, int num)
        {
            if (!posList.ContainsKey(faction))
            {
                posList.Add(faction, new Queue <Vector3>());
            }
            Vector3 center      = position + forward.normalized * distance;
            Vector3 forward_hoz = Quaternion.Euler(0, 90, 0) * forward.normalized;

            for (int i = 0; i < num; i++)
            {
                Vector3 item;
                if (i % 2 == 0)
                {
                    item = center + ((i / 2) + 1) * forward_hoz.normalized;
                }
                else
                {
                    item = center - (i / 2) * forward_hoz.normalized;
                }
                item.y = vectorAngle(new Vector2(position.x, position.y), new Vector2(item.x, item.y));
                posList[faction].Enqueue(item);
            }
            posList.ToDfList().ForEach((KeyValuePair <FactionCountry, Queue <Vector3> > pair) =>
            {
                pair.Value.ToDfList().ForEach((Vector3 pos) =>
                {
                    int id = Framework.addCarbonPlayer("靶标机器人");
                    botList.Add(id);
                    Framework.CarbonPlayer player = Framework.getCarbonPlayer(id);
                    player.spawn(pair.Key, PlayerClass.ArmyLineInfantry);
                });
            });
        }
Beispiel #3
0
        private static void Framework_playerSpawnDelegate(int playerId)
        {
            ServerRoundPlayer serverRoundPlayer =
                instant.serverRoundPlayerManager.ResolveServerRoundPlayer(playerId);

            if (serverRoundPlayer.NetworkPlayer.isCarbonPlayer && serverRoundPlayer.SpawnData.ClassType == PlayerClass.ArmyLineInfantry)
            {
                FactionCountry faction = serverRoundPlayer.SpawnData.Faction;
                if (!posList.ContainsKey(faction))
                {
                    return;
                }
                Vector3 vector = posList[faction].Dequeue();
                Framework.CarbonPlayer player = Framework.getCarbonPlayer(playerId);
                player.teleport(vector);
                vector.x = 0;
                vector.z = 0;
                Framework.getCarbonPlayer(playerId).activeAction(PlayerActions.FireFirearm, vector, MeleeStrikeType.None);
            }
        }