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

правильно или нет?

тут можно задать вопрос по скриптингу
Post Reply
roma777
Neophyte
Neophyte
Posts: 17
Joined: 20.05.2012 19:55

правильно или нет?

Post 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;
просто работает и так и так, хотелось бы знать как правельнее делать?
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: правильно или нет?

Post by Vizit0r »

ты сам ответил на свой вопрос.

begin end
можно не ставить, если только одна строка кода после условия.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
roma777
Neophyte
Neophyte
Posts: 17
Joined: 20.05.2012 19:55

Re: правильно или нет?

Post 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;  
может это все можно как-то упростить?
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: правильно или нет?

Post by Vizit0r »

напрягает. только не компьютер, а мозг читающего ТАКОЕ.
откуда берутся переменные size material и т.д.? если пользователь вводит - это одно, если же это внутрискриптовое - то это совершенно неуместно, заменить на соотв. коды и использовать case XXX of
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
roma777
Neophyte
Neophyte
Posts: 17
Joined: 20.05.2012 19:55

Re: правильно или нет?

Post 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
VeL
Novice
Novice
Posts: 54
Joined: 03.12.2010 18:15

Re: правильно или нет?

Post by VeL »

А лучше так

Code: Select all

if bodinbob($405C2D51) and bpcount then
VeL
Novice
Novice
Posts: 54
Joined: 03.12.2010 18:15

Re: правильно или нет?

Post by VeL »

А так же

Code: Select all

function bpcount : boolean;
begin
 findtype($ffff,backpack);
 result := findcount < 125
end;
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: правильно или нет?

Post by Vizit0r »

я понимаю что берется из входящих параметров. а передает их параметрами в функцию кто?
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
roma777
Neophyte
Neophyte
Posts: 17
Joined: 20.05.2012 19:55

Re: правильно или нет?

Post by roma777 »

Vizit0r wrote:я понимаю что берется из входящих параметров. а передает их параметрами в функцию кто?
я не совсем понимаю вопрос. я же скинул "скрипт" от начала и до конца, я ввожу их самостоятельно.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Re: правильно или нет?

Post 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
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
roma777
Neophyte
Neophyte
Posts: 17
Joined: 20.05.2012 19:55

Re: правильно или нет?

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

Re: правильно или нет?

Post by Vizit0r »

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