Написал скрипт в оффлайн, а он не работает :(

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
eXXXtaSy
Posts: 12
Joined: 2004-08-20 12:19:49

Написал скрипт в оффлайн, а он не работает :(

Post by eXXXtaSy »

Написал скрипт в оффлайн, а он не работает :(
Ошибку выдает:
Unhandled exception in parser.

Че бы это значило? Ни строки где ошибка- ничего.
Сам скрипт:

sub skill()
VAR level = '3' ;Çäåñü óêàçàòü ñâîé óðîâåíü
VAR skill
;Óáðàòü êîììåíòàðèé ïåðåä ïðåäìåòîì, ÷òî åñòü â áåêïàêå. (îñòàëüíûì ïîñòàâèòü êîììåíòàðèé)
;(Åñëè ïîíàäîáèëîñü äîáàâèòü ñâîé ïðåäìåò (æåëàòåëüíî íüþáè) è îáÿçàòåëüíî èç îðóæèÿ èëè äîñïåõîâ.
; òî ïðîïèñàòü åãî ìîæíî çäåñü çà ìåñòî ÷åãî íèäü, óçíàòü íîìåð òèïà êîìàíäîé ,info. Òàì Type=0xXXXX ýòî íàäî âïèñàòü)
; Ecëè íå äîãíàë, î ÷åì ÿ- íå òðîæü..Íéäè íüþáè äàãåð è íå ðàçðóøàé ìîçã!

VAR titem = '0x0F51' ; Dager
;VAR titem = '' ; Butcher knife
;VAR titem = '' ; Katana


;Çäåñü óêàçàòü ñâîé ïðåäåë ïî óìåíèÿì â çàâèñèìîñòè îò êëàññà.
;Åñëè êàêîé òî ñêèëë íå íóæíî êà÷àòü, ñòàâèì 0;

DIM skillcap[10]

skillcap[1]= '80' ;Anatomy
skillcap[2]= '80' ;Arms Lore
skillcap[3]= '100' ;Detect Hidden
skillcap[4]= '100' ;Evaluating Intelligence
skillcap[5]= '100' ;Forensic Evaluation
skillcap[6]= '100' ;Hiding
skillcap[7]= '120' ;Stealth
skillcap[8]= '100' ;Item Identification
skillcap[9]= '0' ; Spirit Speak
skillcap[10]= '100' ;Tracking

DIM sel[10]
;Çäåñü óêàçàòü î÷åðåäíîñòü ïðîêà÷êè.
;Ó ìåíÿ íàñòðîåííî äëÿ ðàíãåðà. Óêàçàòü íàäî âñå, äàæå åñëè íå íóæíà ïðîêà÷êà :)

sel[1] = '1' ;1 - Anatomy
sel[2] = '3' ;2 - Arms Lore
sel[3] = '7' ;3 - Detect Hidden
sel[4] = '6' ;4 - Evaluating Intelligence
sel[5] = '10' ;5 - Forensic Evaluation
sel[6] = '8' ;6 - Hiding
sel[7] = '4' ;7 - Stealth
sel[9] = '5' ;8 - Item Identification
sel[9] = '2' ;9 - Spirit Speak
sel[10] = '9' ;10- Tracking

;Äàëüøå íå òðîãàòü.
If level == 0 Then
FOR VAR cbl = 1 TO cbl = 10
If skillcap[cbl] => '90' Then
skillcap[cbl] = '90'
EndIf
NEXT
If level == 1 Then
FOR VAR cbl = 1 TO cbl = 10
If skillcap[cbl] => '98' Then
skillcap[cbl] = '98'
EndIf
NEXT
If level == 2 Then
FOR VAR cbl = 1 TO cbl = 10
If skillcap[cbl] => '105' Then
skillcap[cbl] = '105'
EndIf
NEXT

r=1
selectskill:
If sel[r] == 1 OR sel[1] == 4 OR sel[1] == 5 Then
goto self
EndIf
If sel[r] == 2 OR sel[1] == 8 Then
goto item
EndIf
If sel[r] == 3 OR sel[1] == 9 OR sel[1] == 6 Then
goto passiv
EndIf
If sel[r] == 7 Then
goto stealth
EndIf
If sel[r] == 10 Then
goto tracking
EndIf

;\\\\\ S e l f g o t o \\\\

self:
If sel[r] == 1 Then
If uo.SkillVal('Anatomy') >= skillcap[1] Then
r = r + 1
goto selectskill
EndIf
skill = 'Anatomy'
sc = skillcap[1]
EndIf
If sel[r] == 4 Then
If uo.SkillVal('Evaluating Intelligence') >= skillcap[4] Then
r = r + 1
goto selectskill
EndIf
skill = 'Evaluating Intelligence'
sc = skillcap[4]
EndIf
If sel[r] == 5 Then
If uo.SkillVal('Forensic Evaluation') >= skillcap[5] Then
r = r + 1
goto selectskill
EndIf
skill = 'Forensic Evaluation'
sc = skillcap[5]
EndIf
ct = 1
while ct == 1
uo.waittargetself()
uo.useskill(skill)
wait(10100)
If UO.SkillVal(skill) >= sc Then
r = r + 1
ct == 0
EndIf
wend
goto selectskill

;\\\\\ I t e m g o t o \\\\

item:
If sel[r] == 2 Then
If uo.SkillVal('Arms Lore') >= skillcap[2] Then
r = r + 1
goto selectskill
EndIf
skill = 'Arms Lore'
sc = skillcap[2]
EndIf
If sel[r] == 8 Then
If uo.SkillVal('Item Identification') >= skillcap[8] Then
r = r + 1
goto selectskill
EndIf
skill = 'Item Identification'
sc = skillcap[8]
EndIf
ct = 1
while ct == 1
uo.waittargettype(titem)
uo.useskill(skill)
If UO.SkillVal(skill) >= sc Then
r = r + 1
ct == 0
EndIf
wait(10100)
wend
goto selectskill

;\\\\\ P a s s i v g o t o \\\\

passiv:
If sel[r] == 3 Then
If uo.SkillVal('Detect Hidden') >= skillcap[3] Then
r = r + 1
goto selectskill
EndIf
skill = 'Detect Hidden'
sc = skillcap[3]
EndIf
If sel[r] == 6 Then
If uo.SkillVal('Hiding') >= skillcap[6] Then
r = r + 1
goto selectskill
EndIf
skill = 'Hiding'
sc = skillcap[6]
EndIf
If sel[r] == 9 Then
If uo.SkillVal('Spirit Speak') >= skillcap[9] Then
r = r + 1
goto selectskill
EndIf
skill = 'Spirit Speak'
sc = skillcap[9]
EndIf
ct = 1
while ct == 1
uo.useskill(skill)
If UO.SkillVal(skill) >= sc Then
r = r + 1
ct == 0
EndIf
wait(10100)
wend
goto selectskill

;\\\\\\ S t e a l t h g o t o \\\\
stealth:
If UO.SkillVal('Stealth') >= skillcap[7] Then
r = r + 1
goto selectskill
EndIf

If uo.Hidden() == FALSE Then
uo.useskill('Hiding')
wait(6100)
goto stealth
EndIf
uo.useskill('Stealth')
wait(6100)

;\\\\\\ T r a c k i n g g o t o \\\\
tracking:
If UO.SkillVal('Tracking') >= skillcap[10] Then
r = r + 1
goto selectskill
EndIf
UO.useskill('Tracking')
uo.cancelmenu
end sub
eXXXtaSy
Posts: 12
Joined: 2004-08-20 12:19:49

Post by eXXXtaSy »

извеняюсь за русский, я под linux работаю.
eXXXtaSy
Posts: 12
Joined: 2004-08-20 12:19:49

Post by eXXXtaSy »

Сразу изменил:
If level == 0 Then
FOR VAR cbl = 1 TO cbl = 10
If skillcap[cbl] => '90' Then
skillcap[cbl] = '90'
NEXT
EndIf

If level == 1 Then
FOR VAR cbl = 1 TO cbl = 10
If skillcap[cbl] => '98' Then
skillcap[cbl] = '98'
NEXT
EndIf

If level == 2 Then
FOR VAR cbl = 1 TO cbl = 10
If skillcap[cbl] => '105' Then
skillcap[cbl] = '105'
NEXT

не помогло
EndIf
AGRS
Expert!
Posts: 1007
Joined: 2004-04-04 21:40:09
Contact:

Post by AGRS »

Наиболее вероятно что ты одной из функций передал такие параметры, что в ней произошел сбой.
Постарайся обнаружить на выполнении какой строки скрипт выпадает и проверь ее параметра. Вплоть до того что через каждую строку пиши UO.Print('1')
UO.Print('2')
UO.Print('3') и так далее.
eXXXtaSy
Posts: 12
Joined: 2004-08-20 12:19:49

Post by eXXXtaSy »

DIM skillcap[10]

skillcap[1]= '80' ;Anatomy
skillcap[2]= '80' ;Arms Lore
skillcap[3]= '100' ;Detect Hidden
skillcap[4]= '100' ;Evaluating Intelligence
skillcap[5]= '100' ;Forensic Evaluation
skillcap[6]= '100' ;Hiding
skillcap[7]= '120' ;Stealth
skillcap[8]= '100' ;Item Identification
skillcap[9]= '0' ; Spirit Speak
skillcap[10]= '100' ;Tracking
перед этим работает, после нет
Че тут не верно?
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

eXXXtaSy wrote:DIM skillcap[10]

skillcap[1]= '80' ;Anatomy
skillcap[2]= '80' ;Arms Lore
skillcap[3]= '100' ;Detect Hidden
skillcap[4]= '100' ;Evaluating Intelligence
skillcap[5]= '100' ;Forensic Evaluation
skillcap[6]= '100' ;Hiding
skillcap[7]= '120' ;Stealth
skillcap[8]= '100' ;Item Identification
skillcap[9]= '0' ; Spirit Speak
skillcap[10]= '100' ;Tracking
перед этим работает, после нет
Че тут не верно?


Размерность массива считается с 0. То есть в данному случае у тебя размерность массива 11. Просто ты не назначаешь ничего элементу номер 0, но это не значит что его нету. Сделай:
DIM skillcap[11]
eXXXtaSy
Posts: 12
Joined: 2004-08-20 12:19:49

Post by eXXXtaSy »

Это первая редакия.. я её не правил.
Вот что пробывал:
DIM skillcap[11]
skillcap[0]= '0'
UO.Print('1')

не пропичатал 1
пробывал и
skillcap[0]= 0
eXXXtaSy
Posts: 12
Joined: 2004-08-20 12:19:49

Post by eXXXtaSy »

UO.Print('111')
DIM skillcap[11]
UO.Print('222')
skillcap[0] = 0
UO.Print('333')

прошло 111, 222
skillcap[0] = 0 - не верно
пробовал и с '0' и с "0", а как правильно?
eXXXtaSy
Posts: 12
Joined: 2004-08-20 12:19:49

Post by eXXXtaSy »

Кто нидь знает, что это????????
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post by Yoko »

вообщето выглядит нормально
вот тест который у меня работает

Code: Select all

sub test()
dim arr[4]
arr[0]=0
arr[1]="000"
arr[2]=17
arr[3]="17"

uo.print(str(arr[0]))
uo.print(arr[1])
uo.print(str(arr[2]))
uo.print(arr[3])
end sub


учти что DIM желательно должен стоять до "рабочих" операторов типа uo.print
Post Reply