Что нового

[Ошибки] Бот для Тюряги

DarkCrush

Начинающий
Сообщения
63
Репутация
1
Версия AutoIT: 3.3.6.1
Описание: Бот для приложения тюряга, пока что умеет смотреть информацию, собирать сигареты, запоминает ид и ауткей
Примечания: Нужна помощь, никак не могу сделать прокачку "бицухи" _TwoWindow & _Str

Код:
;Окно на прокачку бицухи
Func _TwoWindow()
Global $Form7, $Group7, $Group8, $Group9, $fake, $Edit9, $idvk, $Button7, $Button8, $Button9
$Form7 = GUICreate("Качаем бицуху", 625, 445, 192, 124)
$Group7 = GUICtrlCreateGroup("Список", 8, 8, 297, 425)
$fake = GUICtrlCreateEdit("", 16, 24, 273, 369)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
$Button7 = GUICtrlCreateButton("Извлечь из ...", 16, 400, 105, 25, $WS_GROUP)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group8 = GUICtrlCreateGroup("Пользователь", 328, 8, 281, 49)
$idvk = GUICtrlCreateInput($User, 344, 24, 249, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group9 = GUICtrlCreateGroup("Информация", 328, 72, 281, 305)
$Edit9 = GUICtrlCreateEdit("", 336, 88, 257, 281)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button8 = GUICtrlCreateButton("Получить", 328, 400, 129, 33, $WS_GROUP)
$Button9 = GUICtrlCreateButton("Закрыть", 480, 400, 129, 33, $WS_GROUP)
$sexit = GUICtrlDelete($Form7)
GUISetState(@SW_SHOW)
While 1
    $smsg = GUIGetMsg();
    Switch $smsg
            Case $GUI_EVENT_CLOSE
                GUIDelete($Form7)
                ExitLoop
	EndSwitch
    Switch $smsg
        Case $Button8
		_Str()
		GUISetState()
	EndSwitch
    Switch $smsg
        Case $Button7
		$text = FileOpenDialog("Указать файл", @WorkingDir & "", "Любой (*.txt)", 1 + 4 )
		$Read = FileRead($text)
		GUICtrlSetData($fake,$Read)
	EndSwitch
    Switch $smsg = $Button9
            Case $GUI_EVENT_CLOSE
			GUIDelete($Form7)
			ExitLoop
	EndSwitch
WEnd
EndFunc ;==> _TwoWindow
;Бицуха
Func _Str()
	$i= GUICtrlRead($fake) ; файл с фейками
	$fakeUser = StringSplit($i,@LF)
	$ii=1
            For $ii=1 To $fakeUser[0] ;Массив запроса
            $key=StringSplit($fakeUser[$ii],':')
			Local $PostData1 = 'sig=847df9498a90c30f8b3d6a5e3be33596&key='&$key[2]&'&friend_uid='&$User&'&user='&$key[1]&'&method=getFriendModels'
			Local $PostData = 'sig=a253727a35bf937d6ce98d47d9818fa9&user='&$key[1]&'&sex=0&vote=5&username=lololo&model_id=1''&key='&$key[2]&'&friend_uid='&$User&'&method=voteForFriend'
			$oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
			$oHTTP.Open("POST", $GetModel)
			$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
			Execute('$oHTTP.Send($PostData1)')
			$oHTTP.WaitForResponse
			$Response = $oHTTP.ResponseText
			$Return = StringRegExpReplace($Response, '(?s).*?<vote_availability>(d+)</vote_availability>?.*','\1')
			if $Return = 1 Then
			$oHTTP.setTimeouts(5000,5000, 10000, 10000)
			$oHTTP.Open("POST", $GetStr)
			$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
			Execute('$oHTTP.Send($PostData)')
			$oHTTP.WaitForResponse
      Sleep(1000)
      Else
      Sleep(1000)
      EndIf
	  Sleep(1000)
Next
EndFunc ;==> _Str
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
1. недооформлено
2. имеется заготовка.
итог - переношу в раздел для новичков
 
Автор
D

DarkCrush

Начинающий
Сообщения
63
Репутация
1
помогите=) не могу понять где ошибки :whistle:


Добавлено:
Сообщение автоматически объединено:

помогите сделать это поганое окошко)
 
Автор
D

DarkCrush

Начинающий
Сообщения
63
Репутация
1
Вот запрос на получение списка ID:Key из файла:

Код:
Switch $smsg
        Case $Button7
		$text = FileOpenDialog("Указать файл", @WorkingDir & "", "Любой (*.txt)", 1 + 4 )
		$Read = FileRead($text)
		GUICtrlSetData($fake,$Read)
	EndSwitch


Вот запрос на отправку ID:Key:

Код:
Func _Str()
	local $fake, $User, $GetModel, $GetStr, $Edit9, $read
	$i= StringSplit(GUICtrlRead($fake),@LF) ; файл с фейками
	$ii=1
            For $ii=1 To $fake[0] ;Массив запроса
            $key=StringSplit($fake[$ii],':')
			    $oHTTP = ObjCreate('WinHttp.WinHttpRequest.5.1')
     $URL = 'http://109.234.156.250/prison/universal.php?voteForFriend'
     $URL2 = 'http://109.234.156.250/prison/universal.php?getFriendModels'
			Local $PostData1 = ('sig=847df9498a90c30f8b3d6a5e3be33596&key='&$key[2]&'&friend_uid='&$User&'&user='&$key[1]&'&method=getFriendModels')
			Local $PostData = ('sig=a253727a35bf937d6ce98d47d9818fa9&user='&$key[1]&'&sex=0&vote=5&username=lololo&model_id=1''&key='&$key[2]&'&friend_uid='&$User&'&method=voteForFriend')
			$oHTTP.Open("POST", $URL2)
			$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
			Execute('$oHTTP.Send($PostData)')
			$oHTTP.WaitForResponse
			$Response = $oHTTP.ResponseText
			$Return = StringRegExpReplace($Response, '(?s).*?<vote_availability>(d+)</vote_availability>?.*','\1')
			if $Return = 1 Then
			$oHTTP.setTimeouts(5000,5000, 10000, 10000)
			$oHTTP.Open("POST", $URL)
			$oHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded")
			Execute('$oHTTP.Send($PostData)')
$oHTTP.WaitForResponse
			$Edit9=GUICtrlSetData($Edit9, $Return)
      Sleep(1000)
      Else
      Sleep(1000)
      EndIf
	  Sleep(1000)
Next
EndFunc ;==> _Str


Вот последняя ошибка:

Код:
 ==> Subscript used with non-Array variable.:
For $ii=1 To $fake[0]
For $ii=1 To $fake^ ERROR
Подскажите что нужно изменить для работо способности?
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
DarkCrush [?]
Вставить проверку, если переменная $fake не массив, то, например, выйти из функции:
Код:
IsArray
 
Автор
D

DarkCrush

Начинающий
Сообщения
63
Репутация
1
Сделал так:

Код:
$i= StringSplit(GUICtrlRead($fake),@LF) ; файл с фейками
	$ii=1
            For $ii=1 To $fake[0]
			If IsArray($fake) Then
    MsgBox(0, "Window height", $fake[3])
	EndIf

            $key=StringSplit($fake[$ii],':')


Ошибка осталась прежней
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
DarkCrush [?]
Ошибка осталась прежней
Так и должно быть. Так как переменная все еще используется как массив, хотя она не массив.
 
Автор
D

DarkCrush

Начинающий
Сообщения
63
Репутация
1
а какую переменную мне туда подставить?
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Туда не какую. Тот If, вообще лишний.
Необходимо:
1. Найти строчку в функции, в которой первый раз переменная $fake используется как массив.
2. Перед это строчкой вставить проверку, например: если переменная $fake не массив, то выйти из функции.
 
Автор
D

DarkCrush

Начинающий
Сообщения
63
Репутация
1
а как сделать выход если это не массив?
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Сделать проверку переменной $fake с помощью функции IsArray и операторов If и Not.
В справке есть примеры.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
DarkCrush,
Вы задаете массив
Код:
$i= StringSplit(GUICtrlRead($fake),@LF)
А дальше используете как массив $fake. Он у Вас никогда не будет массивом.
Я бы сделал две функции: 1-ая считывает данные и возвращает массив или ошибку, 2-ая, в зависимости от того, что вернет 1-ая, последовательно отправляет запросы.
 
Автор
D

DarkCrush

Начинающий
Сообщения
63
Репутация
1
Проверку делать так?
Код:
if isArray($fake) = not exit



Добавлено:
Сообщение автоматически объединено:

madmasles сказал(а):
DarkCrush,
Вы вы задаете массив
Код:
$i= StringSplit(GUICtrlRead($fake),@LF)
А дальше используете как массив $fake. Он у Вас никогда не будет массивом.
Я бы сделал две функции: 1-ая считывает данные и возвращает массив или ошибку, 2-ая, в зависимости от того, что вернет 1-ая, последовательно отправляет запросы.
а если потом добавить
Код:
$i=$massiv

все ном будет?
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Советую открыть справку по If.
Т.к. допущена синтаксическая ошибка в конструкции этого оператора.

Результат выполнения функции IsArray необходимо проверять с тем значением, которое эта функция возвращает.
А какие значения возвращает функция, написано в справке:
Success: Returns 1.
Failure: Returns 0 if parameter is not an array variable.

DarkCrush [?]
Нет. Ошибка же в том, что переменная $fake не массив. Переменная $i тут ни причем.
 
Автор
D

DarkCrush

Начинающий
Сообщения
63
Репутация
1
Код:
if IsArray($fake)[0] = not exit


Тогда так?

$fake это область из которой у меня считывается ID:Key


Добавлено:
Сообщение автоматически объединено:

Сделал так
Код:
if IsArray($fake[1]) = 0 then exit

При нажатии на кнопку начала ошибка:
Код:
==> Subscript used with non-Array variable.:
if IsArray($fake[1]) = 0 then exit
if IsArray($fake^ ERROR
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
Надо проверять переменную $fake, а не обращение к 2-ому элементу массива $fake.

В спрвнение:
Код:
IsArray($fake[1]) = 0

Лучше использовать двойное равно:
Код:
==

Т.к. одинарное равно - это оператор присвоения. А с == и читать код легче, и ошибок меньше.

Конструкцию:
Код:
if IsArray($fake[1]) = 0 then exit

Можно заменить на:
Код:
If Not IsArray($fake[1]) Then Exit

Т.е. если результат выполения функции IsArray не положительный, то Exit.

Ну и проверяемую переменную исправить нужно.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
DarkCrush
Вот Вам функция по получению массива
Код:
;...
$aFake = _GetArray($fake)
If Not @error Then
	;передавайте этот массив в подкорректированную следующую функцию.
Else;например:
	MsgBox(16, 'Error', 'Error')
	Exit ;или какое-нибудь другое действие(бездействие)
EndIf
;...

Func _GetArrey($nCtrlID)
	Local $aArray, $sText
	$sText = GUICtrlRead($nCtrlID)
	If Not $sText Then Return SetError(1)
	If StringInStr($sText, @LF) Then
		$aArray = StringSplit(StringStripCR($sText), @LF)
	ElseIf StringInStr($sText, @CR) Then
		$aArray = StringSplit($sText, @CR)
	Else
		Dim $aArray[2] = [1, $sText]
	EndIf
	If Not IsArray($aArray) Then Return SetError(1)
	Return SetError(0, 0, $aArray)
EndFunc   ;==>_GetArray


`p r o x y
Код:
;не
IsArray($fake[1])
;а
IsArray($fake)
 
Автор
D

DarkCrush

Начинающий
Сообщения
63
Репутация
1
Извеняюсь за тупой вопрос, а как мне это использовать в своем скрипте :-[ :-[
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
DarkCrush
Код:
;...
$aFake = _GetArrey($fake)
If Not @error Then
	_Str($aFake)
EndIf
;...
;в функции своей поменяйте
Func _Str($aArray)
;...
	For $ii=1 To $aArray[0]
		$key=StringSplit($aArray[$ii],':')
;...
 

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
madmasles
Так я специально не исправлял, что бы это предоставить автору для понимания ошибки.
В посте об этом написанно.
Тут дело гараздо сложнее, готовое решение только "путает" )
 
Верх