shadowman. my pleasure for post to help me. i'm really owe for you
i'm just confused. here is the code. can u tell me pleas where the problem exactly
PHP Code:
static void HandleBuyFromNPC(ItemUsage itemUsage, Client.GameState client)
{
if (itemUsage == null)
return;
if (client == null)
return;
if (itemUsage.UID == 141)
{
if (itemUsage.dwParam == 721157 || itemUsage.dwParam == 721158)
{
uint cost = 5000;
Interfaces.IConquerItem item = new ConquerItem(true);
if (cost > client.Entity.Money)
return;
if (client.Entity.Money - cost > client.Entity.Money)
return;
item.ID = itemUsage.dwParam;
item.Durability = item.MaximDurability = 100;
item.Color = (Conquer_Online_Server.Game.Enums.Color)ServerBase.Kernel.Random.Next(4, 8);
client.Inventory.Add(item, Game.Enums.ItemUse.CreateAndAdd);
if (client.Inventory.ContainsUID(item.UID) || item.StackSize == 1)
client.Entity.Money -= cost;
}
}
if (itemUsage.UID == 2888)
{
if (itemUsage.dwParam == 203009)
{
uint cost = 1290;
if (cost > client.Entity.ConquerPoints)
return;
if (client.Entity.ConquerPoints - cost > client.Entity.ConquerPoints)
return;
Interfaces.IConquerItem item = new ConquerItem(true);
item.ID = itemUsage.dwParam;
item.Color = (Conquer_Online_Server.Game.Enums.Color)ServerBase.Kernel.Random.Next(4, 8);
item.Durability = item.MaximDurability = 100;//iteminfo.BaseInformation.Durability;
client.Inventory.Add(item, Game.Enums.ItemUse.CreateAndAdd);
if (client.Inventory.ContainsUID(item.UID) || item.StackSize == 1)
client.Entity.ConquerPoints = (uint)Math.Max(0, (uint)((uint)client.Entity.ConquerPoints - (uint)cost));
}
}
if (itemUsage.UID == 6000)//honorshop
{
if (client.Inventory.Count == 40)
return;
uint price = 0;
switch (itemUsage.dwParam)
{
case 200006: price = 300000; break;
case 200207: price = 500000; break;
case 200208: price = 800000; break;
case 200007: price = 2000000; break;
case 200309: price = 550000; break;
case 200308: price = 900000; break;
case 200103: price = 1300000; break;
case 200107: price = 2000000; break;
case 720842: price = 8000; break;
case 711083: price = 50000; break;
case 720598: price = 20000; break;
case 720774: price = 10000; break;
case 723651: price = 25000; break;
case 723652: price = 62400; break;
case 723653: price = 156000; break;
case 723654: price = 12500; break;
case 723655: price = 31200; break;
case 723656: price = 78000; break;
case 723657: price = 25000; break;
case 723658: price = 62400; break;
case 723659: price = 156000; break;
case 723660: price = 5000; break;
case 723661: price = 12500; break;
case 723662: price = 31200; break;
case 723663: price = 10000; break;
case 723664: price = 25000; break;
case 723665: price = 62400; break;
case 723666: price = 10000; break;
case 723667: price = 25000; break;
case 723668: price = 62400; break;
case 723669: price = 12500; break;
case 723670: price = 31200; break;
case 723671: price = 78000; break;
case 723672: price = 16000; break;
case 723673: price = 41000; break;
case 723674: price = 104000; break;
case 723675: price = 16000; break;
case 723676: price = 41000; break;
case 723677: price = 104000; break;
case 723678: price = 13000; break;
case 723679: price = 33000; break;
case 723680: price = 83000; break;
case 723681: price = 13000; break;
case 723682: price = 33000; break;
case 723683: price = 83000; break;
case 723690: price = 13000; break;
case 723691: price = 33000; break;
case 723692: price = 83000; break;
case 723684: price = 10000; break;
case 723685: price = 25000; break;
case 723686: price = 62400; break;
case 723130: price = 10000; break;
case 723131: price = 25000; break;
case 723132: price = 62400; break;
case 723133: price = 25000; break;
case 723134: price = 62400; break;
case 723135: price = 156000; break;
}
Interfaces.IConquerItem item = new ConquerItem(true);
Database.ConquerItemInformation iteminfo = new Conquer_Online_Server.Database.ConquerItemInformation(itemUsage.dwParam, 0);
if (price > client.ArenaStatistic.CurrentHonor)
return;
if (client.ArenaStatistic.CurrentHonor - price > client.ArenaStatistic.CurrentHonor)
return;
item.ID = itemUsage.dwParam;
item.Color = (Conquer_Online_Server.Game.Enums.Color)ServerBase.Kernel.Random.Next(4, 8);
item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
client.Inventory.Add(item, Game.Enums.ItemUse.CreateAndAdd);
client.ArenaStatistic.CurrentHonor -= price;
Database.ArenaTable.SaveArenaStatistics(client.ArenaStatistic);
return;
}
Interfaces.INpc npc = null;
if (client.Map.Npcs.TryGetValue(itemUsage.UID, out npc) || itemUsage.UID == 2888)
{
if (client.Inventory.Count == 40)
return;
if (itemUsage.UID != 2888)
if (ServerBase.Kernel.GetDistance(client.Entity.X, client.Entity.Y, npc.X, npc.Y) > 17)
return;
Database.ShopFile.Shop shop = new Conquer_Online_Server.Database.ShopFile.Shop();
if (Database.ShopFile.Shops.TryGetValue(itemUsage.UID, out shop))
{
if (shop.UID == 0)
return;
if (!shop.Items.Contains(itemUsage.dwParam))
return;
Database.ConquerItemInformation iteminfo = new Conquer_Online_Server.Database.ConquerItemInformation(itemUsage.dwParam, 0);
uint Amount = itemUsage.dwExtraInfo > 0 ? itemUsage.dwExtraInfo : 1;
while (Amount > 0 && client.Inventory.Count != 40)
{
Interfaces.IConquerItem item = new ConquerItem(true);
switch (shop.MoneyType)
{
case Conquer_Online_Server.Database.ShopFile.MoneyType.Gold:
{
if (iteminfo.BaseInformation.GoldWorth > client.Entity.Money)
return;
if (client.Entity.Money - iteminfo.BaseInformation.GoldWorth > client.Entity.Money)
return;
item.ID = itemUsage.dwParam;
item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
if (!IsEquipment(item.ID))
{
if (iteminfo.BaseInformation.StackSize != 0)
{
item.StackSize = 1;
item.MaxStackSize = iteminfo.BaseInformation.StackSize;
}
}
item.Color = (Conquer_Online_Server.Game.Enums.Color)ServerBase.Kernel.Random.Next(4, 8);
client.Inventory.Add(item, Game.Enums.ItemUse.CreateAndAdd);
if (client.Inventory.ContainsUID(item.UID) || item.StackSize == 1)
client.Entity.Money -= iteminfo.BaseInformation.GoldWorth;
break;
}
case Conquer_Online_Server.Database.ShopFile.MoneyType.ConquerPoints:
{
if (iteminfo.BaseInformation.ConquerPointsWorth > client.Entity.ConquerPoints)
return;
if (client.Entity.ConquerPoints - iteminfo.BaseInformation.ConquerPointsWorth > client.Entity.ConquerPoints)
return;
item.ID = itemUsage.dwParam;
if (item.ID >= 730001 && item.ID <= 730008)
item.Plus = (byte)(item.ID % 10);
item.Color = (Conquer_Online_Server.Game.Enums.Color)ServerBase.Kernel.Random.Next(4, 8);
item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
if (!IsEquipment(item.ID))
{
if (iteminfo.BaseInformation.StackSize != 0)
{
item.StackSize = 1;
item.MaxStackSize = iteminfo.BaseInformation.StackSize;
}
}
client.Inventory.Add(item, Game.Enums.ItemUse.CreateAndAdd);
if (client.Inventory.ContainsUID(item.UID) || item.StackSize == 1)
client.Entity.ConquerPoints = (uint)Math.Max(0, (uint)((uint)client.Entity.ConquerPoints - (uint)iteminfo.BaseInformation.ConquerPointsWorth));
break;
}
}
Amount--;
}
}
else
{
if (Database.EShopFile.Shops.TryGetValue(itemUsage.UID, out shop))
{
if (shop.UID == 0)
return;
if (!shop.Items.Contains(itemUsage.dwParam))
return;
Database.ConquerItemInformation iteminfo = new Conquer_Online_Server.Database.ConquerItemInformation(itemUsage.dwParam, 0);
uint Amount = itemUsage.dwExtraInfo > 0 ? itemUsage.dwExtraInfo : 1;
while (Amount > 0 && client.Inventory.Count != 40)
{
Interfaces.IConquerItem item = new ConquerItem(true);
switch (shop.MoneyType)
{
case Conquer_Online_Server.Database.ShopFile.MoneyType.Gold:
{
if (iteminfo.BaseInformation.GoldWorth > client.Entity.Money)
return;
if (client.Entity.Money - iteminfo.BaseInformation.GoldWorth > client.Entity.Money)
return;
item.ID = itemUsage.dwParam;
item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
item.Color = (Conquer_Online_Server.Game.Enums.Color)ServerBase.Kernel.Random.Next(4, 8);
client.Inventory.Add(item, Game.Enums.ItemUse.CreateAndAdd);
if (client.Inventory.ContainsUID(item.UID) || item.StackSize == 1)
client.Entity.Money -= iteminfo.BaseInformation.GoldWorth;
break;
}
case Conquer_Online_Server.Database.ShopFile.MoneyType.ConquerPoints:
{
if (iteminfo.BaseInformation.ConquerPointsWorth > client.Entity.ConquerPoints)
return;
if (client.Entity.ConquerPoints - iteminfo.BaseInformation.ConquerPointsWorth > client.Entity.ConquerPoints)
return;
item.ID = itemUsage.dwParam;
if (item.ID >= 730001 && item.ID <= 730008)
item.Plus = (byte)(item.ID % 10);
item.Color = (Conquer_Online_Server.Game.Enums.Color)ServerBase.Kernel.Random.Next(4, 8);
item.Durability = item.MaximDurability = iteminfo.BaseInformation.Durability;
client.Inventory.Add(item, Game.Enums.ItemUse.CreateAndAdd);
if (client.Inventory.ContainsUID(item.UID) || item.StackSize == 1)
client.Entity.ConquerPoints = (uint)Math.Max(0, (uint)((uint)client.Entity.ConquerPoints - (int)iteminfo.BaseInformation.ConquerPointsWorth));
break;
}
}
Amount--;
}
}
}
}
}