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

iGO[R]

Новичок
42
1
Я хочу, чтобы при нажатии на правую кнопку если у меня в руках с4 тек. оружие переключалось на снайперку и сразу же открывался прицел снайперки, без повторного нажатия.

Я пробовал так:
Код:
04B8: get_weapon_data_from_actor $PLAYER_ACTOR weapon_group 9 weapon 2@ ammo 4@
04B8: get_weapon_data_from_actor $PLAYER_ACTOR weapon_group 7 weapon 1@ ammo 4@
model 5@

    If 02D8: actor $PLAYER_ACTOR current_weapon == 2@
    Then
        01B9: set_actor $PLAYER_ACTOR armed_weapon_to 1@   
        0812: AS_actor $PLAYER_ACTOR perform_animation "" IFP "" framedelta 4.0 loopA 0 lockX 0 lockY 0 lockF 0 time -1                                  
    End

Задаю актеру "пустую" анимацию для того, чтобы не нужно было второй раз нажимать на кнопку для открытия прицела.

Но тут одна проблемка - я писал чит тестируя его на своем сервере, там все работает отлично, а вот на других серверах с первого нажатия не открывается прицел. В чем проблема?

Или если есть способ открытия прицела через какой-либо опкод или через память, то скажите как пожалуйста.)
 
Последнее редактирование:

Niko

Известный
Проверенный
230
268
Как объеденить 3 переменных в одно целое?
Пример:
0@ = Нужно
1@ = Все
2@ = Соединить

И всю информацию нужно занести в переменную 3@.
Как это сделать?
Что содержится в этих переменных? Число, дробь, или текст?
 

keklulk

Новичок
3
0
Здравствуйте, вот код:
:Noname_43
wait 0
if
26@ == 1
else_jump @Noname_196
SAMP.GetChatString(99, 1@, 2@, 3@, 4@)
5@ = 0

:Noname_88
if
SAMP.IsPlayerConnected(5@)
else_jump @Noname_174
6@ = SAMP.GetPlayerNickname(5@)
format 7@ "%s | Отправитель: %s" 21@ 6@
if
0C18: 32@ = strstr string1 1@ string2 7@
else_jump @Noname_174
say "Отправитель: %s[%d]" 6@ 5@
wait 1000

У меня такой вопрос, этот скрипт при нахождении строки с нужным нам ником отправляет в чат его ник и ID. Вопрос в том, как сделать что бы в переменную 21@ записывался текс, который был написан. Т.е. из этой строки надо получить ID, ник, и текст (цифру) человека который всё это написал
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
Посчитай длину всей строки и Отправитель: %s[%d], вычти из большего меньшее и вырежь.
2@ -= 1@
alloc 3@ 144
0C24: strncpy destination 3@ source 0@ size 2@
0@ - строка с текстом, ID'ом и ником;
1@ - длина Отправитель: %s[%d];
2@ - длина всей строки(0@)
3@ - вырезанная часть
 

keklulk

Новичок
3
0
Посчитай длину всей строки и Отправитель: %s[%d], вычти из большего меньшее и вырежь.
2@ -= 1@
alloc 3@ 144
0C24: strncpy destination 3@ source 0@ size 2@
0@ - строка с текстом, ID'ом и ником;
1@ - длина Отправитель: %s[%d];
2@ - длина всей строки(0@)
3@ - вырезанная часть
Получается вот так:
:Noname_96
if
SAMP.IsPlayerConnected(5@)
else_jump @Noname_367
6@ = SAMP.GetPlayerNickname(5@)
format 7@ "| Отправитель: %s" 6@
if
0C18: 0@ = strstr string1 1@ string2 7@
else_jump @Noname_367
format 21@ "Отправитель: %s[%d]" 6@ 5@
0C17: 33@ = strlen 21@
0C17: 6@ = strlen 1@
0C17: 8@ = strlen 1@
0062: 6@ -= 33@ // (int)
chatmsg "Длина строки: %d. Длина 'отправитель':%d. Длина 'строка - отправитель': %d" -1 8@ 33@ 6@
alloc 9@ 144
0C24: strncpy destination 9@ source 1@ size 6@
chatmsg "%s" -1 9@
wait 1000
Но всё-равно не работает. В чём проблема то?
 

Vovich

HOT
Проверенный
717
197
Как получить текстовые параметры из команды и записать их в переменную?
При этом длина текстовых параметров больше 20 символов.
Вот пытался, но в итоге не выходит... , тупо крашит.
Код:
{$CLEO .cs}
{$INCLUDE SF}
0000:
repeat
wait 150
until 0afa:
0B34: samp register_client_command "test" to_label @cmd
alloc 5@s 64
alloc 6@s 64
while true
wait 0
if 22@ == 1
then
chatmsg "[TEST] Параметры %s и %s успешно записаны в переменные" color 0xFF0000 5@s 6@s
5@s = 0
6@s = 0
22@ = 0
end

:cmd
0B35: samp 0@ = get_last_command_params
0AD4: 3@ = scan_string 0@ format "%s%s" 5@s 6@s
22@ = 1
SAMP.CmdRet()
 

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,962
Как получить текстовые параметры из команды и записать их в переменную?
При этом длина текстовых параметров больше 20 символов.
Вот пытался, но в итоге не выходит... , тупо крашит.
Код:
{$CLEO .cs}
{$INCLUDE SF}
0000:
repeat
wait 150
until 0afa:
0B34: samp register_client_command "test" to_label @cmd
alloc 5@s 64
alloc 6@s 64
while true
wait 0
if 22@ == 1
then
chatmsg "[TEST] Параметры %s и %s успешно записаны в переменные" color 0xFF0000 5@s 6@s
5@s = 0
6@s = 0
22@ = 0
end

:cmd
0B35: samp 0@ = get_last_command_params
0AD4: 3@ = scan_string 0@ format "%s%s" 5@s 6@s
22@ = 1
SAMP.CmdRet()
Не используй переменные типа @v и @s. Выделяй память так:

alloc 5@ 64
alloc 6@ 64

И везде так... Знаешь а я даже не знаю сможешь ли ты строку получить таким образом... Я как-то очень давно что-то делал такое у меня насколько помню не вышло. Если получится скажи мне, спасибо.
 

Vovich

HOT
Проверенный
717
197
Не используй переменные типа @v и @s. Выделяй память так:

alloc 5@ 64
alloc 6@ 64

И везде так... Знаешь а я даже не знаю сможешь ли ты строку получить таким образом... Я как-то очень давно что-то делал такое у меня насколько помню не вышло. Если получится скажи мне, спасибо.
Не выходит....
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
Как получить текстовые параметры из команды и записать их в переменную?
При этом длина текстовых параметров больше 20 символов.
Вот пытался, но в итоге не выходит... , тупо крашит.
Код:
{$CLEO .cs}
{$INCLUDE SF}
0000:
repeat
wait 150
until 0afa:
0B34: samp register_client_command "test" to_label @cmd
alloc 5@s 64
alloc 6@s 64
while true
wait 0
if 22@ == 1
then
chatmsg "[TEST] Параметры %s и %s успешно записаны в переменные" color 0xFF0000 5@s 6@s
5@s = 0
6@s = 0
22@ = 0
end

:cmd
0B35: samp 0@ = get_last_command_params
0AD4: 3@ = scan_string 0@ format "%s%s" 5@s 6@s
22@ = 1
SAMP.CmdRet()
http://blasthack.net/threads/7486/

Получается вот так:
:Noname_96
if
SAMP.IsPlayerConnected(5@)
else_jump @Noname_367
6@ = SAMP.GetPlayerNickname(5@)
format 7@ "| Отправитель: %s" 6@
if
0C18: 0@ = strstr string1 1@ string2 7@
else_jump @Noname_367
format 21@ "Отправитель: %s[%d]" 6@ 5@
0C17: 33@ = strlen 21@
0C17: 6@ = strlen 1@
0C17: 8@ = strlen 1@
0062: 6@ -= 33@ // (int)
chatmsg "Длина строки: %d. Длина 'отправитель':%d. Длина 'строка - отправитель': %d" -1 8@ 33@ 6@
alloc 9@ 144
0C24: strncpy destination 9@ source 1@ size 6@
chatmsg "%s" -1 9@
wait 1000
Но всё-равно не работает. В чём проблема то?
Всю строку, которая отсылается в чат, дай мне. Распишу что к чему.
 

Vovich

HOT
Проверенный
717
197
Как в hex запихнуть данные из переменной?
Вот пример:
Код:
{$CLEO .cs}
{$INCLUDE SF}
0000:

0B34: samp register_client_command "test" to_label @help_1

while true
wait 0
end

:help_1
0AC6: 3@ = label @help_2 offset
0209: 17@ = random_int_in_ranges 1 59
0B3B: samp show_dialog id 2193 caption "Random" text 3@ button_1 "Закрыть" button_2 "" style 0
SAMP.CmdRet()   

:help_2
hex
7B "FFFFFF" 7D "{FFFFFF}Random1: %d" A
7B "FFFFFF" 7D "{FFFFFF}Random2: %d" A
7B "FFFFFF" 7D "{FFFFFF}Random3: %d" A
7B "FFFFFF" 7D "{FFFFFF}Random4: %d" A
7B "FFFFFF" 7D "{FFFFFF}Random5: %d" A
Мне нужно данные из переменной 17@ запихнуть в hex...
 

Woofing Giraffe

Активный
402
49
http://blasthack.net/threads/7486/


Всю строку, которая отсылается в чат, дай мне. Распишу что к чему.
Код:
:Noname_51
wait 0
if
  26@ == 1
else_jump @Noname_383
SAMP.GetChatString(99, 1@, 2@, 3@, 4@)
5@ = 0

:Noname_96
if
   SAMP.IsPlayerConnected(5@)
else_jump @Noname_361
6@ = SAMP.GetPlayerNickname(5@)
format 7@ "| Отправитель: %s" 6@
if
0C18: 0@ = strstr string1 1@ string2 7@
else_jump @Noname_361
format 21@ "Отправитель: %s[%d]" 6@ 5@
0C17: 33@ = strlen 21@
0C17: 6@ = strlen 1@
0C17: 8@ = strlen 1@
0062: 6@ -= 33@ // (int)
chatmsg "Длина строки: %d. Длина 'отправитель':%d. Длина 'строка - отправитель': %d" -1 8@ 33@ 6@
alloc 9@ 144
0C24: strncpy destination 9@ source 1@ size 6@
chatmsg "%s" -1 9@
Получается что вся строка, это 1@, длина всей строки - 6@. Вот пример смс-ки:
THre4MO.jpg
. Мне нужно из этого СМС получить только отправленный текст, т.е. "I love Hospital LS". Думаю понятно расписал. Заранее спасибо.
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
Получается что вся строка, это 1@, длина всей строки - 6@. Вот пример смс-ки:
THre4MO.jpg
. Мне нужно из этого СМС получить только отправленный текст, т.е. "I love Hospital LS". Думаю понятно расписал. Заранее спасибо.
Поступим ещё проще, с помощью скана строки: http://blasthack.net/threads/7486/
Код:
alloc 1@ 144
alloc 2@ 32

alloc 3@ 48 // SMS text
alloc 4@ 24 // SMS nickname
5@v = 0 // telephone

while true
    wait 100
    0B75: samp get_chat_string 99 text_to 1@ prefix_to 2@ color_to 0 prefix_color_to 0
    0AA7: call 0x8220AD num_params 5 pop 5 params 5@v 4@ 3@ "SMS: \"%[^\"]\" | Отправитель: %[\_a-zA-Z] [т.%d]" 1@ read_params_to 6@
    if 6@ == 3 // прочитаны все параметры
    then
        chat "---------------------" 0xFFFF00
        chat "Вам пришло СМС от %s! Номер: %d" -1 4@ 5@
        chat "Текст: {FFFF00}%s" -1 3@
        chat "---------------------" 0xFFFF00
    end
end
%[^\"] - регулярное выражение:
^ - игнорирование символов, которые указаны далее;
\" - игнорируемый символ "(кавычки). Нужно для того, чтобы не ушел за границы и выделил тот текст, который нам необходим;​
%[\_a-zA-Z] - тоже рег. выражение:
\_ - символ _(нижнее подчеркивание)
a-zA-Z - все латинские буквы(большого и малого регистра)​
 
Последнее редактирование:

Woofing Giraffe

Активный
402
49
Поступим ещё проще, с помощью скана строки: http://blasthack.net/threads/7486/
Код:
alloc 1@ 144
alloc 2@ 32

alloc 3@ 48 // SMS text
alloc 4@ 24 // SMS nickname
5@v = 0 // telephone

while true
    wait 100
    0B75: samp get_chat_string 99 text_to 1@ prefix_to 2@ color_to 0 prefix_color_to 0
    0AA7: call 0x8220AD num_params 5 pop 5 params 5@v 4@ 3@ "SMS: \"%[^\"]\" | Отправитель: %[\_a-zA-Z] [т.%d]" 1@ read_params_to 6@
    if 6@ == 3 // прочитаны все параметры
    then
        chat "---------------------" 0xFFFF00
        chat "Вам пришло СМС от %s! Номер: %d" -1 4@ 5@
        chat "Текст: {FFFF00}%s" -1 3@
        chat "---------------------" 0xFFFF00
    end
end
%[^\"] - регулярное выражение:
^ - игнорирование символов, которые указаны далее;
\" - игнорируемый символ "(кавычки). Нужно для того, чтобы не ушел за границы и выделил тот текст, который нам необходим;​
%[\_a-zA-Z] - тоже рег. выражение:
\_ - символ _(нижнее подчеркивание)
a-zA-Z - все латинские буквы(большого и малого регистра)​
Небольшая проблема... Когда захожу в игру, экран моргает и потом вылетает...
 
Последнее редактирование: