Git Product home page Git Product logo

sharpdxtutorial's Introduction

Tutorial series for SharpDX Toolkit

This project contains all code used in tutorial series for SharpDX Toolkit.

Note that this repository does not contain any SharpDX assemblies, you will need to either download them from the official site (latest dev package) or to build them from source.

The process of setting up the development environment is explained in the first tutorial.

sharpdxtutorial's People

Contributors

artiomciumac avatar

Stargazers

 avatar John McElmurray avatar

Watchers

James Cloos avatar  avatar

sharpdxtutorial's Issues

change screen

i use your example of toturial 2 to change my screen
but my graphics is poor and have so lag
what i doing wrong
this is my code

using System;
using SharpDX;
using SharpDX.Toolkit;
using System.Collections.Generic;
using SharpDX.Toolkit.Input;
using TomShane.Neoforce.Controls;
using SharpDX.Direct3D;
using SharpDX.Direct3D11;
using SharpDX.Toolkit.Content;


namespace TomShane.Neoforce.Central
{
    using SharpDX.Toolkit.Graphics;


    /// <summary>
    /// Simple MiniCube application using SharpDX.Toolkit.
    /// The purpose of this application is to show a rotating cube using <see cref="BasicEffect"/>.
    /// </summary>
    public class Gamer : Game
    {
        private Manager NeoManager;
       private GraphicsDeviceManager graphicsDeviceManager;


        private readonly Login _Login;

        public Gamer()
        {
            // Creates a graphics manager. This is mandatory.

            graphicsDeviceManager = new GraphicsDeviceManager(this);
            graphicsDeviceManager.PreferredBackBufferWidth = 1280;
            graphicsDeviceManager.PreferredBackBufferHeight = 800;
            NeoManager = new Manager(this, graphicsDeviceManager, "Default");
            IsMouseVisible = true;
            _Login = new World(this, NeoManager,graphicsDeviceManager);
            Content.RootDirectory = "Content";





        }

        protected override void LoadContent()
        {

            base.LoadContent();
        }

        protected override void Initialize()
        {


            base.Initialize();
            NeoManager.Initialize();

            Window.Title = "Firstgame";
        }

        protected override void Update(GameTime gameTime)
        { 
            base.Update(gameTime);
            NeoManager.Update(gameTime);

        }

        protected override void Draw(GameTime gameTime)
        {


            NeoManager.BeginDraw(gameTime);// the problem is where
            GraphicsDevice.Clear(SharpDX.Color.CornflowerBlue);
          NeoManager.EndDraw(); //the problem its where
            base.Draw(gameTime);

        }
    }
}

using SharpDX;
using SharpDX.Toolkit;
using SharpDX.Toolkit.Content;
using SharpDX.Toolkit.Graphics;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using TomShane.Neoforce.Controls;
using SharpDX.XInput;


namespace TomShane.Neoforce.Central
{

    internal sealed class Login : GameSystem
    {
        private Manager NeoManager;
        private Window window;
        private LoginClient cliente;
        string user = null;
        string userPassword = null;
        private Button virtualkeyboard = null;
        public Button LoginButton { get { return btnApply; } }
        public Button ExitButton { get { return btnExit; } }
        public string Username { get { return txusername.Text; } }
        public string Password { get { return txpassword.Text; } }
        private Button options { get { return option; } }
        private SideBarPanel pnlRes = null;
        private Button btnApply = null;
        private Button btnExit = null;
        private Button option = null;
        private TextBox txusername = null;
        private TextBox txpassword = null;
        private Label lbusername = null;
        private Label lbpassword = null;
        private GraphicsDeviceManager graphic;
        public Login(Game game,Manager neo, GraphicsDeviceManager gra)
            : base(game)
        {
            Game _game = game;
            NeoManager = neo;
            graphic = gra;
            cliente = new LoginClient();

            // this game system has something to draw - enable drawing by default
            // this can be disabled to make objects drawn by this system disappear
            Visible = true;

            // this game system has logic that needs to be updated - enable update by default
            // this can be disabled to simulate a "pause" in logic update
            Enabled = true;

            // add the system itself to the systems list, so that it will get initialized and processed properly
            // this can be done after game initialization - the Game class supports adding and removing of game systems dynamically
            _game.GameSystems.Add(this);
        }

        /// <summary>
        /// Initialize here anything that depends on other services
        /// </summary>
        public override void Initialize()
        {

          //  NeoManager.Initialize();

            base.Initialize();

            // get the camera service from service registry

        }

        /// <summary>
        /// Load all graphics content here.
        /// </summary>
        protected override void LoadContent()
        {
            base.LoadContent();
            window = new Window(NeoManager);
            window.Init();
            window.Text = "Login";
            window.Width = 420;
            window.Height = 243;
            window.Center();
            window.Visible = true;
            window.CloseButtonVisible = false;
            window.Resizable = false;
            window.Movable = false;
            NeoManager.Add(window);
            window.IconVisible = false;
            InitRes();
            // initialize the basic effect (shader) to draw the geometry, the BasicEffect class is similar to one from XNA

        }

        /// <summary>
        /// Draw the scene content.
        /// </summary>
        /// <param name="gameTime">Structure containing information about elapsed game time.</param>


        /// <summary>
        /// Update the scene logic.
        /// </summary>
        /// <param name="gameTime">Structure containing information about elapsed game time.</param>
        public override void Update(GameTime gameTime)
        {
              NeoManager.Update(gameTime);
            base.Update(gameTime);


            // get the total elapsed seconds since the start of the game

        }
        public override void Draw(GameTime gameTime)
        {

          NeoManager.BeginDraw(gameTime);
         SharpDX.Toolkit.Graphics.BlendState graphics = GraphicsDevice.BlendStates.Opaque;
           SharpDX.Toolkit.Graphics.DepthStencilState graphics1 = GraphicsDevice.DepthStencilStates.Default;
         // GraphicsDevice.Clear(SharpDX.Color.CornflowerBlue);
           // GraphicsDevice.BlendStates = BlendStateCollection.;
            //GraphicsDevice.BlendStates = BlendingMode.Default;
           // GraphicsDevice.DepthStencilStates = DepthStencilState.Default;
           // device.Clear(Color.CornflowerBlue);
          //  GraphicsDevice.SamplerStates[0] = new(GraphicsDevice, SamplerState);
        NeoManager.EndDraw();
            base.Draw(gameTime);


            //NeoManager.EndDraw();
            // set the parameters for cube drawing and draw it using the basic effect

        }
        private void InitRes()
        {



            pnlRes = new SideBarPanel(NeoManager);
            pnlRes.Init();
            pnlRes.Passive = true;
            pnlRes.Parent = window;
            pnlRes.Left = 0;
            pnlRes.Top = 0;
            pnlRes.Width = 410;
            pnlRes.Height = 210;
            pnlRes.CanFocus = false;
        //    pnlRes.Color = new Color(12,12,13);

            //   Manager.Add(pnlRes);
            virtualkeyboard = new Button(NeoManager);
            virtualkeyboard.Init();
            virtualkeyboard.Width = 40;
            virtualkeyboard.Height = 30;
            virtualkeyboard.Parent = pnlRes;
            virtualkeyboard.Top = pnlRes.Left + 10;
            virtualkeyboard.Left = pnlRes.Top + 283;
         //   virtualkeyboard.Draw(new Vector2(12, 13));
            //virtualkeyboard.TextColor = new SharpDX.Color(20, 22, 23);
            //  virtualkeyboard.Text = "Teclado";


            //    virtualkeyboard.Glyph = new Glyph()
            virtualkeyboard.Glyph = new Glyph(NeoManager.Content.Load<SharpDX.Toolkit.Graphics.Texture2D>("Content\\Images\\teclado"));
            lbusername = new Label(NeoManager);
            lbusername.Init();

            lbusername.Width = 100;
            lbusername.Parent = pnlRes;
            lbusername.Top = pnlRes.Left + 10;
            lbusername.Left = pnlRes.Top + 8;

            lbusername.Text = "USERNAME";
            lbusername.TextColor = new SharpDX.Color(250, 250, 250);

            //  Manager.Graphics.ApplyChanges();
            //
            //  Manager.Add(lbusername);


            txusername = new TextBox(NeoManager);
            txusername.Init();
            txusername.Width = 200;
            txusername.Parent = pnlRes;
            txusername.Top = pnlRes.Left + 8;
            txusername.Left = pnlRes.Top + 80;
            txusername.Text.Trim();
            txusername.TextColor = new SharpDX.Color(250, 250, 250);
            lbpassword = new Label(NeoManager);
            lbpassword.Init();
            lbpassword.Width = 100;
            lbpassword.Parent = pnlRes;
            lbpassword.Top = pnlRes.Left + 30;
            lbpassword.Left = pnlRes.Top + 8;



            lbpassword.Text = "PASSWORD";
            lbpassword.TextColor = new SharpDX.Color(250, 250, 250);
            txpassword = new TextBox(NeoManager);
            txpassword.Init();
            txpassword.Width = 200;
            txpassword.Parent = pnlRes;
            txpassword.Top = pnlRes.Left + 30;
            txpassword.Left = pnlRes.Top + 80;
            txpassword.Mode = TextBoxMode.Password;

            txpassword.PasswordChar = '*';



            txpassword.Text.Trim();
            txpassword.TextColor = new SharpDX.Color(250, 250, 250);

            btnApply = new Button(NeoManager);
            btnApply.Init();
            btnApply.Width = 80;
            btnApply.Parent = pnlRes;
            btnApply.Left = pnlRes.Left + 50;
            btnApply.Top = pnlRes.Top + 80;
            btnApply.Text = "Login";
            btnApply.TextColor = new SharpDX.Color(250, 250, 250);
            btnApply.Click += new Controls.EventHandler(btnApply_Click);
            option = new Button(NeoManager);
            option.Init();
            option.Width = 80;
            option.Parent = pnlRes;
            option.Left = btnApply.Left + btnApply.Width + 8;
            option.Top = pnlRes.Top + 80;
            option.Text = "Options";
            option.TextColor = new SharpDX.Color(250, 250, 250);
            option.Click += new Controls.EventHandler(options_click);
            btnExit = new Button(NeoManager);
            btnExit.Init();
            btnExit.Width = 80;
            btnExit.Parent = pnlRes;
            btnExit.Left = option.Left + option.Width + 8;
            btnExit.Top = pnlRes.Top + 80;
            btnExit.Text = "Exit";
            btnExit.TextColor = new SharpDX.Color(250, 250, 250);
           // btnExit.Color = new SharpDX.Color(10, 10, 10);
          //  btnExit.ToolTip.Color = new SharpDX.Color(250, 250, 250);

            btnExit.Click += new Controls.EventHandler(btnExit_Click1);

        }
        ////////////////////////////////////////////////////////////////////////////

        ////////////////////////////////////////////////////////////////////////////    


        void btnExit_Click1(object sender, Controls.EventArgs e)
        {

            System.Windows.Forms.DialogResult dialogResult = System.Windows.Forms.MessageBox.Show("Do you really want to exit ", "", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Question);
            if (dialogResult == System.Windows.Forms.DialogResult.Yes)
            {

                System.Windows.Forms.Application.Exit();
            }


        }

        void options_click(object sender, Controls.EventArgs e)
        {

            Options ola = new Options(Game,NeoManager);
            ola.Visible = true;
          // ola.EndDraw();

             }


        public void ProcessComplete1(Headers header, Rank rank)
        {
            string msg = "";
            //  System.Diagnostics.Debug.Write(Erro);
            if (header != Headers.Rank)
            {

                return;
            }

            else if (rank == Rank.Administrador)
            {

                txusername.Text = "";
                txpassword.Text = "";
                msg = "Entrou como Admiministrador";
                System.Windows.Forms.MessageBox.Show(msg, "", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
            }

            else if (rank == Rank.player)
            {
                msg = "Entrou com Player";
                System.Windows.Forms.MessageBox.Show(msg, "", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
            }

            else if (rank == Rank.Moderador)
            {
                msg = "Entrou Como Moderador";
                System.Windows.Forms.MessageBox.Show(msg, "", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
            }
            else if (rank == Rank.Vip)
            {

                msg = "Entrou Como VIP";
                System.Windows.Forms.MessageBox.Show(msg, "", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);

            }
            //else if (rank == Rank.Banned)
            //{
            //    // txusername.Text = "";
            //    //txpassword.Text = "";
            //    msg = "Jogador Banido";
            //    System.Windows.Forms.MessageBox.Show(msg, "", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);

            //}

        }

        public void ProcessComplete(Headers header, ErrorCodes Erro)
        {
            string msg = "";
            System.Diagnostics.Debug.Write(Erro);
            if (header != Headers.Login)
            {

                return;
            }

            else if (Erro == ErrorCodes.Sucess)
            {

                txusername.Text = "";
                txpassword.Text = "";
                window.Hide();

                Server ser = new Server(Game, NeoManager,graphic,user);
                cliente.Nivel(user, ProcessComplete1);

            }

            else if (Erro == ErrorCodes.InvalidLogin)
            {
                msg = "Password ou username is incorret";
                System.Windows.Forms.MessageBox.Show(msg, "", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);
                txusername.Text = "";
                txpassword.Text = "";


            }

            else if (Erro == ErrorCodes.Error)
            {
                txusername.Text = "";
                txpassword.Text = "";
                msg = "Server Is Offline";
                System.Windows.Forms.MessageBox.Show(msg, "", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);

            }


        }

        public static String Create(String passwd)
        {
            var rnd = new Random();
            var saltBuf = new StringBuilder();
            const string seedList = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

            for (int i = 0; i < 32; i++)
            {
                int rndIndex = rnd.Next(62);
                saltBuf.Append(seedList.Substring(rndIndex, 1));
            }

            String salt = saltBuf.ToString();

            return CreateMd5Hash(passwd);
        }

        private static String CreateMd5Hash(String data)
        {
            byte[] bdata = new byte[data.Length];
            byte[] hash;
            for (int i = 0; i < data.Length; i++)
            {
                bdata[i] = (byte)(data[i] & 0xff);
            }
            try
            {
                MD5CryptoServiceProvider md5Provider = new MD5CryptoServiceProvider();
                hash = md5Provider.ComputeHash(bdata);
            }
            catch (SecurityException e)
            {
                throw new ApplicationException("A security encryption error occured.", e);
            }
            var result = new StringBuilder(32);
            foreach (byte t in hash)
            {
                String x = (t & 0xff).ToString("X").ToLowerInvariant();
                if (x.Length < 2)
                {
                    result.Append("0");
                }
                result.Append(x);
            }
            System.Console.WriteLine(result);
            return result.ToString();
        }
        private static String CalculateHash(string password, string salt)
        {
            byte[] data = System.Text.Encoding.ASCII.GetBytes(salt + password);
            data = System.Security.Cryptography.MD5.Create().ComputeHash(data);

            return BitConverter.ToString(data).Replace("-", "") + ":" + salt;
        }

        void btnApply_Click(object sender, Controls.EventArgs e)
        {

            user = txusername.Text.Trim();
            userPassword = txpassword.Text.Trim();


            if ((user.Equals(String.Empty)) || (userPassword.Equals(String.Empty)))
            {
                System.Windows.Forms.MessageBox.Show("Username Ou Password is empty ", "", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error);


            }
            else
            {

                window.Hide();
               World ser = new World(Game,NeoManager,graphic,user);
             //  ser.Services.AddService(ser);
          //     ser.Visible = true;
          //     this.Visible = false;

                 //   cliente.Login(user, userPassword, ProcessComplete);


            }
            ////////////////////////////////////////////////////////////////////////////

            ////////////////////////////////////////////////////////////////////////////    


        }

    }
}

using System;
using SharpDX;
using SharpDX.Toolkit;
using System.Collections.Generic;
using SharpDX.Toolkit.Input;
using TomShane.Neoforce.Controls;
using SharpDX.Direct3D;
using SharpDX.Direct3D11;
using SharpDX.Toolkit.Content;
using SharpDX.Toolkit.Graphics;


namespace TomShane.Neoforce.Central
{
    internal sealed class World : GameSystem
    {
        private Manager NeoManager;
    //    private Window window;
        string texto;
        private SpriteBatch spriteBatch;
        private SpriteFont arial16BMFont;
        private readonly Login _Login;
        //    private readonly Server _Server;

        // By preloading any assets used by UI rendering, we avoid framerate glitches
        // when they suddenly need to be loaded in the middle of a menu transition.
        private PointerManager pointer;

        private Model model;

        private List<Model> models;
        private Game _game;
        private BoundingSphere modelBounds;
        private Matrix world;
        private Matrix view;
        private Matrix projection;
        TomShane.Neoforce.Controls.TabControl tbc;
       private GraphicsDeviceManager graphicsDeviceManager;

        public World(Game game,Manager ola,string text,GraphicsDeviceManager gra)
            : base(game)
        {
            _game = game;
           graphicsDeviceManager = gra;
            texto = text;
            System.Console.Write(texto);
         graphicsDeviceManager.PreferredGraphicsProfile = new FeatureLevel[] { FeatureLevel.Level_9_1, };
            pointer = new PointerManager(_game);
            NeoManager = ola;

            // this game system has something to draw - enable drawing by default
            // this can be disabled to make objects drawn by this system disappear
            Visible = true;

            // this game system has logic that needs to be updated - enable update by default
            // this can be disabled to simulate a "pause" in logic update
            Enabled = true;

            // add the system itself to the systems list, so that it will get initialized and processed properly
            // this can be done after game initialization - the Game class supports adding and removing of game systems dynamically
            game.GameSystems.Add(this);
        }

        /// <summary>
        /// Initialize here anything that depends on other services
        /// </summary>
        public override void Initialize()
        {

          //  NeoManager.Initialize();

            base.Initialize();

            // get the camera service from service registry

        }

        /// <summary>
        /// Load all graphics content here.
        /// </summary>
        protected override void LoadContent()
        { 
            InitConsole(texto);
        arial16BMFont = Content.Load<SpriteFont>("Arial16");

        // Load the model (by default the model is loaded with a BasicEffect. Use ModelContentReaderOptions to change the behavior at loading time.
        models = new List<Model>();
        foreach (var modelName in new[] { "Dude", "Duck", "Car", "Happy", "Knot", "Skull", "Sphere", "Teapot", "helmet" })
        {
            model = Content.Load<Model>(modelName);

            // Enable default lighting  on model.
            BasicEffect.EnableDefaultLighting(model, true);

            models.Add(model);
        }
        model = models[0];

        // Instantiate a SpriteBatch
        spriteBatch = ToDisposeContent(new SpriteBatch(GraphicsDevice));
            base.LoadContent();


            // InitRes();
            // initialize the basic effect (shader) to draw the geometry, the BasicEffect class is similar to one from XNA

        }

        /// <summary>
        /// Draw the scene content.
        /// </summary>
        /// <param name="gameTime">Structure containing information about elapsed game time.</param>


        /// <summary>
        /// Update the scene logic.
        /// </summary>
        /// <param name="gameTime">Structure containing information about elapsed game time.</param>
        public override void Update(GameTime gameTime)
        {
            var pointerState = pointer.GetState();
            if (pointerState.Points.Count > 0 && pointerState.Points[0].EventType == PointerEventType.Released)
            {
                // Go to next model when pressing key space
                model = models[(models.IndexOf(model) + 1) % models.Count];
            }

            // Calculate the bounds of this model
            modelBounds = model.CalculateBounds();

            // Calculates the world and the view based on the model size
            const float MaxModelSize = 10.0f;
            var scaling = MaxModelSize / modelBounds.Radius;
            view = Matrix.LookAtRH(new Vector3(0, 0, MaxModelSize * 2.5f), new Vector3(0, 0, 0), Vector3.UnitY);
            projection = Matrix.PerspectiveFovRH(0.9f, (float)GraphicsDevice.BackBuffer.Width / GraphicsDevice.BackBuffer.Height, 0.1f, MaxModelSize * 10.0f);
            world = Matrix.Translation(-modelBounds.Center.X, -modelBounds.Center.Y, -modelBounds.Center.Z) * Matrix.Scaling(scaling) * Matrix.RotationY((float)gameTime.TotalGameTime.TotalSeconds);

            base.Update(gameTime);
        //  NeoManager.Update(gameTime);

            // get the total elapsed seconds since the start of the game

        }
        public override void Draw(GameTime gameTime)
        {
          //  NeoManager.BeginDraw(gameTime);

           // graphicsDeviceManager.GraphicsDevice.BlendStates = BlendStateCollection.StateAllocatorDelegate.RemoveAll();
              model.Draw(GraphicsDevice, world, view, projection);
            // Render the text



              spriteBatch.Begin();
            //correntscreen.Draw(gameTime);
              spriteBatch.DrawString(arial16BMFont, "Press the pointer to switch models...\r\nCurrent Model: " + model.Name, new Vector2(16, 16), Color.White);

            spriteBatch.End();
         //   NeoManager.EndDraw();

            base.Draw(gameTime);

            // set the parameters for cube drawing and draw it using the basic effect

        }
        private void InitConsole(string texto)
        {
            tbc = new TomShane.Neoforce.Controls.TabControl(NeoManager);
         //   tbc.BackColor = new Color(10, 12, 3);
            TomShane.Neoforce.Controls.Console con1 = new TomShane.Neoforce.Controls.Console(NeoManager);
            TomShane.Neoforce.Controls.Console con2 = new TomShane.Neoforce.Controls.Console(NeoManager);


            tbc.Visible = true;
          //  con2.BackColor
            // Setup of TabControl, which will be holding both consoles
            tbc.Init();
            tbc.AddPage("Global");
            tbc.AddPage("Guild");
            tbc.AddPage("PARTY");
            tbc.AddPage("TRADE");

            tbc.Alpha = 220;
            tbc.Left = 0;
            tbc.Height = 220;
            tbc.Width = 450;
            tbc.Top =NeoManager.TargetHeight - tbc.Height - 32;

            tbc.Movable = true;
            tbc.Resizable = true;
            tbc.MinimumHeight = 96;
            tbc.MinimumWidth = 160;

            tbc.TabPages[0].Add(con1);
            tbc.TabPages[1].Add(con2);

            con1.Init();
            con1.Sender = texto;
            tbc.BringToFront();
            con2.Init();
            con2.Sender = texto;


            con2.Width = con1.Width = tbc.TabPages[0].ClientWidth;
            con2.Height = con1.Height = tbc.TabPages[0].ClientHeight;
            con2.Anchor = con1.Anchor = Anchors.All;

            con1.Channels.Add(new ConsoleChannel(0, "General", SharpDX.Color.Orange));
            con1.Channels.Add(new ConsoleChannel(1, "Private", SharpDX.Color.White));
            con1.Channels.Add(new ConsoleChannel(2, "System", SharpDX.Color.Yellow));
            con1.Channels.Add(new ConsoleChannel(3, "Guild", SharpDX.Color.Green));
            con1.Channels.Add(new ConsoleChannel(4, "Trade", SharpDX.Color.Red));

            // We want to share channels and message buffer in both consoles
            con2.Channels = con1.Channels;
            con2.MessageBuffer = con1.MessageBuffer;

            // In the second console we display only "Private" messages
            con2.ChannelFilter.Add(3);

            // Select default channels for each tab
            con1.SelectedChannel = 0;
            con2.SelectedChannel = 3;

            // Do we want to add timestamp or channel name at the start of every message?
            con1.MessageFormat = ConsoleMessageFormats.All;
            con2.MessageFormat = ConsoleMessageFormats.All;


            // Handler for altering incoming message
            con1.MessageSent += new ConsoleMessageEventHandler(con1_MessageSent);

            // We send initial welcome message to System channel
            con1.MessageBuffer.Add(new ConsoleMessage("System", "WELCOME TO THE SERVER! " + texto, 2));

            NeoManager.Add(tbc);
        }
        ////////////////////////////////////////////////////////////////////////////

        ////////////////////////////////////////////////////////////////////////////
        void con1_MessageSent(object sender, ConsoleMessageEventArgs e)
        {
            if (e.Message.Channel == 0)
            {
                //e.Message.Text = "(!) " + e.Message.Text;
            }
        }
    }
}

r

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.