Page 1 of 1
Правка кода
Posted: 13.03.2012 11:58
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;
Можно ли как нибудь получше написать это всё? а то на мой взгляд я по-нубски написал
Re: Правка кода
Posted: 13.03.2012 12:52
by MuDaCk
Мне легче сделать -> если есть перья, выкладываем, если есть кожа, выкладываем... а ты мудришь с весом и кол-вами...
Re: Правка кода
Posted: 13.03.2012 12:57
by nepopus
MuDaCk wrote:Мне легче сделать -> если есть перья, выкладываем, если есть кожа, выкладываем... а ты мудришь с весом и кол-вами...
Поддерживаю. Можно делать разгрузку всех перьев и кожи при достижении большого веса в паке, либо проверяя их по количеству. А там чет ваще мудрено : )
Re: Правка кода
Posted: 13.03.2012 21:56
by Tiger89
Ну это моя ошибка, что вы так сейчас говорите, я не дал полную информацию, у нас на сервере есть такие автобай столбы они скупают эти предметы как раз, проблема в том, что при достижении веса более 599 единиц, автобай машина отказывается принимать товар, поэтому я сбрасываю вес до этого уровня и спокойно продаю айтемы.
Re: Правка кода
Posted: 13.03.2012 23:53
by MuDaCk
Не парься, если у тебя работает, значит не надо дальше упрощать, всё и так хорошо выглядит

.
Re: Правка кода
Posted: 14.03.2012 9:56
by nepopus
Какой интересный сервер
Не могу понять смысл второй передаваемой переменной в ItemToBank. Ну и вообще было бы неплохо дать коротенькие описания для этой процедуры и TWait

Re: Правка кода
Posted: 14.03.2012 11:43
by Tiger89
ItemToBank(IDвещи, Количество), TWait это как бы чеклаг+100мс ожидания.
Re: Правка кода
Posted: 14.03.2012 11:57
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;
Re: Правка кода
Posted: 14.03.2012 12:44
by Tiger89
а вдруг перьев мало чтобы снять перевес? придется и кожу убирать часть) или и кожу и перья, или только кожу) всё надо учитывать чтобы не было исключений
Re: Правка кода
Posted: 14.03.2012 12:54
by nepopus
Tiger89 wrote:а вдруг перьев мало чтобы снять перевес? придется и кожу убирать часть) или и кожу и перья, или только кожу) всё надо учитывать чтобы не было исключений
Ты хотел написать лучше, чем сейчас? Вот я и внес корректировку, чтобы он разгружался ровно до 599, если не хватает перьев. А сейчас он смотрит перевес, если перьев на перевес не хватает, то он выгружает все перья и ЭТОТ ЖЕ пересвес выгружает за счет кожи.
П.С. я цитировал кусок.

Это не весь скрипт то, остальная часть осталась.
Re: Правка кода
Posted: 17.03.2012 9:12
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;
Re: Правка кода
Posted: 17.03.2012 10:13
by nepopus
Для оценки помогли бы описание и комментарии в коде : )
Re: Правка кода
Posted: 17.03.2012 23:30
by Tiger89
Короче смысл таков: я создал спец тип для рун, в нем есть флаг - гз не гз и координаты точки рекола, и вот я сравниваю свое место нахождение с наиболее близкой точкой рекола и ставлю её флаг ) конечно не лучший способ но все же..