本文整理汇总了C#中Server.MirObjects.PlayerObject.RefreshStats方法的典型用法代码示例。如果您正苦于以下问题:C# PlayerObject.RefreshStats方法的具体用法?C# PlayerObject.RefreshStats怎么用?C# PlayerObject.RefreshStats使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Server.MirObjects.PlayerObject
的用法示例。
在下文中一共展示了PlayerObject.RefreshStats方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Act
private void Act(List<NPCActions> acts, PlayerObject player)
{
for (int i = 0; i < acts.Count; i++)
{
NPCActions act = acts[i];
uint gold;
uint count;
switch (act.Type)
{
case ActionType.Teleport:
Map temp = SMain.Envir.GetMap((int) act.Params[0]);
if (temp == null) return;
player.Teleport(temp, (Point) act.Params[1]);
break;
case ActionType.GiveGold:
gold = (uint)act.Params[0];
if (gold + player.Account.Gold >= uint.MaxValue)
gold = uint.MaxValue - player.Account.Gold;
player.GainGold(gold);
break;
case ActionType.TakeGold:
gold = (uint) act.Params[0];
if (gold >= player.Account.Gold) gold = player.Account.Gold;
player.Account.Gold -= gold;
player.Enqueue(new S.LoseGold { Gold = gold });
break;
case ActionType.GiveItem:
count = (uint)act.Params[1];
while (count > 0)
{
UserItem item = SMain.Envir.CreateFreshItem((ItemInfo)act.Params[0]);
if (item == null)
{
SMain.Enqueue(string.Format("Failed to create UserItem: {0}, Page: {1}", act.Params[0], Key));
return;
}
if (item.Info.StackSize > count)
{
item.Count = count;
count = 0;
}
else
{
count -= item.Info.StackSize;
item.Count = item.Info.StackSize;
}
if (player.CanGainItem(item, false))
player.GainItem(item);
}
break;
case ActionType.TakeItem:
ItemInfo info = (ItemInfo) act.Params[0];
count = (uint) act.Params[1];
for (int o = 0; o < player.Info.Inventory.Length; o++)
{
UserItem item = player.Info.Inventory[o];
if (item.Info != info) continue;
if (count > item.Count)
{
player.Enqueue(new S.DeleteItem {UniqueID = item.UniqueID, Count = item.Count});
player.Info.Inventory[o] = null;
count -= item.Count;
continue;
}
player.Enqueue(new S.DeleteItem { UniqueID = item.UniqueID, Count = count });
if (count == item.Count)
player.Info.Inventory[o] = null;
else
item.Count -= count;
break;
}
player.RefreshStats();
break;
}
}
}
示例2: NewMember
public void NewMember(PlayerObject newmember)
{
if (Ranks.Count < 2)
Ranks.Add(new Rank() { Name = "Members", Index = 1});
Rank currentrank = Ranks[Ranks.Count - 1];
GuildMember Member = new GuildMember() { name = newmember.Info.Name, Player = newmember, Id = newmember.Info.Index, LastLogin = Envir.Now, Online = true };
currentrank.Members.Add(Member);
PlayerLogged(newmember, true, true);
newmember.RefreshStats();
newmember.Enqueue(new ServerPackets.GuildBuffList() { ActiveBuffs = BuffList });
Membercount++;
NeedSave = true;
}
示例3: MemberDeleted
public void MemberDeleted(string name, PlayerObject formermember, bool kickself)
{
PlayerObject player = null;
for (int i = 0; i < Ranks.Count; i++)
for (int j = 0; j < Ranks[i].Members.Count; j++)
{
if ((Ranks[i].Members[j].Player != null) && (Ranks[i].Members[j].Player != formermember))
{
player = (PlayerObject)Ranks[i].Members[j].Player;
player.Enqueue(new ServerPackets.GuildMemberChange() { Name = name, Status = (byte)(kickself ? 4:3) });
player.GuildMembersChanged = true;
}
}
if (formermember != null)
{
formermember.Info.GuildIndex = -1;
formermember.MyGuild = null;
formermember.MyGuildRank = null;
formermember.ReceiveChat(kickself ? "You have left your guild." : "You have been removed from your guild.", ChatType.Guild);
formermember.RefreshStats();
formermember.Enqueue(new ServerPackets.GuildStatus() { GuildName = "", GuildRankName = "", MyOptions = (RankOptions)0 });
formermember.BroadcastInfo();
}
}
示例4: Act
//.........这里部分代码省略.........
if (player.CanGainItem(item, false))
player.GainItem(item);
}
break;
case ActionType.TakeItem:
ItemInfo info = (ItemInfo)act.Params[0];
count = (uint)act.Params[1];
for (int o = 0; o < player.Info.Inventory.Length; o++)
{
UserItem item = player.Info.Inventory[o];
if (item == null) continue;
if (item.Info != info) continue;
if (count > item.Count)
{
player.Enqueue(new S.DeleteItem { UniqueID = item.UniqueID, Count = item.Count });
player.Info.Inventory[o] = null;
count -= item.Count;
continue;
}
player.Enqueue(new S.DeleteItem { UniqueID = item.UniqueID, Count = count });
if (count == item.Count)
player.Info.Inventory[o] = null;
else
item.Count -= count;
break;
}
player.RefreshStats();
break;
case ActionType.GiveExp:
player.GainExp((uint)act.Params[0]);
break;
case ActionType.GivePet:
for (var c = 0; c < (byte)act.Params[1]; c++)
{
MonsterObject monster = MonsterObject.GetMonster((MonsterInfo)act.Params[0]);
if (monster == null) return;
monster.PetLevel = (byte)act.Params[2];
monster.Master = player;
monster.MaxPetLevel = 7;
monster.Direction = player.Direction;
monster.ActionTime = SMain.Envir.Time + 1000;
monster.Spawn(player.CurrentMap, player.CurrentLocation);
player.Pets.Add(monster);
}
break;
case ActionType.AddNameList:
path = (string)act.Params[0];
if (File.ReadAllLines(path).All(t => player.Name != t))
{
using (var line = File.AppendText(path))
{
line.WriteLine(player.Name);
}
}
break;