本文整理汇总了C#中Server.MirObjects.PlayerObject.GainGold方法的典型用法代码示例。如果您正苦于以下问题:C# PlayerObject.GainGold方法的具体用法?C# PlayerObject.GainGold怎么用?C# PlayerObject.GainGold使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Server.MirObjects.PlayerObject
的用法示例。
在下文中一共展示了PlayerObject.GainGold方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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: Act
private void Act(IList<NPCActions> acts, PlayerObject player)
{
for (var i = 0; i < acts.Count; i++)
{
NPCActions act = acts[i];
uint gold;
uint count;
string path;
switch (act.Type)
{
case ActionType.Teleport:
var map = SMain.Envir.GetMapByNameAndInstance((string)act.Params[0]);
if (map == null) return;
var coords = (Point)act.Params[1];
if (coords.X > 0 && coords.Y > 0) player.Teleport(map, coords);
else player.TeleportRandom(200, 0, map);
break;
case ActionType.InstanceTeleport:
map = SMain.Envir.GetMapByNameAndInstance((string)act.Params[0], (int)act.Params[1]);
if (map == null) return;
player.Teleport(map, (Point)act.Params[2]);
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 == 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;
//.........这里部分代码省略.........