Порт очень старого скрипта из шары.
C#:
using System;
using System.Linq;
using System.Collections.Generic;
using NewWidget.Core;
using NewWidget.Core.Native;
using NewWidget.Core.Scripting;
public class Script : ScriptBase {
const int EntryNpcId = 32659; // ID NPC, через которого будет осуществляться вход в зону
const bool ThrowRaid = true; // Пропуск комнаты с рейдом. В таком случае "Find raid" обязательно false
const bool FindRaid = false; // Поиск рейда(будет идти свап комнат). В таком случае "Throw raid" обязательно false
const bool DimensionRift = false; // Дименшен рифт. Да или нет. Для Delsusion Chamber ставим false
int swapCounter;
public override void OnStart() {
base.OnStart();
swapCounter = 0;
CreateTimer(1000, RaidRoom);
CreateTimer(1000, WaitRoom);
}
void RaidRoom() {
var manager = Npcs.FirstOrDefault(n => n.Id >= 32664 && n.Id <= 32701 || n.Id >= 31865 && n.Id <= 31918);
var containsRaid = Mobs.Any(m => m.Id >= 25690 && m.Id <= 25695 || m.Id >= 25333 && m.Id <= 25339);
if (FindRaid && manager != null && !containsRaid) {
if (manager.DistanceToUser > 300)
return;
Client.SetTarget(manager);
Client.DialogOpen();
if (swapCounter == 0) {
Client.DialogSelect(1);
swapCounter++;
}
else {
Client.DialogSelect(2);
swapCounter = 0;
}
}
else if (DimensionRift && FindRaid && manager != null && !containsRaid) {
Wait(10000);
}
else {
if (ThrowRaid && manager != null && containsRaid) {
Client.SetTarget(manager);
Client.DialogOpen();
Client.DialogSelect(2);
}
if (!ThrowRaid && !FindRaid && manager != null && containsRaid) {
while (containsRaid)
Wait(1000);
Wait(30000);
Client.SetTarget(manager);
Client.DialogOpen();
Client.DialogSelect(2);
}
}
}
void WaitRoom() {
var npc = Npcs.FindById(EntryNpcId);
if (npc != null) {
Wait(1000);
Client.MoveToLocation(npc.Location);
Client.SetTarget(npc);
Client.DialogOpen();
Client.DialogSelect(1);
}
}
}