0
حل مشكلة Arsena لى سورس كيمو

حل مشكلة Arsena لى سورس كيمو


اولا الشرح
ها تخش على Database وى بعدين ArsenalTable.cs


وى بعدين ها تمسح كل الى فية وى طحط دة

كود PHP:
namespace Conquer_Online_Server.Database{
    
using Conquer_Online_Server.Game;
    
using Conquer_Online_Server.Game.ConquerStructures.Society;
    
using Conquer_Online_Server.Interfaces;
    
using System;
    
using System.Collections.Generic;

    public class 
ArsenalsTable
    
{
        public static 
bool ContainsArsenal(ushort gID)
        {
            
MySqlCommand command = new MySqlCommand(MySqlCommandType.SELECT);
            
command.Select("guild_arsenals").Where("guild_uid", (long)gID).Execute();
            
MySqlReader reader = new MySqlReader(command);
            if (
reader.Read())
            {
                
reader.Close();
                
reader.Dispose();
                return 
true;
            }
            
reader.Close();
            
reader.Dispose();
            return 
false;
        }

        public static 
void CreateArsenal(ushort gID, ArsenalType Type)
        {
            
MySqlCommand command;
            if (!
ContainsArsenal(gID))
            {
                
command = new MySqlCommand(MySqlCommandType.INSERT);
                
command.Insert("guild_arsenals").Insert("guild_uid", (long)gID).Execute();
            }
            else
            {
                
string column = "";
                switch (
Type)
                {
                    case 
ArsenalType.Headgear:
                        
column = "head_allowed";
                        break;

                    case 
ArsenalType.Armor:
                        
column = "armor_allowed";
                        break;

                    case 
ArsenalType.Weapon:
                        
column = "weapon_allowed";
                        break;

                    case 
ArsenalType.Ring:
                        
column = "ring_allowed";
                        break;

                    case 
ArsenalType.Boots:
                        
column = "boots_allowed";
                        break;

                    case 
ArsenalType.Necklace:
                        
column = "neck_allowed";
                        break;

                    case 
ArsenalType.Fan:
                        
column = "fan_allowed";
                        break;

                    case 
ArsenalType.Tower:
                        
column = "tower_allowed";
                        break;
                }
                if (
column != "")
                {
                    
command = new MySqlCommand(MySqlCommandType.UPDATE);
                    
command.Update("guild_arsenals").Set(column, (long)1L).Execute();
                }
            }
        }

        public static 
void Delete(uint UID)
        {
            
MySqlCommand command = new MySqlCommand(MySqlCommandType.DELETE);
            
command.Delete("guild_arsenalsdonation", "item_uid", (long)UID).Execute();
            
command = new MySqlCommand(MySqlCommandType.UPDATE);
            
command.Update("items").Set("Inscribed", (long)0L).Where("UID", (long)UID).Execute();
        }

        public static 
void DeleteAll(Dictionary<uint, ArsenalSingle> Items)
        {
            foreach (
ArsenalSingle num in Items.Values)
            {
                
MySqlCommand command = new MySqlCommand(MySqlCommandType.DELETE);
                
command.Delete("guild_arsenalsdonation", "item_uid", (long)num.UID).Execute();
                
command = new MySqlCommand(MySqlCommandType.UPDATE);
                
command.Update("items").Set("Inscribed", (long)0L).Where("UID", (long)num.UID).Execute();
            }
        }

        public static 
void Inscribe(ArsenalType Type, uint Donation, IConquerItem item, Entity Entity)
        {
            
MySqlCommand command = new MySqlCommand(MySqlCommandType.INSERT);
            
command.Insert("guild_arsenalsdonation").Insert("d_uid", (long)Entity.UID).Insert("guild_uid", (long)Entity.GuildID).Insert("name", Entity.Name).Insert("item_uid", (long)item.UID).Insert("item_donation", (long)Donation).Insert("item_arsenal_type", (long)((byte)Type)).Execute();
            
command = new MySqlCommand(MySqlCommandType.UPDATE);
            
command.Update("items").Set("Inscribed", (long)1L).Where("UID", (long)item.UID).Execute();
        }

        public static 
void Load(Guild g)
        {
            
MySqlCommand command = new MySqlCommand(MySqlCommandType.SELECT);
            
command.Select("guild_arsenalsdonation").Where("guild_uid", (long)g.ID);
            
MySqlReader reader = new MySqlReader(command);
            
SafeDictionary<uint, ArsenalSingle> dictionary = new SafeDictionary<uint, ArsenalSingle>(0x3e8);
            while (
reader.Read())
            {
                
ArsenalSingle num = new ArsenalSingle
                
{
                    
D_UID = reader.ReadUInt32("d_uid"),
                    
UID = reader.ReadUInt32("item_uid"),
                    
Donation = reader.ReadUInt32("item_donation"),
                    
Type = (ArsenalType)reader.ReadByte("item_arsenal_type")
                };
                
dictionary.Add(num.UID, num);
            }
            
reader.Close();
            
reader.Dispose();
            foreach (
ArsenalSingle num in dictionary.Values)
            {
                
num.Item = ConquerItemTable.GetSingleItem(num.UID);
                
g.Arsenal.Inscribe(num.Type, num);
            }
            
dictionary = new SafeDictionary<uint, ArsenalSingle>(0x3e8);
            
dictionary = null;
            
command = new MySqlCommand(MySqlCommandType.SELECT);
            
command.Select("guild_arsenals").Where("guild_uid", (long)g.ID);
            
reader = new MySqlReader(command);
            if (
reader.Read())
            {
                
g.A_Packet.Headgear_Avaliable = reader.ReadByte("head_allowed") == 1;
                
g.A_Packet.Armor_Avaliable = reader.ReadByte("armor_allowed") == 1;
                
g.A_Packet.Weapon_Avaliable = reader.ReadByte("weapon_allowed") == 1;
                
g.A_Packet.Ring_Avaliable = reader.ReadByte("ring_allowed") == 1;
                
g.A_Packet.Boots_Avaliable = reader.ReadByte("boots_allowed") == 1;
                
g.A_Packet.Necklace_Avaliable = reader.ReadByte("neck_allowed") == 1;
                
g.A_Packet.Fan_Avaliable = reader.ReadByte("fan_allowed") == 1;
                
g.A_Packet.Tower_Avaliable = reader.ReadByte("tower_allowed") == 1;
            }
            
reader.Close();
            
reader.Dispose();
        }
    }
}

0 التعليقات:

إرسال تعليق

 
تعريب وتطوير mandoo
مدونة conquer Pvp لشروحات السيرفرات الشخصيه © 2010 | عودة الى الاعلى
Designed by mandoo