#1 27-07-2017 17:28

Nikita592
Registered: 14-06-2017
Posts: 36

Время компьютера в игре

Всем привет форумчане! Подскажите, можно-ли в SCM или в CLEO сделать сихранизатор времени? Т.е если время компьютера например 13:29 то, и в игре тоже 13:29. Чтобы было реальное время.

Offline

#2 28-07-2017 03:02

Chel555
Registered: 25-07-2015
Posts: 38

Re: Время компьютера в игре

Offline

#3 30-07-2017 10:34

Nikita592
Registered: 14-06-2017
Posts: 36

Re: Время компьютера в игре

Появилась проблема, что когда я ставлю 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

#4 30-07-2017 15:58

Chel555
Registered: 25-07-2015
Posts: 38

Re: Время компьютера в игре

Внииательно посмотрите на опкод  0АА2, вы просто загружаете не существующую библиотеку kernel32.dll вам надо найти этот DLL файл в инете или по пути C:/Windows/System32 и кинуть его в папку CLEO либо в опкоде уберите папку CLEO просто оставьте "kernel32.dll"

Offline

#5 30-07-2017 16:48

Nikita592
Registered: 14-06-2017
Posts: 36

Re: Время компьютера в игре

kernel32.dll хранится в папке CLEO, но игра вылетает после create_thread...  cry

Offline

#6 01-08-2017 20:49

Goldfish
From: Псков
Registered: 21-04-2015
Posts: 177
Website

Re: Время компьютера в игре

Nikita592 wrote:

Появилась проблема, что когда я ставлю 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

#7 01-08-2017 20:51

Goldfish
From: Псков
Registered: 21-04-2015
Posts: 177
Website

Re: Время компьютера в игре

И в CLEO команда end_thread не пишется

Offline

#8 02-08-2017 05:23

kenking
From: Казахстан
Registered: 28-06-2010
Posts: 253

Re: Время компьютера в игре

Nikita592 wrote:

Всем привет форумчане! Подскажите, можно-ли в SCM или в CLEO сделать сихранизатор времени? Т.е если время компьютера например 13:29 то, и в игре тоже 13:29. Чтобы было реальное время.

В виде плагина пойдёт? Alexander ещё в 2007-м написал.

Offline

#9 14-08-2017 14:10

Nikita592
Registered: 14-06-2017
Posts: 36

Re: Время компьютера в игре

Спасибо за плагин, но хотелось бы сделать так, чтобы отображало время компьютера, а не изменяло игровое время.

Offline

#10 14-08-2017 14:17

Nikita592
Registered: 14-06-2017
Posts: 36

Re: Время компьютера в игре

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

#11 15-08-2017 10:02

Goldfish
From: Псков
Registered: 21-04-2015
Posts: 177
Website

Re: Время компьютера в игре

#сложна
Рекомендую выяснить причину тупым способом, так сказать точками остановами.

код
...
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

Board footer

Powered by FluxBB