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

Magery -Debug

тут можно задать вопрос по скриптингу
Post Reply
myownstyle
Neophyte
Neophyte
Posts: 31
Joined: 28.12.2009 9:56

Magery -Debug

Post 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. 
Last edited by myownstyle on 15.03.2010 18:33, edited 1 time in total.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

мой стелс слегка разломан, так что проверить не на чем.

из того, что визуально обнаружил - должно быть

cast(spell) - ты не кастуешь заклинание с именем spell, а берешь из переменной spell
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
myownstyle
Neophyte
Neophyte
Posts: 31
Joined: 28.12.2009 9:56

Post by myownstyle »

как бы так и задумовалось. Он должен прочитовать Скилл, ставить переменую спелл - по скиллу - и кастовать то што нужно. я вот не пойму, как правельно ету переменую ставить. Смотрел другие скрипты, только у едреда чета подобное тут делалось но мне как начинаюшему писать на Стелс, ето пока не под силу понять хоть и я питаюсь, как могу.
WladL
Apprentice
Apprentice
Posts: 240
Joined: 27.07.2009 17:21
Location: DRW
Contact:

Post by WladL »

Ну так Виз же и говорит ты кастуешь магию 'spell' , а не магию из переменной spell
'spell' - это строка
spell - это переменная

ЗЫ. кавычки убери.
"Как хочешь ты трудись;
Но приобресть не льстись
Ни благодарности, ни славы,
Коль нет в твоих трудах ни пользы, ни забавы. (с) С.Крылов."
myownstyle
Neophyte
Neophyte
Posts: 31
Joined: 28.12.2009 9:56

Post 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
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

http://stealth.od.ua/forum/viewtopic.php?p=7236#7236

читать и пользоваться переводчиком!
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
CFA
Developer
Developer
Posts: 492
Joined: 20.04.2006 6:03
Contact:

Post 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

Вместо : стоят ; + пробелы в имени переменной
myownstyle
Neophyte
Neophyte
Posts: 31
Joined: 28.12.2009 9:56

Post 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 за помошь с указанием ошыбок.
Zeppelin
Neophyte
Neophyte
Posts: 25
Joined: 15.02.2010 22:47

Post 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;
Если сфизлит, прекратит ожидание, и если кастанет (мана уменьшится) - тоже прекратит ожидание.. Так же он будет ожидать коннекта к серверу.
Ну как-то так, свежий набросок такой, много еще доработать можно =)
myownstyle
Neophyte
Neophyte
Posts: 31
Joined: 28.12.2009 9:56

Post by myownstyle »

Zeppelin wrote: [...]
Вот так правильно. Ты в начале объявил переменные-строки(спеллы), которым ничего не присвоил и пытался кастовать спелы без названия, получается.
Да, и еще - тебе нужно будет для некоторых спелов, перед применением, ставить ловушку прицела на то, на что кастовать будешь, а то он просто будет ждать таргет и ничего не кастовать..
И еще - задержка в 3.5 секунды после спела - не лучшее решение, лучше ждать определенных сообщений журнала в цикле с маленькой задержкой:

[...]

Если сфизлит, прекратит ожидание, и если кастанет (мана уменьшится) - тоже прекратит ожидание.. Так же он будет ожидать коннекта к серверу.
Ну как-то так, свежий набросок такой, много еще доработать можно =)
Огромное спосибо, ето многое разеснило. Шас питаюсь разобраца как в одной строке две переменых поменять.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

две переменные в одной строке? зачем?
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Post Reply