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

kennex

Известный
69
26
Ну типо перезайти на сервер при нажатии клавиши
CLEO:
{$CLEO .cs}
0000:

while not samp.Available()
wait 2000
end   


while true
wait 0

if and
0AB0:  key_pressed 0x10  // Shift + 0 активация
0AB0:  key_pressed 0x30  //
 then   
  20@ = 1
 end  
if 20@ == 1
 then
  0B28: samp disconnect_with_reason 0
  0B27: samp set_gamestate 4
  wait 15000 // задержка
  0B27: samp set_gamestate 1
  20@ = 0   
 end
   
end
 

BlackKnigga

Известный
BH Team
922
446
Почему не складывается нормально?

Вот сам код, он работает нормально
CLEO:
{$CLEO .cs}
0000:

while not samp.Available()
wait 2000
end


while true
wait 0

// проверка
if 0ADC:  test_cheat "0"
then
msg "Вы продали авто: Alex_Alex за 500 вирт" 0xff34495E
end

0B75: samp get_chat_string 99 text_to 2@ prefix_to 3@ color_to 4@ prefix_color_to 5@\

if 0AD4: 4@ = scan_string 2@ format "Вы продали авто: %s за %d вирт" 4@ 5@
then
msg "Вы продали авто за: %d" 0xffffff 5@
005A: 7@ += 5@  // (int)
msg "%d" 0xffffff 7@
end

end


CLEO:
if 0ADC:  test_cheat "0"
then
msg "Вы продали авто: Alexander_Alexandrivich за 500 вирт" 0xff34495E
end
А если в проверке "Alex_Alex" Поменяем на более длинное имя домустим "Alexander_Alexandrivich"
То в результате сложение будет какое то не правильное получается вот это чилсо: "1702064213" вместо "1000"
Что не правильно?
0AD4 не сканирует строки больше 15 символов. Юзай sscanf. (https://www.blast.hk/threads/7486/)
 

kennex

Известный
69
26
0AD4 не сканирует строки больше 15 символов. Юзай sscanf. (https://www.blast.hk/threads/7486/)
Я читал данную тему, и догадывался что из за >15 символов не сканирует, но я пробовал сделать так как в той теме, у меня вылетает игра.
Как использовать?
Делал так
CLEO:
{$CLEO .cs}
0000:

while not samp.Available()
wait 2000
end

alloc 2@ 128
alloc 3@ 64
alloc 4@ 24

while true
wait 0

// проверка
if 0ADC:  test_cheat "0"
then
msg "Вы продали авто: Alex_Alex за 500 вирт" 0xff34495E
end

0B75: samp get_chat_string 99 text_to 2@ prefix_to 3@ color_to 4@ prefix_color_to 5@

if 0AA5: call 0x8220AD num_params 4 pop 4 params 5@v 4@ "Вы продали авто: %s за %d вирт" 2@
then
msg "Вы продали авто за: %d" 0xffffff 5@
005A: 7@ += 5@  // (int)
msg "%d" 0xffffff 7@
end

end
free 2@
free 3@
free 4@
 
Последнее редактирование:

BlackKnigga

Известный
BH Team
922
446
Я читал данную тему, и догадывался что из за >15 символов не сканирует, но я пробовал сделать так как в той теме, у меня вылетает игра.
Как использовать?
Делал так
CLEO:
{$CLEO .cs}
0000:

while not samp.Available()
wait 2000
end

alloc 2@ 128
alloc 3@ 64
alloc 4@ 24

while true
wait 0

// проверка
if 0ADC:  test_cheat "0"
then
msg "Вы продали авто: Alex_Alex за 500 вирт" 0xff34495E
end

0B75: samp get_chat_string 99 text_to 2@ prefix_to 3@ color_to 4@ prefix_color_to 5@

if 0AA5: call 0x8220AD num_params 4 pop 4 params 5@v 4@ "Вы купили у %s Хот Дог за %d" 2@
then
msg "Вы продали авто за: %d" 0xffffff 5@
005A: 7@ += 5@  // (int)
msg "%d" 0xffffff 7@
end

end
free 2@
free 3@
free 4@
0AA7 и еще одну переменную в конце. sscanf возвращает кол-во отсканированных значений.
 

kennex

Известный
69
26
У меня видимо совсем руки кривые((
Все равно вылетает
CLEO:
if
0AA7: call_function 0x8220AD num_params 4 pop 4 5@v 4@ "Вы продали авто: %s за %d вирт" 2@
then
msg "Вы продали авто за: %d" 0xffffff 5@
005A: 7@ += 5@  // (int)
msg "%d" 0xffffff 7@
end
 

BlackKnigga

Известный
BH Team
922
446
У меня видимо совсем руки кривые((
Все равно вылетает
CLEO:
if
0AA7: call_function 0x8220AD num_params 4 pop 4 5@v 4@ "Вы продали авто: %s за %d вирт" 2@
then
msg "Вы продали авто за: %d" 0xffffff 5@
005A: 7@ += 5@  // (int)
msg "%d" 0xffffff 7@
end
CLEO:
0AA7: call_function 0x8220AD num_params 4 pop 4 5@v 4@ "Вы продали авто: %s за %d вирт" 2@
if 2@ == 2
then
msg "Вы продали авто за: %d" 0xffffff 5@
005A: 7@ += 5@  // (int)
msg "%d" 0xffffff 7@
end
 

AWRage

Активный
642
141
CLEO:
0AA7: call_function 0x8220AD num_params 4 pop 4 5@v 4@ "Вы продали авто: %s за %d вирт" 2@
if 2@ == 2
then
msg "Вы продали авто за: %d" 0xffffff 5@
005A: 7@ += 5@  // (int)
msg "%d" 0xffffff 7@
end
C++:
0AA7: call_function 0x8220AD num_params 4 pop 4 5@v 4@ "Вы продали авто: %s за %d вирт" "Вы продали авто: STROKA за 9999 вирт" // тут должна быть переменная, которая будет сканироваться
msg "Вы продали авто за: %d" 0xffffff 5@
005A: 7@ += 5@  // (int)
msg "%d" 0xffffff 7@
end
 

BlackKnigga

Известный
BH Team
922
446
C++:
0AA7: call_function 0x8220AD num_params 4 pop 4 5@v 4@ "Вы продали авто: %s за %d вирт" "Вы продали авто: STROKA за 9999 вирт" // тут должна быть переменная, которая будет сканироваться
msg "Вы продали авто за: %d" 0xffffff 5@
005A: 7@ += 5@  // (int)
msg "%d" 0xffffff 7@
end
Перепутал переменную, после 2@ еще одна должна была быть, 0aa7 же
 

Сэнд

Известный
Проверенный
436
213
Форматирую текст для рендера и не учитывается пробел. Как вставить его в текст?