You are not logged in.
Pages: 1
Всем привет форумчане! Подскажите, можно-ли в SCM или в CLEO сделать сихранизатор времени? Т.е если время компьютера например 13:29 то, и в игре тоже 13:29. Чтобы было реальное время.
Offline
Offline
Появилась проблема, что когда я ставлю create_thread, игра вылетает. Вот код самой функции получения локального времени компьютера.
:GetLocalTime
thread "GET_LOCAL_TIME"
wait 0
0AA2: 0@ = load_library "CLEO/kernel32.dll"
0AA4: 1@ = get_proc_address "GetLocalTime" library 0@
0AC8: 2@ = alloc mem 16
0AA5: call 1@ params 1 pop 0 2@
0085: 3@ = 2@
0A8D: $LOCAL_YEAR = read_memory 3@ size 2 virtual_protect 0 // wYear
3@ += 2
0A8D: $LOCAL_MONTH = read_memory 3@ size 2 virtual_protect 0 // wMonth
3@ += 2
0A8D: $LOCAL_DAY_OFF_WEAK = read_memory 3@ size 2 virtual_protect 0 // wDayOfWeek
3@ += 2
0A8D: $LOCAL_DAY = read_memory 3@ size 2 virtual_protect 0 // wDay
3@ += 2
0A8D: $LOCAL_HOUR = read_memory 3@ size 2 virtual_protect 0 // wHour
3@ += 2
0A8D: $LOCAL_MINUTE = read_memory 3@ size 2 virtual_protect 0 // wMinute
3@ += 2
0A8D: $LOCAL_SECOND = read_memory 3@ size 2 virtual_protect 0 // wSecond
3@ += 2
0A8D: $LOCAL_MILLI_SECONDS = read_memory 3@ size 2 virtual_protect 0 // wMilliseconds
0AC9: free_allocated_memory 3@
end_thread
И вот сам участок кода вывода текста времени:
:FPS_COUNTER_360
0342: set_text_draw_centered 1
03E0: draw_text_behind_textures 1
0340: set_text_draw_RGBA 180 180 180 $DEBUG_ALPHA
081C: draw_text_outline 1 RGBA 0 0 0 $DEBUG_ALPHA
033F: set_text_draw_letter_size $DEBUG_TEXT_SIZE_X $DEBUG_TEXT_SIZE_Y
if and
$LOCAL_HOUR > 9
$LOCAL_MINUTE > 9
jf @FPS_COUNTER_455
045B: draw_text_2numbers 545.0 3.0 GXT 'DBG23' numbers $LOCAL_HOUR $LOCAL_MINUTE
:FPS_COUNTER_455
if and
not $LOCAL_HOUR > 9
$LOCAL_MINUTE > 9
jf @FPS_COUNTER_507
045B: draw_text_2numbers 545.0 3.0 GXT 'DBG20' numbers $LOCAL_HOUR $LOCAL_MINUTE
:FPS_COUNTER_507
if and
not $LOCAL_HOUR > 9
not $LOCAL_MINUTE > 9
jf @FPS_COUNTER_559
045B: draw_text_2numbers 545.0 3.0 GXT 'DBG21' numbers $LOCAL_HOUR $LOCAL_MINUTE
:FPS_COUNTER_559
if and
$LOCAL_HOUR > 9
not $LOCAL_MINUTE > 9
jf @FPS_COUNTER_611
045B: draw_text_2numbers 545.0 3.0 GXT 'DBG22' numbers $LOCAL_HOUR $LOCAL_MINUTE
Как проблему с вылетом решить?
Offline
Внииательно посмотрите на опкод 0АА2, вы просто загружаете не существующую библиотеку kernel32.dll вам надо найти этот DLL файл в инете или по пути C:/Windows/System32 и кинуть его в папку CLEO либо в опкоде уберите папку CLEO просто оставьте "kernel32.dll"
Offline
kernel32.dll хранится в папке CLEO, но игра вылетает после create_thread...
Offline
Появилась проблема, что когда я ставлю create_thread, игра вылетает. Вот код самой функции получения локального времени компьютера.
:GetLocalTime
thread "GET_LOCAL_TIME"
wait 0
0AA2: 0@ = load_library "CLEO/kernel32.dll"
0AA4: 1@ = get_proc_address "GetLocalTime" library 0@
0AC8: 2@ = alloc mem 16
0AA5: call 1@ params 1 pop 0 2@
0085: 3@ = 2@
0A8D: $LOCAL_YEAR = read_memory 3@ size 2 virtual_protect 0 // wYear
3@ += 2
0A8D: $LOCAL_MONTH = read_memory 3@ size 2 virtual_protect 0 // wMonth
3@ += 2
0A8D: $LOCAL_DAY_OFF_WEAK = read_memory 3@ size 2 virtual_protect 0 // wDayOfWeek
3@ += 2
0A8D: $LOCAL_DAY = read_memory 3@ size 2 virtual_protect 0 // wDay
3@ += 2
0A8D: $LOCAL_HOUR = read_memory 3@ size 2 virtual_protect 0 // wHour
3@ += 2
0A8D: $LOCAL_MINUTE = read_memory 3@ size 2 virtual_protect 0 // wMinute
3@ += 2
0A8D: $LOCAL_SECOND = read_memory 3@ size 2 virtual_protect 0 // wSecond
3@ += 2
0A8D: $LOCAL_MILLI_SECONDS = read_memory 3@ size 2 virtual_protect 0 // wMilliseconds
0AC9: free_allocated_memory 3@
end_threadИ вот сам участок кода вывода текста времени:
:FPS_COUNTER_360
0342: set_text_draw_centered 1
03E0: draw_text_behind_textures 1
0340: set_text_draw_RGBA 180 180 180 $DEBUG_ALPHA
081C: draw_text_outline 1 RGBA 0 0 0 $DEBUG_ALPHA
033F: set_text_draw_letter_size $DEBUG_TEXT_SIZE_X $DEBUG_TEXT_SIZE_Y
if and
$LOCAL_HOUR > 9
$LOCAL_MINUTE > 9
jf @FPS_COUNTER_455
045B: draw_text_2numbers 545.0 3.0 GXT 'DBG23' numbers $LOCAL_HOUR $LOCAL_MINUTE:FPS_COUNTER_455
if and
not $LOCAL_HOUR > 9
$LOCAL_MINUTE > 9
jf @FPS_COUNTER_507
045B: draw_text_2numbers 545.0 3.0 GXT 'DBG20' numbers $LOCAL_HOUR $LOCAL_MINUTE:FPS_COUNTER_507
if and
not $LOCAL_HOUR > 9
not $LOCAL_MINUTE > 9
jf @FPS_COUNTER_559
045B: draw_text_2numbers 545.0 3.0 GXT 'DBG21' numbers $LOCAL_HOUR $LOCAL_MINUTE:FPS_COUNTER_559
if and
$LOCAL_HOUR > 9
not $LOCAL_MINUTE > 9
jf @FPS_COUNTER_611
045B: draw_text_2numbers 545.0 3.0 GXT 'DBG22' numbers $LOCAL_HOUR $LOCAL_MINUTEКак проблему с вылетом решить?
Непонимаю этот кусок кода. Напиши то что у тебя в исходнике скрипта. Боюсь, то что написано здесь и в таком порядке у тебя всяко должно крашить.
Offline
И в CLEO команда end_thread не пишется
Offline
Всем привет форумчане! Подскажите, можно-ли в SCM или в CLEO сделать сихранизатор времени? Т.е если время компьютера например 13:29 то, и в игре тоже 13:29. Чтобы было реальное время.
В виде плагина пойдёт? Alexander ещё в 2007-м написал.
Offline
Спасибо за плагин, но хотелось бы сделать так, чтобы отображало время компьютера, а не изменяло игровое время.
Offline
Goldfish, вот полный код получения времени:
:FPS_COUNTER thread 'FPS_COUNTER' 2@ = 30 $DEBUG_TEXT_SIZE_X = 0.4 $DEBUG_TEXT_SIZE_Y = 1.15 $DEBUG_ALPHA = 0 $DEBUG_ALPHA_IN_FLAG = 0 :FPS_COUNTER_60 1@ = 0 32@ = 0 :FPS_COUNTER_74 wait 0 if $DEBUG_ALPHA_IN_FLAG == 0 jf @FPS_COUNTER_129 $DEBUG_ALPHA += 15 if $DEBUG_ALPHA == 255 jf @FPS_COUNTER_129 $DEBUG_ALPHA_IN_FLAG = 1 :FPS_COUNTER_129 if $FPS_ENABLED == 1 jf @FPS_COUNTER_74 1@ += 1 03F0: enable_text_draw 1 0342: set_text_draw_centered 1 03E0: draw_text_behind_textures 1 0340: set_text_draw_RGBA 180 180 180 $DEBUG_ALPHA 081C: draw_text_outline 1 RGBA 0 0 0 $DEBUG_ALPHA 033F: set_text_draw_letter_size $DEBUG_TEXT_SIZE_X $DEBUG_TEXT_SIZE_Y if 2@ > 27 jf @FPS_COUNTER_269 045A: draw_text_1number 600.0 3.0 GXT 'DBG18' number 2@ :FPS_COUNTER_269 if and not 2@ >= 27 2@ > 22 jf @FPS_COUNTER_318 045A: draw_text_1number 600.0 3.0 GXT 'DBG24' number 2@ :FPS_COUNTER_318 if not 2@ >= 22 jf @FPS_COUNTER_360 045A: draw_text_1number 600.0 3.0 GXT 'DBG25' number 2@ :FPS_COUNTER_360 0342: set_text_draw_centered 1 03E0: draw_text_behind_textures 1 0340: set_text_draw_RGBA 180 180 180 $DEBUG_ALPHA 081C: draw_text_outline 1 RGBA 0 0 0 $DEBUG_ALPHA 033F: set_text_draw_letter_size $DEBUG_TEXT_SIZE_X $DEBUG_TEXT_SIZE_Y if and $LOCAL_HOUR > 9 $LOCAL_MINUTE > 9 jf @FPS_COUNTER_455 045B: draw_text_2numbers 545.0 3.0 GXT 'DBG23' numbers $LOCAL_HOUR $LOCAL_MINUTE :FPS_COUNTER_455 if and not $LOCAL_HOUR > 9 $LOCAL_MINUTE > 9 jf @FPS_COUNTER_507 045B: draw_text_2numbers 545.0 3.0 GXT 'DBG20' numbers $LOCAL_HOUR $LOCAL_MINUTE :FPS_COUNTER_507 if and not $LOCAL_HOUR > 9 not $LOCAL_MINUTE > 9 jf @FPS_COUNTER_559 045B: draw_text_2numbers 545.0 3.0 GXT 'DBG21' numbers $LOCAL_HOUR $LOCAL_MINUTE :FPS_COUNTER_559 if and $LOCAL_HOUR > 9 not $LOCAL_MINUTE > 9 jf @FPS_COUNTER_611 045B: draw_text_2numbers 545.0 3.0 GXT 'DBG22' numbers $LOCAL_HOUR $LOCAL_MINUTE 00C0: set_current_time_hours_to $LOCAL_HOUR minutes_to $LOCAL_MINUTE :FPS_COUNTER_611 0A8D: 10@ = read_memory 12045156 size 4 virtual_protect 0 11@ = 999.0 006B: 11@ *= 10@ // (float) 0092: 11@ = float 11@ to_integer 0342: set_text_draw_centered 1 03E0: draw_text_behind_textures 1 0340: set_text_draw_RGBA 180 180 180 $DEBUG_ALPHA 081C: draw_text_outline 1 RGBA 0 0 0 $DEBUG_ALPHA 033F: set_text_draw_letter_size $DEBUG_TEXT_SIZE_X $DEBUG_TEXT_SIZE_Y 045B: draw_text_2numbers 45.0 3.0 GXT 'DBG19' numbers $BUILD_VERSION1 $BUILD_VERSION2 if 001D: 32@ > 11@ // (int) jf @FPS_COUNTER_74 03F0: enable_text_draw 1 0342: set_text_draw_centered 1 03E0: draw_text_behind_textures 1 0340: set_text_draw_RGBA 180 180 180 $DEBUG_ALPHA 081C: draw_text_outline 1 RGBA 0 0 0 $DEBUG_ALPHA 033F: set_text_draw_letter_size $DEBUG_TEXT_SIZE_X $DEBUG_TEXT_SIZE_Y if 2@ > 27 jf @FPS_COUNTER_829 045A: draw_text_1number 600.0 3.0 GXT 'DBG18' number 2@ :FPS_COUNTER_829 if and not 2@ >= 27 2@ > 22 jf @FPS_COUNTER_878 045A: draw_text_1number 600.0 3.0 GXT 'DBG24' number 2@ :FPS_COUNTER_878 if not 2@ >= 22 jf @FPS_COUNTER_920 045A: draw_text_1number 600.0 3.0 GXT 'DBG25' number 2@ :FPS_COUNTER_920 0342: set_text_draw_centered 1 03E0: draw_text_behind_textures 1 0340: set_text_draw_RGBA 180 180 180 $DEBUG_ALPHA 081C: draw_text_outline 1 RGBA 0 0 0 $DEBUG_ALPHA 033F: set_text_draw_letter_size $DEBUG_TEXT_SIZE_X $DEBUG_TEXT_SIZE_Y if and $LOCAL_HOUR > 9 $LOCAL_MINUTE > 9 jf @FPS_COUNTER_1015 045B: draw_text_2numbers 545.0 3.0 GXT 'DBG23' numbers $LOCAL_HOUR $LOCAL_MINUTE :FPS_COUNTER_1015 if and not $LOCAL_HOUR >= 9 $LOCAL_MINUTE > 9 jf @FPS_COUNTER_1067 045B: draw_text_2numbers 545.0 3.0 GXT 'DBG20' numbers $LOCAL_HOUR $LOCAL_MINUTE :FPS_COUNTER_1067 if and not $LOCAL_HOUR >= 9 not $LOCAL_MINUTE >= 9 jf @FPS_COUNTER_1119 045B: draw_text_2numbers 545.0 3.0 GXT 'DBG21' numbers $LOCAL_HOUR $LOCAL_MINUTE :FPS_COUNTER_1119 if and $LOCAL_HOUR > 9 not $LOCAL_MINUTE >= 9 jf @FPS_COUNTER_1171 045B: draw_text_2numbers 545.0 3.0 GXT 'DBG22' numbers $LOCAL_HOUR $LOCAL_MINUTE 00C0: set_current_time_hours_to $LOCAL_HOUR minutes_to $LOCAL_MINUTE :FPS_COUNTER_1171 0342: set_text_draw_centered 1 03E0: draw_text_behind_textures 1 0340: set_text_draw_RGBA 180 180 180 $DEBUG_ALPHA 081C: draw_text_outline 1 RGBA 0 0 0 $DEBUG_ALPHA 033F: set_text_draw_letter_size $DEBUG_TEXT_SIZE_X $DEBUG_TEXT_SIZE_Y 045B: draw_text_2numbers 45.0 3.0 GXT 'DBG19' numbers $BUILD_VERSION1 $BUILD_VERSION2 0085: 2@ = 1@ // (int) jump @FPS_COUNTER_60
Вот текст из DBG23:
~1~:~1~
Текст из DBG20:
0~1~:~1~
Текст из DBG21:
0~1~:0~1~
Текст из DBG22:
~1~:0~1~
Offline
#сложна
Рекомендую выяснить причину тупым способом, так сказать точками остановами.
код ... 0AD0: debugMsg "point_01" time 500 wait 500 код ... 0AD0: debugMsg "point_02" time 500 wait 500
после какого текста крашнит после того и ищи причину вылета.
Так я быстро вычислял проблему вплоть до одного проблемного опкода
p.s
т.к. у тебя в коде глобальные переменные это должно быть только в scm
Last edited by Goldfish (15-08-2017 10:04)
Offline
Pages: 1