Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

DRW Боевые с ГМ тактики (на блейдах и вортексах)

Only working scripts
Post Reply
Unholy
Novice
Novice
Posts: 119
Joined: 23.06.2008 2:26
Location: DRW

DRW Боевые с ГМ тактики (на блейдах и вортексах)

Post by Unholy »

Как известно, на DRW своеобразная формула прокачки боевых, максимальное значение боевых скиллов на прямую зависит от разницы в значении скилла тактики. И при 100% тактики докачать боевые умения на спаринг-партнере (даже с ГМ тактики и элвен луком [115.0%]) возможно только до 85.n% (цифра приблизительная).

Покопавшись в исходниках слитого в сеть сервера DRW было выяснено:
1. Все существа в мире, за исключением двух (включая всевозможных драконов) имеют значение тактики до 100%.
2. Призываемое существо Blade Spirit имеет 250% тактики
3. Призываемое существо Energy Vortex имеет 500% тактики
По сему, именно на них и стоит качать боевые скиллы.
Нам понадобится:
1. Любой двухэтажный дом.
2. Прокся. С одного IP боевые не растут
3. Реагенты BP, NS, MR, BM (для каста вортексов и блейдов)
4. Маг для каста блейдов нужно около 70% магии, для каста вортексов >92%

Далее, для прокачки арчери:
1. Несколько луков
2. Стрелы
Опционально, наденьте на мага браслет регенерации маны.
Мага и лучника ставим на втором этаже, рядом с сундуком, в котором лежат реагенты и стрелы.
Лучнику запускаем вот этот скрипт.
Магу запускаем вот этот скрипт.

Для прокачки остальных боевых:
На качающемся персонаже нам понадобится:
1. Фуллец. желательно блэкрок, с вышным щитом
2. Оружие:
вот такое
  • Cleaver для прокачки Swordsmanship
  • Dagger для прокачки Fencing
  • Пустая правая рука и Ringmail Gloves для прокачки Wrastling
3. Anvil рядом с качающимся персонажем.
4. Smith's hammer (при прокачке mace fighting их понадобится два)
5. Инги всех используемых предметов
Например
Если вы используете фулл blackrock-а c Acid щитом, Вам понадобятся инги: Iron (для оружия), Blackrock и Acid

6. Бутылочки Greater Heal
7. Бинты
8. Мойка для бинтов
9. Опционально наденьте на персонажа брасс регенерации жизни

И так.
Мага, на отдельном IP, ставим на втором этаже в угол, рядом ставим сундук с реагентами. Опционально надеваем брас регенерации маны и шруду. И используем Вот этот скрипт
Воина, на родном IP, ставим на первом этаже на 1 клетку ниже угла (рядом с местом куда будут кастоваться блейды но не прямо на него) рядом ставим наковальню, опционально обставляемся непроходимыми вещами дабы блейды не разбегались. Все остальное из списка, в достаточном кол-ве кладем в сумку, надеваем оружие и щит. И используем Вот этот скрипт
Last edited by Unholy on 01.02.2019 11:43, edited 5 times in total.
Unholy
Novice
Novice
Posts: 119
Joined: 23.06.2008 2:26
Location: DRW

Re: DWR Боевые с ГМ тактики (на блейдах и вортексах)

Post by Unholy »

Маг, кастующий блейд спиритов для прокачки боевых

Скрипт расчитан на каст со второго этажа на первый. Советую кастовать под себя и качающегося персонажа держать рядом (но на первом этаже). Рядом ставим сундук с реагентами.

Здесь будет подробное описание, но позже возможно никогда

Code: Select all

Program combatsMageBlade;
const
		//координаты куда кастовать блейда
		castX = 1166; 
		castY = 301;
		castZ = 6;

		mainChest = $403F4C89; // Сундук с реагентами
		trainedCharId = $0045CC44; //id качающегося чара
		
		bladeType = $023E;
		
procedure getRegs;
begin
	CheckLag(15000);
	if (NSCount < 5) or (BPCount < 5) or (BMCount < 5) or (MRCount < 5) then
	begin
		AddToSystemJournal('Get more reagents.');
		UseObject(mainChest);
		CheckLag(15000);
		wait(500);
		if (NSCount < 5) and (FindType(NS, mainChest) > 0) then Grab(finditem, 100);
		wait(500);
		if (BPCount < 5) and (FindType(BP, mainChest) > 0) then Grab(finditem, 100);
		wait(500);
		if (BMCount < 5) and (FindType(BM, mainChest) > 0) then Grab(finditem, 100);
		wait(500);
		if (MRCount < 5) and (FindType(MR, mainChest) > 0) then Grab(finditem, 100);
		wait(500);			
	end;
end;

procedure meditate;
begin
	AddToSystemJournal('Meditation.');
	While GetMaxMana(self) > GetMana(self) do
	begin 
		if WarMode = true then SetWarMode(false); 
		useskill('Meditation');
		Wait(1000);
		CheckLag(15000); 
	end;
	AddToSystemJournal('Meditation finished.');
end;

procedure waitWhileBladeExist;
begin
	AddToSystemJournal('Wait while blade exist');
	while FindType(bladeType, ground) <> 0 do
		Wait(1000);
	AddToSystemJournal('Blade died.');
end;

procedure castBlade;
begin
	AddToSystemJournal('Cast Blade.');
	CheckLag(15000);
	Cast('Blade Spirit');
	WaitForTarget(5000);
	if targetpresent then
	begin
		TargetToXYZ(castX,castY,castZ);
	end;
	wait(10000);
	CheckLag(15000);
end;

procedure waitWhileHPNotFull;
begin
	While GetMaxHP(trainedCharId) > GetHP(trainedCharId) do
	begin 
		wait(1000);
		CheckLag(15000);
	end;
end;


begin
	FindVertical := 30;
	repeat
		while (FindType(bladeType, ground) = 0) and (GetMaxMana(self) >= 27) do
		begin
			getRegs;
			castBlade;
		end; 
		meditate;
		waitWhileBladeExist;
		waitWhileHPNotFull;
	until not IsObjectExists(trainedCharId);
end.
Unholy
Novice
Novice
Posts: 119
Joined: 23.06.2008 2:26
Location: DRW

Re: DWR Боевые с ГМ тактики (на блейдах и вортексах)

Post by Unholy »

Воин качающий боевые на блейдах

Здесь будет подробное описание, но позже возможно никогда

Code: Select all

////////////////////////////////////////////////
// Боевые на блейдах by Unholy (c) 2019
// for DRW
//
// скрипт расчитан на избиение появляющихся рядом 
// с чаром Blade Spirits
//
// Перед запуском скрипта наденьте используемое оружие 
// и щит (опционально)
//
// Скрипт расчитан на то, что рядом с качающимися стоит наковальня
//
// В бекпаке должно лежать
// 1. Бинты в большом кол-ве
// 2. Мойка для бинтов
// 3. Молоток для починки вещей
// 5. Инги всех используемых материалов для починки сета, оружия, щита
// 6. Бутылочки с Greater Heal.
//
// Внимание!!! 
// 1. Замечен баг, женский нагрудник не воспринимается. Используйте нормальный Platemail.
// 2. Капитан очевидность намекает, что при прокачке Mace Fighting вам понадобится два молотка
//    вторым будет чениться первый.
Program combatsOnBlade;

const	
	skillToTrain 			= 'Mace Fighting'; // При достижении 100% этого скилла чар дисконнектится
	bladeType 				= $023E; // Тип блэйд спирита
	washBasinType 		= $1008; // Тип мойки для бинтов. 
	bandageClearType 	= $0E21; // Чистые бинты 
	bandageBloodType 	= $0E20; // Грязные бинты
	GHType 						= $0F0E; // Бутылка Greater Heal Тип
	GHColor 					= $09BB; // Бутылка Greater Heal Цвет
	hummerType 				= $13E3; //Тип молотка, которым будет ченить сет и оружие

var 
	lHandId, rHandId, hummerId: Cardinal;
	dressLayersList, dressList: Array [0..7] of Cardinal;
	ghUsed: boolean;
	
procedure init;
	var i: integer;
begin
	lHandId 	:= ObjAtLayer(LhandLayer);
	rHandId 	:= ObjAtLayer(RhandLayer);
	
	dressLayersList[0] 	:= LhandLayer;
	dressLayersList[1] 	:= RhandLayer;
	dressLayersList[2] 	:= ArmsLayer;
	dressLayersList[3] 	:= GlovesLayer;
	dressLayersList[4] 	:= HatLayer;
	dressLayersList[5] 	:= LegsLayer;
	dressLayersList[6] 	:= TorsoLayer;
	dressLayersList[7] 	:= NeckLayer;
	
	for i := 0 to 7 do
		dressList[i] := ObjAtLayer(dressLayersList[i]);

	hummerId := FindType(hummerType, backpack);
end;		

procedure stripAll;
	var i: integer;
begin
	for i := 0 to 7 do
		if (ObjAtLayer(dressLayersList[i]) > 0) then
		begin
			UnEquip(dressLayersList[i]);
			Wait(500);
			CheckLag(15000);
		end;
end;

procedure dressAll;
	var i: integer;
begin
	for i := 0 to 7 do
		if (dressList[i] > 0) then
		begin
			Equip(dressLayersList[i], dressList[i]);
			Wait(500);
			CheckLag(150000);
		end;
end;

procedure repairAll;
	var i: integer;
begin
	Equip(RhandLayer, hummerId);
	Wait(500);
	for i := 0 to 7 do
	if (dressList[i] > 0) then
	begin
		TargetToObject(dressList[i]);
		UseObject(hummerId)
		Wait(500);
		CheckLag(15000);
	end;
end;

procedure checkRepair;
begin
	if (ghUsed = true) then
	begin
		stripAll;
		repairAll;
		dressAll;
		ghUsed:= false;
	end;
end;

procedure criticalHeal;
begin
	if (GetHP(self) < 15) and (ghUsed = false) then 
	begin
		UseType(GHType, GHColor);
		ghUsed := true;
		AddToSystemJournal('Was saved by greater heal');
	end;
end;
		
procedure dressWeaponUp;
begin
	AddToSystemJournal('dress up weapon');
	CheckLag(15000);
	if lHandId > 0 then UseObject(lHandId);
	Wait(500);
	CheckLag(15000);
	if rHandId > 0 then UseObject(rHandId);
end;
		
procedure waitForBlade;
begin
	AddToSystemJournal('Wait!');
	if not WarMode then setWarMode(true);
	while FindType(bladeType, ground) = 0 do
	begin
		Wait(500);
		CheckLag(15000);
	end;
end;

procedure atackWhileVortexExist;
begin
	AddToSystemJournal('Atack!');
	CheckLag(15000);
	while FindType(bladeType, ground) > 0 do
	begin
		if not WarMode then setWarMode(true);
		if (WarTargetID <> FindItem) then attack(FindItem);
		Wait(1000);
		criticalHeal;
	end;
end;

procedure washBandages;
begin
	if (FindType(bandageClearType, backpack) = 0) and (FindType(bandageBloodType, backpack) > 0) then
	begin
		AddToSystemJournal('Wash bandages'); 
		if (FindType(washBasinType, backpack) > 0) then
		begin
			WaitTargetObject(FindItem);
			UseType(bandageBloodType, $0000);
		end;
	end;
end;

procedure bandageSelf;
begin
    AddToSystemJournal('Healing self');
    while GetHP(self) < GetMaxHP(self) do
    begin
        washBandages;  
        if (WarMode = true) then
            SetWarMode(false);
        WaitTargetObject(Self);
        UseType(bandageClearType, $0000);
        CheckLag(15000);
    end;
end;

begin
	init;
	repeat
		CheckLag(15000);
		bandageSelf;
		dressWeaponUp;
		waitForBlade;
		CheckLag(15000);
		atackWhileVortexExist;
		checkRepair;
	until GetSkillValue(skillToTrain) >= 100;
	Disconnect;
end.
Unholy
Novice
Novice
Posts: 119
Joined: 23.06.2008 2:26
Location: DRW

Re: DWR Боевые с ГМ тактики (на блейдах и вортексах)

Post by Unholy »

Маг, кастующий вортексов, со второго этажа на первый.

Берем мага, ставим его на втором этаже виллы. Рядом ставим сундук с реагентами.
Место, в которое будут кастоваться вортексы лучше обложить (дабы вортексы не разбегались).

Code: Select all

Program combatsMageVortex;

const
		castX = 1200;
		castY = 200;
		castZ = 6;

		mainChest = $433F6789; // сундук с реагентами
		trainedCharId = $0025C484; //id качающегося чара
		
		vortexType = $000D;
		vortexColor = $000D;
		
procedure getRegs;
begin
	CheckLag(15000);
	if (NSCount < 5) or (BPCount < 5) or (BMCount < 5) or (MRCount < 5) then
	begin
		AddToSystemJournal('Get more reagents.');
		UseObject(mainChest);
		CheckLag(15000);
		wait(500);
		if (NSCount < 5) and (FindType(NS, mainChest) > 0) then Grab(finditem, 100);
		wait(500);
		if (BPCount < 5) and (FindType(BP, mainChest) > 0) then Grab(finditem, 100);
		wait(500);
		if (BMCount < 5) and (FindType(BM, mainChest) > 0) then Grab(finditem, 100);
		wait(500);
		if (MRCount < 5) and (FindType(MR, mainChest) > 0) then Grab(finditem, 100);
		wait(500);			
	end;
end;

procedure meditate;
begin
	AddToSystemJournal('Meditation.');
	While GetMaxMana(self) > GetMana(self) do
	begin 
		if WarMode = true then SetWarMode(false); 
		useskill('Meditation');
		Wait(1000);
		CheckLag(15000); 
	end;
	AddToSystemJournal('Meditation finished.');
end;

procedure waitWhileVortexExist;
begin
	AddToSystemJournal('Wait while wortex exist');
	while FindType(vortexType, ground) <> 0 do
		Wait(1000);
	AddToSystemJournal('Wortex died.');
end;

procedure castVortex;
begin
	AddToSystemJournal('Cast Wortex.');
	CheckLag(15000);
	Cast('Energy Vortex');
	WaitForTarget(5000);
	if targetpresent then
	begin
		TargetToXYZ(castX,castY,castZ);
	end;
	wait(10000);
	CheckLag(15000);
end;

begin
	FindVertical := 30;
	repeat
		while (FindType(vortexType, ground) = 0) and (GetMaxMana(self) >= 27) do
		begin
			getRegs;
			castVortex;
		end; 
		meditate;
		waitWhileVortexExist;
	until not IsObjectExists(trainedCharId);
end.
Last edited by Unholy on 01.02.2019 11:36, edited 1 time in total.
Unholy
Novice
Novice
Posts: 119
Joined: 23.06.2008 2:26
Location: DRW

Re: DWR Боевые с ГМ тактики (на блейдах и вортексах)

Post by Unholy »

Лучник, стреляющий в вортексов
Ставим лучника на втором этаже рядом с магом и сундуком. В сундук кладем стрелы.

Code: Select all

Program combatsMageVortex;

const
		mainChest = $403F4C89;

		vortexType = $000D;
		arrowType = $0F3F;
		
procedure waitForVortex;
begin
	AddToSystemJournal('Wait!');
	while FindType(vortexType, ground) = 0 do
	begin
		Wait(1000);
		CheckLag(15000);
	end;
end;

procedure atackWhileVortexExist;
begin
	AddToSystemJournal('Atack!');
	CheckLag(15000);
	while FindType(vortexType, ground) > 0 do
	begin
		if not WarMode then setWarMode(true);
		if (WarTargetID <> FindItem) then attack(FindItem);
		Wait(1000);
	end;
end;

procedure checkArrows;
begin
	CheckLag(15000);
	AddToSystemJournal('Arrows found: ' + IntToStr(Count(arrowType)));
	if (Count(arrowType) < 100) then
	begin
		UseObject(mainChest);
		CheckLag(15000);
		wait(500);
		if (FindType(arrowType, mainChest) > 0) then 
			begin
			Grab(finditem, 100)  
			end
		else
			begin
				disconnect;
				exit;
			end;
	end;
end;

begin
	FindVertical := 30;
	repeat
		waitForVortex;
		CheckLag(15000);
		atackWhileVortexExist;
		CheckLag(15000);
		checkArrows;
	until Dead;
end.
Post Reply