Page 1 of 1
правильно или нет?
Posted: 17.08.2012 20:44
by roma777
какой вариант правельный?
Code: Select all
if size = 'all' then
numgumpbutton(getgumpscount-1,0)
else
if size = 'small' then
numgumpbutton(getgumpscount-1,0)
else
if size = 'large' then
numgumpbutton(getgumpscount-1,0);
или
Code: Select all
if size = 'all' then
begin
numgumpbutton(getgumpscount-1,0);
end
else
begin
if size = 'small' then
begin
numgumpbutton(getgumpscount-1,0);
end
else
begin
if size = 'large' then
begin
numgumpbutton(getgumpscount-1,0);
end;
end;
end;
просто работает и так и так, хотелось бы знать как правельнее делать?
Re: правильно или нет?
Posted: 17.08.2012 20:58
by Vizit0r
ты сам ответил на свой вопрос.
begin end
можно не ставить, если только одна строка кода после условия.
Re: правильно или нет?
Posted: 17.08.2012 21:31
by roma777
спс. подскажите еще, такая процедура не будет напрягать что-то в компе из-за большого кол-ва условий?
Code: Select all
procedure bobfilter(size,quality,material,amount : string);
begin
if size = 'all' then
numgumpbutton(getgumpscount-1,4)
else
if size = 'small' then
numgumpbutton(getgumpscount-1,8)
else
if size = 'large' then
numgumpbutton(getgumpscount-1,12);
if quality = 'all' then
numgumpbutton(getgumpscount-1,5)
else
if quality = 'normal' then
numgumpbutton(getgumpscount-1,9)
else
if quality = 'exceptional' then
numgumpbutton(getgumpscount-1,13);
if material = 'blacksmithing' then
numgumpbutton(getgumpscount-1,6);
else
if material = 'iron' then
numgumpbutton(getgumpscount-1,10)
else
if material = 'dullcopper' then
numgumpbutton(getgumpscount-1,14)
else
if material = 'shadowiron' then
numgumpbutton(getgumpscount-1,18)
else
if material = 'copper' then
numgumpbutton(getgumpscount-1,22)
else
if material = 'bronze' then
numgumpbutton(getgumpscount-1,26)
else
if material = 'golden' then
numgumpbutton(getgumpscount-1,34)
else
if material = 'agapite' then
numgumpbutton(getgumpscount-1,38)
else
if material = 'verite' then
numgumpbutton(getgumpscount-1,42)
else
if material = 'valorite' then
numgumpbutton(getgumpscount-1,46)
else
if material = 'tailoring' then
numgumpbutton(getgumpscount-1,54)
else
if material = 'cloth' then
numgumpbutton(getgumpscount-1,58)
else
if material = 'leather' then
numgumpbutton(getgumpscount-1,62)
else
if material = 'spined' then
numgumpbutton(getgumpscount-1,66)
else
if material = 'horned' then
numgumpbutton(getgumpscount-1,70)
else
if material = 'barbed' then
numgumpbutton(getgumpscount-1,74);
if amount = 'all' then
numgumpbutton(getgumpscount-1,7)
else
if amount = '10' then
numgumpbutton(getgumpscount-1,11)
else
if amount = '15' then
numgumpbutton(getgumpscount-1,15)
else
if amount = '20' then
numgumpbutton(getgumpscount-1,19);
end;
может это все можно как-то упростить?
Re: правильно или нет?
Posted: 17.08.2012 21:34
by Vizit0r
напрягает. только не компьютер, а мозг читающего ТАКОЕ.
откуда берутся переменные size material и т.д.? если пользователь вводит - это одно, если же это внутрискриптовое - то это совершенно неуместно, заменить на соотв. коды и использовать case XXX of
Re: правильно или нет?
Posted: 17.08.2012 23:43
by roma777
вот от сюда брались
Code: Select all
bobfilter('large','exceptional','tailoring','all');
я переделал так:
Code: Select all
Program New;
/////////////////////////////////////////////////////////////////////////////////
///// процедура устанавливает фильтр в открытом Bulk Order Book /////////////////
/////////////////////////////////////////////////////////////////////////////////
/////
procedure bobfilter(bob : integer ; size,quality,material,amount : string); /////
begin /////
/////
repeat /////
if getgumpid(getgumpscount- 1) <> 2525444571 then /////
if getgumpid(getgumpscount- 1) = 1425364447 then /////
numgumpbutton(getgumpscount-1,1) /////
else /////
begin /////
if getgumpscount > 0 then /////
closesimplegump(getgumpscount- 1) /////
else /////
useobject(bob);
checklag(5000); /////
end; /////
wait(50); /////
until getgumpid(getgumpscount- 1) = 2525444571; /////
/////
repeat /////
case size of /////
'all' : numgumpbutton(getgumpscount-1,4); /////
'small' : numgumpbutton(getgumpscount-1,8); /////
'large' : numgumpbutton(getgumpscount-1,12); /////
end; /////
checklag(5000); /////
wait(50); /////
until getgumpid(getgumpscount- 1) = 2525444571; /////
/////
repeat /////
case quality of /////
'all' : numgumpbutton(getgumpscount-1,5); /////
'normal' : numgumpbutton(getgumpscount-1,9); /////
'exceptional' : numgumpbutton(getgumpscount-1,13); /////
end; /////
checklag(5000); /////
wait(50); /////
until getgumpid(getgumpscount- 1) = 2525444571; /////
/////
repeat /////
case material of /////
'blacksmithing' : numgumpbutton(getgumpscount-1,6); /////
'iron' : numgumpbutton(getgumpscount-1,10); /////
'dullcopper' : numgumpbutton(getgumpscount-1,14); /////
'shadowiron' : numgumpbutton(getgumpscount-1,18); /////
'copper' : numgumpbutton(getgumpscount-1,22); /////
'bronze' : numgumpbutton(getgumpscount-1,26); /////
'golden' : numgumpbutton(getgumpscount-1,34); /////
'agapite' : numgumpbutton(getgumpscount-1,38); /////
'verite' : numgumpbutton(getgumpscount-1,42); /////
'valorite' : numgumpbutton(getgumpscount-1,46); /////
'tailoring' : numgumpbutton(getgumpscount-1,54); /////
'cloth' : numgumpbutton(getgumpscount-1,58); /////
'leather' : numgumpbutton(getgumpscount-1,62); /////
'spined' : numgumpbutton(getgumpscount-1,66); /////
'horned' : numgumpbutton(getgumpscount-1,70); /////
'barbed' : numgumpbutton(getgumpscount-1,74); /////
end; /////
checklag(5000); /////
wait(50); /////
until getgumpid(getgumpscount- 1) = 2525444571; /////
/////
repeat /////
case amount of /////
'all' : numgumpbutton(getgumpscount-1,7); /////
'10' : numgumpbutton(getgumpscount-1,11); /////
'15' : numgumpbutton(getgumpscount-1,15); /////
'20' : numgumpbutton(getgumpscount-1,19); /////
end; /////
checklag(5000); /////
wait(50); /////
until getgumpid(getgumpscount- 1) = 2525444571; /////
/////
end; /////
/////
/////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
///// функция возвращает возможно ли положить боды в книгу /////
///// true = да false = нет /////
////////////////////////////////////////////////////////////////
/////
function bodinbob(bob : integer) : boolean; /////
var stime : tdatetime; /////
begin /////
stime := now; /////
addtojournal(gettooltip(bob)); /////
wait(50); /////
if injournalbetweentimes('500',stime,now) >= 0 then /////
result := false /////
else /////
result := true; /////
end; /////
/////
////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////
///// функция возвращает кол-во итемов в паке /////
///// false >= 125 true < 125 /////
///////////////////////////////////////////////////
/////
function bpcount : boolean; /////
begin /////
findtype($ffff,backpack); /////
if findcount >= 125 then /////
result := false /////
else /////
result := true; /////
end; /////
/////
///////////////////////////////////////////////////
begin
if (bodinbob($405C2D51) = true) and (bpcount = true) then
bobfilter($405C2D51,'small','exceptional','iron','15');
end.
эта строчка правельная?
Code: Select all
if (bodinbob($405C2D51) = true) and (bpcount = true) then
или лучше так?
Code: Select all
a := bodinbob($405C2D51);
b := bpcount;
if (a = true) and (b = true) then
Re: правильно или нет?
Posted: 18.08.2012 2:41
by VeL
А лучше так
Code: Select all
if bodinbob($405C2D51) and bpcount then
Re: правильно или нет?
Posted: 18.08.2012 2:44
by VeL
А так же
Code: Select all
function bpcount : boolean;
begin
findtype($ffff,backpack);
result := findcount < 125
end;
Re: правильно или нет?
Posted: 18.08.2012 7:57
by Vizit0r
я понимаю что берется из входящих параметров. а передает их параметрами в функцию кто?
Re: правильно или нет?
Posted: 18.08.2012 10:21
by roma777
Vizit0r wrote:я понимаю что берется из входящих параметров. а передает их параметрами в функцию кто?
я не совсем понимаю вопрос. я же скинул "скрипт" от начала и до конца, я ввожу их самостоятельно.
Re: правильно или нет?
Posted: 18.08.2012 10:28
by Vizit0r
я понял. странный подход, ну да дело хозяйское.
Code: Select all
case material of /////
'blacksmithing' : numgumpbutton(getgumpscount-1,6); /////
'iron' : numgumpbutton(getgumpscount-1,10); /////
...
это работает?
P.S. Ух ты, работает. А в дэльфах так нельзя, к сожалению

Тогда ничего странного в подходе, а очень даже нормально.
Code: Select all
case string_var of
'ggg' : begin end;
end;
[DCC Error] main.pas(3766): E2001 Ordinal type required
Re: правильно или нет?
Posted: 18.08.2012 13:13
by roma777
Vizit0r wrote:я понял. странный подход, ну да дело хозяйское.
Code: Select all
case material of /////
'blacksmithing' : numgumpbutton(getgumpscount-1,6); /////
'iron' : numgumpbutton(getgumpscount-1,10); /////
...
это работает?
P.S. Ух ты, работает. А в дэльфах так нельзя, к сожалению

Тогда ничего странного в подходе, а очень даже нормально.
Code: Select all
case string_var of
'ggg' : begin end;
end;
[DCC Error] main.pas(3766): E2001 Ordinal type required
я опять не понимаю тебя

так что нельзя?
Code: Select all
case material of /////
'blacksmithing' : numgumpbutton(getgumpscount-1,6); /////
'iron' : numgumpbutton(getgumpscount-1,10); /////
...
Re: правильно или нет?
Posted: 19.08.2012 20:56
by Vizit0r
можно. это работает, и это удобно - так чего нет?