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

Правка кода

тут можно задать вопрос по скриптингу
Post Reply
Tiger89
Novice
Novice
Posts: 131
Joined: 28.11.2008 17:32

Правка кода

Post by Tiger89 »

Code: Select all

Procedure checkOverWeight; 
  Var
    feathersId, leatherId: Cardinal;
    overWeight, feathersWeight, leatherWeight: Integer;
  Begin
    overWeight := Weight - 599;
    If overWeight > 0 Then 
      Begin
        feathersId := Find(feathersType);
        feathersWeight := FindQuantity() / 10;
        leatherId := Find(leatherId);
        leatherWeight :=  FindQuantity();
      End;
        If feathersWeight >= overWeight Then
          Begin 
            ItemToBank(feathersId, overWeight*10);
            TWait;
          End;
        Else
          Begin
            ItemToBank(feathersId, feathersWeight*10);
            TWait;
            If leatherWeight >= overWeight Then
              Begin
                ItemToBank(leatherId, overWeight*10);
                TWait;
               End;    
          End;  
  End;
Можно ли как нибудь получше написать это всё? а то на мой взгляд я по-нубски написал
MuDaCk
Apprentice
Apprentice
Posts: 393
Joined: 10.10.2006 0:03
Contact:

Re: Правка кода

Post by MuDaCk »

Мне легче сделать -> если есть перья, выкладываем, если есть кожа, выкладываем... а ты мудришь с весом и кол-вами...
My name is Игорёшка Image
Пишу скрипты за едуImage
nepopus
Novice
Novice
Posts: 121
Joined: 29.02.2012 23:45
Location: Москва
Contact:

Re: Правка кода

Post by nepopus »

MuDaCk wrote:Мне легче сделать -> если есть перья, выкладываем, если есть кожа, выкладываем... а ты мудришь с весом и кол-вами...
Поддерживаю. Можно делать разгрузку всех перьев и кожи при достижении большого веса в паке, либо проверяя их по количеству. А там чет ваще мудрено : )
<( o_O<) <( O_O )> (>O_o )>
Tiger89
Novice
Novice
Posts: 131
Joined: 28.11.2008 17:32

Re: Правка кода

Post by Tiger89 »

Ну это моя ошибка, что вы так сейчас говорите, я не дал полную информацию, у нас на сервере есть такие автобай столбы они скупают эти предметы как раз, проблема в том, что при достижении веса более 599 единиц, автобай машина отказывается принимать товар, поэтому я сбрасываю вес до этого уровня и спокойно продаю айтемы.
MuDaCk
Apprentice
Apprentice
Posts: 393
Joined: 10.10.2006 0:03
Contact:

Re: Правка кода

Post by MuDaCk »

Не парься, если у тебя работает, значит не надо дальше упрощать, всё и так хорошо выглядит :wink: .
My name is Игорёшка Image
Пишу скрипты за едуImage
nepopus
Novice
Novice
Posts: 121
Joined: 29.02.2012 23:45
Location: Москва
Contact:

Re: Правка кода

Post by nepopus »

Какой интересный сервер :)
Не могу понять смысл второй передаваемой переменной в ItemToBank. Ну и вообще было бы неплохо дать коротенькие описания для этой процедуры и TWait :oops: :)
<( o_O<) <( O_O )> (>O_o )>
Tiger89
Novice
Novice
Posts: 131
Joined: 28.11.2008 17:32

Re: Правка кода

Post by Tiger89 »

ItemToBank(IDвещи, Количество), TWait это как бы чеклаг+100мс ожидания.
nepopus
Novice
Novice
Posts: 121
Joined: 29.02.2012 23:45
Location: Москва
Contact:

Re: Правка кода

Post by nepopus »

Code: Select all

          Begin
            ItemToBank(feathersId, feathersWeight*10);
            TWait;
            overWeight := overWeight-feathersWeight; <--------------------------------------------------
            If leatherWeight >= overWeight Then
              Begin
                ItemToBank(leatherId, overWeight*10);
                TWait;
               End;    
          End; 
<( o_O<) <( O_O )> (>O_o )>
Tiger89
Novice
Novice
Posts: 131
Joined: 28.11.2008 17:32

Re: Правка кода

Post by Tiger89 »

а вдруг перьев мало чтобы снять перевес? придется и кожу убирать часть) или и кожу и перья, или только кожу) всё надо учитывать чтобы не было исключений
nepopus
Novice
Novice
Posts: 121
Joined: 29.02.2012 23:45
Location: Москва
Contact:

Re: Правка кода

Post by nepopus »

Tiger89 wrote:а вдруг перьев мало чтобы снять перевес? придется и кожу убирать часть) или и кожу и перья, или только кожу) всё надо учитывать чтобы не было исключений
Ты хотел написать лучше, чем сейчас? Вот я и внес корректировку, чтобы он разгружался ровно до 599, если не хватает перьев. А сейчас он смотрит перевес, если перьев на перевес не хватает, то он выгружает все перья и ЭТОТ ЖЕ пересвес выгружает за счет кожи.
П.С. я цитировал кусок. :) Это не весь скрипт то, остальная часть осталась.
<( o_O<) <( O_O )> (>O_o )>
Tiger89
Novice
Novice
Posts: 131
Joined: 28.11.2008 17:32

Re: Правка кода

Post by Tiger89 »

Так, следующий код, правим критикуем:

Code: Select all

Type
  TRune = record
  id: Cardinal;
  x, y: Integer;
  protect: Boolean;
End;

Code: Select all

Function IsGuardZone: Boolean;
  Var
    i, myDist, tmpDist: Integer;
  Begin
    Result := False;
    If (GetSX > 0) And (GetSY > 0) Then
      Begin
        myDist := Dist(GetSX, GetSY, Rune_Vesper.x, Rune_Vesper.y);
        myDist := MinInt(myDist, Dist(GetSX, GetSY, Rune_Weapon.x, Rune_Weapon.y));
        myDist := MinInt(myDist, Dist(GetSX, GetSY, Rune_Butcher.x, Rune_Butcher.y));
        If myDist < 50 Then Result := True;
        For i := 0 To Length(Runes_r) - 1 Do 
          Begin
            tmpDist := Dist(GetSX, GetSY, Runes_r[i].x,  Runes_r[i].y);
            If myDist > tmpDist Then 
              Begin
                myDist := tmpDist
                Result := Runes_r[i].protect;
                If myDist = 0 Then Exit;
              End;
          End;
        For i := 0 To Length(Runes) - 1 Do
          Begin
            tmpDist := Dist(GetSX, GetSY, Runes[i].x,  Runes[i].y);
            If myDist > tmpDist Then 
              Begin
                myDist := tmpDist
                Result := Runes[i].protect;
                If myDist = 0 Then Exit;
              End;
          End;
      End;   
  End;
nepopus
Novice
Novice
Posts: 121
Joined: 29.02.2012 23:45
Location: Москва
Contact:

Re: Правка кода

Post by nepopus »

Для оценки помогли бы описание и комментарии в коде : )
<( o_O<) <( O_O )> (>O_o )>
Tiger89
Novice
Novice
Posts: 131
Joined: 28.11.2008 17:32

Re: Правка кода

Post by Tiger89 »

Короче смысл таков: я создал спец тип для рун, в нем есть флаг - гз не гз и координаты точки рекола, и вот я сравниваю свое место нахождение с наиболее близкой точкой рекола и ставлю её флаг ) конечно не лучший способ но все же..
Post Reply