|
You last visited: Today at 19:26
Advertisement
How do I add cp drop in 5375?
Discussion on How do I add cp drop in 5375? within the CO2 Private Server forum part of the Conquer Online 2 category.
09/24/2012, 02:18
|
#1
|
elite*gold: 0
Join Date: Aug 2012
Posts: 172
Received Thanks: 7
|
How do I add cp drop in 5375?
I have a 5375 source and i nned to know how tochange cp drop
thanks
|
|
|
09/24/2012, 08:12
|
#2
|
elite*gold: 0
Join Date: Aug 2007
Posts: 1,525
Received Thanks: 230
|
Cps Drop Rate or Value ?
|
|
|
09/24/2012, 18:48
|
#3
|
elite*gold: 0
Join Date: Sep 2012
Posts: 33
Received Thanks: 6
|
Probably rate?
|
|
|
09/24/2012, 19:02
|
#4
|
elite*gold: 0
Join Date: Aug 2012
Posts: 172
Received Thanks: 7
|
Quote:
Originally Posted by shadowman123
Cps Drop Rate or Value ?
|
my cp drop is 10 !
i need it to be 1000
which files shud i edit?
thanks, and how do i edit?
;P here is my monster table .cs idk how 2 do
and no sure if this is the correct one
my monster table:
using System;
using System.Collections.Generic;
using System.IO;
namespace Conquer_Online_Server.Database
{
public class MonsterInformation
{
private struct SpecialItemDrop
{
public int ItemID, Rate, Discriminant, Map;
}
private static List<SpecialItemDrop> SpecialItemDropList = new List<SpecialItemDrop>();
public Game.Entity Owner;
public uint ExcludeFromSend = 0;
private bool LabirinthDrop = false;
public uint ID;
public ushort Mesh;
public byte Level;
public string Name;
public uint Hitpoints;
public ushort ViewRange;
public ushort AttackRange;
public int RespawnTime;
public uint MinAttack, MaxAttack;
public byte AttackType;
public ushort SpellID;
public uint InSight;
public bool Boss, SuperBoss;
public Time32 LastMove;
public int MoveSpeed;
public int RunSpeed;
public int OwnItemID, OwnItemRate;
public int HPPotionID, MPPotionID;
public int AttackSpeed;
public int MinimumSpeed
{
get
{
int min = 10000000;
if (min > MoveSpeed)
min = MoveSpeed;
if (min > RunSpeed)
min = RunSpeed;
if (min > AttackSpeed)
min = AttackSpeed;
return min;
}
}
public uint ExtraExperience;
public uint MinMoneyDropAmount;
public uint MaxMoneyDropAmount;
public ushort BoundX, BoundY;
public ushort BoundCX, BoundCY;
public static SafeDictionary<byte, List<uint>> ItemDropCache = new SafeDictionary<byte, List<uint>>(3000);
public static SafeDictionary<byte, List<uint>> SoulItemCache = new SafeDictionary<byte, List<uint>>(3000);
public void SendScreen(byte[] buffer)
{
foreach (Client.GameState client in Program.Values)
{
if (client != null)
{
if (client.Entity.UID != ExcludeFromSend)
{
if (ServerBase.Kernel.GetDistance(client.Entity.X, client.Entity.Y, Owner.X, Owner.Y) > 18)
{
continue;
}
client.Send(buffer);
}
}
}
}
public void SendScreen(Interfaces.IPacket buffer)
{
SendScreen(buffer.ToArray());
}
public void SendScreenSpawn(Interfaces.IMapObject _object)
{
foreach (Client.GameState client in Program.Values)
{
if (client != null)
{
if (client.Entity.UID != ExcludeFromSend)
{
if (client.Map.ID == Owner.MapID)
{
if (ServerBase.Kernel.GetDistance(client.Entity.X, client.Entity.Y, Owner.X, Owner.Y) > 25)
{
continue;
}
_object.SendSpawn(client, false);
}
}
}
}
}
public void Drop(Game.Entity killer)
{
#region Cps Drop
if (Game.Entity.ChanceSuccess(10000000))
{
killer.ConquerPoints += 5;
killer.Owner.Send(new Network.GamePackets.Message("Has Matado al Monstruo y has conseguido 5CPs!", System.Drawing.Color.Yellow, 2005));
}
#endregion
if (Name == "SnowBanshee")
{
byte times = (byte)ServerBase.Kernel.Random.Next(1, 3);
byte ref_times = (byte)ServerBase.Kernel.Random.Next(1, 6);
for (byte i = 0; i < times; i++)
{
uint Uid = 0;
byte type = (byte)ServerBase.Kernel.Random.Next(1, 21);
switch (type)
{
case 1: Uid = 822052; break;
case 2: Uid = 822053; break;
case 3: Uid = 822054; break;
case 4: Uid = 822055; break;
case 5: Uid = 800413; break;
case 6: Uid = 800414; break;
case 7: Uid = 800014; break;
case 8: Uid = 800015; break;
case 9: Uid = 800016; break;
case 10: Uid = 800512; break;
case 11: Uid = 800613; break;
case 12: Uid = 800415; break;
case 13: Uid = 800420; break;
case 14: Uid = 800513; break;
case 15: Uid = 800017; break;
case 16: Uid = 820052; break;
case 17: Uid = 820053; break;
case 18: Uid = 820054; break;
case 19: Uid = 820055; break;
case 20: Uid = 820056; break;
}
if (Uid != 0)
{
ushort X = Owner.X, Y = Owner.Y;
Game.Map Map = ServerBase.Kernel.Maps[Owner.MapID];
if (Map.SelectCoordonates(ref X, ref Y))
{
Network.GamePackets.FloorItem floorItem = new Network.GamePackets.FloorItem(true);
floorItem.Item = new Network.GamePackets.ConquerItem(true);
floorItem.Item.Color = (Conquer_Online_Server.Game.Enums.Color)ServerBase .Kernel.Random.Next(4, 8);
floorItem.Item.ID = Uid;
floorItem.Item.MaximDurability = floorItem.Item.Durability = 65535;
floorItem.Item.UID = Network.GamePackets.ConquerItem.ItemUID.Next;
floorItem.ValueType = Network.GamePackets.FloorItem.FloorValueType.Item;
floorItem.ItemID = Uid;
floorItem.MapID = Owner.MapID;
floorItem.MapObjType = Game.MapObjectType.Item;
floorItem.X = X;
floorItem.Y = Y;
floorItem.Type = Network.GamePackets.FloorItem.Drop;
floorItem.OnFloor = Time32.Now;
floorItem.ItemColor = floorItem.Item.Color;
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
while (Map.Npcs.ContainsKey(floorItem.UID))
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
Map.AddFloorItem(floorItem);
SendScreenSpawn(floorItem);
}
}
}
}
if (Name == "LavaBeast")
{
byte times = (byte)ServerBase.Kernel.Random.Next(1, 3);
byte ref_times = (byte)ServerBase.Kernel.Random.Next(1, 6);
for (byte i = 0; i < times; i++)
{
uint Uid = 0;
byte type = (byte)ServerBase.Kernel.Random.Next(1, 21);
switch (type)
{
case 1: Uid = 720666; break;
case 2: Uid = 720662; break;
case 3: Uid = 720667; break;
case 4: Uid = 720685; break;
case 5: Uid = 720666; break;
case 6: Uid = 720662; break;
case 7: Uid = 720667; break;
case 8: Uid = 720685; break;
case 9: Uid = 720685; break;
case 10: Uid = 720685; break;
}
if (Uid != 0)
{
ushort X = Owner.X, Y = Owner.Y;
Game.Map Map = ServerBase.Kernel.Maps[Owner.MapID];
if (Map.SelectCoordonates(ref X, ref Y))
{
Network.GamePackets.FloorItem floorItem = new Network.GamePackets.FloorItem(true);
floorItem.Item = new Network.GamePackets.ConquerItem(true);
floorItem.Item.Color = (Conquer_Online_Server.Game.Enums.Color)ServerBase .Kernel.Random.Next(4, 8);
floorItem.Item.ID = Uid;
floorItem.Item.MaximDurability = floorItem.Item.Durability = 65535;
floorItem.Item.UID = Network.GamePackets.ConquerItem.ItemUID.Next;
floorItem.ValueType = Network.GamePackets.FloorItem.FloorValueType.Item;
floorItem.ItemID = Uid;
floorItem.MapID = Owner.MapID;
floorItem.MapObjType = Game.MapObjectType.Item;
floorItem.X = X;
floorItem.Y = Y;
floorItem.Type = Network.GamePackets.FloorItem.Drop;
floorItem.OnFloor = Time32.Now;
floorItem.ItemColor = floorItem.Item.Color;
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
while (Map.Npcs.ContainsKey(floorItem.UID))
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
Map.AddFloorItem(floorItem);
SendScreenSpawn(floorItem);
}
}
}
}
if (Name == "TeratoDragon")
{
byte times = (byte)ServerBase.Kernel.Random.Next(1, 3);
byte ref_times = (byte)ServerBase.Kernel.Random.Next(1, 6);
for (byte i = 0; i < times; i++)
{
uint Uid = 0;
byte type = (byte)ServerBase.Kernel.Random.Next(1, 21);
switch (type)
{
case 1: Uid = 822052; break;
case 2: Uid = 822053; break;
case 3: Uid = 822054; break;
case 4: Uid = 822055; break;
case 5: Uid = 800413; break;
case 6: Uid = 800414; break;
case 7: Uid = 800014; break;
case 8: Uid = 800015; break;
case 9: Uid = 800016; break;
case 10: Uid = 800512; break;
case 11: Uid = 800613; break;
case 12: Uid = 800415; break;
case 13: Uid = 800420; break;
case 14: Uid = 800513; break;
case 15: Uid = 800017; break;
case 16: Uid = 820052; break;
case 17: Uid = 820053; break;
case 18: Uid = 820054; break;
case 19: Uid = 820055; break;
case 20: Uid = 820056; break;
case 21: Uid = 820057; break;
case 22: Uid = 723006; break;
}
if (Uid != 0)
{
ushort X = Owner.X, Y = Owner.Y;
Game.Map Map = ServerBase.Kernel.Maps[Owner.MapID];
if (Map.SelectCoordonates(ref X, ref Y))
{
Network.GamePackets.FloorItem floorItem = new Network.GamePackets.FloorItem(true);
floorItem.Item = new Network.GamePackets.ConquerItem(true);
floorItem.Item.Color = (Conquer_Online_Server.Game.Enums.Color)ServerBase .Kernel.Random.Next(4, 8);
floorItem.Item.ID = Uid;
floorItem.Item.MaximDurability = floorItem.Item.Durability = 65535;
floorItem.Item.UID = Network.GamePackets.ConquerItem.ItemUID.Next;
floorItem.ValueType = Network.GamePackets.FloorItem.FloorValueType.Item;
floorItem.ItemID = Uid;
floorItem.MapID = Owner.MapID;
floorItem.MapObjType = Game.MapObjectType.Item;
floorItem.X = X;
floorItem.Y = Y;
floorItem.Type = Network.GamePackets.FloorItem.Drop;
floorItem.OnFloor = Time32.Now;
floorItem.ItemColor = floorItem.Item.Color;
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
while (Map.Npcs.ContainsKey(floorItem.UID))
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
Map.AddFloorItem(floorItem);
SendScreenSpawn(floorItem);
}
}
}
}
if (Owner.Name.Contains("Guard"))
return;
if (SuperBoss)
{
int num = ServerBase.Kernel.Random.Next(5);
for (int c = 0; c < num; c++)
{
var infos = Database.ConquerItemInformation.BaseInformations[720028];
ushort X = Owner.X, Y = Owner.Y;
Game.Map Map = ServerBase.Kernel.Maps[Owner.MapID];
if (Map.SelectCoordonates(ref X, ref Y))
{
Network.GamePackets.FloorItem floorItem = new Network.GamePackets.FloorItem(true);
floorItem.Item = new Network.GamePackets.ConquerItem(true);
floorItem.Item.Color = (Conquer_Online_Server.Game.Enums.Color)ServerBase .Kernel.Random.Next(4, 8);
floorItem.Item.ID = 720028;
floorItem.Item.MaximDurability = infos.Durability;
floorItem.Item.MobDropped = true;
if (!Network.PacketHandler.IsEquipment(720028) && infos.ConquerPointsWorth == 0)
{
floorItem.Item.StackSize = 1;
floorItem.Item.MaxStackSize = infos.StackSize;
}
floorItem.ValueType = Network.GamePackets.FloorItem.FloorValueType.Item;
floorItem.ItemID = (uint)720028;
floorItem.MapID = Owner.MapID;
floorItem.MapObjType = Game.MapObjectType.Item;
floorItem.X = X;
floorItem.Y = Y;
floorItem.Type = Network.GamePackets.FloorItem.Drop;
floorItem.OnFloor = Time32.Now;
floorItem.ItemColor = floorItem.Item.Color;
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
while (Map.Npcs.ContainsKey(floorItem.UID))
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
Map.AddFloorItem(floorItem);
SendScreenSpawn(floorItem);
}
}
for (int c = 0; c < num / 2; c++)
{
var infos = Database.ConquerItemInformation.BaseInformations[1088000];
ushort X = Owner.X, Y = Owner.Y;
Game.Map Map = ServerBase.Kernel.Maps[Owner.MapID];
if (Map.SelectCoordonates(ref X, ref Y))
{
Network.GamePackets.FloorItem floorItem = new Network.GamePackets.FloorItem(true);
floorItem.Item = new Network.GamePackets.ConquerItem(true);
floorItem.Item.Color = (Conquer_Online_Server.Game.Enums.Color)ServerBase .Kernel.Random.Next(4, 8);
floorItem.Item.ID = (uint)1088000;
floorItem.Item.MaximDurability = infos.Durability;
floorItem.Item.MobDropped = true;
if (!Network.PacketHandler.IsEquipment(1088000) && infos.ConquerPointsWorth == 0)
{
floorItem.Item.StackSize = 1;
floorItem.Item.MaxStackSize = infos.StackSize;
}
floorItem.ValueType = Network.GamePackets.FloorItem.FloorValueType.Item;
floorItem.ItemID = (uint)1088000;
floorItem.MapID = Owner.MapID;
floorItem.MapObjType = Game.MapObjectType.Item;
floorItem.X = X;
floorItem.Y = Y;
floorItem.Type = Network.GamePackets.FloorItem.Drop;
floorItem.OnFloor = Time32.Now;
floorItem.ItemColor = floorItem.Item.Color;
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
while (Map.Npcs.ContainsKey(floorItem.UID))
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
Map.AddFloorItem(floorItem);
SendScreenSpawn(floorItem);
}
}
int times = 50;
byte lvl = Owner.Level;
if (LabirinthDrop)
lvl = 20;
List<uint> itemdroplist = ItemDropCache[lvl];
if (Boss || SuperBoss)
itemdroplist = SoulItemCache[lvl];
retry:
times--;
int generateItemId = ServerBase.Kernel.Random.Next(itemdroplist.Count);
uint id = itemdroplist[generateItemId];
var infosd = Database.ConquerItemInformation.BaseInformations[id];
ushort Xx = Owner.X, Yx = Owner.Y;
Game.Map Mapd = ServerBase.Kernel.Maps[Owner.MapID];
if (Mapd.SelectCoordonates(ref Xx, ref Yx))
{
Network.GamePackets.FloorItem floorItem = new Network.GamePackets.FloorItem(true);
floorItem.Item = new Network.GamePackets.ConquerItem(true);
floorItem.Item.Color = (Conquer_Online_Server.Game.Enums.Color)ServerBase .Kernel.Random.Next(4, 8);
floorItem.Item.ID = id;
floorItem.Item.MaximDurability = infosd.Durability;
floorItem.Item.Durability = (ushort)(ServerBase.Kernel.Random.Next(infosd.Dura bility / 10));
if (!Network.PacketHandler.IsEquipment(id) && infosd.ConquerPointsWorth == 0)
{
floorItem.Item.StackSize = 1;
floorItem.Item.MaxStackSize = infosd.StackSize;
}
floorItem.Item.MobDropped = true;
floorItem.ValueType = Network.GamePackets.FloorItem.FloorValueType.Item;
floorItem.ItemID = id;
floorItem.MapID = Owner.MapID;
floorItem.MapObjType = Game.MapObjectType.Item;
floorItem.X = Xx;
floorItem.Y = Yx;
floorItem.Type = Network.GamePackets.FloorItem.Drop;
floorItem.OnFloor = Time32.Now;
floorItem.ItemColor = floorItem.Item.Color;
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
while (Mapd.Npcs.ContainsKey(floorItem.UID))
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
Mapd.AddFloorItem(floorItem);
SendScreenSpawn(floorItem);
}
}
byte morepercent = 0;
byte morepercent2 = 0;
if (SuperBoss)
morepercent2 = 30;
byte lessrate = 0;
if (killer.VIPLevel > 0)
morepercent = (byte)(killer.VIPLevel * 5);
if (killer.Level <= 10 && killer.MapID == 1002)
morepercent += 100;
if (killer.VIPLevel != 6 && killer.Class >= 40 && killer.Class <= 45)
lessrate = 3;
if (killer.VIPLevel != 6 && killer.Level >= 132 && killer.ContainsFlag(Network.GamePackets.Update.Fla gs.ShurikenVortex))
lessrate = 3;
if (ServerBase.Kernel.Rate(ServerBase.Constants.Money DropRate - lessrate + morepercent))
{
uint amount = (uint)ServerBase.Kernel.Random.Next((int)MinMoneyD ropAmount, (int)MaxMoneyDropAmount);
amount *= ServerBase.Constants.MoneyDropMultiple;
if (amount > 300000)
amount = 10;
if (amount == 0)
return;
if (killer.VIPLevel > 0)
{
int percent = 10;
percent += killer.VIPLevel * 5 - 5;
amount += (uint)(amount * percent / 100);
}
if (killer.VIPLevel > 4)
{
killer.Money += amount;
return;
}
uint ItemID = Network.PacketHandler.MoneyItemID(amount);
ushort X = Owner.X, Y = Owner.Y;
Game.Map Map = ServerBase.Kernel.Maps[Owner.MapID];
if (Map.SelectCoordonates(ref X, ref Y))
{
Network.GamePackets.FloorItem floorItem = new Network.GamePackets.FloorItem(true);
floorItem.ValueType = Network.GamePackets.FloorItem.FloorValueType.Money ;
floorItem.Value = amount;
floorItem.ItemID = ItemID;
floorItem.MapID = Owner.MapID;
floorItem.MapObjType = Game.MapObjectType.Item;
floorItem.X = X;
floorItem.Y = Y;
floorItem.Type = Network.GamePackets.FloorItem.Drop;
floorItem.OnFloor = Time32.Now;
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
while (Map.Npcs.ContainsKey(floorItem.UID))
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
Map.AddFloorItem(floorItem);
SendScreenSpawn(floorItem);
}
}
if (ServerBase.Kernel.Rate(ServerBase.Constants.Conqu erPointsDropRate - lessrate))
{
// uint amount = (uint)ServerBase.Kernel.Random.Next((int)((Level / 4) * ServerBase.Constants.ConquerPointsDropMultiple), (int)((Level / 2) * ServerBase.Constants.ConquerPointsDropMultiple));
// if (amount == 0)
// amount = 2;
// if (amount > 300)
// amount = 10;
// amount /= 2;
uint amount = (uint)Level / 8;
if (amount < 1)
amount = 1;
// if (killer.VIPLevel > 4)
// {
if (killer != null && killer.Owner != null)
{
killer.Owner.Send(ServerBase.Constants.PickupConqu erPoints(amount));
killer.ConquerPoints += (uint)amount;
return;
}
// }
#region CPBag
//uint ItemID = 729911;
//ushort X = Owner.X, Y = Owner.Y;
//Game.Map Map = ServerBase.Kernel.Maps[Owner.MapID];
//if (Map.SelectCoordonates(ref X, ref Y))
//{
// Network.GamePackets.FloorItem floorItem = new Network.GamePackets.FloorItem(true);
// floorItem.ValueType = Network.GamePackets.FloorItem.FloorValueType.Conqu erPoints;
// floorItem.Value = amount;
// floorItem.ItemID = ItemID;
// floorItem.MapID = Owner.MapID;
// floorItem.MapObjType = Game.MapObjectType.Item;
// floorItem.X = X;
// floorItem.Y = Y;
// floorItem.Type = Network.GamePackets.FloorItem.Drop;
// floorItem.OnFloor = Time32.Now;
// floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
// while (Map.Npcs.ContainsKey(floorItem.UID))
// floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
// Map.AddFloorItem(floorItem);
// SendScreenSpawn(floorItem);
//}
#endregion
}
if (ServerBase.Kernel.Rate(OwnItemRate + morepercent) && OwnItemID != 0)
{
if (killer.VIPLevel > 4)
{
if (killer.Owner.Inventory.Count <= 39)
{
killer.Owner.Inventory.Add((uint)OwnItemID, 0, 1);
return;
}
}
var infos = Database.ConquerItemInformation.BaseInformations[(uint)OwnItemID];
ushort X = Owner.X, Y = Owner.Y;
Game.Map Map = ServerBase.Kernel.Maps[Owner.MapID];
if (Map.SelectCoordonates(ref X, ref Y))
{
Network.GamePackets.FloorItem floorItem = new Network.GamePackets.FloorItem(true);
floorItem.Item = new Network.GamePackets.ConquerItem(true);
floorItem.Item.Color = (Conquer_Online_Server.Game.Enums.Color)ServerBase .Kernel.Random.Next(4, 8);
floorItem.Item.ID = (uint)OwnItemID;
floorItem.Item.MaximDurability = infos.Durability;
if (!Network.PacketHandler.IsEquipment(OwnItemID) && infos.ConquerPointsWorth == 0)
{
floorItem.Item.StackSize = 1;
floorItem.Item.MaxStackSize = infos.StackSize;
}
floorItem.Item.MobDropped = true;
floorItem.ValueType = Network.GamePackets.FloorItem.FloorValueType.Item;
floorItem.ItemID = (uint)OwnItemID;
floorItem.MapID = Owner.MapID;
floorItem.MapObjType = Game.MapObjectType.Item;
floorItem.X = X;
floorItem.Y = Y;
floorItem.Type = Network.GamePackets.FloorItem.Drop;
floorItem.OnFloor = Time32.Now;
floorItem.ItemColor = floorItem.Item.Color;
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
while (Map.Npcs.ContainsKey(floorItem.UID))
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
Map.AddFloorItem(floorItem);
SendScreenSpawn(floorItem);
}
}
if (ServerBase.Kernel.Rate(ServerBase.Constants.ItemD ropRate + morepercent + morepercent2))
{
int quality = 3;
for (int count = 0; count < 5; count++)
{
int rate = int.Parse(ServerBase.Constants.ItemDropQualityRate s[count]);
if (ServerBase.Kernel.Rate(rate, 1000))
{
quality = count + 5;
break;
}
}
int times = 50;
byte lvl = Owner.Level;
if (LabirinthDrop)
lvl = 20;
List<uint> itemdroplist = ItemDropCache[lvl];
if (Boss || SuperBoss)
itemdroplist = SoulItemCache[lvl];
retry:
times--;
int generateItemId = ServerBase.Kernel.Random.Next(itemdroplist.Count);
uint id = itemdroplist[generateItemId];
if (!Boss)
{
if (Database.ConquerItemInformation.BaseInformations[id].Level > 121 && times > 0)
goto retry;
id = (id / 10) * 10 + (uint)quality;
}
if (!Database.ConquerItemInformation.BaseInformations .ContainsKey(id))
{
id = itemdroplist[generateItemId];
}
if (killer.VIPLevel > 4)
{
if (killer.Owner.Inventory.Count <= 39)
{
if (id % 10 > 7)
{
killer.Owner.Inventory.Add(id, 0, 1);
return;
}
}
}
var infos = Database.ConquerItemInformation.BaseInformations[id];
ushort X = Owner.X, Y = Owner.Y;
Game.Map Map = ServerBase.Kernel.Maps[Owner.MapID];
if (Map.SelectCoordonates(ref X, ref Y))
{
Network.GamePackets.FloorItem floorItem = new Network.GamePackets.FloorItem(true);
floorItem.Item = new Network.GamePackets.ConquerItem(true);
floorItem.Item.Color = (Conquer_Online_Server.Game.Enums.Color)ServerBase .Kernel.Random.Next(4, 8);
floorItem.Item.ID = id;
floorItem.Item.MaximDurability = infos.Durability;
if (quality >= 6)
floorItem.Item.Durability = (ushort)(infos.Durability - ServerBase.Kernel.Random.Next(500));
else
floorItem.Item.Durability = (ushort)(ServerBase.Kernel.Random.Next(infos.Durab ility / 10));
if (!Network.PacketHandler.IsEquipment(id) && infos.ConquerPointsWorth == 0)
{
floorItem.Item.StackSize = 1;
floorItem.Item.MaxStackSize = infos.StackSize;
}
floorItem.Item.MobDropped = true;
floorItem.ValueType = Network.GamePackets.FloorItem.FloorValueType.Item;
floorItem.ItemID = id;
floorItem.MapID = Owner.MapID;
floorItem.MapObjType = Game.MapObjectType.Item;
floorItem.X = X;
floorItem.Y = Y;
floorItem.Type = Network.GamePackets.FloorItem.Drop;
floorItem.OnFloor = Time32.Now;
floorItem.ItemColor = floorItem.Item.Color;
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
while (Map.Npcs.ContainsKey(floorItem.UID))
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
Map.AddFloorItem(floorItem);
SendScreenSpawn(floorItem);
}
}
if (ServerBase.Kernel.Rate(20 + morepercent))
{
if (HPPotionID == 0)
return;
var infos = Database.ConquerItemInformation.BaseInformations[(uint)HPPotionID];
ushort X = Owner.X, Y = Owner.Y;
Game.Map Map = ServerBase.Kernel.Maps[Owner.MapID];
if (Map.SelectCoordonates(ref X, ref Y))
{
Network.GamePackets.FloorItem floorItem = new Network.GamePackets.FloorItem(true);
floorItem.Item = new Network.GamePackets.ConquerItem(true);
floorItem.Item.Color = (Conquer_Online_Server.Game.Enums.Color)ServerBase .Kernel.Random.Next(4, 8);
floorItem.Item.ID = (uint)HPPotionID;
floorItem.Item.MobDropped = true;
floorItem.Item.MaximDurability = infos.Durability;
floorItem.ValueType = Network.GamePackets.FloorItem.FloorValueType.Item;
if (!Network.PacketHandler.IsEquipment(HPPotionID))
{
floorItem.Item.StackSize = 1;
floorItem.Item.MaxStackSize = infos.StackSize;
}
floorItem.ItemID = (uint)HPPotionID;
floorItem.MapID = Owner.MapID;
floorItem.MapObjType = Game.MapObjectType.Item;
floorItem.X = X;
floorItem.Y = Y;
floorItem.Type = Network.GamePackets.FloorItem.Drop;
floorItem.OnFloor = Time32.Now;
floorItem.ItemColor = floorItem.Item.Color;
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
while (Map.Npcs.ContainsKey(floorItem.UID))
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
Map.AddFloorItem(floorItem);
SendScreenSpawn(floorItem);
}
}
if (ServerBase.Kernel.Rate(20 + morepercent))
{
if (MPPotionID == 0)
return;
var infos = Database.ConquerItemInformation.BaseInformations[(uint)MPPotionID];
ushort X = Owner.X, Y = Owner.Y;
Game.Map Map = ServerBase.Kernel.Maps[Owner.MapID];
if (Map.SelectCoordonates(ref X, ref Y))
{
Network.GamePackets.FloorItem floorItem = new Network.GamePackets.FloorItem(true);
floorItem.Item = new Network.GamePackets.ConquerItem(true);
floorItem.Item.Color = (Conquer_Online_Server.Game.Enums.Color)ServerBase .Kernel.Random.Next(4, 8);
floorItem.Item.ID = (uint)MPPotionID;
floorItem.Item.MaximDurability = infos.Durability;
floorItem.Item.MobDropped = true;
floorItem.ValueType = Network.GamePackets.FloorItem.FloorValueType.Item;
if (!Network.PacketHandler.IsEquipment(MPPotionID))
{
floorItem.Item.StackSize = 1;
floorItem.Item.MaxStackSize = infos.StackSize;
}
floorItem.ItemID = (uint)MPPotionID;
floorItem.MapID = Owner.MapID;
floorItem.MapObjType = Game.MapObjectType.Item;
floorItem.X = X;
floorItem.Y = Y;
floorItem.Type = Network.GamePackets.FloorItem.Drop;
floorItem.OnFloor = Time32.Now;
floorItem.ItemColor = floorItem.Item.Color;
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
while (Map.Npcs.ContainsKey(floorItem.UID))
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
Map.AddFloorItem(floorItem);
SendScreenSpawn(floorItem);
}
}
foreach (SpecialItemDrop sitem in SpecialItemDropList)
{
if (sitem.Map != 0)
if (Owner.MapID != sitem.Map)
continue;
if (ServerBase.Kernel.Rate(sitem.Rate + morepercent, sitem.Discriminant))
{
if (killer.VIPLevel > 4)
{
if (killer.Owner.Inventory.Count <= 39)
{
killer.Owner.Inventory.Add((uint)sitem.ItemID, 0, 1);
continue;
}
}
var infos = Database.ConquerItemInformation.BaseInformations[(uint)sitem.ItemID];
ushort X = Owner.X, Y = Owner.Y;
Game.Map Map = ServerBase.Kernel.Maps[Owner.MapID];
if (Map.SelectCoordonates(ref X, ref Y))
{
Network.GamePackets.FloorItem floorItem = new Network.GamePackets.FloorItem(true);
floorItem.Item = new Network.GamePackets.ConquerItem(true);
floorItem.Item.Color = (Conquer_Online_Server.Game.Enums.Color)ServerBase .Kernel.Random.Next(4, 8);
floorItem.Item.ID = (uint)sitem.ItemID;
floorItem.Item.MaximDurability = infos.Durability;
floorItem.Item.MobDropped = true;
if (!Network.PacketHandler.IsEquipment(sitem.ItemID) && infos.ConquerPointsWorth == 0)
{
floorItem.Item.StackSize = 1;
floorItem.Item.MaxStackSize = infos.StackSize;
}
floorItem.ValueType = Network.GamePackets.FloorItem.FloorValueType.Item;
floorItem.ItemID = (uint)sitem.ItemID;
floorItem.MapID = Owner.MapID;
floorItem.MapObjType = Game.MapObjectType.Item;
floorItem.X = X;
floorItem.Y = Y;
floorItem.Type = Network.GamePackets.FloorItem.Drop;
floorItem.OnFloor = Time32.Now;
floorItem.ItemColor = floorItem.Item.Color;
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
while (Map.Npcs.ContainsKey(floorItem.UID))
floorItem.UID = Network.GamePackets.FloorItem.FloorUID.Next;
Map.AddFloorItem(floorItem);
SendScreenSpawn(floorItem);
}
}
}
}
public static SafeDictionary<uint, MonsterInformation> MonsterInfos = new SafeDictionary<uint, MonsterInformation>(8000);
public static void Load()
{
MySqlCommand cmd = new MySqlCommand(MySqlCommandType.SELECT);
cmd.Select("specialdrops");
MySqlReader rdr = new MySqlReader(cmd);
while (rdr.Read())
{
SpecialItemDrop sitem = new SpecialItemDrop();
sitem.ItemID = rdr.ReadInt32("itemid");
sitem.Rate = rdr.ReadInt32("rate");
sitem.Discriminant = rdr.ReadInt32("discriminant");
sitem.Map = rdr.ReadInt32("map");
SpecialItemDropList.Add(sitem);
}
rdr.Close();
MySqlCommand command = new MySqlCommand(MySqlCommandType.SELECT);
command.Select("monsterinfos");
MySqlReader reader = new MySqlReader(command);
while (reader.Read())
{
MonsterInformation mf = new MonsterInformation();
mf.ID = reader.ReadUInt32("id");
mf.Name = reader.ReadString("name");
mf.Mesh = reader.ReadUInt16("lookface");
mf.Level = reader.ReadByte("level");
mf.Hitpoints = reader.ReadUInt32("life");
ServerBase.IniFile IniFile = new ServerBase.IniFile(ServerBase.Constants.MonstersPa th);
if (IniFile.ReadString(mf.Name, "MaxLife") != "")
{
if (uint.Parse(IniFile.ReadString(mf.Name, "MaxLife")) != 0)
{
mf.Hitpoints = uint.Parse(IniFile.ReadString(mf.Name, "MaxLife"));
byte boss = byte.Parse(IniFile.ReadString(mf.Name, "Boss"));
if (boss == 0)
mf.Boss = false;
else mf.Boss = true;
if (mf.Name == "TeratoDragon" || mf.Name == "SnowBanshee")
{
mf.SuperBoss = true;
}
}
}
mf.ViewRange = reader.ReadUInt16("view_range");
mf.AttackRange = reader.ReadUInt16("attack_range");
mf.AttackType = reader.ReadByte("attack_user");
mf.MinAttack = reader.ReadUInt32("attack_min");
mf.MaxAttack = reader.ReadUInt32("attack_max");
mf.SpellID = reader.ReadUInt16("magic_type");
mf.MoveSpeed = reader.ReadInt32("move_speed");
mf.RunSpeed = reader.ReadInt32("run_speed");
mf.OwnItemID = reader.ReadInt32("ownitem");
mf.HPPotionID = reader.ReadInt32("drop_hp");
mf.MPPotionID = reader.ReadInt32("drop_mp");
mf.OwnItemRate = reader.ReadInt32("ownitemrate");
mf.AttackSpeed = reader.ReadInt32("attack_speed");
mf.ExtraExperience = reader.ReadUInt32("extra_exp");
uint MoneyDropAmount = reader.ReadUInt16("level");
if (MoneyDropAmount != 0)
{
mf.MaxMoneyDropAmount = MoneyDropAmount * 25;
if (mf.MaxMoneyDropAmount != 0)
mf.MinMoneyDropAmount = 1;
}
if (mf.MoveSpeed <= 500)
mf.MoveSpeed += 500;
if (mf.AttackSpeed <= 500)
mf.AttackSpeed += 500;
MonsterInfos.Add(mf.ID, mf);
byte lvl = mf.Level;
if (mf.Name == "Slinger" ||
mf.Name == "GoldGhost" ||
mf.Name == "AgileRat" ||
mf.Name == "Bladeling" ||
mf.Name == "BlueBird" ||
mf.Name == "BlueFiend" ||
mf.Name == "MinotaurL120")
{
mf.LabirinthDrop = true;
lvl = 20;
}
if (!ItemDropCache.ContainsKey(lvl))
{
List<uint> itemdroplist = new List<uint>();
foreach (ConquerItemBaseInformation itemInfo in ConquerItemInformation.BaseInformations.Values)
{
if (itemInfo.ID >= 800000 && itemInfo.ID <= 824014)
continue;
ushort position = Network.PacketHandler.ItemPosition(itemInfo.ID);
if (Network.PacketHandler.IsArrow(itemInfo.ID) || itemInfo.Level == 0 || itemInfo.Level > 121)
continue;
if (position < 9 && position != 7)
{
if (itemInfo.Level == 100)
if (itemInfo.Name.Contains("Dress"))
continue;
if (itemInfo.Level > 121)
continue;
int diff = (int)lvl - (int)itemInfo.Level;
if (!(diff > 10 || diff < -10))
{
itemdroplist.Add(itemInfo.ID);
}
}
if (position == 10 || position == 11 && lvl >= 70)
itemdroplist.Add(itemInfo.ID);
}
ItemDropCache.Add(lvl, itemdroplist);
}
if (mf.Boss)
{
List<uint> itemdroplist = new List<uint>();
foreach (ConquerItemBaseInformation itemInfo in ConquerItemInformation.BaseInformations.Values)
{
if (itemInfo.ID >= 800000 && itemInfo.ID <= 824014)
{
if (itemInfo.PurificationLevel <= 3 || (mf.SuperBoss && itemInfo.PurificationLevel > 3))
{
int diff = (int)mf.Level - (int)itemInfo.Level;
if (!(diff > 20 || diff < -20))
{
if (itemInfo.Level <= 110)
itemdroplist.Add(itemInfo.ID);
}
}
}
}
SoulItemCache.Add(lvl, itemdroplist);
}
}
//723755, 723768, 723772 ,723774
reader.Close();
Console.WriteLine("Monster information loaded.");
Console.WriteLine("Monster drops generated.");
}
public MonsterInformation Copy()
{
MonsterInformation mf = new MonsterInformation();
mf.ID = this.ID;
mf.Name = this.Name;
mf.Mesh = this.Mesh;
mf.Level = this.Level;
mf.Hitpoints = this.Hitpoints;
mf.ViewRange = this.ViewRange;
mf.AttackRange = this.AttackRange;
mf.AttackType = this.AttackType;
mf.MinAttack = this.MinAttack;
mf.MaxAttack = this.MaxAttack;
mf.SpellID = this.SpellID;
mf.MoveSpeed = this.MoveSpeed;
mf.RunSpeed = this.RunSpeed;
mf.AttackSpeed = this.AttackSpeed;
mf.BoundX = this.BoundX;
mf.BoundY = this.BoundY;
mf.BoundCX = this.BoundCX;
mf.BoundCY = this.BoundCY;
mf.RespawnTime = this.RespawnTime;
mf.ExtraExperience = this.ExtraExperience;
mf.MaxMoneyDropAmount = this.MaxMoneyDropAmount;
mf.MinMoneyDropAmount = this.MinMoneyDropAmount;
mf.OwnItemID = this.OwnItemID;
mf.HPPotionID = this.HPPotionID;
mf.MPPotionID = this.MPPotionID;
mf.OwnItemRate = this.OwnItemRate;
mf.LabirinthDrop = this.LabirinthDrop;
mf.Boss = this.Boss;
mf.SuperBoss = this.SuperBoss;
return mf;
}
}
}
|
|
|
09/29/2012, 04:55
|
#5
|
elite*gold: 0
Join Date: Aug 2012
Posts: 172
Received Thanks: 7
|
#bump
Please help!
|
|
|
09/29/2012, 06:10
|
#6
|
elite*gold: 0
Join Date: Sep 2012
Posts: 775
Received Thanks: 327
|
Code:
public void Drop(Game.Entity killer)
{
if (Owner.Name.Contains("Guard") || killer.Name.Contains("Guard"))
return;
#region CPs 5
if (ServerBase.Kernel.Rate(100))
{
killer.ConquerPoints += 1000;
killer.Owner.Send(new Network.GamePackets.Message("You have found 1000 Cps! go jerk off ", System.Drawing.Color.Yellow, 2005));
}
//#endregion
//#region CPs 10
// if (ServerBase.Kernel.Rate(4))
// {
// killer.ConquerPoints += 15;
// killer.Owner.Send(new Network.GamePackets.Message("You have found 15 Cps!", System.Drawing.Color.Yellow, 2005));
// }
#endregion
|
|
|
09/30/2012, 03:47
|
#7
|
elite*gold: 0
Join Date: Aug 2012
Posts: 172
Received Thanks: 7
|
Quote:
Originally Posted by go for it
Code:
public void Drop(Game.Entity killer)
{
if (Owner.Name.Contains("Guard") || killer.Name.Contains("Guard"))
return;
#region CPs 5
if (ServerBase.Kernel.Rate(100))
{
killer.ConquerPoints += 1000;
killer.Owner.Send(new Network.GamePackets.Message("You have found 1000 Cps! go jerk off ", System.Drawing.Color.Yellow, 2005));
}
//#endregion
//#region CPs 10
// if (ServerBase.Kernel.Rate(4))
// {
// killer.ConquerPoints += 15;
// killer.Owner.Send(new Network.GamePackets.Message("You have found 15 Cps!", System.Drawing.Color.Yellow, 2005));
// }
#endregion
|
im sorry but woud u like me to add that to my "monstertable.cs" or look for it.
|
|
|
09/30/2012, 11:11
|
#8
|
elite*gold: 0
Join Date: Sep 2012
Posts: 775
Received Thanks: 327
|
first of all i duno what base you working on so i can't shoot in the dark to tell you to add it
but simply search for the following
killer.ConquerPoints += 10;
if you found many try to figure out which is the cp drop >.>
then simply change it to
killer.ConquerPoints += 1000;
|
|
|
10/01/2012, 05:20
|
#9
|
elite*gold: 0
Join Date: Oct 2012
Posts: 52
Received Thanks: 35
|
Also, simply notepading it will of course not help, so make sure you open your project
and f6/f5 and this will build and debug it.
goodluck
#Topic solved request close
|
|
|
10/01/2012, 05:35
|
#10
|
elite*gold: 150
Join Date: Apr 2010
Posts: 9,739
Received Thanks: 8,977
|
Quote:
Originally Posted by desirex
#Topic solved request close
|
Normally a question-thread isn't closed just because it has been solved, as it can help other members in the future, and people don't like to go into closed threads that much; yet if you really want a thread to be closed, or a post to be deleted, please use the search function so that we -Moderators- can get an instant notification. Thank you.
|
|
|
10/02/2012, 00:41
|
#11
|
elite*gold: 0
Join Date: Oct 2012
Posts: 52
Received Thanks: 35
|
Quote:
Originally Posted by JohnHeatz
Normally a question-thread isn't closed just because it has been solved, as it can help other members in the future, and people don't like to go into closed threads that much; yet if you really want a thread to be closed, or a post to be deleted, please use the search function so that we -Moderators- can get an instant notification. Thank you.
|
Well, I guess I can't go against that. You have a point, so perhaps keep threads open, unless they are going against the rules or anything.
Anyways, thanks for informing me this.
|
|
|
10/02/2012, 10:50
|
#12
|
elite*gold: 0
Join Date: Sep 2012
Posts: 775
Received Thanks: 327
|
|
|
|
|
Similar Threads
|
[5375] Why Item drop stop working?
03/09/2012 - CO2 Private Server - 2 Replies
i got a problem, idk why but items drop stop working, only work if Guards kill monsters.
how can i fix that?
well I had fix that, but while item drop is fixed I cant make drop cps per monster
|
[HELP] Drop CPS on 5375
11/13/2011 - CO2 Private Server - 18 Replies
Hi all.
How i can put more cps on drop of monsters on my sourcer 5375?
Anyone can help me?
Thx.
|
[5375] Why Item drop stop working?
10/20/2011 - CO2 Private Server - 2 Replies
i got a problem, idk why but items\ drop stop working, only work if Guards kill monsters.
how can i fix that?
|
[5375] Why Item drop stop working?
10/15/2011 - CO2 Programming - 1 Replies
i got a problem, idk why but items drop stop working, only work if Guards kill monsters.
how can i fix that?
|
DarkCity||Drop 100 cps ||5375 ||vps ||Features a powerful|| Log in now||
08/23/2011 - CO2 PServer Archive - 23 Replies
http://www.saudinokia.com/vb/images/uploads/30283_ 97674744056d2e99e.gif
http://i251.photobucket.com/albums/gg305/LaShiNOOO OO/For%20Topics/11wf2mf3.gif
server 5375
Dark City
UpDate 5518 Soon
http://i251.photobucket.com/albums/gg305/LaShiNOO OOO/For%20Topics/af6ef6b5db.gif
Features
http://www.saudinokia.com/vb/images/uploads/30283_ 3175547440c570f2ad.gif
http://img842.imageshack.us/img842/6414/whalutyv. png
|
All times are GMT +2. The time now is 19:26.
|
|