Page 1 of 1
					
				Magery -Debug
				Posted: 28.12.2009 9:58
				by myownstyle
				На стелсе всего недавно, вот прубую зделать скрипт, но кекак не получаеца скомпилировать правельно. 
Code: Select all
program Magery;
{$Include 'all.inc'}
var
spell : string;
OldSkill : Double;
Bless : string;
Greater: string;
Paralyze: string;
Invisibility: string;
Earth: string;
Begin
   OldSkill := GetSkillValue('Magery');
   While (not Dead) AND (GetSkillValue('Magery') < 100.0) do
   begin
      if GetSkillValue('Magery') > 20.0 then spell := Bless;
      if GetSkillValue('Magery') > 40.0 then spell := Greater; 
      if GetSkillValue('Magery') > 50.0 then spell := Paralyze; 
      if GetSkillValue('Magery') > 60.0 then spell := Invisibility; 
      if GetSkillValue('Magery') > 90.0 then spell := Earth; 
      while not connected do wait(100); 
      cast(spell); 
      wait(3500); 
      waitconnection(3000); 
      CheckSave; 
      if GetSkillValue('Magery') > OldSkill then 
      begin 
         AddToSystemJournal('Скилл Magery вырос. Теперь он равен ' + FloatToStr(GetSkillValue('Magery'))); 
         OldSkill := GetSkillValue('Magery'); 
      end; 
      waitconnection(3000); 
   end; 
End. 
 
			 
			
					
				
				Posted: 28.12.2009 16:35
				by Vizit0r
				мой стелс слегка разломан, так что проверить не на чем.
из того, что визуально обнаружил - должно быть
cast(spell) - ты не кастуешь заклинание с именем spell, а берешь из переменной spell
			 
			
					
				
				Posted: 28.12.2009 19:17
				by myownstyle
				как бы так и задумовалось. Он должен прочитовать Скилл, ставить переменую спелл - по скиллу - и кастовать то што нужно. я вот не пойму, как правельно ету переменую ставить. Смотрел другие скрипты, только у едреда чета подобное тут делалось но мне как начинаюшему писать на Стелс, ето пока не под силу понять хоть и я питаюсь, как могу.
			 
			
					
				
				Posted: 28.12.2009 20:30
				by WladL
				Ну так Виз же и говорит ты кастуешь магию 'spell' , а не магию из переменной spell
'spell' - это строка
spell  - это переменная
ЗЫ. кавычки убери.
			 
			
					
				
				Posted: 28.12.2009 20:42
				by myownstyle
				если убрат кавички, то получаем такое - 
Code: Select all
18:40:54 [^^]: Compiling
18:40:54 [^^]: Compiler: [Error] (magery_debug.txt at 7:7):  colon (':') expected
18:40:54 [^^]: Compiling failed
18:40:54 [^^]: Script magery_debug.txt stopped successfuly
 
			 
			
					
				
				Posted: 28.12.2009 20:57
				by Vizit0r
				
			 
			
					
				
				Posted: 29.12.2009 8:21
				by CFA
				myownstyle wrote:если убрат кавички, то получаем такое - 
Code: Select all
18:40:54 [^^]: Compiling
18:40:54 [^^]: Compiler: [Error] (magery_debug.txt at 7:7):  colon (':') expected
18:40:54 [^^]: Compiling failed
18:40:54 [^^]: Script magery_debug.txt stopped successfuly
 
и без кавычек так же.
spell : string; 
OldSkill : Double; 
Bless 
; string; 
Greater Heal
; string; 
Paralize
; string; 
Invisibility
; string
Вместо : стоят ; + пробелы в имени переменной
 
			 
			
					
				
				Posted: 15.03.2010 18:35
				by myownstyle
				
спосибо за сылку.  будем читать.
CFA wrote:myownstyle wrote:если убрат кавички, то получаем такое - 
Code: Select all
18:40:54 [^^]: Compiling
18:40:54 [^^]: Compiler: [Error] (magery_debug.txt at 7:7):  colon (':') expected
18:40:54 [^^]: Compiling failed
18:40:54 [^^]: Script magery_debug.txt stopped successfuly
 
и без кавычек так же.
spell : string; 
OldSkill : Double; 
Bless 
; string; 
Greater Heal
; string; 
Paralize
; string; 
Invisibility
; string
Вместо : стоят ; + пробелы в имени переменной
 
спосибо, за укозание ошыбок. 
Code: Select all
program Magery;
{$Include 'all.inc'}
var
spell : string;
OldSkill : Double;
Begin
   OldSkill := GetSkillValue('Magery');
   While (not Dead) AND (GetSkillValue('Magery') < 100.0) do
   begin
      if GetSkillValue('Magery') > 20.0 then spell := 'Bless';
      if GetSkillValue('Magery') > 40.0 then spell := 'Greater'; 
      if GetSkillValue('Magery') > 50.0 then spell := 'Paralyze'; 
      if GetSkillValue('Magery') > 60.0 then spell := 'Invisibility'; 
      if GetSkillValue('Magery') > 90.0 then spell := 'Earth'; 
      while not connected do wait(100); 
      cast(spell); 
      wait(3500); 
      waitconnection(3000); 
      CheckSave; 
      if GetSkillValue('Magery') > OldSkill then 
      begin 
         AddToSystemJournal('Скилл Magery вырос. Теперь он равен ' + FloatToStr(GetSkillValue('Magery'))); 
         OldSkill := GetSkillValue('Magery'); 
      end; 
      waitconnection(3000); 
   end; 
End. 
упдт; Большое спосибо Vizit0r за помошь с указанием ошыбок.
 
			 
			
					
				
				Posted: 15.03.2010 21:42
				by Zeppelin
				Code: Select all
program Magery; 
{$Include 'all.inc'} 
var 
spell : string; 
OldSkill : Double; 
TempMana: Integer;
Begin 
   OldSkill := GetSkillValue('Magery'); 
   While (not Dead) and (GetSkillValue('Magery') < 100.0) do 
   begin 
   case GetSkillValue('Magery') of  
      20..39.9 : spell := 'Bless';
      40..49.9 : spell := 'Greater Heal';
      50..59.9 : spell := 'Paralyze';
      60..89.9 : spell := 'Invisibility';
      90..99.9 : spell := 'Summon Earth Elemental';
   end;  
      while not connected do wait(100); 
      clearjournal;
      TempMana := Mana;
      cast(spell);
      repeat
         wait(50);
      until ((InJournal('fizzled')<>-1) or (Mana < TempMana)) and Connected;
      CheckSave; 
      if GetSkillValue('Magery') > OldSkill then 
      begin 
         AddToSystemJournal('Скилл Magery вырос. Теперь он равен ' + FloatToStr(GetSkillValue('Magery'))); 
         OldSkill := GetSkillValue('Magery'); 
      end; 
      waitconnection(3000); 
   end; 
End.
Вот так правильно. Ты в начале объявил переменные-строки(спеллы), которым ничего не присвоил и пытался кастовать спелы без названия, получается.
Да, и еще - тебе нужно будет для некоторых спелов, перед применением, ставить ловушку прицела на то, на что кастовать будешь, а то он просто будет ждать таргет и ничего не кастовать..
И еще - задержка в 3.5 секунды после спела - не лучшее решение, лучше ждать определенных сообщений журнала в цикле с маленькой задержкой:
Code: Select all
      clearjournal;
      TempMana := Mana;
      cast(spell);
      repeat
         wait(50);
      until ((InJournal('fizzled')<>-1) or (Mana < TempMana)) and Connected;
Если сфизлит, прекратит ожидание, и если кастанет (мана уменьшится) - тоже прекратит ожидание.. Так же он будет ожидать коннекта к серверу.
Ну как-то так, свежий набросок такой, много еще доработать можно =)
 
			 
			
					
				
				Posted: 16.03.2010 19:17
				by myownstyle
				Zeppelin wrote:
[...] 
Вот так правильно. Ты в начале объявил переменные-строки(спеллы), которым ничего не присвоил и пытался кастовать спелы без названия, получается.
Да, и еще - тебе нужно будет для некоторых спелов, перед применением, ставить ловушку прицела на то, на что кастовать будешь, а то он просто будет ждать таргет и ничего не кастовать..
И еще - задержка в 3.5 секунды после спела - не лучшее решение, лучше ждать определенных сообщений журнала в цикле с маленькой задержкой:
[...] 
Если сфизлит, прекратит ожидание, и если кастанет (мана уменьшится) - тоже прекратит ожидание.. Так же он будет ожидать коннекта к серверу.
Ну как-то так, свежий набросок такой, много еще доработать можно =)
Огромное спосибо, ето многое разеснило. Шас питаюсь разобраца как в одной строке две переменых поменять.
 
			 
			
					
				
				Posted: 17.03.2010 10:05
				by Vizit0r
				две переменные в одной строке? зачем?