Page 1 of 1
можно ли сократить?
Posted: 28.08.2012 16:48
by roma777
подскажите пожалуйста можно ли как-то сократить данную строку?
Code: Select all
if (bodid = ti[0]) or (bodid = ti[1]) or (bodid = ti[2]) or (bodid = ti[3]) or (bodid = ti[4]) or (bodid = ti[5]) then
Re: можно ли сократить?
Posted: 28.08.2012 22:35
by Vizit0r
Code: Select all
for i := 0 to 5
if (bodid = ti[i]) then
Re: можно ли сократить?
Posted: 28.08.2012 23:49
by roma777
Vizit0r wrote:Code: Select all
for i := 0 to 5
if (bodid = ti[i]) then
а еще есть варианты? вод код чтоб было понятнее
Code: Select all
begin
inittibsi;
bobfilter(findtype($2259,backpack),'all','all','tailoring','all');
terminate := false;
while terminate = false do
begin
save;
bodid := getgi;
if count($2258) > 0 then
if (bodid = ti[0]) or (bodid = ti[1]) or (bodid = ti[2]) or (bodid = ti[3]) or (bodid = ti[4]) or (bodid = ti[5]) then
moveto(tfchest) // сундук с Female сетом
else
if (bodid = ti[6]) or (bodid = ti[7]) or (bodid = ti[8]) or (bodid = ti[9]) or (bodid = ti[10]) then
moveto(tschest) // сундук с Studded сетом
else
if (bodid = ti[11]) or (bodid = ti[12]) or (bodid = ti[13]) or (bodid = ti[14]) or (bodid = ti[15]) or (bodid = ti[16]) then
moveto(tmchest) // сундук с Male сетом
else
if (bodid = ti[17]) or (bodid = ti[18]) or (bodid = ti[19]) or (bodid = ti[20]) or (bodid = ti[21]) then
moveto(tbchest) // сундук с Bone сетом
else
if (bodid = ti[22]) or (bodid = ti[23]) or (bodid = ti[24]) or (bodid = ti[25]) or (bodid = ti[26]) then
moveto(ttcchest) // сундук с Town Crier сетом
else
if (bodid = ti[27]) or (bodid = ti[28]) or (bodid = ti[29]) then
moveto(tshchest) // сундук с Обувью
else
moveto(tcchest); // сундук с Тканью
wait(500);
end;
checklag(5000);
wait(1000);
terminate := false;
bobfilter(findtype($2259,backpack),'all','all','blacksmithing','all');
while terminate = false do
begin
save;
bodid := getgi;
if count($2258) > 0 then
if (bodid = bsi[0]) or (bodid = bsi[1]) or (bodid = bsi[2]) then
moveto(bscchest) // сундук с Chainmail Set
else
if (bodid = bsi[3]) or (bodid = bsi[4]) or (bodid = bsi[5]) or (bodid = bsi[6]) then
moveto(bsrchest) // сундук с Ringmail Set
else
if (bodid = bsi[7]) or (bodid = bsi[8]) or (bodid = bsi[9]) or (bodid = bsi[10]) or (bodid = bsi[11]) or (bodid = bsi[12]) then
moveto(bspchest) // сундук с Platemail Set
else
if (bodid = bsi[13]) or (bodid = bsi[14]) or (bodid = bsi[15]) or (bodid = bsi[16]) or (bodid = bsi[17]) or (bodid = bsi[18]) or (bodid = bsi[19]) or (bodid = bsi[20]) or (bodid = bsi[21]) or (bodid = bsi[22]) or (bodid = bsi[23]) then
moveto(bsoachest) // сундук с Other Armor
else
if (bodid = bsi[24]) or (bodid = bsi[25]) then
moveto(bsbhchest) // сундук с Bardich & Halberd
else
moveto(bsowchest); // сундук с Other Weapon
wait(500);
end;
addtosystemjournal('stop script');
clientprint('stop script');
end.
Re: можно ли сократить?
Posted: 28.08.2012 23:57
by Vizit0r
в первой половине - уже массив ti есть, к нему сделать массив из chest'ов, и тогда
Code: Select all
for i := 0 to 5
if (bodid = ti[i]) then
begin
moveto(tchest[i])
break;
end;
for i := 6 to 10
но в этом случае неинтересно.
вот только case работает только для констант, поэтому увы.
P.S. попробуй if (bodid in [ti[0]..ti[5])) then
но думается мне ПС выругается на такое, слишком сложно для него
Re: можно ли сократить?
Posted: 29.08.2012 12:34
by roma777
Vizit0r wrote:в первой половине - уже массив ti есть, к нему сделать массив из chest'ов, и тогда
Code: Select all
for i := 0 to 5
if (bodid = ti[i]) then
begin
moveto(tchest[i])
break;
end;
for i := 6 to 10
но в этом случае неинтересно.
вот только case работает только для констант, поэтому увы.
P.S. попробуй if (bodid in [ti[0]..ti[5]]) then
но думается мне ПС выругается на такое, слишком сложно для него
ругается

а зачем после moveto(tchest
) стоит break;?? что он дает, без него тоже все прекрасно работает.
и еще вопрос. что дает команда exit? после ее выполнения скрипт продалжает работать как ни в чем не бывало.
Re: можно ли сократить?
Posted: 29.08.2012 14:21
by Vizit0r
roma777 wrote:
а зачем после moveto(tchest) стоит break;?? что он дает, без него тоже все прекрасно работает.
и еще вопрос. что дает команда exit? после ее выполнения скрипт продалжает работать как ни в чем не бывало.
затем - http://delphibasics.ru/Break.php
Exit - http://www.delphisources.ru/pages/faq/f ... t.php.html
от себя добавлю, что Exit в главном блоке (begin - end.) приводит к завершению работы скрипта.
Re: можно ли сократить?
Posted: 29.08.2012 15:32
by roma777
теперь понял. спс большое
Re: можно ли сократить?
Posted: 30.08.2012 16:14
by roma777
roma777 wrote:Vizit0r wrote:в первой половине - уже массив ti есть, к нему сделать массив из chest'ов, и тогда
Code: Select all
for i := 0 to 5
if (bodid = ti[i]) then
begin
moveto(tchest[i])
break;
end;
for i := 6 to 10
зачем в таком варианте делать массив для сундуков? почему не сделать moveto(tshchest) // сундук с Обувью или moveto(tcchest) // сундук с Тканью и т.д.
tshchest и cchest константы.
Re: можно ли сократить?
Posted: 30.08.2012 17:52
by Vizit0r
все по желанию автора ))