public void CmdPlayerCombat(Transform attacker, Transform defender) { this.Attacker = PlayerTable.Select((int)attacker.GetComponent <PlayerData>().netId.Value); this.AttackerCharacter = CharacterTable.Select(this.Attacker.CharacterID); this.AttackerInventory = InventoryTable.Select(this.Attacker.InventoryID); this.Weapon = WeaponTable.Select(this.AttackerInventory.Weapon_ID); this.Defender = PlayerTable.Select((int)defender.GetComponent <PlayerData>().netId.Value); bool EnoughStamina; int Damage = CountFireDamage(out EnoughStamina); if (EnoughStamina) { if (Damage > 0) { LifeLoss(Damage); this.Message = System.Convert.ToString(Damage); } else { this.Message = "miss"; } } else { this.Message = "influcient action points"; } }
public void CmdCharacterSelection(string name, int ID) { Player player = new Player(); Character c = CharacterTable.Select(ID); Inventory i = new Inventory(); Weapon w = WeaponTable.Select(c.Weapon); player.ID = (int)netId.Value; player.Name = name; player.Health = Constants.player_basehealth + c.BHealth; player.Score = 0; player.Armor = 0; player.CharacterID = ID; player.InventoryID = InventoryTable.Select_Count() + 1; PlayerTable.Insert(player); i.Actual = w.Ammo; i.Player_ID = player.ID; i.Weapon_ID = c.Weapon; i.Slot = InventoryTable.Select_Count() + 1; InventoryTable.Insert(i); PlayerSelection.UsedWeapon = w.Name; Debug.Log("Srv exec." + name + "," + ID); _playerData.Name = player.Name; _playerData.Armor = player.Armor; _playerData.Health = player.Health; _playerData.Score = player.Score; _playerData.Inventory_ID = player.InventoryID; _playerData.Character_ID = player.CharacterID; _playerData.IsMoving = false; // TODO: Generate position for player. }
private int CountFireDamage(out bool EnoughStamina) { /* * Výpočet dmg * Odečtení náboje * odečtení actionpointů * * vrací dmg + out parametr dává najevo, jestli je dost staminy */ PlayerCombat.ActionPointLoss = this.Weapon.Cost; // pro vypis PlayerCombat.BaseActPoint = this.AttackerCharacter.Stamina; // pro vypis if (this.AttackerCharacter.Stamina >= this.Weapon.Cost) { EnoughStamina = true; int Accuracy = this.Weapon.Accuracy; PlayerCombat.Accuracy = Accuracy; // pro vypis int RawDamage = this.Weapon.Damage; this.AttackerInventory.Actual--; InventoryTable.Update(AttackerInventory); this.AttackerCharacter.Stamina -= this.Weapon.Cost; PlayerCombat.CurrActionPoint = this.AttackerCharacter.Stamina; // pro vypis System.Random r = new System.Random(); int RandAcc = r.Next(0, 100); if (RandAcc > Accuracy) { return(0); } else { System.Random DamageOnRange = new System.Random(); int Damage = DamageOnRange.Next(System.Convert.ToInt32(RawDamage * 0.85), RawDamage); PlayerCombat.Dmg = Damage; // pro vypis return(Damage); } } EnoughStamina = false; return(0); }
public void CmdRefill(int id) { Player player = PlayerTable.Select(id); System.Random rnd = new System.Random(); int rnum = rnd.Next(0, 100); if (rnum >= 0 && rnum <= 33) //healthpack { Character ch = CharacterTable.Select(player.CharacterID); player.Health = ch.BHealth + Constants.player_basehealth; PlayerTable.Update(player); this.message = "Health"; } else if (rnum > 33 && rnum <= 66)//ammo { Inventory i = InventoryTable.Select(player.InventoryID); i.Actual = WeaponTable.Select(i.Weapon_ID).Ammo; InventoryTable.Update(i); this.message = "Ammo"; } else //Weapon { Collection <Weapon> weapons = WeaponTable.Select(); Collection <Inventory> inventories = InventoryTable.Select(); Collection <Weapon> notowned = new Collection <Weapon>(); foreach (Weapon w in weapons) { bool add = true; foreach (Inventory inv in inventories) { if (w.ID == inv.Weapon_ID && inv.Player_ID == player.ID) //pokud hráč již vlastní zbraň { add = false; break; } } if (add) { notowned.Add(w); } } if (notowned.Count == 0) //pokud uz vlastnim vše { Character ch = CharacterTable.Select(player.CharacterID); player.Armor += 100; PlayerTable.Update(player); this.message = "Armor"; } else { int WeaponID = rnd.Next(0, notowned.Count - 1); Inventory i = new Inventory(); i.Player_ID = player.ID; i.Weapon_ID = notowned[WeaponID].ID; i.Actual = notowned[WeaponID].Ammo; i.Slot = InventoryTable.Select_Count() + 1; InventoryTable.Insert(i); this.message = notowned[WeaponID].Name; } } PlayerRefill.ObtainedItem = this.message; }
public static void Create(out string TestResult) { List <string> Comment = new List <string>(); Comment.Add("Přidáno: \n"); CharacterTable.DeleteAll(); InventoryTable.DeleteAll(); PlayerTable.DeleteAll(); WeaponTable.DeleteAll(); try { Comment.Add(Test_CreateWapon()); } catch { Comment.Add("Zbraně se nevytvořily"); } try { Comment.Add(Test_CreateCharacters()); } catch { Comment.Add("Charactery se nevytvořily"); } Comment.Add(" ===================================="); Comment.Add("2 hráči"); Comment.Add("====================================="); try { Comment.Add(Test_CreatePlayers()); } catch { Comment.Add("Hráči se nevytvořili"); } Comment.Add(" ===================================="); Comment.Add("CombatSystem"); Comment.Add("====================================="); try { Comment.Add(Test_PlayerCombat()); } catch { Comment.Add("Nedošlo k souboji"); } Comment.Add(" ===================================="); Comment.Add("LootBox"); Comment.Add("====================================="); try { for (uint i = 0; i < 100; i++) { Comment.Add(Test_refill(1)); } } catch { Comment.Add("Nepadlo nic"); } try { /*Test_StatReport(1); * Test_StatReport(2);*/ } catch { Comment.Add("Nepovedlo se načíst z hráče"); } var comment = System.String.Join("", Comment.ToArray()); TestResult = comment; try { using (StreamWriter writer = new StreamWriter("QA_Tests.txt")) { foreach (string s in Comment) { writer.WriteLine(s); } } } catch { } }