Вопросы по CLEO-скриптингу

iTz_WEEZY

Известный
298
85
Что-то я тут кодил и наговнокодил
вроде бы делаю всё правильно(нет)
Хочу сделать диалог лист с настройкой из INI, но что то так и не получается
раньше при запуске создавался ini и сразу-же Crash, сейчас всё переписал и не крэшит но проблемы всё же есть.
при компиляции пишет метка '''' не найдена
CLEO:
{$CLEO .cs}

//-------------MAIN---------------
0000:
0662: printstring "~~~~~~~~~~~~~~~~~~~~~~~"
0662: printstring "CLEO"
0662: printstring "~~~~~~~~~~~~~~~~~~~~~~~"


:Fake_43                        

wait 100
   SAMP.Available
else_jump @Fake_43
wait 11000

//////////////////////////////////////////////////////////////
0AF1: write_int 5000 to_ini_file "CLEO\FakeStyle.ini" section "Box_Style" key "Left"
0AF1: write_int 0 to_ini_file "CLEO\FakeStyle.ini" section "Box_Style" key "Total"
0AF1: write_int 5000 to_ini_file "CLEO\FakeStyle.ini" section "Kong-Fu" key "Left"
0AF1: write_int 0 to_ini_file "CLEO\FakeStyle.ini" section "Kong-Fu" key "Total"
0AF1: write_int 5000 to_ini_file "CLEO\FakeStyle.ini" section "Kick-Box" key "Left"
0AF1: write_int 0 to_ini_file "CLEO\FakeStyle.ini" section "Kick-Box" key "Total"
0AF1: write_int 0 to_ini_file "CLEO\FakeStyle.ini" section "Endurance" key "Endurance"
0AF3: write_float 1.0 to_ini_file "CLEO\FakeStyle.ini" section "Endurance" key "Total"
//////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////
0AC8: 1@ = allocate_memory_size 10   
0AC8: 2@ = allocate_memory_size 10          
0AC8: 3@ = allocate_memory_size 10
0AC8: 4@ = allocate_memory_size 10
0AC8: 5@ = allocate_memory_size 10
0AC8: 6@ = allocate_memory_size 10
0AC8: 7@ = allocate_memory_size 10
0AC8: 8@ = allocate_memory_size 10
//////////////////////////////////////////////////////////////


chatmsg "Fake stats loaded use /fstats" -1
0B34: samp register_client_command "fstats" to_label @Fake_210

:Fake_199
wait 0
jump @Fake_199

:Fake_210
wait 0
0AC6: 33@ = label @Fake_211 offset
0B3B: samp show_dialog id 1 caption "{FF0000}Test228" text 33@ button_1 "Ок" button_2 "" style 0 //-Тут начинается сам диалог        
0B43: samp cmd_ret

:Fake_211
//////////////////////////////////////////////////////////////
if
0AAB: file_exists "CLEO\FakeStyle.ini"
THEN
0AF0: 1@ = get_int_from_ini_file "CLEO\FakeStyle.ini" section "Box_Style" key "Left"
0AF0: 2@ = get_int_from_ini_file "CLEO\FakeStyle.ini" section "Box_Style" key "Total"
0AF0: 3@ = get_int_from_ini_file "CLEO\FakeStyle.ini" section "Kong-Fu" key "Left"
0AF0: 4@ = get_int_from_ini_file "CLEO\FakeStyle.ini" section "Kong-Fu" key "Total"
0AF0: 5@ = get_int_from_ini_file "CLEO\FakeStyle.ini" section "Kick-Box" key "Left"
0AF0: 6@ = get_int_from_ini_file "CLEO\FakeStyle.ini" section "Kick-Box" key "Total"
0AF0: 7@ = get_int_from_ini_file "CLEO\FakeStyle.ini" section "Endurance" key "Endurance"
0AF2: 8@ = get_float_from_ini_file "CLEO\FakeStyle.ini" section "Endurance" key "Total"
else
0AF1: write_int 5000 to_ini_file "CLEO\FakeStyle.ini" section "Box_Style" key "Left"
0AF1: write_int 0 to_ini_file "CLEO\FakeStyle.ini" section "Box_Style" key "Total"
0AF1: write_int 5000 to_ini_file "CLEO\FakeStyle.ini" section "Kong-Fu" key "Left"
0AF1: write_int 0 to_ini_file "CLEO\FakeStyle.ini" section "Kong-Fu" key "Total"
0AF1: write_int 5000 to_ini_file "CLEO\FakeStyle.ini" section "Kick-Box" key "Left"
0AF1: write_int 0 to_ini_file "CLEO\FakeStyle.ini" section "Kick-Box" key "Total"
0AF1: write_int 0 to_ini_file "CLEO\FakeStyle.ini" section "Endurance" key "Endurance"
0AF3: write_float 1.0 to_ini_file "CLEO\FakeStyle.ini" section "Endurance" key "Total"
//////////////////////////////////////////////////////////////

   

hex
"{33CCFF}Боксёрский стиль боя:\n"
    "{FFFFFF}- До преобладания стиля осталось %o ударов\n" 1@
    "{FFFFFF}- Для включения стиля: /box\n"
    "{FFFFFF}- Всего набито: %o\n" 2@
    "\n"
    "{33CCFF}Конг-Фу стиль боя:\n"
    "{FFFFFF}- До преобладания стиля осталось %o ударов\n" 3@
    "{FFFFFF}- Для включения стиля: /kongfu\n"
    "{FFFFFF}- Всего набито: %o\n" 4@
    "\n"                            
    "{33CCFF}Кик-боксёрский стиль боя:\n"
    "{FFFFFF}- До преобладания стиля осталось %o ударов\n" 5@
    "{FFFFFF}- Для включения стиля: /kickbox\n"
    "{FFFFFF}- Всего набито: %o\n" 6@
    "{FFFFFF}\n"
    "{33CCFF}Выносливость:     %d/5{FFFFFF} (%.1f)\n" 7@ 8@  
    "{FFFFFF}- Вы в отличной форме\0"
end
end
//////////////////////////////////////////////////////////////
0AC9: free_allocated_memory 1@
0AC9: free_allocated_memory 2@
0AC9: free_allocated_memory 3@
0AC9: free_allocated_memory 4@
0AC9: free_allocated_memory 5@
0AC9: free_allocated_memory 6@
0AC9: free_allocated_memory 7@
0AC9: free_allocated_memory 8@
//////////////////////////////////////////////////////////////
 

hnnssy

Известный
Друг
2,684
2,754
CLEO:
0AC6: 33@ = label @Fake_211 offset
0B3B: samp show_dialog id 1 caption "{FF0000}Test228" text 33@ button_1 "Ок" button_2 "" style 0 //-Тут начинается сам диалог       
0B43: samp cmd_ret

:Fake_211
//////////////////////////////////////////////////////////////
if
0AAB: file_exists "CLEO\FakeStyle.ini"
THEN
0AF0: 1@ = get_int_from_ini_file "CLEO\FakeStyle.ini" section "Box_Style" key "Left"
0AF0: 2@ = get_int_from_ini_file "CLEO\FakeStyle.ini" section "Box_Style" key "Total"
0AF0: 3@ = get_int_from_ini_file "CLEO\FakeStyle.ini" section "Kong-Fu" key "Left"
0AF0: 4@ = get_int_from_ini_file "CLEO\FakeStyle.ini" section "Kong-Fu" key "Total"
0AF0: 5@ = get_int_from_ini_file "CLEO\FakeStyle.ini" section "Kick-Box" key "Left"
0AF0: 6@ = get_int_from_ini_file "CLEO\FakeStyle.ini" section "Kick-Box" key "Total"
0AF0: 7@ = get_int_from_ini_file "CLEO\FakeStyle.ini" section "Endurance" key "Endurance"
0AF2: 8@ = get_float_from_ini_file "CLEO\FakeStyle.ini" section "Endurance" key "Total"
else
0AF1: write_int 5000 to_ini_file "CLEO\FakeStyle.ini" section "Box_Style" key "Left"
0AF1: write_int 0 to_ini_file "CLEO\FakeStyle.ini" section "Box_Style" key "Total"
0AF1: write_int 5000 to_ini_file "CLEO\FakeStyle.ini" section "Kong-Fu" key "Left"
0AF1: write_int 0 to_ini_file "CLEO\FakeStyle.ini" section "Kong-Fu" key "Total"
0AF1: write_int 5000 to_ini_file "CLEO\FakeStyle.ini" section "Kick-Box" key "Left"
0AF1: write_int 0 to_ini_file "CLEO\FakeStyle.ini" section "Kick-Box" key "Total"
0AF1: write_int 0 to_ini_file "CLEO\FakeStyle.ini" section "Endurance" key "Endurance"
0AF3: write_float 1.0 to_ini_file "CLEO\FakeStyle.ini" section "Endurance" key "Total"
//////////////////////////////////////////////////////////////

  

hex
"{33CCFF}Боксёрский стиль боя:\n"
    "{FFFFFF}- До преобладания стиля осталось %o ударов\n" 1@
    "{FFFFFF}- Для включения стиля: /box\n"
    "{FFFFFF}- Всего набито: %o\n" 2@
    "\n"
    "{33CCFF}Конг-Фу стиль боя:\n"
    "{FFFFFF}- До преобладания стиля осталось %o ударов\n" 3@
    "{FFFFFF}- Для включения стиля: /kongfu\n"
    "{FFFFFF}- Всего набито: %o\n" 4@
    "\n"                           
    "{33CCFF}Кик-боксёрский стиль боя:\n"
    "{FFFFFF}- До преобладания стиля осталось %o ударов\n" 5@
    "{FFFFFF}- Для включения стиля: /kickbox\n"
    "{FFFFFF}- Всего набито: %o\n" 6@
    "{FFFFFF}\n"
    "{33CCFF}Выносливость:     %d/5{FFFFFF} (%.1f)\n" 7@ 8@ 
    "{FFFFFF}- Вы в отличной форме\0"
end
end
//////////////////////////////////////////////////////////////
0AC9: free_allocated_memory 1@
0AC9: free_allocated_memory 2@
0AC9: free_allocated_memory 3@
0AC9: free_allocated_memory 4@
0AC9: free_allocated_memory 5@
0AC9: free_allocated_memory 6@
0AC9: free_allocated_memory 7@
0AC9: free_allocated_memory 8@
//////////////////////////////////////////////////////////////
ты там совсем в дверь уебался?
 
  • Нравится
Реакции: DarkP1xel

RedBoxWhite

Известный
337
27
Почему когда сканирую строку, например такую: [O] Vasya[323]: Всем привет, ребята!
Я её сканирую таким образом:
CLEO:
0AA5: call 0x8220AD num_params 6 pop 6 params 14@ 13@ 12@ 11@ "[O] %s %s %s %s" 10@
0AF8: "%s %s %s %s" 11@ 12@ 13@ 14@
Но если вместо "Всем привет, ребята!" будет "Всем привет!", то выдаёт просто пробел.
Как сделать, чтобы если в 14@ было просто пробел, то он его просто ставил.
Пробовал тип того, но это бред:
CLEO:
if 0C18: 0 = strstr string1 13@ string2 " "
then
0AF8: "%s %s %s" -1 11@ 12@ 13@
end
Искал, толком ничего не нашёл.
 

SR_team

like pancake
BH Team
4,729
6,389
Почему когда сканирую строку, например такую: [O] Vasya[323]: Всем привет, ребята!
Я её сканирую таким образом:
CLEO:
0AA5: call 0x8220AD num_params 6 pop 6 params 14@ 13@ 12@ 11@ "[O] %s %s %s %s" 10@
0AF8: "%s %s %s %s" 11@ 12@ 13@ 14@
Но если вместо "Всем привет, ребята!" будет "Всем привет!", то выдаёт просто пробел.
Как сделать, чтобы если в 14@ было просто пробел, то он его просто ставил.
Пробовал тип того, но это бред:
CLEO:
if 0C18: 0 = strstr string1 13@ string2 " "
then
0AF8: "%s %s %s" -1 11@ 12@ 13@
end
Искал, толком ничего не нашёл.
ну так добавь условие. в чем проблема?
 

Medvedko

Новичок
19
0
CLEO:
while true
if 19@ == 1
 then
  19@ = 0
  27@ = 0
  gosub @coord // 7@ 8@ 9@
      0B35: samp 27@ = get_last_command_params
      0AD4: 1@ = scan_string 27@ format " %i" 2@
        if 1@ == 1
          then
           0AFF: samp 33@ = car_handle_by_samp_vehicle_id 2@  
     end
  if 33@ <> 0
    then      
               00AA: store_car 33@ position_to 12@ 13@ 14@
               000E: 14@ -= 2
               Actor.PutAt($PLAYER_ACTOR, 12@, 13@, 14@)
               //крашит при попытке выставить любую задержку между между этих строк                        
               0AF9: samp say_msg "/clist 0"
               // 1 
               0B30: samp send_enter_vehicle 2@ as_passenger 0
               // 2
               072A: task_warp_char_into_car_as_driver $PLAYER_ACTOR car 33@
               wait 700
               099A: set_car 33@ collision_detection 1                                        
               Actor.PutAt($PLAYER_ACTOR, 338.21, 1945.87, 12.59)
                             
        end
end
 

Woofing Giraffe

Активный
402
49
CLEO:
while true
if 19@ == 1
then
  19@ = 0
  27@ = 0
  gosub @coord // 7@ 8@ 9@
      0B35: samp 27@ = get_last_command_params
      0AD4: 1@ = scan_string 27@ format " %i" 2@
        if 1@ == 1
          then
           0AFF: samp 33@ = car_handle_by_samp_vehicle_id 2@ 
     end
  if 33@ <> 0
    then     
               00AA: store_car 33@ position_to 12@ 13@ 14@
               000E: 14@ -= 2
               Actor.PutAt($PLAYER_ACTOR, 12@, 13@, 14@)
               //крашит при попытке выставить любую задержку между между этих строк                       
               0AF9: samp say_msg "/clist 0"
               // 1
               0B30: samp send_enter_vehicle 2@ as_passenger 0
               // 2
               072A: task_warp_char_into_car_as_driver $PLAYER_ACTOR car 33@
               wait 700
               099A: set_car 33@ collision_detection 1                                       
               Actor.PutAt($PLAYER_ACTOR, 338.21, 1945.87, 12.59)
                            
        end
end
Вместо 0AD4: 1@ = scan_string 27@ format " %i" 2@ можно использовать atoi, и 33@ это вроде таймер, попробуй заюзать другую переменную
 
  • Нравится
Реакции: Medvedko