Чек рб

jr

Administrator
Команда форума
C#:
using System;
using System.Linq;
using System.Collections.Generic;
using NewWidget.Core;
using NewWidget.Core.Native;
using NewWidget.Core.Scripting;
using System.Diagnostics;
using System.Reflection;

public class Script : ScriptBase {
    
    int CharsCount = 6; //кол-во персонажей на аккаунте
    string Title = "Raid Boss"; //Проверять Титул мобов
    int[] Ids = new int[]{ 29062 };  //Проерять ID
    int LoginDelay = 8000; //делей после команды входа в игру и до релога
    int RelogDelay = 2000; //делеай после команды релог до слеующего входа в игру
    
    
    string key = "rbcheck";
    bool logged = false;
    bool running = false;
    bool stopped = false;
    
    public override void OnStart() {
        base.OnStart();
        EnabledChanged(true, OnEnabled);
        ServerPacket(0x09, p => logged = false);
        ServerPacket(0x32, p => logged = true);
        Client.HideWidget();
        BindKey(System.Windows.Forms.Keys.Q, true, false, false, null, () => running = false);
        BindEnabled(System.Windows.Forms.Keys.E, true, false, false);
    }
    
    void OnEnabled() {
        lock (Client.UserData) {
            if (!Client.UserData.ContainsKey(key)) {
                Client.UserData[key] = new Object();
                Run(Check);
                Run(Alarm);
                running = true;
            }
        }
    }
    
    public override void OnStop() {
        if (!running)
            base.OnStop();
            
        stopped = true;
    }
    
    void Check() {
        logged = Client.IsLoggedIn;
        while (running) {
            for (int i = 0; i < CharsCount && running; i++) {
                if (logged && running) {
                    Client.Restart();
                    Wait(() => !logged, 20 * 1000);
                    Wait(RelogDelay);
                }
                
                if (!logged && running) {
                    Client.GameStart(i);
                    Wait(() => logged, 20 * 1000);
                    Wait(LoginDelay);
                }
            }
        }
    }
    
    void Alarm() {
        var sw = new Stopwatch();
        while (running) {
            Wait(1000);
            var rb = Mobs.FirstOrDefault(m => m.Title.Contains(Title) || Ids.Contains(m.Id));
            if (rb != null) {
                L2Helper.PlaySound("hp.wav");
                
                var spawn = new Notification();
                spawn.Color = System.Drawing.Color.Red;
                spawn.Position = 1;
                spawn.Duration = 800;
                spawn.Text = String.Format("{0} - ALIVE", rb);
                Console.WriteLine(spawn.Text);
                
                var activeClient = L2Helper.Clients.FirstOrDefault(c => c.IsForeground);
                if (activeClient != null)
                    activeClient.NotificationManager.Show(spawn);
            }
            
            if (Client.IsLoggedIn)
                sw.Restart();
            else if (sw.ElapsedMilliseconds > 30 * 1000)
                Client.MainWindowFlash();
                    
            if (!Client.IsAlive || Client.State == ClientStates.Login)
                break;
        }
        
        lock (Client.UserData)
            Client.UserData.Remove(key);
            
        if (stopped)
            base.OnStop();
            
        running = false;
    }
    
}
 
Сверху