Help script mining | Форум

Firegirl
Firegirl Фев 27
Pochemu shtoto tut ne to? vrode pravilnije kordinati no pochemuto nehodet po tailam


// В ToolsBag должны лежать расходники:

// Реги на реколл и диспел, свитки диспела, бинты, стрелы для лука, кирки

// Руны в пещеры должны лежать в банке


// Использовать фильтр руды, 0 - не использовать, 1 - использовать

var UseOreNameFilter = 0;


// Названия руды для игнорирования жилы (не продолжать копать)

var IgnoreOreNames = 'Iron ore|Железная руда';


// Использовать хайд, 0 - не использовать, 1 - использовать

var UseHidding = 1;


// Выгружать руду с переплавкой, 0 - не плавить, 1 - плавить

var UnloadWithSmelt = 0;


// Звук при появлении элементаля

var SoundForGuard = 'C:/a.wav';


// Количество повтора звука

var SoundRepeatCount = 5;


// Серийник сундука, в котором находятся мешки (может быть пустым)

var TopChest = '0x403EF74F';


// Серийник мешка с инструментами, регами и едой

var ToolsBag = '0x402A1730';


// Серийник мешка для руды

var OresBag = '0x4047D248';


// Типы еды

var FoodType = '0x09B7|0x09F2|0x097B';


// Серийник оружия, который использовать при появлении гварда

var UseWeaponForGuard = '0x40521269';


// Серийник руны домой

var RuneHome = '0x408B4FD2';


// Серийники рун в пещеры

var RunesToCave =

[

// Trinsic secret cave

'0x408B4FD1',

];


// Точки обкопки в пещерах

var CaveSpots =

[

// Trinsic secret cave

[

[ 2427, 178 ],

[ 2427, 177 ],

[ 2427, 176 ],

[ 2426, 175 ],

[ 2426, 176 ],

[ 2426, 177 ],

[ 2426, 178 ],

[ 2426, 179 ],

[ 2425, 179 ],

[ 2425, 179 ],

[ 2425, 178 ],

[ 2425, 177 ],

[ 2425, 176 ],

[ 2425, 175 ],

[ 2425, 174 ],

[ 2425, 173 ],

[ 2425, 172 ],

[ 2425, 171 ],

[ 2425, 170 ],

[ 2425, 169 ],

[ 2425, 168 ],

[ 2424, 169 ],

[ 2424, 170 ],

[ 2424, 171 ],

[ 2424, 172 ],

[ 2424, 173 ],

[ 2424, 174 ],

[ 2424, 175 ],

[ 2424, 176 ],

[ 2424, 177 ],

[ 2424, 178 ],

[ 2424, 179 ],

[ 2424, 180 ],

[ 2423, 180 ],

[ 2423, 179 ],

[ 2423, 178 ],

[ 2423, 177 ],

[ 2423, 176 ],

[ 2423, 175 ],

[ 2423, 174 ],

[ 2423, 173 ],

[ 2423, 172 ],

[ 2423, 171 ],

[ 2423, 170 ],

[ 2423, 169 ],

[ 2423, 168 ],

[ 2427, 177 ],

[ 2427, 176 ],

[ 2426, 175 ],

[ 2426, 176 ],

[ 2426, 177 ],

[ 2426, 178 ],

[ 2426, 179 ],

[ 2425, 179 ],

[ 2425, 179 ],

[ 2425, 178 ],

[ 2425, 177 ],

[ 2425, 176 ],

[ 2425, 175 ],

[ 2425, 174 ],

[ 2425, 173 ],

[ 2425, 172 ],

[ 2425, 171 ],

[ 2425, 170 ],

[ 2425, 169 ],

[ 2425, 168 ],

[ 2424, 169 ],

[ 2424, 170 ],

[ 2424, 171 ],

[ 2424, 172 ],

[ 2424, 173 ],

[ 2424, 174 ],

[ 2424, 175 ],

[ 2424, 176 ],

[ 2424, 177 ],

[ 2424, 178 ],

[ 2424, 179 ],

[ 2424, 180 ],

[ 2423, 180 ],

[ 2423, 179 ],

[ 2423, 178 ],

[ 2423, 177 ],

[ 2423, 176 ],

[ 2423, 175 ],

[ 2423, 174 ],

[ 2423, 173 ],

[ 2423, 172 ],

[ 2423, 171 ],

[ 2423, 170 ],

[ 2423, 169 ],

[ 2422, 168 ],

[ 2422, 169 ],

[ 2422, 170 ],

[ 2422, 171 ],

[ 2422, 172 ],

[ 2422, 173 ],

[ 2422, 174 ],

[ 2422, 175 ],

[ 2422, 176 ],

[ 2422, 177 ],

[ 2422, 178 ],

[ 2422, 179 ],

[ 2422, 180 ],

[ 2418, 183 ],

[ 2418, 182 ],

[ 2418, 181 ],

[ 2418, 180 ],

[ 2418, 179 ],

[ 2418, 178 ],

[ 2418, 177 ],

[ 2418, 176 ],

[ 2418, 175 ],

[ 2418, 174 ],

[ 2418, 173 ],

[ 2418, 172 ],

[ 2418, 171 ],

[ 2418, 170 ],

[ 2418, 169 ],

[ 2418, 168 ],

[ 2418, 167 ],

[ 2417, 167 ],

[ 2417, 168 ],

[ 2417, 169 ],

[ 2417, 170 ],

[ 2417, 171 ],

[ 2417, 172 ],

[ 2417, 173 ],

[ 2417, 174 ],

[ 2417, 175 ],

[ 2417, 176 ],

[ 2417, 177 ],

[ 2417, 178 ],

[ 2417, 179 ],

[ 2417, 180 ],

[ 2417, 181 ],

[ 2417, 182 ],

[ 2417, 183 ],

[ 2416, 183 ],

[ 2416, 182 ],

[ 2416, 181 ],

[ 2416, 180 ],

[ 2416, 179 ],

[ 2416, 178 ],

[ 2416, 177 ],

[ 2416, 176 ],

[ 2416, 175 ],

[ 2416, 174 ],

[ 2416, 173 ],

[ 2416, 172 ],

[ 2416, 171 ],

[ 2416, 170 ],

[ 2416, 169 ],

[ 2416, 168 ],

[ 2416, 167 ],

[ 2415, 167 ],

[ 2415, 168 ],

[ 2415, 169 ],

[ 2415, 170 ],

[ 2415, 171 ],

[ 2415, 172 ],

[ 2415, 173 ],

[ 2415, 174 ],

[ 2415, 175 ],

[ 2415, 176 ],

[ 2415, 177 ],

[ 2415, 178 ],

[ 2415, 179 ],

[ 2415, 180 ],

[ 2415, 181 ],

[ 2415, 182 ],

[ 2415, 183 ],

[ 2415, 184 ],

[ 2415, 185 ],

[ 2415, 186 ],

[ 2414, 186 ],

[ 2414, 185 ],

[ 2414, 184 ],

[ 2414, 183 ],

[ 2414, 182 ],

[ 2414, 181 ],

[ 2414, 180 ],

[ 2414, 179 ],

[ 2414, 178 ],

[ 2414, 177 ],

[ 2414, 176 ],

[ 2414, 175 ],

[ 2414, 174 ],

[ 2414, 173 ],

[ 2414, 172 ],

[ 2414, 171 ],

[ 2414, 170 ],

[ 2414, 169 ],

[ 2414, 168 ],

[ 2414, 167 ],

[ 2413, 167 ],

[ 2413, 168 ],

[ 2413, 169 ],

[ 2413, 170 ],

[ 2413, 171 ],

[ 2413, 172 ],

[ 2413, 173 ],

[ 2413, 174 ],

[ 2413, 175 ],

[ 2413, 176 ],

[ 2413, 177 ],

[ 2413, 178 ],

[ 2413, 179 ],

[ 2413, 180 ],

[ 2413, 181 ],

[ 2413, 182 ],

[ 2413, 183 ],

[ 2413, 184 ],

[ 2413, 185 ],

[ 2413, 186 ],

[ 2412, 186 ],

[ 2412, 186 ],

[ 2412, 185 ],

[ 2412, 184 ],

[ 2412, 183 ],

[ 2412, 182 ],

[ 2412, 181 ],

[ 2412, 180 ],

[ 2412, 179 ],

[ 2412, 178 ],

[ 2412, 177 ],

[ 2412, 176 ],

[ 2412, 175 ],

[ 2412, 174 ],

[ 2412, 173 ],

[ 2412, 172 ],

[ 2412, 171 ],

[ 2412, 170 ],

[ 2412, 169 ],

[ 2412, 168 ],

[ 2412, 167 ],

[ 2411, 167 ],

[ 2411, 168 ],

[ 2411, 169 ],

[ 2411, 170 ],

[ 2411, 171 ],

[ 2411, 172 ],

[ 2411, 173 ],

[ 2411, 174 ],

[ 2411, 175 ],

[ 2411, 176 ],

[ 2411, 177 ],

[ 2411, 178 ],

[ 2411, 179 ],

[ 2411, 180 ],

[ 2411, 181 ],

[ 2411, 182 ],

[ 2411, 183 ],

[ 2411, 184 ],

[ 2411, 185 ],

[ 2411, 186 ],

[ 2408, 182 ],

[ 2408, 181 ],

[ 2408, 180 ],

[ 2408, 179 ],

[ 2406, 178 ],

[ 2406, 177 ],

[ 2406, 176 ],

[ 2406, 175 ],

[ 2404, 185 ],

[ 2404, 184 ],

[ 2404, 183 ],

[ 2404, 182 ],

[ 2404, 181 ],

[ 2404, 180 ],


],

// Не трогать!!!

var FakeId = 0;


function UsePickaxe(_private)

{

if (!Orion.UseType('0x0E85', 'any', self, false))

{

if (!Orion.UseType('0x0E85'))

{

Orion.Print('0x0021', 'Your tool is gone!');

return false;

}

}


return true;

}


function WalkHangChecker(_private)

{

var x = Player.X();

var y = Player.Y();

var count = 0;


while (true)

{

if (x == Player.X() && y == Player.Y())

count++;

else

count = 0;


if (count >= 15)

{

Orion.StopWalking();

count = 0;

}


x = Player.X();

y = Player.Y();


Orion.Wait(1000);

}

}


function WalkToWrapper(x, y, distance, run)

{

Orion.Exec('WalkHangChecker');

Orion.Wait(20);

// Потому что на пути следования могут быть динамические препятствия

for (var i = 0; i < 3; i++)

{

if (Orion.WalkTo(x, y, 0, distance, 255, run))

{

Orion.Terminate('WalkHangChecker');

Orion.Wait(20);

return true;

}

}


Orion.Terminate('WalkHangChecker');

Orion.Wait(20);

return false;

}


function RecallTo(rune)

{

var x = Player.X();

var y = Player.Y();

var successCount = 0;


while (x == Player.X() && y == Player.Y() && successCount < 5)

{

Orion.WarMode(0);

Orion.Wait(100);

Orion.ClearJournal();

var timeout = Orion.Now() + 10000;

var mr = Orion.Count('mr');

Orion.Cast('Recall', rune);


while (mr == Orion.Count('mr') && timeout > Orion.Now())

Orion.Wait(100);


if (Orion.InJournal('The spell fizzles', 'my|sys') == null)

successCount++;


var msgUses = Orion.InJournal('uses left', 'my|sys');

if (msgUses != null)

{

for (var i = 0; i < 10; i++)

{

if (Orion.Contains(msgUses.Text(), 'has ' + i + ' uses left'))

{

MarkRune(rune);

break;

}

}


break;

}

}

if (Player.Mana('%') < 99)

{

Orion.WarMode(false);

Orion.Exec('AutoMeditation', true);

}

}


function MarkRune(rune)

{

while (true)

{

if (Player.Mana('%') < 40)

{

while (Player.Mana('%') < 100)

{

Orion.UseSkill('46');

Orion.Wait(500);

}

}


Orion.WarMode(0);

Orion.Wait(100);

Orion.ClearJournal();

var timeout = Orion.Now() + 10000;

var mr = Orion.Count('mr');

Orion.Cast('Mark', rune);


while (mr == Orion.Count('mr') && timeout > Orion.Now())

Orion.Wait(100);


if (Orion.InJournal('The spell fizzles', 'my|sys') == null)

break;

}

}


function Restock(graphic, count)

{

var val = Orion.Count(graphic);

while (val < count)

{

if (!Orion.MoveItemType(graphic, 'any', ToolsBag, count - val))

break;


Orion.Wait(400);

val = Orion.Count(graphic);

}

}


function CheckOverweight(forced, runeCave)

{

if (forced || Player.Weight('%') >= 97)

{

var oldX = Player.X();

var oldY = Player.Y();


if (!forced)

Orion.Print('0x0021', 'Weight limit reached!!!');


RecallTo(RuneHome);


if (UnloadWithSmelt)

{

while (Orion.UseType('0x19B7|0x19BA|0x19B8|0x19B9'))

Orion.Wait(100);

}


if (TopChest != '')

Orion.UseObject(TopChest);


Orion.UseObject(ToolsBag);

Orion.UseObject(OresBag);

Orion.Wait(200);


UnloadIngots();

UnloadOres();


// Bloody bandages

if (Orion.MoveItemType('0x0E20', '0', backpack, 0, ToolsBag))

Orion.Wait(400);


if (Orion.Count(FoodType, '0') > 0 || Orion.MoveItemType(FoodType, '0', ToolsBag, 1))

{

Orion.UseType(FoodType, '0');

Orion.Wait(100);

}


Restock('0x0E85', 4); // Pickaxe

Restock('0x0F3F', 100); // Arrows

Restock('0x1F55', 20); // Dispel scrolls

//Restock('0x1F62', 10); // Mass dispel scrolls

Restock('bandage', 100);

Restock('mr', 50);

Restock('bp', 20);

Restock('bm', 20);

Restock('ga', 30);

Restock('sa', 30);


if (Orion.Count('0x0E85') == 0)

{

Orion.Print('0x0021', 'No pickaxes!!!');

Orion.PauseScript();

}

else if (Orion.Count('0x0F3F') < 30)

{

Orion.Print('0x0021', 'No arrows!!!');

Orion.PauseScript();

}

else if (Orion.Count('mr') < 5 || Orion.Count('bp') < 5 || Orion.Count('bm') < 5)

{

Orion.Print('0x0021', 'No reagents to recalls!!!');

Orion.PauseScript();

}


if (runeCave != '')

RecallTo(runeCave);


if (!forced)

WalkToWrapper(oldX, oldY, 0, (UseHidding == 0 || !Player.Hidden()));

}

}


function PlayGuardAlarm(_private)

{

for (var i = 0; i < SoundRepeatCount; i++)

{

Orion.PlayWav(SoundForGuard);

Orion.Wait(1000);

}

}


function DispelSummons(guard)

{

var summon = null;


if (guard != null && guard.Color() == '0x0000')

summon = guard;

else

{

var summons = Orion.FindTypeEx('0x000E|0x000F|0x0009|0x023E', '0', ground, 'mobile|near', 10);


if (summons.length > 0)

summon = summons[0];

}


if (summon != null)

{

while (summon.Exists() && Player.Hits('%') >= 50 && Player.Mana() >= 20)

{

var timeout = Orion.Now() + 6000;

var type = '0x1F55';

var count = Orion.Count(type);


if (count > 0)

{

Orion.WaitTargetObject(summon.Serial());

Orion.UseType(type);

}

else

{

type = 'mr';

count = Orion.Count(type);


if (count > 0 && Orion.Count('ga') > 0 && Orion.Count('sa') > 0)

Orion.Cast('Dispel', summon.Serial());

else

return false;

}


while (count == Orion.Count(type) && timeout > Orion.Now())

Orion.Wait(100);


Orion.Wait(100);

}


return !summon.Exists();

}


return true;

}


function GetDirectionToFlee(target, mirrored, inversedXY)

{

var targetX = target.X();

var targetY = target.Y();

var x = Player.X();

var y = Player.Y();


if (mirrored)

{

targetX = Player.X();

targetY = Player.Y();

x = target.X();

y = target.Y();

}


if (inversedXY)

{

var temp = targetX;

targetX = targetY;

targetY = temp;


temp = x;

x = y;

y = temp;

}


if (x == targetX)

{

if (y < targetY)

return 0;

else //if (y >= targetY)

return 4;

}

else if (y == targetY)

{

if (x < targetX)

return 6;

else //if (x > targetX)

return 2;

}

else

{

if (x > targetX)

{

if (y < targetY)

return 1;

else //if (y > targetY)

return 3;

}

else //if (x < targetX)

{

if (y > targetY)

return 5;

else //if (y < targetY)

return 7;

}

}


return 0;

}


function Flee(target, direction, distance)

{

switch (direction)

{

case 0:

return Orion.WalkTo(target.X(), target.Y() - distance, 0, 0, 255, true);

case 1:

return Orion.WalkTo(target.X() + distance, target.Y() - distance, 0, 0, 255, true);

case 2:

return Orion.WalkTo(target.X() + distance, target.Y(), 0, 0, 255, true);

case 3:

return Orion.WalkTo(target.X() + distance, target.Y() + distance, 0, 0, 255, true);

case 4:

return Orion.WalkTo(target.X(), target.Y() + distance, 0, 0, 255, true);

case 5:

return Orion.WalkTo(target.X() - distance, target.Y() + distance, 0, 0, 255, true);

case 6:

return Orion.WalkTo(target.X() - distance, target.Y(), 0, 0, 255, true);

case 7:

return Orion.WalkTo(target.X() - distance, target.Y() - distance, 0, 0, 255, true);

default:

break;

}


return false;

}


function CheckGuards(_private)

{

var guards = Orion.FindTypeEx('0x000E', 'any', ground, 'mobile|near', 10);


if (guards.length > 0)

{

var oldX = Player.X();

var oldY = Player.Y();


if (UseWeaponForGuard != '')

Orion.UseObject(UseWeaponForGuard);


var guard = guards[0];


if (Orion.Contains('0x07D1|0x0253|0x052D|0x0455|0x0486|0x0487', guard.Color()))

{

Orion.Exec('PlayGuardAlarm');


if (!Player.Hidden())

{

Orion.WarMode(false);

Orion.Wait(100);

Orion.UseSkill('21');

}


Orion.PauseScript();

}


Orion.WarMode(true);

Orion.Ignore(guard.Serial());


while (guard.Exists() && Player.Hits('%') >= 50)

{

if (guard.Distance() > 6)

{

Orion.WalkTo(guard.X(), guard.Y(), 0, 4, 255, true);

}

else

{

var distance = 4;


if (guard.Distance() < distance)

{

var direction = GetDirectionToFlee(guard, false, false);


if (!Flee(guard, direction, distance))

{

direction = GetDirectionToFlee(guard, false, true);


if (!Flee(guard, direction, distance))

{

direction = GetDirectionToFlee(guard, true, true);


if (!Flee(guard, direction, distance))

{

direction = GetDirectionToFlee(guard, true, false);

Flee(guard, direction, distance);

}

}

}

}

}


Orion.Attack(guard.Serial());

Orion.Wait(500);

if (!DispelSummons(guard))

break;

}


if (guard.Exists())

{

Orion.Exec('PlayGuardAlarm');

Orion.PauseScript();

}

else

{

DispelSummons(null);


// Blade spirits

while (Player.Hits('%') >= 50)

{

var summons = Orion.FindTypeEx('0x023E', 'any', ground, 'mobile|near', 10);


if (summons.length == 0)

break;


guard = summons[0];

Orion.Ignore(guard.Serial());


while (guard.Exists() && Player.Hits('%') >= 50)

{

Orion.Attack(guard.Serial());

Orion.Wait(500);

}

}

}


if (Player.Mana('%') < 99)

{

Orion.WarMode(false);

Orion.Exec('AutoMeditation', true);

}


var corpses = Orion.FindTypeEx('0x2006', 'any', ground, '', 10);


if (corpses.length > 0)

{

for (var c = 0; c < corpses.length; c++)

{

var corpse = corpses[c];

WalkToWrapper(corpse.X(), corpse.Y(), 1, true);

Orion.Wait(1000);

Orion.UseObject(corpse.Serial());

Orion.Ignore(corpse.Serial());

Orion.Wait(2500);

}

}

else

{

Orion.Print('0x0021', 'Corpse not found!');

Orion.Exec('PlayGuardAlarm');

Orion.PauseScript();

}


Orion.WarMode(false);

WalkToWrapper(oldX, oldY, 0, (UseHidding == 0 || !Player.Hidden()));

}

}


function AutoMeditation(_private)

{

while (Player.Hits('%') > 50 && Player.Mana('%') < 99)

{

Orion.UseSkill('46');

Orion.Wait(500);

}

}


function MiningDig(runeCave)

{

var text = 'в свой рюкзак|in your pack|Вы расшатываете несколько камней, но не можете найти|You loosen some rocks but fail to find|Это слишком далеко|That is too far away|Цель находится вне прямой видимости|Target is not in line of sight|Здесь нет руды, которую можно было бы добывать|There is no ore here to mine';


for (var x = -2; x <= 2; x++)

{

for (var y = -2; y <= 2; y++)

{

var tryingCount = 0;


while (true)

{

if (Player.Hits('%') < 50)

{

Orion.Exec('PlayGuardAlarm');

Orion.PauseScript();

}


CheckGuards(0);

DispelSummons(null);


var hits = Player.Hits('%');

var needHeal = (hits > 50 && hits < 99 && Orion.Count('bandage') > 0);


if (needHeal)

{

Orion.PauseScript('AutoMeditation');


while (needHeal)

{

Orion.BandageSelf();

Orion.Wait(2000);

hits = Player.Hits('%');

needHeal = (hits > 50 && hits < 99 && Orion.Count('bandage') > 0);

}


Orion.ResumeScript('AutoMeditation');

}


while (Orion.ScriptRunning('AutoMeditation'))

Orion.Wait(500);


while (UseHidding && !Player.Hidden())

{

Orion.WarMode(false);

Orion.Wait(100);

Orion.UseSkill('21');

Orion.WaitJournal('Вы хорошо спрятались|You have hidden yourself well|Кажется, ты не можешь здесь спрятаться|t seem to hide here', Orion.Now(), Orion.Now() + 3000);

}


CheckOverweight(false, runeCave);


if (!Orion.ValidateTargetTileRelative('mine', x, y, 0))

break;


var now = Orion.Now();

Orion.WaitTargetTileRelative('mine', x, y, 0);


if (!UsePickaxe(0))

{

CheckOverweight(true, runeCave);


Orion.WaitTargetTileRelative('mine', x, y, 0);

UsePickaxe(0);

}


var msg = Orion.WaitJournal(text, now, now + 5000, 'my|sys');

if (msg != null)

{

if (msg.FindTextID() > 3)

break;


tryingCount++;


if (tryingCount >= 10)

break;


if (UseOreNameFilter && Orion.Contains(msg.Text(), IgnoreOreNames))

break;

}


Orion.WarMode(false);

Orion.Wait(50);

}

}

}

}


function Mining()

{

for (var cave = 0; cave < CaveSpots.length; cave++)

{

RecallTo(RunesToCave[cave]);

var spot = CaveSpots[cave];


//for (var c = 0; c < 2; c++) // Потому что на первом проходе, почему-то, бывают пропуски тайлов и недокопы

{

for (var i = 0; i < spot.length; i++)

{

WalkToWrapper(spot[i][0], spot[i][1], 0, (UseHidding == 0 || !Player.Hidden()));

MiningDig(RunesToCave[cave]);

}

}


if (Player.Weight('%') >= 65)

CheckOverweight(true, '');

}


Orion.Print(0x0044, 'Caves cycle done, restarting in ' + SoundRepeatCount + ' seconds...');

PlayGuardAlarm(0);

Orion.Wait(5000);


// Exec а не while (true) чтобы перезагружались константы (если ломается лук или какие-то правки кода)

// Чтоб вручную не ловить конец цикла/стопать на полпути и не перезапускать заново

Orion.Exec('Mining');

Orion.Wait(500);

}


function UnloadIngots()

{

while (Orion.MoveItemType('0x1BEF|0x1BF2|0x1BE3|0x1BE9|0x1BF5|0x0F02', 'any', backpack, 0, OresBag))

Orion.Wait(400);

}


function UnloadOres()

{

while (Orion.MoveItemType('0x19B7|0x19BA|0x19B8|0x19B9|gp', 'any', backpack, 0, OresBag))

Orion.Wait(400);

}


function SmeltIronOres()

{

while (true)

{

var list = Orion.FindTypeEx('0x19B7|0x19BA|0x19B8|0x19B9', '0');


for (var i = 0; i < list.length; i++)

{

if (list[i].Count() == 1)

{

Orion.UseObject(list[i].Serial());

Orion.Wait(100);

}

else

{

Orion.MoveItem(list[i].Serial(), 1, backpack, 50, 50);

Orion.Wait(400);

}

}


if (list.length == 0)

return;

}

}


function TestHarvestingZones(rune)

{

Orion.ClearFakeMapObjects();


if (rune < 0 || rune >= CaveSpots.length)

{

Orion.Print('0x0021', 'Invalid rune index: ' + rune);

return;

}


FakeId = 1;

var spots = CaveSpots[rune];


for (var spot = 0; spot < spots.length; spot++)

{

TestHarvestingZone(spots[spot][0], spots[spot][1], 2);

}

}


function TestHarvestingZone(centerX, centerY, distance)

{

for (var x = -distance; x <= distance; x++)

{

for (var y = -distance; y <= distance; y++)

{

Orion.AddFakeMapObject(FakeId++, '0x051A', '0x0044', centerX + x, centerY + y, Player.Z());

}

}

}

Hotride Admin
Hotride Фев 27
Не хватает закрывающей ]; в точках пещеры.

И зачем столько много точек? Это лишено смысла. Персонаж обкапывает вокруг себя по 2 тайла в каждую сторону, не нужно забивать каждый тайл пещеры.

Firegirl
Firegirl Мар 2
blin vsjoravno nerabotajet...

mozet mozesh plees napisatj ego sjuda shtobi copy past... nu i mozet umenshitj eti kordinati?

Hotride Admin
Hotride Мар 2
Вот исходный скрипт
https://wiki.legnes.com/...обычи_руды_(Mining_script)

Не удаляйте лишние скобки ];

Конечное количество ] должно быть таким же, как и [ если отличается - значит где-то что-то удалили лишнее.

Firegirl
Firegirl Мар 2
on berjot v ruki kirku i vsjo pushetca where you whant to use pixaxe? no nehodet...
Hotride Admin
Hotride Мар 3
Значит, опять неправильно настроили точки в пещере, посмотрите еще раз, все ли скобки на месте, корректный формат:

// Точки обкопки в пещерах

var CaveSpots =

[

   // Точки пещеры

   [

      [x,y],

      [x,y],

      ...

   ]

];

Сообщение отредактировал(а) Hotride Мар 3

Телеграмм чат

Телеграмм чат

Проголосовать

в социальных сетях

Discord канал Legnes Wiki Legnes