Выглядит так :

понимамаю что впринципе не сложный антимакрос, но знаний не хватает

Code: Select all
Procedure AntiBotGump(Serial,GumpID,X,Y : Cardinal);
Var
GumpInfo : TGumpInfo;
Operation1,Operation2,FoundString : String;
A,B,C,i,pos1,pos2,Answer,TextEntry_value,Button_value,GumpIndex : Integer;
FoundStringList : TStringList;
Begin
	CheckLag(30000);
	if (GetGumpsCount<1) then begin Exit; end;
	// GumpID это 16-ричное значение, к примеру: 968740
	// нужно перевести его в десятичное (9865024) и искать именно
	// десятичное в строке: if GetGumpID(i) <> 9865024 then begin
	If (GumpID = 9865024) then begin
		Wait(4000); // Эмуляция живого игрока
		SetSilentMode(True);
		// Для GumpInfo нужен порядковый номер гампа
		for i:=0 to (GetGumpsCount-1) do begin
			if GetGumpID(i) = 9865024 then begin
				GetGumpInfo(i, GumpInfo);
				GumpIndex := i;
				Break;
			end;
		end;
		// Строка с проверочным выражением где есть + или -
		FoundStringList := TStringList.Create;
		FoundString := GumpInfo.Text[2];
		while (pos('<', FoundString) > 0) do begin
			pos1 := pos('<', FoundString);
			pos2 := pos('>', FoundString);
			delete(FoundString, pos1, (pos2-pos1+1));
			Wait(10);
		end;
		StrBreakApart(FoundString, ' ', FoundStringList);
		A := StrToInt(FoundStringList.Strings[0]);
		Operation1 := FoundStringList.Strings[1];
		B := StrToInt(FoundStringList.Strings[2]);
		Operation2 := FoundStringList.Strings[3];
		C := StrToInt(FoundStringList.Strings[4]);
		// Строка с TextEntry содержащая Return_value поля ввода
		TextEntry_value := GumpInfo.TextEntries[0].return_value;
		// Строка с GumpButton содержащая Return_value кнопки
		Button_value := GumpInfo.GumpButtons[0].return_value;
		If (Operation1 = '+') and (Operation2 = '+') then begin
			Answer := A+B+C;
		end else if (Operation1 = '+') and (Operation2 = '-') then begin
			Answer := A+B-C;
		end else if (Operation1 = '-') and (Operation2 = '+') then begin
			Answer := A-B+C;
		end else if (Operation1 = '-') and (Operation2 = '-') then begin
			Answer := A-B-C;
		end else begin
			AddToSystemJournal('[ ! ] ВНИМАНИЕ! Новое действие в проверочном выражении!');
			FoundStringList.Free;
			Halt;
		end;
		AddToSystemJournal('[ ! ] ANTIBOT GUMP: ' + FoundString + ' = ' + IntToStr(Answer));
		// Отправка ответа на сервер
		GumpAutoTextEntry(TextEntry_value, IntToStr(Answer));
		NumGumpButton(GumpIndex, Button_value);
		FoundStringList.Free;
	End;
End;ну я не так давно тут играю, месяц может полтора, если ты там уже давно то может я пока еще по нубски наивен ... А так пообщатся не вопрос, если вернешся как раз нужен напарник для пве фарма босов и чампов, если надумаешь пиши тут в пм, я сюда частенько заглядываю, ищу готовые решения скриптов ...GeeZeR wrote:Как прикольно, я пессимист, а ты оптимист на одном и том же шарде. Если вернусь нужно встретиться поболтать)
а на 8 ?GeeZeR wrote: Работает на версии 7.11.0, движок PascalScript.