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

Перепилинг скрипта Carpentry в Blacksmithing

тут можно задать вопрос по скриптингу
Post Reply
Tune
Neophyte
Neophyte
Posts: 25
Joined: 09.01.2014 6:08

Перепилинг скрипта Carpentry в Blacksmithing

Post by Tune »

Есть такой скрипт опубликованный на форуме.
Я его решил попробовать перепелить под Бс, вышло не сказать что годно, но юзабельно за некоторыми исключениями...
Blacksmith
Program Carpentry;

///by Igor Boldysh.
var

tong, tinkertool,ingot : Integer;
boxMaterial, item: Cardinal;
first,second:string;


procedure Init;


Begin

SetPauseScriptOnDisconnectStatus(true);
Finddistance := 3;



boxMaterial :=$40C5BA1A;
tong:=$0FBB;
tinkertool:=$1eb8;
ingot:=$1bf2 ;
item:=$0;


end;

procedure checkSkill;
//30.0 - 45.0 Mace
//45.0 - 50.0 Maul
//50.0 - 55.0 Cutlass
//55.0 - 59.5 Katana
//59.5 - 70.5 Spear
//70.5 - 106.4 Platemail Gorget
//106.4 - 108.9 Platemail Gloves
//108.9 - 116.3 Platemail Arms
//116.3 - 118.8 Platemail Legs
//118.8 - 120.0 Platemail Tunics

begin
if ((GetSkillValue('Blacksmithing')>=30) and(GetSkillValue('Blacksmithing')<45))then
begin
first := '9007';
second := '77';
item := $0F5C; //30.0-45.0: Mace 9007/77
exit;
end;
if ((GetSkillValue('Blacksmithing')>=45) and(GetSkillValue('Blacksmithing')<50))then
begin
first := '9007';
second := '78';
item := $143B; //45.0-50.0: Maul 9007/78
exit;
end;
if ((GetSkillValue('Blacksmithing')>=50) and(GetSkillValue('Blacksmithing')<55))then
begin
first := '9004';
second := '44';
item := $1441; //50.0-55.0: Cutlass 9004/44
exit;
end;
if ((GetSkillValue('Blacksmithing')>=55) and(GetSkillValue('Blacksmithing')<59.5))then
begin
first := '9004';
second := '46';
item := $13FF; //55.0-59.5: Katana 9004/46
exit;
end;
if ((GetSkillValue('Blacksmithing')>=59.5) and(GetSkillValue('Blacksmithing')<70.5))then
begin
first := '9006';
second := '74';
item := $0F62; //59.5-70.5: Spear 9006/74
exit;
end;
if ((GetSkillValue('Blacksmithing')>=70.5) and(GetSkillValue('Blacksmithing')<106.4))then
begin
first := '9001';
second := '10';
item :=$1413;
exit; //70.5 - 106.4 Platemail Gorget 9001/10
end;
if ((GetSkillValue('Blacksmithing')>=106.4) and(GetSkillValue('Blacksmithing')<108.9))then
begin
first := '9001';
second := '9';
item :=$1414;
exit; //106.4 - 108.9 Platemail Gloves 9001/9
end;
if ((GetSkillValue('Blacksmithing')>=108.9) and(GetSkillValue('Blacksmithing')<116.3))then
begin
first := '9001';
second := '8';
item :=$1410;
exit; //108.9 - 116.3 Platemail Arms 9001/8
end;
if ((GetSkillValue('Blacksmithing')>=116.3) and(GetSkillValue('Blacksmithing')<118.8))then
begin
first := '9001';
second := '11';
item :=$1411;
exit; //116.3 - 118.8 Platemail Legs 9001/11
end;
if ((GetSkillValue('Blacksmithing')>=118.8) and(GetSkillValue('Blacksmithing')<120.0))then
begin
first := '9001';
second := '12';
item :=$1415;
exit; //118.8 - 120.0 Platemail Tunics 9001/12
end;
end;


procedure check;
begin
if (count(ingot) < 30)then
begin
UseObject( boxMaterial );
wait(500);
grab(FindTypeEx(ingot,$0000,boxMaterial,true),1000); //Количество ингов в пак для крафта
wait(1000)
end;
end;

procedure craftTools(typetool , typeitem : Integer ; first, second : String);
begin

if (count(typeitem) < 2) then
begin
while (count(typeitem) < 5 )do
begin
check;

UseObject(FindType(typetool,backpack));
UseObject(backpack);
WaitGump(first);
wait(500);
WaitGump(second);
end;
end;
end;



procedure craft(tool: word);
begin
checkSkill;
if (FindType(tool,backpack)<>0)then
begin
UseObject(FindType(tool,backpack));
wait(500);

WaitGump(first);
wait(200);
WaitGump(second);
wait(1000);
end
else UseObject(backpack);
check;
end;

procedure smeltItems;
begin
if (CountEx (item,$FFFF,backpack) > 0)then
begin
UseObject(FindType(tong,backpack));
wait(1000);
NumGumpButton(GetGumpsCount-1,7000);
WaitForTarget(1000);
TargetToObject(FindType(item,backpack));
wait(500);
//AddToSystemJournal('Smelt');
end;
end;

Begin
init;
UseObject(backpack);
wait(500);
UseObject( boxMaterial );
wait(500);
while (GetSkillValue('Blacksmithing')<GetSkillCap('Blacksmithing')) do
begin
craft(tong);
craftTools(tinkertool,tinkertool,'9003', '11');
craftTools(tinkertool,tong,'9003', '20');
smeltItems;

end;
End.
Кидает вот такие ошибки:
09:50:56:426 [c2-2]: Exec: [Error] (Треня БСа.sc at line 156). Pax Unhandled Exception : Argument out of range
Error line is: " NumGumpButton(GetGumpsCount-1,7000); "

09:31:57:285 [c1-2]: Exec: [Error] (Треня БСа.sc at line 157). Pax Unhandled Exception : Access violation at address 00C729E0 in module 'Stealth.exe'. Read of address 00000010
Error line is: " WaitGump(second); "

09:31:31:965 [c4-2]: Exec: [Error] (Треня БСа.sc at line 154). Pax Unhandled Exception : Access violation at address 00C7296E in module 'Stealth.exe'. Read of address 00000004
Error line is: " UseObject(FindType(tong,backpack)); "

09:25:18:031 [c5-2]: Exec: [Error] (Треня БСа.sc at line 158). Pax Unhandled Exception : Access violation at address 00C7296E in module 'Stealth.exe'. Read of address 00000011
Error line is: " TargetToObject(FindType(item,backpack));
Версия stealth 7.7.0
Ошибки появляются спустя какоето время(5-60мин), то есть скрипт вроде как рабочий..
Oasis
Novice
Novice
Posts: 52
Joined: 02.01.2014 14:15

Re: Перепилинг скрипта Carpentry в Blacksmithing

Post by Oasis »

Ты с Зулу Европа? Та ссылка на форуме старая, соответственно и стелс не законченный под наш зулу
Tune
Neophyte
Neophyte
Posts: 25
Joined: 09.01.2014 6:08

Re: Перепилинг скрипта Carpentry в Blacksmithing

Post by Tune »

Oasis wrote:Ты с Зулу Европа? Та ссылка на форуме старая, соответственно и стелс не законченный под наш зулу
Нет, сервер runuo The Abyss
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Перепилинг скрипта Carpentry в Blacksmithing

Post by Vizit0r »

Oasis wrote:стелс не законченный под наш зулу
шта?
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Tune
Neophyte
Neophyte
Posts: 25
Joined: 09.01.2014 6:08

Re: Перепилинг скрипта Carpentry в Blacksmithing

Post by Tune »

Vizit0r wrote:
Oasis wrote:стелс не законченный под наш зулу
шта?
Бан за офтопик!!! шутка))

Vizit0r, хочу ответ по теме поста, очень :(
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Перепилинг скрипта Carpentry в Blacksmithing

Post by Vizit0r »

1) научись применять Formatting-Code Format в редакторе.
2) ошибки которые ты показал - не соответствуют твоему скрипту.
09:50:56:426 [c2-2]: Exec: [Error] (Треня БСа.sc at line 156). Pax Unhandled Exception : Argument out of range
Error line is: " NumGumpButton(GetGumpsCount-1,7000); "
а в твоем скрипте 156 строка это
wait(200);
3)ошибка
09:50:56:426 [c2-2]: Exec: [Error] (Треня БСа.sc at line 156). Pax Unhandled Exception : Argument out of range
Error line is: " NumGumpButton(GetGumpsCount-1,7000); "
UseObject(FindType(tong,backpack));
wait(1000);
NumGumpButton(GetGumpsCount-1,7000);
абсолютно логично. Потому что нет никакой уверенности, что за эту секунду гамп появится. Сейв, лаг, еще что-то - и все, GetGumpsCount = 0,а GetGumpsCount-1 дает -1, что и дает выход за диапазон (0..$FFFF);
хотя бы элементарную проверку if GetGumpsCount > 0 then поставить надо. В идеале там надо воротить конструкции посложнее, вида
a := GetGumpsCount;
UseObject(FindType(tong,backpack));
while GetGumpsCount = 0 do
wait(50);
ну и еще ограничения, чтобы вечного цикла небыло, и прочее, прочее.

Весь скрипт не смотрел, мозг вообще не работает.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Oasis
Novice
Novice
Posts: 52
Joined: 02.01.2014 14:15

Re: Перепилинг скрипта Carpentry в Blacksmithing

Post by Oasis »

Ну ты когда разбирался с стелсом, исправлял некоторые моменты, ты не раз давал линк на стелс, а на форуме я выставил не последний линк, а предыдущий, в котором остались некоторые проблемы.
Сейчас тоже еще есть проблемные моменты, я писал в скайп.
Tune
Neophyte
Neophyte
Posts: 25
Joined: 09.01.2014 6:08

Re: Перепилинг скрипта Carpentry в Blacksmithing

Post by Tune »

Vizit0r wrote: UseObject(FindType(tong,backpack));
wait(1000);
NumGumpButton(GetGumpsCount-1,7000);
абсолютно логично. Потому что нет никакой уверенности, что за эту секунду гамп появится. Сейв, лаг, еще что-то - и все, GetGumpsCount = 0,а GetGumpsCount-1 дает -1, что и дает выход за диапазон (0..$FFFF);
хотя бы элементарную проверку if GetGumpsCount > 0 then поставить надо. В идеале там надо воротить конструкции посложнее, вида
a := GetGumpsCount;
UseObject(FindType(tong,backpack));
while GetGumpsCount = 0 do
wait(50);
ну и еще ограничения, чтобы вечного цикла небыло, и прочее, прочее.

Весь скрипт не смотрел, мозг вообще не работает.
Переделал процедуру в это:
procedure smeltItems;
begin
while (CountEx (item,$FFFF,backpack) > 0)do
begin
WaitTargetType(item);
a := GetGumpsCount;
UseObject(FindType(tong,backpack));
while GetGumpsCount = 0 do
wait(50);
NumGumpButton(GetGumpsCount-1, 7000);
end;
end;
Все равно кидает ошибку Exec: [Error] (Треня БСа.sc at line 173). Pax Unhandled Exception : Argument out of range
Error line is: " NumGumpButton(GetGumpsCount-1, 7000); "
Канитель с GetGumpsCount понимаю процентов на 10 :(
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Перепилинг скрипта Carpentry в Blacksmithing

Post by Vizit0r »

странно
готовь чара и скрипт, стучись ко мне в асю\скайп - гляну
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Tune
Neophyte
Neophyte
Posts: 25
Joined: 09.01.2014 6:08

Re: Перепилинг скрипта Carpentry в Blacksmithing

Post by Tune »

21:43:55:375 [...]: Spa: Exception in GameSocket.SendBuf; EIdConnClosedGracefully : Connection Closed Gracefully.
Что это за ошибка?...
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: Перепилинг скрипта Carpentry в Blacksmithing

Post by Vizit0r »

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