Ejemplo n.º 1
0
    public virtual void Init(LidServer a_server, int a_type, int a_ownerPid = 0, int a_health = 100, bool a_isNew = true)
    {
        m_isStatic  = false;
        m_server    = a_server;
        m_type      = a_type;
        m_ownerPid  = a_ownerPid;
        m_def       = Buildings.GetBuildingDef(m_type);
        m_decayTime = m_def.decayTime * (double)((float)a_health / 100f);
        if (!m_def.persistent)
        {
            return;
        }
        Vector3 position    = base.transform.position;
        float   a_x         = position.x * 1.00001f;
        Vector3 position2   = base.transform.position;
        float   a_y         = position2.z * 1.00001f;
        Vector3 eulerAngles = base.transform.rotation.eulerAngles;

        m_dbBuilding = new DatabaseBuilding(a_type, a_x, a_y, eulerAngles.y * 1.00001f, a_ownerPid, a_health);
        m_sql        = m_server.GetSql();
        if (null != m_sql)
        {
            if (a_isNew)
            {
                m_dbBuilding.flag = eDbAction.insert;
                m_sql.SaveBuilding(m_dbBuilding);
            }
            m_nextSqlUpdateTime = Random.Range(100f, 300f);
        }
    }
Ejemplo n.º 2
0
 public ItemContainer(int a_maxX, int a_maxY, int a_xOffset, int a_cid = 0, SQLThreadManager a_sql = null, ServerPlayer a_player = null)
 {
     this.m_maxX    = a_maxX;
     this.m_maxY    = a_maxY;
     this.m_xOffset = a_xOffset;
     this.m_cid     = a_cid;
     this.m_sql     = a_sql;
     this.m_player  = a_player;
 }
Ejemplo n.º 3
0
 public ServerPlayer(string a_name, ulong a_accountId, int a_onlineId, eCharType a_type, NetConnection a_con, SQLThreadManager a_sql, LidServer a_server, BuildingManager a_buildMan, MissionManager a_missionMan)
 {
     m_name       = a_name;
     m_accountId  = a_accountId;
     m_onlineId   = a_onlineId;
     m_charType   = a_type;
     m_connection = a_con;
     if (m_connection != null)
     {
         m_connection.Tag = m_onlineId;
     }
     m_sql        = a_sql;
     m_server     = a_server;
     m_buildMan   = a_buildMan;
     m_missionMan = a_missionMan;
 }
 private void Awake()
 {
     if (Global.isServer)
     {
         Vector3 position  = base.transform.position;
         float   num       = position.x * 10f;
         Vector3 position2 = base.transform.position;
         m_cid                  = (int)(num + position2.z * 20f);
         m_sql                  = (SQLThreadManager)Object.FindObjectOfType(typeof(SQLThreadManager));
         m_container            = new ItemContainer(4, 4, 6, m_cid, m_sql);
         m_container.m_position = base.transform.position;
         SetNextDropTime();
     }
     else
     {
         Object.Destroy(this);
     }
 }
Ejemplo n.º 5
0
    public void Spawn(GameObject a_prefab, DatabasePlayer a_dbPlayer)
    {
        Vector3 position = Vector3.zero;

        if (a_dbPlayer.x == 0f && 0f == a_dbPlayer.y)
        {
            a_dbPlayer.karma = 200;
            ServerTutorial tutorial = m_server.GetTutorial();
            if (null != tutorial)
            {
                position = tutorial.StartTutorial();
            }
        }
        else
        {
            position.x = a_dbPlayer.x;
            position.z = a_dbPlayer.y;
        }
        position.y = 0f;
        m_pid      = a_dbPlayer.pid;
        GameObject gameObject = (GameObject)Object.Instantiate(a_prefab, position, Quaternion.identity);

        m_char            = gameObject.GetComponent <ControlledChar>();
        m_health          = a_dbPlayer.health;
        m_energy          = a_dbPlayer.energy;
        m_karma           = a_dbPlayer.karma;
        m_lastUpdateKarma = a_dbPlayer.karma;
        m_xp        = a_dbPlayer.xp;
        m_condition = a_dbPlayer.condition;
        m_gold      = a_dbPlayer.gold;
        m_partyId   = a_dbPlayer.partyId;
        m_partyRank = a_dbPlayer.partyRank;
        RecalculateRank();
        if (m_health == 0f)
        {
            m_respawnTime = Time.time;
        }
        m_char.Init(this);
        m_inventory = new ItemContainer(5, 4, 0, SQLThreadManager.PidToCid(m_pid), m_sql, this);
        m_buildMan.IgnoreBedCollision(m_pid, m_char.collider);
    }
Ejemplo n.º 6
0
    public DatabaseItem DragDrop(Vector3 a_dragPos, Vector3 a_dropPos, ItemContainer a_otherContainer, Vector3 a_freeWorldDropPos)
    {
        DatabaseItem result           = new DatabaseItem(0);
        int          itemIndexFromPos = GetItemIndexFromPos(a_dragPos.x, a_dragPos.z);

        if (itemIndexFromPos > -1 && itemIndexFromPos < m_items.Count)
        {
            if (!IsValidPos(a_dropPos))
            {
                bool flag = true;
                if (a_otherContainer != null && a_otherContainer.IsValidPos(a_dropPos))
                {
                    flag = a_otherContainer.CollectItem(m_items[itemIndexFromPos], true, a_dropPos);
                }
                else
                {
                    result          = m_items[itemIndexFromPos];
                    result.cid      = 0;
                    result.x        = a_freeWorldDropPos.x;
                    result.y        = a_freeWorldDropPos.z;
                    result.dropTime = Time.time;
                    int num = (!(null == m_sql)) ? SQLThreadManager.CidToPid(m_cid) : 0;
                    result.dropPlayerId = ((m_cid != num) ? num : 0);
                }
                if (flag)
                {
                    SQLChange(m_items[itemIndexFromPos], eDbAction.delete);
                    m_items.RemoveAt(itemIndexFromPos);
                }
            }
            else
            {
                int itemIndexFromPos2 = GetItemIndexFromPos(a_dropPos.x, a_dropPos.z);
                if (itemIndexFromPos2 == -1)
                {
                    DatabaseItem databaseItem = m_items[itemIndexFromPos];
                    databaseItem.x            = a_dropPos.x;
                    databaseItem.y            = a_dropPos.z;
                    m_items[itemIndexFromPos] = databaseItem;
                    SQLChange(databaseItem, eDbAction.update);
                }
                else
                {
                    DatabaseItem databaseItem2 = m_items[itemIndexFromPos];
                    if (Items.IsStackable(databaseItem2.type))
                    {
                        DatabaseItem databaseItem3 = m_items[itemIndexFromPos];
                        int          type          = databaseItem3.type;
                        DatabaseItem databaseItem4 = m_items[itemIndexFromPos2];
                        if (type == databaseItem4.type)
                        {
                            DatabaseItem databaseItem5 = m_items[itemIndexFromPos];
                            int          amount        = databaseItem5.amount;
                            DatabaseItem databaseItem6 = m_items[itemIndexFromPos2];
                            int          num2          = amount + databaseItem6.amount;
                            if (num2 <= 254)
                            {
                                DatabaseItem a_item = m_items[itemIndexFromPos];
                                SQLChange(a_item, eDbAction.delete);
                                DatabaseItem databaseItem7 = m_items[itemIndexFromPos2];
                                databaseItem7.amount       = num2;
                                m_items[itemIndexFromPos2] = databaseItem7;
                                SQLChange(databaseItem7, eDbAction.update);
                                m_items.RemoveAt(itemIndexFromPos);
                            }
                            else
                            {
                                DatabaseItem databaseItem8 = m_items[itemIndexFromPos];
                                databaseItem8.amount      = num2 - 254;
                                m_items[itemIndexFromPos] = databaseItem8;
                                SQLChange(databaseItem8, eDbAction.update);
                                DatabaseItem databaseItem9 = m_items[itemIndexFromPos2];
                                databaseItem9.amount       = 254;
                                m_items[itemIndexFromPos2] = databaseItem9;
                                SQLChange(databaseItem9, eDbAction.update);
                            }
                            goto IL_0388;
                        }
                    }
                    DatabaseItem databaseItem10 = m_items[itemIndexFromPos];
                    DatabaseItem databaseItem11 = m_items[itemIndexFromPos];
                    DatabaseItem databaseItem12 = m_items[itemIndexFromPos2];
                    databaseItem11.x = databaseItem12.x;
                    DatabaseItem databaseItem13 = m_items[itemIndexFromPos2];
                    databaseItem11.y          = databaseItem13.y;
                    m_items[itemIndexFromPos] = databaseItem11;
                    SQLChange(databaseItem11, eDbAction.update);
                    DatabaseItem databaseItem14 = m_items[itemIndexFromPos2];
                    databaseItem14.x           = databaseItem10.x;
                    databaseItem14.y           = databaseItem10.y;
                    m_items[itemIndexFromPos2] = databaseItem14;
                    SQLChange(databaseItem14, eDbAction.update);
                }
            }
        }
        goto IL_0388;
IL_0388:
        return(result);
    }