Начала вылетать ошибка при реконнекте в игру

Ask for help

Moderators: Murderator+, Murderator

Post Reply
NonStop69
Posts: 4
Joined: 2011-01-30 00:20:20

Начала вылетать ошибка при реконнекте в игру

Post by NonStop69 »

Поставил чистую инжу 505.18, настроил. Клиент у меня отдельный без нагрузки на проц, ilpatch настроен. Все работало нормально день-другой. Начал качать Анатомию и к ней же добавил скрипт реконнекта. Отключал инет для проверки - перезаходил нормально и скрипт продолжал работать.

Теперь же как только обрыв соед и конн. лост, сразу выдаёт ошибку :

UO client performed an unrecoverrable invalid operation. Terminate? Yes/No.

При нажатии No выскакивает повторно, при положительном закрывается. Никаких реконнектов разумеется нет.
В чем ошибка без понятия, появилась на ровном месте.

1. Пробовал чистый скрипт реконнекта - нет.
2.Image
3. Винда XP SP3, антивирус аваст без фаера. Процессор Athlon x2, шард ДРВ.
4. Переставлял инжу и родной клиент - та же фигня.
5. Постоянно выскакивает ошибка как только зайду в саму игру Function not found - autostart, в самом конце всех скриптов.

Вот такая беда, помогите. Уже сил нет.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Начала вылетать ошибка при реконнекте в игру

Post by Mirage »

1) попробуй после запуска клиента выставлять нагрузку на одно ядро процессора.
CTRL+Shift+ESC -> Процессы -> Правой кнопкой мышки на client.exe Задать соответствие -> оставить одну галку на любом ядре.
2) убери галки кроме Corps autoopen и TWI
3) не совсем понял вот этот участок:
5. Постоянно выскакивает ошибка как только зайду в саму игру Function not found - autostart, в самом конце всех скриптов.
Если это вопрос то у тебя в файле autoload.sc (корень инжекта или папка с игрой) нет функции sub autostart(). Это лечится сниманием галки autostart (как не странно).
Либо если такая функция присутствует то может быть проблема в незакрытых циклах файла autoload.sc.
если ничего не поможет то скидывай скрипт на кач каким пользуешься. Будем смотреть его.
NonStop69
Posts: 4
Joined: 2011-01-30 00:20:20

Re: Начала вылетать ошибка при реконнекте в игру

Post by NonStop69 »

Спасибо за ответ!

1. Не помогло.
2. Снял, результат тот же.
3. лечится сниманием галки autostart - помогло!

Сразу приложу запускаемый скрипт:

Code: Select all

sub loot()
VAR WaitTime=500
VAR Exit=1, i
DIM Loot[8]
Loot[1]="0x0EED"
Loot[2]="0x1718" 
Loot[3]="0x170B" 
Loot[4]="0x0E75"
Loot[5]="0x0F91"
Loot[6]="0x1EFD"
Loot[7]="0x0F78"
Loot[8]="0x1516"


wait (500)
for i = 1 to 8
UO.FindType(Loot[i],"-5","lastcorpse")
UO.Grab("0","finditem")
next
end sub


sub hiding()
    while not UO.Dead()
        hide()
        UO.Press(37,2,300)
        Wait(300) ; После второго нажатия паузы не будет, так что нужно добавить её вручную
        hide()
        UO.Press(39,2,300)
        Wait(300)
    wend
end sub

Sub hide()
    var failMessage = "You fail|You don't|You can't"
    var timeLeft = 0

    while not UO.Hidden() ; Если мы уже спрятались - не крутим цикл
        UO.Useskill("Hiding") ; Пытаемся спрятаться

        DeleteJournal(failMessage) ;Удаляем все сообщения об неудачах с журнала
        timeLeft = 3000 ;Обнуляем счётчик ожидания скилла
        while (not UO.Hidden()) AND (timeLeft > 0) AND (UO.InJournal(failMessage) == 0) ;Ждём пока не захайдимся, либо не получим сообщение об неуспешном хайде, либо пока не истекут 3 секунды выделенные на хайд.
            timeLeft = timeLeft - 100
            wait(100)
        wend
    wend
endsub

Sub DeleteJournal( string1 )
    VAR nom = UO.InJournal( string1 )
    If nom > 0 Then
        UO.SetJournalLine( Nom - 1, 'string replaced' )
        DeleteJournal( string1 )
    Endif
endsub

sub Reconnector()
var ReconnectTime, RFlag
ReconnectTime = '0'
RFlag = 1
Repeat
While (UO.ObjAtLayer('Bpack') == '')
if RFlag Then
ReconnectTime = MakeTime()
RFlag = 0
endif
Wait(20000) # WorldSave Protection
UO.Say('')
Wait(3000)
UO.Say('')
Wait(3000)
UO.Say('')
Wait(3000)
UO.LDblClick(357,164)
UO.LClick(616,459)
Wait(3000)
WEnd
Wait(3000)
if (RFlag == 0) and (ReconnectTime <> '0') Then
;UO.Exec('terminate all')
;UO.Exec('exec autoload')
UO.TextOpen()
UO.TextPrint('Disconnected & Reconnected @ '+ReconnectTime)
RFlag = 1
ReconnectTime = '0'
endif
Until false
end sub

sub MakeTime()
VAR D, T, Ret, i
Ret = STR(UO.Time())
T = ""
For i = 0 To Len(Ret)
T = Ret[Len(Ret)-i] + T
If (I == 2) OR (I == 4) Then
T = ":" + T
EndIf
Next
Ret = STR(UO.Date())
D = ""
For i = 0 To Len(Ret)
D = Ret[Len(Ret)-i] + D
If (I == 2) OR (I == 4) Then
D = "." + D
EndIf
Next
Ret = T + " @ " + D
RETURN Ret
end sub 

sub Anatomy()
var Exit=0   
while Exit==0
uo.DeleteJournal()
uo.Waittargetself()
uo.Useskill('Anatomy')
while not (uo.InJournal('looks')or uo.InJournal('You'))   
wait(1000)
wend
wend
end sub 
Анатомия, стелс работают без проблем, единственное скрипт на лут забирает по 2 вещи, приходится по неск. раз нажимать.
Чистый скрипт реконнект с той же ошибкой.

И еще вопрос, откуда нужно качать инжект или более новую его версию?
Я качаю - http://yoko.com.ua/rus/injection.htm
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Начала вылетать ошибка при реконнекте в игру

Post by Mirage »

всего скорее дело в отсутствие счетчика. У тебя при дисконекте цикл зависает. Попробуй качать вот таким скриптом:

Code: Select all

Var FishType = '0x097B' ; тип жаренной рыбы
Var LastTimer, i
Var Chest = '0x40B475D3' ; сундук где валяется жаренная рыба
Var Amount = 50 ; сколько будем брать рыбы на прокормку чара 
Var SkillVal = 1000
sub main()
	UO.Exec('exec Reconnector')
	If uo.SkillVal('Anatomy') < SkillVal then
		Anatomy()
	End If
	If uo.SkillVal('Arms Lore') < SkillVal then
		ArmsLore()
	End If
	If uo.SkillVal('Hiding') < SkillVal then
		Hiding()
	End If
	If uo.SkillVal('Stealth') < SkillVal then
		Stealth()
	End If
	If uo.SkillVal('Tracking') < SkillVal then
		Tracking()
	End If
	If uo.SkillVal('Musicianship') < SkillVal then
		Musicianship()
	End If
	If uo.SkillVal('Taste Identification') < SkillVal then
		TasteID()
	End If
	If uo.SkillVal('Evaluate Intelligence') < SkillVal then
		EvaluatingIntelligence()
	End If
End Sub
Sub Anatomy()
	while uo.SkillVal('Anatomy') < SkillVal 
		Eat()
		For i = 1 To 100
			uo.DeleteJournal()
			uo.Useskill('Anatomy', 'self')
			LastTimer = uo.Timer()
			repeat
				wait(500) 
			until uo.InJournal('looks|fail|think') or uo.Timer() > LastTimer + 200 
		Next
	Wend
End Sub
Sub ArmsLore() 
	uo.FindType ('0x0F51') ; даггер
	If uo.FindCount() > 0 Then
		while uo.SkillVal('Arms Lore') < SkillVal 
			Eat()
			For i = 1 To 100
				uo.DeleteJournal()
				uo.Useskill('Arms Lore','finditem')
				LastTimer = uo.Timer()
				repeat
					wait(500) 
				until uo.InJournal('item|is made of|anything|ничего') or uo.Timer() > LastTimer + 200 
			Next
		Wend
	Else
		Eat()
	End If
End Sub
Sub Tracking()
	uo.CancelMenu()
	uo.AutoMenu("Track","Anything")
	while uo.SkillVal('Tracking') < SkillVal 
		Eat()
		For i = 1 To 100
			uo.DeleteJournal()
			uo.Useskill('Tracking')
			LastTimer = uo.Timer()
			repeat
				wait(50) 
			until UO.InJournal("Поиск отменен|Tracking Cancelled|see") or UO.Timer()>LastTimer+50
		Next
	Wend
	uo.CancelMenu()
End Sub
Sub Musicianship()
	VAR a
	UO.filterspeech('clear')
	UO.filterspeech('add','You play')
	UO.filterspeech('on')
	Dim Musicial_instrument[6]
	Musicial_instrument[1] = '0x0E9C'; Drum (барабан)
	Musicial_instrument[2] = '0x0E9D'; Tambourine (бубен)
	Musicial_instrument[3] = '0x0E9E'; Tambourine (бубен с лентой)
	Musicial_instrument[4] = '0x0EB2'; Lap Harp (маленькая арфа)
	Musicial_instrument[5] = '0x0EB1'; Standing Harp (большая арфа)
	Musicial_instrument[6] = '0x0EB3'; Lute (лютня ака балалайка)
	for a=1 to 6
		UO.FindType(Musicial_instrument[a],'-1','2')
		While UO.FindCount() And UO.Skillval('Musicianship') < SkillVal And Not UO.Dead()
			UO.UseObject('finditem')
			Wait(100)
			UO.WarMode(0)
			UO.FindType(Musicial_instrument[a],'-1','2')
		Wend
	Next
	UO.filterspeech('clear')
End Sub
Sub Hiding()
	while uo.SkillVal('Hiding') < SkillVal 
		Eat()
		For i = 1 To 100
			uo.DeleteJournal()
			uo.Useskill('Hiding')
			LastTimer = uo.Timer()
			repeat
				wait(500) 
			until uo.InJournal('seem|hidden|Вам не|revealed') or uo.Timer() > LastTimer + 200 
		Next
	Wend
End Sub
Sub Stealth()
	while uo.SkillVal('Stealth') < SkillVal 
		Eat()
		For i = 1 To 100
			uo.DeleteJournal()
			uo.Useskill('Stealth')
			LastTimer = uo.Timer()
			repeat
				wait(500) 
			until uo.InJournal('seem|hidden|Вам не|revealed') or uo.Timer() > LastTimer + 200 
		Next
	Wend
End Sub
Sub TasteID() 
	uo.FindType (FishType)
	If uo.FindCount() > 0 Then
		while uo.SkillVal('Taste Identification') < SkillVal 
			Eat()
			For i = 1 To 100
				uo.DeleteJournal()
				uo.Useskill('Taste Identification','finditem')
				LastTimer = uo.Timer()
				repeat
					wait(500) 
				until uo.InJournal('anything|tastes|ничего') or uo.Timer() > LastTimer + 200 
			Next
		Wend
	Else
		Eat()
	End If
End Sub
Sub EvaluatingIntelligence()
	while uo.SkillVal('Evaluating Intelligence') < SkillVal 
		Eat()
		For i = 1 To 100
			uo.DeleteJournal()
			uo.Useskill('Evaluating Intelligence', 'self')
			LastTimer = uo.Timer()
			repeat
				wait(500) 
			until uo.InJournal('seem|looks|У вас не') or uo.Timer() > LastTimer + 200 
		Next
	Wend
End Sub
Sub Eat()
	uo.DeleteJournal() 
	repeat 
		If uo.Count(FishType) > 0 Then 
			uo.UseType(FishType) 
			wait(500) 
		Else 
			uo.FindType( FishType, -1, Chest )
			If UO.FindCount() == 0 Then 	
				uo.Print("Нету больше жрачки :(") 
				return
			Endif 
			uo.Grab( Str( Amount ), 'finditem' ) 
			wait( 2000 ) 
		End If 
	Until uo.InJournal("simply too full|stuffed|think") 
End Sub
Sub Reconnector() 
	var ReconnectTime, RFlag 
	ReconnectTime = '0' 
	RFlag = 1 
	Repeat 
		While (UO.ObjAtLayer('Bpack') == '') 
			If RFlag Then 
				ReconnectTime = MakeTime() 
				RFlag = 0 
			endif 
			Wait(20000) # WorldSave Protection 
			UO.Say('') 
			Wait(3000) 
			UO.Say('') 
			Wait(3000) 
			UO.Say('') 
			Wait(3000) 
			UO.LDblClick(357,164) 
			UO.LClick(616,459) 
			Wait(3000)        
		Wend
		Wait(3000) 
		If (RFlag == 0) and (ReconnectTime <> '0') Then 
			
			uo.TextOpen() 
			uo.TextPrint('Disconnected & Reconnected @ '+ReconnectTime) 
			RFlag = 1 
			ReconnectTime = '0' 
		End If 
	Until false 
end sub 
Sub MakeTime() 
	VAR D, T, Ret, i 
	Ret = STR(UO.Time()) 
	T = "" 
	For i = 0 To Len(Ret) 
		T = Ret[Len(Ret)-i] + T 
		If (I == 2) OR (I == 4) Then 
			T = ":" + T 
		EndIf 
	Next 
	Ret = STR(UO.Date()) 
	D = "" 
	For i = 0 To Len(Ret) 
		D = Ret[Len(Ret)-i] + D 
		If (I == 2) OR (I == 4) Then 
			D = "." + D 
		EndIf 
	Next    
	Ret = T + " @ " + D 
	RETURN Ret 
End Sub
sub TerminateAll()
	uo.Exec('Terminate All')
End Sub
NonStop69
Posts: 4
Joined: 2011-01-30 00:20:20

Re: Начала вылетать ошибка при реконнекте в игру

Post by NonStop69 »

Проблему решил. Причина была все таки в многоядерном проце.

В решение помогла вот эта тема(спасибо автору):

https://yoko.uokit.com/viewtopic.php?f=12&t=13028

Кинул фаил в инжу и запускаю с него, всё работает и реконнектит. 8)
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Начала вылетать ошибка при реконнекте в игру

Post by Mirage »

эта утилита как раз и делает:
1) попробуй после запуска клиента выставлять нагрузку на одно ядро процессора.
CTRL+Shift+ESC -> Процессы -> Правой кнопкой мышки на client.exe Задать соответствие -> оставить одну галку на любом ядре.
:mrgreen:

цифра в конце названия ярлыка запускает клиент на первом или втором ядре.
NonStop69
Posts: 4
Joined: 2011-01-30 00:20:20

Re: Начала вылетать ошибка при реконнекте в игру

Post by NonStop69 »

ALT+CTRL+DEL процессы :)

CPU 0
CPU 1

Ставил галочки, эффекта ноль. А вот утилитка помогла, хотя и делает то же самое.
В любом случае спасибо парни)

Еще один вопрос возник.
- Скрипт лутает только по 2 вещи и приходится жать с паузой в 1-2 сек. Появляется надпись "invalid object:0" Так и должно быть или есть скрипт который полностью все вещи из списка тащит? Посоветуйте :)

Скрипт:

Code: Select all

sub loot()
VAR WaitTime=500
VAR Exit=1, i
DIM Loot[8]
Loot[1]="0x0EED"
Loot[2]="0x1718" 
Loot[3]="0x170B" 
Loot[4]="0x0E75"
Loot[5]="0x0F91"
Loot[6]="0x1EFD"
Loot[7]="0x0F78"
Loot[8]="0x1516"


wait (500)
for i = 1 to 8
UO.FindType(Loot[i],"-5","lastcorpse")
UO.Grab("0","finditem")
next
end sub
Post Reply