Skip to content
View in the app

A better way to browse. Learn more.

WRobot

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Settings question

Featured Replies

Hi all, i using class robotManager methods.Helpful.Settings for 
for communication wrobot windows on same PC.
Very often in log i see the error like "Serialize(String path, object @object)#3: Cannot write file." when calling a method robotManager methods.Helpful.Settings .Save(). How can I avoid this?

  • Author
3 hours ago, Droidz said:

I cant understand why file not owerwriting. Whot i need to change to unlock file. File with settings using at same time by 10+ wrobot windows, but error does not always appear. is there an option to 100% unlock the file before saving?

  • Author

 

Mutex is only used in relogger? The fact is that this error happens both in the relogger and in the wrobot

  • Author

 

I still couldn't find a solution.

I use settings class to communicate relogger and wrobot windows

Unless you are going to reread all the commands between two clients, its bad practice to write to file to read then just to reread, You should use something like a server to talk together. 

You can try to host http server in relogger (with relogger plugin) (you can get/return values (or xml) from it.

It's sample of http server, but for wrobot plugin :

using System.Net;
using System.Text;
using System.Threading.Tasks;
using robotManager.Helpful;
using wManager.Wow.Helpers;
using wManager.Wow.ObjectManager;

public class Main : wManager.Plugin.IPlugin
{
    /*
     Samples:
http://localhost:8000/name
http://localhost:8000/jump
http://localhost:8000/pos
http://localhost:8000/runlua?code=print(%22test%20from%20web%22)
     */
    private readonly bool _debugLog = true;
    private HttpListener _listener;
    private readonly string _url = "http://localhost:8000/";
    private int _requestCount;
    private bool _runServer;

    public void Initialize()
    {
        // Create a Http server and start listening for incoming connections
        _listener = new HttpListener();
        _listener.Prefixes.Add(_url);
        _listener.Start();
        if (_debugLog)
            Logging.WriteDebug("Listening for connections on " + _url);

        // Handle requests
        var listenTask = HandleIncomingConnections();
        listenTask.GetAwaiter().GetResult();
    }

    public void Dispose()
    {
        if (_listener != null)
        {
            _runServer = false;
            _listener.Close();
            _listener = null;
        }
    }

    public void Settings()
    {
    }

    private async Task HandleIncomingConnections()
    {
        _runServer = true;

        // While a user hasn't visited the `shutdown` url, keep on handling requests
        while (_runServer)
        {
            // Will wait here until we hear from a connection
            var ctx = await _listener.GetContextAsync();

            // Peel out the requests and response objects
            var req = ctx.Request;
            var resp = ctx.Response;

            // Print out some info about the request
            if (_debugLog)
            {
                Logging.WriteDebug("Request #: " + ++_requestCount);
                Logging.WriteDebug(req.Url.ToString());
                Logging.WriteDebug(req.HttpMethod);
                Logging.WriteDebug(req.UserHostName);
                Logging.WriteDebug(req.UserAgent);
                Logging.WriteDebug(req.Url.AbsolutePath);
            }

            var content = string.Empty;
            // Parse
            if (req.Url.AbsolutePath == "/name")
            {
                content = ObjectManager.Me.Name;
            }
            else if (req.Url.AbsolutePath == "/jump")
            {
                Move.JumpOrAscend();
                content = "done";
            }
            else if (req.Url.AbsolutePath == "/pos")
            {
                content = ObjectManager.Me.Position.ToStringXml();
            }
            else if (req.Url.AbsolutePath.StartsWith("/runlua"))
            {
                //var r = System.Web.HttpUtility.ParseQueryString(req.Url.Query).Get("code");
                var r = req.QueryString["code"];
                if (!string.IsNullOrWhiteSpace(r))
                {
                    Lua.LuaDoString(r);
                    content = "ok";
                }
                else
                    content = "failed";
            }

            // Write the response info
            byte[] data = Encoding.UTF8.GetBytes(content);
            resp.ContentType = "text/html";
            resp.ContentEncoding = Encoding.UTF8;
            resp.ContentLength64 = data.LongLength;

            // Write out to the response stream (asynchronously), then close it
            await resp.OutputStream.WriteAsync(data, 0, data.Length);
            resp.Close();
        }
    }
}

 

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.