本文整理汇总了C#中Player.setLastAnimation方法的典型用法代码示例。如果您正苦于以下问题:C# Player.setLastAnimation方法的具体用法?C# Player.setLastAnimation怎么用?C# Player.setLastAnimation使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Player
的用法示例。
在下文中一共展示了Player.setLastAnimation方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: cutLog
public static void cutLog(Player p, int amount, int logType, int itemType, bool isStringing, bool newFletch)
{
Bow item = null;
if (newFletch)
{
item = getBow(itemType, logType, amount, isStringing);
Fletching.setFletchItem(p, item);
}
item = (Bow)Fletching.getFletchItem(p);
if (item == null || p == null)
{
return;
}
bool stringing = item.isStringing();
if (!canFletch(p, item, stringing))
{
p.getPackets().closeInterfaces();
return;
}
int animation = getAnimation(item);
if (!stringing)
{
int amt = item.getItemType() == 2 ? ARROW_AMOUNT : 1;
if (p.getInventory().deleteItem(LOGS[item.getLogType()]))
{
p.getInventory().addItem(item.getFinishedItem(), amt);
p.getSkills().addXp(Skills.SKILL.FLETCHING, item.getXp());
item.decreaseAmount();
p.getPackets().sendMessage("You carefully cut the wood into " + MESSAGE[item.getItemType()] + ".");
p.setLastAnimation(new Animation(animation));
}
}
else
{
int[] bows = item.getItemType() == 0 ? UNSTRUNG_SHORTBOW : UNSTRUNG_LONGBOW;
if (p.getInventory().deleteItem(BOWSTRING) && p.getInventory().deleteItem(bows[item.getLogType()]))
{
p.getInventory().addItem(item.getFinishedItem());
p.getSkills().addXp(Skills.SKILL.FLETCHING, item.getXp());
item.decreaseAmount();
p.getPackets().sendMessage("You add a string to the bow.");
p.setLastAnimation(new Animation(animation));
}
}
p.getPackets().closeInterfaces();
if (item.getAmount() >= 1)
{
Event cutMoreLogsEvent = new Event(1500);
cutMoreLogsEvent.setAction(() =>
{
cutLog(p, -1, -1, -1, false, false);
cutMoreLogsEvent.stop();
});
Server.registerEvent(cutMoreLogsEvent);
}
}
示例2: fillingVial
// TODO make this use an AreaEvent so itll work from a distance.
/**
* Will fill vials in a continuous motion from a water source.
*/
public static bool fillingVial(Player p, Location loc)
{
if (!p.getInventory().hasItem(VIAL) || !p.getLocation().withinDistance(loc, 2))
{
return true;
}
if (p.getTemporaryAttribute("fillVialTimer") != null)
{
long lastFillTime = (int)p.getTemporaryAttribute("fillVialTimer");
if (Environment.TickCount - lastFillTime < 600)
{
return true;
}
}
p.setTemporaryAttribute("fillingVials", true);
p.setFaceLocation(loc);
Event fillVialEvent = new Event(500);
fillVialEvent.setAction(() =>
{
int amountFilled = 0;
string s = amountFilled == 1 ? "vial" : "vials";
if (p.getTemporaryAttribute("fillingVials") == null || !p.getLocation().withinDistance(loc, 2) || !p.getInventory().hasItem(229))
{
p.setLastAnimation(new Animation(65535));
if (amountFilled > 0)
{
p.getPackets().sendMessage("You fill up the " + s + " with water.");
}
fillVialEvent.stop();
return;
}
if (p.getInventory().replaceSingleItem(VIAL, VIAL_OF_WATER))
{
p.setLastAnimation(new Animation(832));
amountFilled++;
p.setTemporaryAttribute("fillVialTimer", Environment.TickCount);
}
else
{
if (amountFilled > 0)
{
p.setLastAnimation(new Animation(65535));
p.getPackets().sendMessage("You fill up the " + s + " with water.");
}
fillVialEvent.stop();
}
});
Server.registerEvent(fillVialEvent);
return true;
}
示例3: vengeance
private static void vengeance(Player p, int id)
{
if (id == 14) { // Normal vengeance
if (!p.getInventory().hasItemAmount(560, 2) || !p.getInventory().hasItemAmount(557, 10) || !p.getInventory().hasItemAmount(9075, 4)) {
p.getPackets().sendMessage("You do not have enough runes to cast Vengeance!");
return;
}
if (p.hasVengeance()) {
p.getPackets().sendMessage("You have already filled yourself with vengeance.");
return;
} else {
if (Environment.TickCount - p.getLastVengeanceTime() <= 30000)
{
p.getPackets().sendMessage("You cannot cast this spell yet.");
return;
}
}
p.getInventory().deleteItem(560, 2);
p.getInventory().deleteItem(557, 10);
p.getInventory().deleteItem(9075, 4);
p.setLastAnimation(new Animation(4410));
p.setLastGraphics(new Graphics(726, 0, 80));
p.setLastVengeanceTime(Environment.TickCount);
p.setVengeance(true);
}
}
示例4: completePotion
public static void completePotion(Player p, int amount, bool newMix)
{
if (newMix && p.getTemporaryAttribute("completePotion") == null)
{
return;
}
if (!newMix && p.getTemporaryAttribute("herbloreItem") == null)
{
return;
}
if (newMix)
{
if (p.getTemporaryAttribute("completePotion") == null)
{
return;
}
int index = (int)p.getTemporaryAttribute("completePotion");
p.setTemporaryAttribute("herbloreItem", new Potion(END_POTION[index], UNFINISHED[index], SECONDARY[index], POTION_LEVEL[index], POTION_XP[index], amount));
}
Potion item = (Potion)p.getTemporaryAttribute("herbloreItem");
if (item == null || p == null || item.getAmount() <= 0)
{
resetAllHerbloreVariables(p);
return;
}
if (!p.getInventory().hasItem(item.getSecondary()) || !p.getInventory().hasItem(item.getUnfinished()))
{
resetAllHerbloreVariables(p);
return;
}
if (p.getSkills().getGreaterLevel(Skills.SKILL.HERBLORE) < item.getLevel())
{
p.getPackets().sendMessage("You need a Herblore level of " + item.getLevel() + " to make that potion.");
resetAllHerbloreVariables(p);
return;
}
string s = ItemData.forId(item.getFinished()).getName().Replace("(3)", "");
if (p.getInventory().deleteItem(item.getUnfinished()) && p.getInventory().deleteItem(item.getSecondary()))
{
if (p.getInventory().addItem(item.getFinished()))
{
item.decreaseAmount();
p.setLastAnimation(new Animation(MIX_ANIMATION));
p.getSkills().addXp(Skills.SKILL.HERBLORE, item.getXp());
p.getPackets().sendMessage("You add the ingredient into the murky vial, you have completed the potion.");
p.getPackets().closeInterfaces();
}
}
if (item.getAmount() >= 1)
{
Event completeMorePotionsEvent = new Event(750);
completeMorePotionsEvent.setAction(() =>
{
completePotion(p, item.getAmount(), false);
completeMorePotionsEvent.stop();
});
Server.registerEvent(completeMorePotionsEvent);
}
}
示例5: cutGem
public static void cutGem(Player p, int index, int amount, bool newCut)
{
index -= 50;
if (newCut)
{
p.setTemporaryAttribute("craftItem", new CraftItem(5, index, amount, (double)GEMS[index][3], (int)GEMS[index][1], (string)GEMS[index][4], (int)GEMS[index][2]));
}
CraftItem item = (CraftItem)p.getTemporaryAttribute("craftItem");
if (item == null || p == null || item.getAmount() <= 0 || item.getCraftType() != 5)
{
Crafting.resetCrafting(p);
return;
}
p.getPackets().closeInterfaces();
if (!p.getInventory().hasItem(CHISEL))
{
p.getPackets().sendMessage("You cannot cut gems without a chisel.");
Crafting.resetCrafting(p);
return;
}
if (!p.getInventory().hasItem((int)GEMS[item.getCraftItem()][0]))
{
if (newCut)
{
p.getPackets().sendMessage("You have no " + item.getMessage() + " to cut.");
}
else
{
p.getPackets().sendMessage("You have no more " + item.getMessage() + "'s to cut.");
}
Crafting.resetCrafting(p);
return;
}
if (p.getSkills().getGreaterLevel(Skills.SKILL.CRAFTING) < item.getLevel())
{
p.getPackets().sendMessage("You need a Crafting level of " + item.getLevel() + " to cut that gem.");
Crafting.resetCrafting(p);
return;
}
if (p.getInventory().deleteItem((int)GEMS[item.getCraftItem()][0]))
{
p.getInventory().addItem(item.getFinishedItem());
p.getSkills().addXp(Skills.SKILL.CRAFTING, item.getXp());
p.setLastAnimation(new Animation((int)GEMS[item.getCraftItem()][5]));
p.getPackets().sendMessage("You cut the " + item.getMessage() + ".");
}
item.decreaseAmount();
if (item.getAmount() >= 1)
{
Event cutMoreGemEvent = new Event(1500);
cutMoreGemEvent.setAction(() =>
{
cutGem(p, -1, -1, false);
cutMoreGemEvent.stop();
});
Server.registerEvent(cutMoreGemEvent);
}
}
示例6: craftClay
public static void craftClay(Player p, int amount, int craftType, int craftItem, bool newCraft)
{
if (newCraft)
{
if ((craftType != 1 && craftType != 2) || craftItem < 0 || craftItem > 4)
{
return;
}
int index = craftItem;
int endItem = craftType == 1 ? 0 : 1;
int xp = craftType == 1 ? 3 : 4;
p.setTemporaryAttribute("craftItem", new CraftItem(craftType, craftItem, amount, (double)CLAY_ITEMS[index][xp], (int)CLAY_ITEMS[index][endItem], (string)CLAY_ITEMS[index][5], (int)CLAY_ITEMS[index][2]));
}
CraftItem item = (CraftItem)p.getTemporaryAttribute("craftItem");
if (item == null || p == null || item.getAmount() <= 0)
{
Crafting.resetCrafting(p);
return;
}
int neededItem = item.getCraftType() == 1 ? CLAY : (int)CLAY_ITEMS[item.getCraftItem()][0];
string s = item.getCraftType() == 1 ? "You mould the clay into a " + item.getMessage() : "You bake the " + item.getMessage() + " in the oven";
string s1 = item.getCraftType() == 1 ? "You need some soft clay to mould a " + item.getMessage() : "You need a pre-made " + item.getMessage() + " to put in the oven";
int animation = item.getCraftType() == 1 ? 883 : 899;
if (p.getSkills().getGreaterLevel(Skills.SKILL.CRAFTING) < item.getLevel())
{
p.getPackets().sendMessage("You need a Crafting level of " + item.getLevel() + " to make a " + item.getMessage() + ".");
Crafting.resetCrafting(p);
return;
}
if (!p.getInventory().hasItem(neededItem))
{
p.getPackets().sendMessage(s1 + ".");
Crafting.resetCrafting(p);
return;
}
p.getPackets().closeInterfaces();
if (p.getInventory().deleteItem(neededItem))
{
if (p.getInventory().addItem(item.getFinishedItem()))
{
p.getSkills().addXp(Skills.SKILL.CRAFTING, item.getXp());
p.getPackets().sendMessage(s + ".");
p.setLastAnimation(new Animation(animation));
}
}
item.decreaseAmount();
if (item.getAmount() >= 1)
{
Event craftMoreClayEvent = new Event(1500);
craftMoreClayEvent.setAction(() =>
{
craftClay(p, -1, -1, -1, false);
craftMoreClayEvent.stop();
});
Server.registerEvent(craftMoreClayEvent);
}
}
示例7: burnBoil
public static void burnBoil(Player p, int x, int y)
{
AreaEvent burnBoilAreaEvent = new AreaEvent(p, x - 1, y - 1, x + 3, y + 2);
burnBoilAreaEvent.setAction(() =>
{
if (!p.getInventory().hasItem(590))
{
p.getPackets().sendMessage("You need a tinderbox to get past this obstacle.");
return;
}
p.setFaceLocation(new Location(x + 1, y, 0));
p.setLastAnimation(new Animation(733));
p.setTemporaryAttribute("unmovable", true);
Event burnBoilEvent = new Event(1900);
burnBoilEvent.setAction(() =>
{
int status = 0;
int[] BOIL = { 7165, 7166, 7167 };
if (status < 3)
{
p.getPackets().createObject(BOIL[status], new Location(x, y, 0), x == 3060 ? 3 : 1, 10);
}
status++;
if (status == 1)
{
burnBoilEvent.setTick(1300);
}
if (status == 3)
{
p.setLastAnimation(new Animation(65535));
burnBoilEvent.setTick(1000);
}
if (status == 4)
{
burnBoilEvent.stop();
teleportPastObstacle(p);
p.removeTemporaryAttribute("unmovable");
}
});
Server.registerEvent(burnBoilEvent);
return;
});
Server.registerCoordinateEvent(burnBoilAreaEvent);
}
示例8: craftDragonHide
public static void craftDragonHide(Player p, int amount, int itemIndex, int leatherType, bool newCraft)
{
if (newCraft) {
itemIndex = leatherType != 0 ? itemIndex += leatherType : itemIndex;
p.setTemporaryAttribute("craftItem", new CraftItem(leatherType, itemIndex, amount, (double) LEATHER_ITEMS[itemIndex][2], (int) LEATHER_ITEMS[itemIndex][0], (string) LEATHER_ITEMS[itemIndex][4], (int) LEATHER_ITEMS[itemIndex][1]));
}
CraftItem item = (CraftItem) p.getTemporaryAttribute("craftItem");
if (item == null || p == null || item.getAmount() <= 0) {
Crafting.resetCrafting(p);
return;
}
p.getPackets().closeInterfaces();
int index = item.getCraftItem();
if (p.getSkills().getGreaterLevel(Skills.SKILL.CRAFTING) < item.getLevel()) {
p.getPackets().sendMessage("You need a Crafting level of " + item.getLevel() + " to craft that item.");
Crafting.resetCrafting(p);
return;
}
if (!p.getInventory().hasItemAmount(TANNED_HIDE[item.getCraftType()], (int) LEATHER_ITEMS[index][3])) {
p.getPackets().sendMessage("You need " + (int) LEATHER_ITEMS[index][3] + " dragonhide to craft that.");
Crafting.resetCrafting(p);
return;
}
if (!p.getInventory().hasItem(NEEDLE)) {
p.getPackets().sendMessage("You need a needle if you wish to craft leather.");
Crafting.resetCrafting(p);
return;
}
if (!p.getInventory().hasItemAmount(THREAD, (int)LEATHER_ITEMS[index][3])) {
p.getPackets().sendMessage("You need " + (int)LEATHER_ITEMS[index][3] + " thread to craft that.");
Crafting.resetCrafting(p);
return;
}
string s = index < 4 ? "a" : "a pair of";
for (int j = 0; j < (int) LEATHER_ITEMS[index][3]; j++) {
if (!p.getInventory().deleteItem(TANNED_HIDE[item.getCraftType()])) {
return;
}
}
p.getInventory().deleteItem(THREAD, (int) LEATHER_ITEMS[index][3]);
p.getInventory().addItem(item.getFinishedItem());
p.getSkills().addXp(Skills.SKILL.CRAFTING, item.getXp());
p.setLastAnimation(new Animation(1249));
p.getPackets().sendMessage("You craft " + s + " " + item.getMessage() + ".");
item.decreaseAmount();
if (item.getAmount() >= 1) {
Event craftMoreDragonHide = new Event(1500);
craftMoreDragonHide.setAction(() => {
craftDragonHide(p, -1, -1, -1, false);
craftMoreDragonHide.stop();
});
Server.registerEvent(craftMoreDragonHide);
}
}
示例9: chopTendrils
public static void chopTendrils(Player p, int x, int y)
{
int var = x == 3057 ? x+2 : x-1;
AreaEvent chopTendrilsAreaEvent = new AreaEvent(p, var, y, var, y+2);
chopTendrilsAreaEvent.setAction(() => {
if (!Woodcutting.hasAxe(p)) {
p.getPackets().sendMessage("You need an axe to get past this obstacle.");
return;
}
p.getWalkingQueue().resetWalkingQueue();
p.setFaceLocation(new Location(x + 1, y, 0));
p.setLastAnimation(new Animation(Woodcutting.getAxeAnimation(p)));
p.setTemporaryAttribute("unmovable", true);
Event chopTendrilsEvent = new Event(1900);
chopTendrilsEvent.setAction(() => {
int status = 0;
int[] TENDRILS = {7161, 7162, 7163};
if (status < 3) {
p.getPackets().createObject(TENDRILS[status], new Location(x, y, 0), x == 3057 ? 3 : 1, 10);
}
status++;
if (status == 1) {
p.setLastAnimation(new Animation(Woodcutting.getAxeAnimation(p)));
chopTendrilsEvent.setTick(1300);
}
if (status == 3) {
p.getPackets().sendMessage("You clear your way through the tendrils.");
p.setLastAnimation(new Animation(65535));
chopTendrilsEvent.setTick(800);
}
if (status == 4) {
chopTendrilsEvent.stop();
teleportPastObstacle(p);
p.removeTemporaryAttribute("unmovable");
}
});
Server.registerEvent(chopTendrilsEvent);
return;
});
Server.registerCoordinateEvent(chopTendrilsAreaEvent);
}
示例10: newSilverItem
public static void newSilverItem(Player p, int amount, int index, bool newCraft)
{
index -= 120;
if (newCraft)
{
p.setTemporaryAttribute("craftItem", new CraftItem(3, index, amount, (double)SILVER_ITEMS[index][3], (int)SILVER_ITEMS[index][0], (string)SILVER_ITEMS[index][4], (int)SILVER_ITEMS[index][2]));
}
CraftItem item = (CraftItem)p.getTemporaryAttribute("craftItem");
if (item == null || p == null || item.getAmount() <= 0 || item.getCraftType() != 3)
{
Crafting.resetCrafting(p);
return;
}
p.getPackets().closeInterfaces();
string s = item.getCraftItem() == 0 ? "an" : "a";
if (!p.getInventory().hasItem((int)SILVER_ITEMS[item.getCraftItem()][1]))
{
p.getPackets().sendMessage("You need " + s + " " + item.getMessage() + " mould to make that.");
Crafting.resetCrafting(p);
return;
}
if (!p.getInventory().hasItem(SILVER_BAR))
{
p.getPackets().sendMessage("You don't have a Silver bar.");
Crafting.resetCrafting(p);
return;
}
if (p.getSkills().getGreaterLevel(Skills.SKILL.CRAFTING) < item.getLevel())
{
p.getPackets().sendMessage("You need a Crafting level of " + item.getLevel() + " to smelt that.");
Crafting.resetCrafting(p);
return;
}
if (p.getInventory().deleteItem(SILVER_BAR))
{
p.getInventory().addItem(item.getFinishedItem());
p.getSkills().addXp(Skills.SKILL.CRAFTING, item.getXp());
p.setLastAnimation(new Animation(3243));
p.getPackets().sendMessage("You smelt the Silver bar in to " + s + " " + item.getMessage() + ".");
}
item.decreaseAmount();
if (item.getAmount() >= 1)
{
Event makeMoreSilverItemEvent = new Event(1500);
makeMoreSilverItemEvent.setAction(() =>
{
newSilverItem(p, -1, -1, false);
makeMoreSilverItemEvent.stop();
});
Server.registerEvent(makeMoreSilverItemEvent);
}
}
示例11: craftGlass
public static void craftGlass(Player p, int amount, int index, bool newCraft)
{
if (newCraft)
{
p.setTemporaryAttribute("craftItem", new CraftItem(3, index, amount, (double)GLASS_ITEMS[index][2], (int)GLASS_ITEMS[index][0], (string)GLASS_ITEMS[index][3], (int)GLASS_ITEMS[index][1]));
}
CraftItem item = (CraftItem)p.getTemporaryAttribute("craftItem");
if (item == null || p == null || item.getAmount() <= 0 || item.getCraftType() != 3)
{
Crafting.resetCrafting(p);
return;
}
p.getPackets().closeInterfaces();
if (!p.getInventory().hasItem(MOLTEN_GLASS))
{
p.getPackets().sendMessage("You have no molten glass.");
Crafting.resetCrafting(p);
return;
}
if (!p.getInventory().hasItem(GLASSBLOWING_PIPE))
{
p.getPackets().sendMessage("You need a glassblowing pipe if you wish to make a glass item.");
Crafting.resetCrafting(p);
return;
}
if (p.getSkills().getGreaterLevel(Skills.SKILL.CRAFTING) < item.getLevel())
{
p.getPackets().sendMessage("You need a Crafting level of " + item.getLevel() + " to craft that item.");
Crafting.resetCrafting(p);
return;
}
if (p.getInventory().deleteItem(MOLTEN_GLASS))
{
p.getInventory().addItem(item.getFinishedItem());
p.getSkills().addXp(Skills.SKILL.CRAFTING, item.getXp());
p.setLastAnimation(new Animation(884));
p.getPackets().sendMessage("You blow through the pipe, shaping the molten glass into a " + item.getMessage() + ".");
}
item.decreaseAmount();
if (item.getAmount() >= 1)
{
Event craftMoreGlassEvent = new Event(1500);
craftMoreGlassEvent.setAction(() =>
{
craftGlass(p, -1, -1, false);
craftMoreGlassEvent.stop();
});
Server.registerEvent(craftMoreGlassEvent);
}
}
示例12: createXbow
public static void createXbow(Player p, int amount, int xbowType, bool isStringing, bool newFletch)
{
SkillItem item = null;
if (newFletch || Fletching.getFletchItem(p) == null)
{
item = getXbow(xbowType, isStringing, amount);
Fletching.setFletchItem(p, item);
}
item = (SkillItem)Fletching.getFletchItem(p);
if (item == null || p == null)
{
return;
}
bool stringing = item.getItemTwo() == XBOW_STRING ? true : false;
if (!canFletch(p, item))
{
p.getPackets().closeInterfaces();
return;
}
if (p.getInventory().deleteItem(item.getItemOne()) && p.getInventory().deleteItem(item.getItemTwo()))
{
p.getInventory().addItem(item.getFinishedItem());
p.getSkills().addXp(Skills.SKILL.FLETCHING, item.getXp());
item.decreaseAmount();
p.getPackets().closeInterfaces();
if (!stringing)
{
p.getPackets().sendMessage("You attach some limbs to the Crossbow.");
}
else
{
p.setLastAnimation(new Animation(6677));
p.getPackets().sendMessage("You add a Crossbow String to the Crossbow, you have completed the " + ItemData.forId(item.getFinishedItem()).getName() + ".");
}
}
if (item.getAmount() >= 1)
{
Event createMoreXBowEvent = new Event(1500);
createMoreXBowEvent.setAction(() =>
{
createXbow(p, -1, -1, false, false);
createMoreXBowEvent.stop();
});
Server.registerEvent(createMoreXBowEvent);
}
}
示例13: craftSpinning
public static void craftSpinning(Player p, int amount, int index, bool newCraft)
{
if (newCraft)
{
p.setTemporaryAttribute("craftItem", new CraftItem(6, index, amount, (double)SPINNING_ITEMS[index][3], (int)SPINNING_ITEMS[index][0], (string)SPINNING_ITEMS[index][4], (int)SPINNING_ITEMS[index][2]));
}
CraftItem item = (CraftItem)p.getTemporaryAttribute("craftItem");
if (item == null || p == null || item.getAmount() <= 0 || item.getCraftType() != 6)
{
Crafting.resetCrafting(p);
return;
}
p.getPackets().closeInterfaces();
int i = item.getCraftItem();
if (!p.getInventory().hasItem((int)SPINNING_ITEMS[i][1]))
{
p.getPackets().sendMessage("You have no " + item.getMessage() + ".");
Crafting.resetCrafting(p);
return;
}
if (p.getSkills().getGreaterLevel(Skills.SKILL.CRAFTING) < item.getLevel())
{
p.getPackets().sendMessage("You need a Crafting level of " + item.getLevel() + " to spin that.");
Crafting.resetCrafting(p);
return;
}
if (p.getInventory().deleteItem((int)SPINNING_ITEMS[i][1]))
{
p.getInventory().addItem(item.getFinishedItem());
p.getSkills().addXp(Skills.SKILL.CRAFTING, item.getXp());
p.setLastAnimation(new Animation(894));
p.getPackets().sendMessage("You spin the " + item.getMessage() + " into a " + SPIN_FINISH[i] + ".");
}
item.decreaseAmount();
if (item.getAmount() >= 1)
{
Event craftMoreSpinningEvent = new Event(750);
craftMoreSpinningEvent.setAction(() =>
{
craftSpinning(p, -1, -1, false);
craftMoreSpinningEvent.stop();
});
Server.registerEvent(craftMoreSpinningEvent);
}
}
示例14: thieveNpc
private static void thieveNpc(Player p, Npc npc, int index)
{
AreaEvent thieveNpcAreaEvent = new AreaEvent(p, npc.getLocation().getX()-1, npc.getLocation().getY()-1, npc.getLocation().getX()+1, npc.getLocation().getY()+1);
thieveNpcAreaEvent.setAction(() => {
if (!canThieveNpc(p, npc, index)) {
return;
}
p.setFaceLocation(npc.getLocation());
p.setLastAnimation(new Animation(881));
p.getPackets().sendMessage("You attempt to pick the " + NPC_NAMES[index] + " pocket...");
p.setTemporaryAttribute("lastPickPocket", Environment.TickCount);
Event thieveNpcEvent = new Event(1000);
thieveNpcEvent.setAction(() => {
thieveNpcEvent.stop();
if (!p.getLocation().withinDistance(npc.getLocation(), 2)) {
return;
}
if (successfulThieve(p, index, false)) {
int rewardIndex = misc.random(NPC_REWARD[index].Length - 1);
int reward = NPC_REWARD[index][rewardIndex];
int rewardAmount = NPC_REWARD_AMOUNT[index][rewardIndex];
if (index == 7) { // Master farmer.
if (misc.random(15) == 0) {
reward = HERB_SEEDS[misc.random(HERB_SEEDS.Length - 1)];
}
}
p.getSkills().addXp(Skills.SKILL.THIEVING, NPC_XP[index]);
p.getInventory().addItem(reward, rewardAmount);
p.getPackets().sendMessage("You pick the " + NPC_NAMES[index] + " pocket.");
} else {
p.getWalkingQueue().resetWalkingQueue();
p.getPackets().sendMessage("You fail to pick the " + NPC_NAMES[index] + " pocket.");
p.getPackets().sendMessage("You've been stunned!");
npc.setForceText("What do you think you're doing?");
p.setTemporaryAttribute("unmovable", true);
p.setTemporaryAttribute("stunned", true);
p.setLastGraphics(new Graphics(80, 0, 100));
p.setLastAnimation(new Animation(p.getDefenceAnimation()));
p.hit(1);
npc.setFaceLocation(p.getLocation());
Event removeStunEvent = new Event(5000);
removeStunEvent.setAction(() => {
removeStunEvent.stop();
p.removeTemporaryAttribute("unmovable");
p.removeTemporaryAttribute("stunned");
p.setLastGraphics(new Graphics(65535));
});
Server.registerEvent(removeStunEvent);
}
});
Server.registerEvent(thieveNpcEvent);
});
Server.registerCoordinateEvent(thieveNpcAreaEvent);
}
示例15: thieveChest
private static void thieveChest(Player p, int index, ushort chestId, int x, int y)
{
AreaEvent thieveChestAreaEvent = new AreaEvent(p, x-1, y-1, x+1, y+1);
thieveChestAreaEvent.setAction(() => {
p.setFaceLocation(new Location(x, y, p.getLocation().getZ()));
if (!canThieveChest(p, index, chestId, x, y)) {
return;
}
p.getPackets().sendMessage("You attempt to pick the chest lock..");
p.setLastAnimation(new Animation(833));
Event thieveChestEvent = new Event(1000);
thieveChestEvent.setAction(() => {
thieveChestEvent.stop();
if (misc.random(5) == 0) {
p.hit(p.getSkills().getMaxLevel(Skills.SKILL.HITPOINTS) / 10);
p.setForceText("Ouch!");
p.getPackets().sendMessage("You activate a trap whilst trying to pick the lock!");
return;
}
if (Server.getGlobalObjects().originalObjectExists(chestId, new Location(x, y, 0))) {
Server.getGlobalObjects().lowerHealth(chestId, new Location(x, y, 0));
for (int i = 0; i < CHEST_REWARD[index].Length; i++) {
p.getInventory().addItem(CHEST_REWARD[index][i], CHEST_REWARD_AMOUNTS[index][i]);
}
p.getSkills().addXp(Skills.SKILL.THIEVING, CHEST_XP[index]);
p.getPackets().sendMessage("You successfully pick the lock and loot the chest!");
}
});
Server.registerEvent(thieveChestEvent);
});
Server.registerCoordinateEvent(thieveChestAreaEvent);
}