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
http://stealth.od.ua/forum/viewtopic.php?p=7236#7236

читать и пользоваться переводчиком!

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
Vizit0r wrote:http://stealth.od.ua/forum/viewtopic.php?p=7236#7236
читать и пользоваться переводчиком!
спосибо за сылку. будем читать.
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
две переменные в одной строке? зачем?