Como arrumar as Both(Sistema de Shop)
2 participantes
Página 1 de 1
Como arrumar as Both(Sistema de Shop)
Procure por static void HandleBuyFromNPC(ItemUsage itemUsage, Client.GameClient client)
e troque por isso
e troque por isso
- Código:
static void HandleBuyFromNPC(ItemUsage itemUsage, Client.GameClient client)
{
if (client == null) return;
if (itemUsage == null) return;
if (client.Trade.InTrade) return;
#region Honor shop
if (itemUsage.UID == Database.HonorShop.UID)
{
var shop = Database.HonorShop.Shop;
uint cost;
if (shop.Items.TryGetValue(itemUsage.dwParam, out cost))
{
if (client.Inventory.Count <= 39)
{
if (client.CurrentHonor >= cost)
{
ConquerItem newItem = new GamePackets.ConquerItem(true);
newItem.ID = itemUsage.dwParam;
Database.ConquerItemBaseInformation ibi;
if (Database.ConquerItemInformation.BaseInformations.TryGetValue(newItem.ID, out ibi))
{
if (ibi.Durability > 0)
{
newItem.Durability = ibi.Durability;
newItem.MaximDurability = ibi.Durability;
}
}
client.Inventory.Add(newItem, Game.Enums.ItemUse.CreateAndAdd);
client.CurrentHonor -= cost;
client.ArenaStatistic.Send(client);
}
else client.Send(new Message("You do not have enough Honor Points", Color.Red, Message.TopLeft));
}
else client.Send(new Message("You do not have enough space in your inventory", Color.Red, Message.TopLeft));
}
else client.Send(new Message("Can not find this item", Color.Red, Message.TopLeft));
return;
}
#endregion
#region Champion shop
if (itemUsage.UID == Database.ChampionShop.UID)
{
ushort Amount = (ushort)(itemUsage.dwExtraInfo > 0 ? itemUsage.dwExtraInfo : 1);
Database.ChampionShop.ChampionItem item;
if (Database.ChampionShop.Shop.Items.TryGetValue(itemUsage.dwParam, out item))
{
if (client.Inventory.Count <= 40 - Amount)
{
if (client.ChampionPoints >= (item.Price * Amount))
{
ConquerItem newItem = new GamePackets.ConquerItem(true);
newItem.ID = itemUsage.dwParam;
Database.ConquerItemBaseInformation ibi;
if (Database.ConquerItemInformation.BaseInformations.TryGetValue(newItem.ID, out ibi))
{
if (ibi.Durability > 0)
{
newItem.Durability = ibi.Durability;
newItem.MaximDurability = ibi.Durability;
}
}
if (ibi != null)
if (ibi.Name.Contains("Stone"))
newItem.Plus = (byte)(newItem.ID % 10);
newItem.Bound = true;
client.Inventory.Add(newItem.ID, newItem.Plus, Amount, newItem.Bound);
client.ChampionPoints -= (item.Price * Amount);
client.CP.Send(client);
}
else client.Send(new Message("You do not have enough Champion Points", Color.Red, Message.TopLeft));
}
else client.Send(new Message("You do not have enough space in your inventory", Color.Red, Message.TopLeft));
}
else client.Send(new Message("Can not find this item", Color.Red, Message.TopLeft));
return;
}
#endregion
#region Race point shop
if (itemUsage.UID == Database.RacePointShop.UID)
{
Database.RacePointShop.RacePointItem item;
if (Database.RacePointShop.Shop.Items.TryGetValue(itemUsage.dwParam, out item))
{
if (client.Inventory.Count <= 39)
{
if (client.RacePoints >= item.Price)
{
ConquerItem newItem = new GamePackets.ConquerItem(true);
newItem.ID = itemUsage.dwParam;
Database.ConquerItemBaseInformation ibi;
if (Database.ConquerItemInformation.BaseInformations.TryGetValue(newItem.ID, out ibi))
{
if (ibi.Durability > 0)
{
newItem.Durability = ibi.Durability;
newItem.MaximDurability = ibi.Durability;
}
}
client.Inventory.Add(newItem, Game.Enums.ItemUse.CreateAndAdd);
client.RacePoints -= item.Price;
}
else client.Send(new Message("You do not have enough Champion Points", Color.Red, Message.TopLeft));
}
else client.Send(new Message("You do not have enough space in your inventory", Color.Red, Message.TopLeft));
}
else client.Send(new Message("Can not find this item", Color.Red, Message.TopLeft));
return;
}
#endregion
Interfaces.INpc npc = null;
if (client.Map.Npcs.TryGetValue(itemUsage.UID, out npc) || itemUsage.UID == 2888)
{
if (itemUsage.dwExtraInfo == 0)
return;
ConquerItem _ExistingItem;
Database.ConquerItemInformation iteminfo = new Database.ConquerItemInformation(itemUsage.dwParam, 0);
if (client.Inventory.Count == 40 && !client.Inventory.Contains(iteminfo.BaseInformation.ID, iteminfo.BaseInformation.StackSize, out _ExistingItem))
return;
if (itemUsage.UID != 2888)
if (Kernel.GetDistance(client.Entity.X, client.Entity.Y, npc.X, npc.Y) > 17)
return;
Database.ShopFile.Shop shop = new Database.ShopFile.Shop();
if (!Database.ShopFile.Shops.TryGetValue(itemUsage.UID, out shop))
if (!Database.EShopFile.Shops.TryGetValue(itemUsage.UID, out shop))
shop = null;
if (shop != null && shop.UID != 0)
{
if (!shop.Items.Contains(itemUsage.dwParam))
{
NpcReply npcx = new NpcReply(6, "Error! Cannot puchase/buy this item it has been reported to [GM].")
{
OptionID = 255
};
client.Send(npcx.ToArray());
return;
}
uint Amount = itemUsage.dwExtraInfo > 0 ? itemUsage.dwExtraInfo : 1;
ConquerItem item = new ConquerItem(true);
switch (shop.MoneyType)
{
case LordsRoad.Database.ShopFile.MoneyType.Gold:
{
if (iteminfo.BaseInformation.GoldWorth * Amount > client.Entity.Money)
return;
if (client.Entity.Money - (iteminfo.BaseInformation.GoldWorth * Amount) > client.Entity.Money)
return;
item.ID = itemUsage.dwParam;
item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
item.Color = (LordsRoad.Game.Enums.Color)3;
uint NewAmount = itemUsage.dwExtraInfo > 0 ? itemUsage.dwExtraInfo : 1;
while (NewAmount > 0)
{
if (iteminfo.BaseInformation.StackSize == 0)
{
item = new ConquerItem(true);
item.ID = itemUsage.dwParam;
item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
item.Color = (LordsRoad.Game.Enums.Color)3;
client.Inventory.Add(item, Game.Enums.ItemUse.CreateAndAdd);
item.MaxStackSize = item.StackSize = 1;
NewAmount--;
}
else
{
if (client.Inventory.GetStackContainer(iteminfo.BaseInformation.ID, iteminfo.BaseInformation.StackSize, 1, out _ExistingItem))
{
_ExistingItem.StackSize++;
Database.ConquerItemTable.UpdateStack(_ExistingItem);
_ExistingItem.Mode = Game.Enums.ItemMode.Update;
_ExistingItem.Send(client);
NewAmount -= 1;
}
else
{
item = new ConquerItem(true);
item.ID = itemUsage.dwParam;
item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
item.Color = (LordsRoad.Game.Enums.Color)3;
item.MaxStackSize = iteminfo.BaseInformation.StackSize;
item.StackSize = 1;
if (NewAmount >= item.MaxStackSize)
{
item.StackSize = item.MaxStackSize;
NewAmount -= item.StackSize;
}
else
{
item.StackSize = (ushort)NewAmount;
NewAmount = 0;
}
client.Inventory.Add(item, Game.Enums.ItemUse.CreateAndAdd);
Database.ConquerItemTable.UpdateStack(item);
}
}
}
client.Entity.Money -= (iteminfo.BaseInformation.GoldWorth * Amount);
break;
}
case LordsRoad.Database.ShopFile.MoneyType.ConquerPoints:
{
if (itemUsage.dwExtraInfo3 == 2)
{
if (iteminfo.BaseInformation.ConquerPointsWorth * Amount > client.Entity.BoundCps)
return;
if (client.Entity.BoundCps - (iteminfo.BaseInformation.ConquerPointsWorth * Amount) > client.Entity.BoundCps)
return;
item.ID = itemUsage.dwParam;
if (item.ID % 730000 <= 12)
item.Plus = (Byte)(item.ID % 730000);
item.Color = (LordsRoad.Game.Enums.Color)Kernel.Random.Next(4, 8);
item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
uint NewAmount = itemUsage.dwExtraInfo > 0 ? itemUsage.dwExtraInfo : 1;
while (NewAmount > 0)
{
if (iteminfo.BaseInformation.StackSize == 0)
{
if ((itemUsage.dwParam % 730000) <= 12)
{
ConquerItem newItem = new GamePackets.ConquerItem(true);
newItem.ID = itemUsage.dwParam;
newItem.Plus = (Byte)(newItem.ID % 730000);
newItem.Bound = true;
client.Inventory.Add(newItem, Game.Enums.ItemUse.CreateAndAdd);
}
else
{
item = new ConquerItem(true);
item.ID = itemUsage.dwParam;
item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
item.Color = (LordsRoad.Game.Enums.Color)3;
item.Bound = true;
client.Inventory.Add(item, Game.Enums.ItemUse.CreateAndAdd);
}
item.MaxStackSize = item.StackSize = 1;
NewAmount--;
}
else
{
if (client.Inventory.GetStackContainer(iteminfo.BaseInformation.ID, iteminfo.BaseInformation.StackSize, 1, out _ExistingItem))
{
_ExistingItem.StackSize++;
Database.ConquerItemTable.UpdateStack(_ExistingItem);
_ExistingItem.Mode = Game.Enums.ItemMode.Update;
_ExistingItem.Send(client);
NewAmount -= 1;
}
else
{
item = new ConquerItem(true);
item.ID = itemUsage.dwParam;
item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
item.Color = (LordsRoad.Game.Enums.Color)3;
item.MaxStackSize = iteminfo.BaseInformation.StackSize;
item.StackSize = 1;
item.MaxStackSize = item.StackSize = 1;
if (NewAmount >= item.MaxStackSize)
{
item.StackSize = item.MaxStackSize;
NewAmount -= item.StackSize;
}
else
{
item.StackSize = (ushort)NewAmount;
NewAmount = 0;
}
client.Inventory.Add(item, Game.Enums.ItemUse.CreateAndAdd);
Database.ConquerItemTable.UpdateStack(item);
}
}
}
client.Entity.BoundCps -= (iteminfo.BaseInformation.ConquerPointsWorth * Amount);
break;
}
else
{
if (iteminfo.BaseInformation.ConquerPointsWorth * Amount > client.Entity.ConquerPoints)
return;
if (client.Entity.ConquerPoints - (iteminfo.BaseInformation.ConquerPointsWorth * Amount) > client.Entity.ConquerPoints)
return;
item.ID = itemUsage.dwParam;
if (item.ID % 730000 <= 12)
item.Plus = (Byte)(item.ID % 730000);
item.Color = (LordsRoad.Game.Enums.Color)Kernel.Random.Next(4, 8);
item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
uint NewAmount = itemUsage.dwExtraInfo > 0 ? itemUsage.dwExtraInfo : 1;
while (NewAmount > 0)
{
if (iteminfo.BaseInformation.StackSize == 0)
{
if ((itemUsage.dwParam % 730000) <= 12)
{
ConquerItem newItem = new GamePackets.ConquerItem(true);
newItem.ID = itemUsage.dwParam;
newItem.Plus = (Byte)(newItem.ID % 730000);
client.Inventory.Add(newItem, Game.Enums.ItemUse.CreateAndAdd);
}
else
{
item = new ConquerItem(true);
item.ID = itemUsage.dwParam;
item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
item.Color = (LordsRoad.Game.Enums.Color)3;
client.Inventory.Add(item, Game.Enums.ItemUse.CreateAndAdd);
}
item.MaxStackSize = item.StackSize = 1;
NewAmount--;
}
else
{
if (client.Inventory.GetStackContainer(iteminfo.BaseInformation.ID, iteminfo.BaseInformation.StackSize, 1, out _ExistingItem))
{
_ExistingItem.StackSize++;
Database.ConquerItemTable.UpdateStack(_ExistingItem);
_ExistingItem.Mode = Game.Enums.ItemMode.Update;
_ExistingItem.Send(client);
NewAmount -= 1;
}
else
{
item = new ConquerItem(true);
item.ID = itemUsage.dwParam;
item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
item.Color = (LordsRoad.Game.Enums.Color)3;
item.MaxStackSize = iteminfo.BaseInformation.StackSize;
item.StackSize = 1;
if (NewAmount >= item.MaxStackSize)
{
item.StackSize = item.MaxStackSize;
NewAmount -= item.StackSize;
}
else
{
item.StackSize = (ushort)NewAmount;
NewAmount = 0;
}
client.Inventory.Add(item, Game.Enums.ItemUse.CreateAndAdd);
Database.ConquerItemTable.UpdateStack(item);
}
}
}
client.Entity.ConquerPoints -= (iteminfo.BaseInformation.ConquerPointsWorth * Amount);
break;
}
}
}
}
}
}
Re: Como arrumar as Both(Sistema de Shop)
Ele corrige esse bug onde o booth não mostra o ItemIcon?
[K]0M4N- Membro
- Mensagens : 16
Data de inscrição : 19/01/2016
Idade : 25
Localização : Brazil
Re: Como arrumar as Both(Sistema de Shop)
Na verdade o problema era com o booth mesmo, o item não mudava o icone mesmo subindo o level dele então resolvi fazer o codigo do item e os icones estavam corretos então tentei colocar no shop por cps e funcionou
[K]0M4N- Membro
- Mensagens : 16
Data de inscrição : 19/01/2016
Idade : 25
Localização : Brazil
Tópicos semelhantes
» alguem sabe como arruma o shop
» Como arrumar o BP da guild (GuildBattlePower)
» DnzProject V6 v6585 100% (Links OFF)
» Como Arrumar o Erro Serviço interrompido do Hamachi
» Ola felipe estou usando a Soucer MessiV12 queria saber como arrumar o Atack que esta muito autos
» Como arrumar o BP da guild (GuildBattlePower)
» DnzProject V6 v6585 100% (Links OFF)
» Como Arrumar o Erro Serviço interrompido do Hamachi
» Ola felipe estou usando a Soucer MessiV12 queria saber como arrumar o Atack que esta muito autos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|