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

zhas

Новичок
10
0
Спасибо за ответ! Но ты похоже не правильно меня понял) Мне нужно из числа сделать букву (символ) по этому примеру (который не компилируется) - 0@ = "q". Просто я хочу сделать так. Я генерирую рандомное число и (например) если это число 1, то оно заменяется на букву q, далее в формате сшивается наш ник и та буква, которая получилась, вот тебе и простенький генератор ников (хоть и говнокод)
CLEO:
{CLEO}

0209: 0@ = random_int_in_ranges 1 25 // случайное число от 1 до 24. так как в англ 24 букв
// Здесь пачка ифов на 24 буквы я напишу только 1 условие
if  0@ == 1
then
1@v = 'A'
end
0AC8: 2@v =  allocate_memory_size 128 // выделяем память
0C15: strcat destination 2@v source 1@ // соединяем символы.
//Выполняем все это в цикле и получается ник, количество итераций можно сделать тоже рандомным.
//Тогда и длина ника будет рандомной
 
Последнее редактирование:

zhas

Новичок
10
0
Как можно узнать координаты красного маркера?
Честно не знаю как точно но есть исходник функций которая ищет красный маркер
CLEO:
10@ = 0xC7DD58 // Пул маркеров

4@ = 0
5@ = 1000.0
for 30@ = 0 to 31
    0085: 29@ = 30@
    29@ *= 0xA0
    29@ += 48
    005A: 29@ += 10@  // (int)
    0A8D: 2@ = read_memory 29@ size 4 virtual_protect 0
    29@ += 4
    0A8D: 3@ = read_memory 29@ size 4 virtual_protect 0
    29@ += 32
    0A8D: 6@ = read_memory 29@ size 4 virtual_protect 0
    0509: 4@ = distance_between_XY 0@ 1@ and_XY 2@ 3@
   
    if and
    not 2@ == 0.0
    not 3@ == 0.0
    0025:   5@ > 4@
    not 6@ == 0
    then
        0087: 5@ = 4@
        0087: 11@ = 2@ // X
        0087: 12@ = 3@ // Y
        0085: 13@ = 30@ // (int)
    end
end

if
5@ < 30.0
then
    0AB2: ret 3 11@ 12@ 13@
else
    0AB2: ret 3 0.0 0.0 -1
end
 

я воскрес

Активный
245
36
Честно не знаю как точно но есть исходник функций которая ищет красный маркер
CLEO:
10@ = 0xC7DD58 // Пул маркеров

4@ = 0
5@ = 1000.0
for 30@ = 0 to 31
    0085: 29@ = 30@
    29@ *= 0xA0
    29@ += 48
    005A: 29@ += 10@  // (int)
    0A8D: 2@ = read_memory 29@ size 4 virtual_protect 0
    29@ += 4
    0A8D: 3@ = read_memory 29@ size 4 virtual_protect 0
    29@ += 32
    0A8D: 6@ = read_memory 29@ size 4 virtual_protect 0
    0509: 4@ = distance_between_XY 0@ 1@ and_XY 2@ 3@
  
    if and
    not 2@ == 0.0
    not 3@ == 0.0
    0025:   5@ > 4@
    not 6@ == 0
    then
        0087: 5@ = 4@
        0087: 11@ = 2@ // X
        0087: 12@ = 3@ // Y
        0085: 13@ = 30@ // (int)
    end
end

if
5@ < 30.0
then
    0AB2: ret 3 11@ 12@ 13@
else
    0AB2: ret 3 0.0 0.0 -1
end
11@ 12@ 13@ - coords?
 

hnnssy

Известный
Друг
2,684
2,762
а что ещё может возвращать функция получения координат чекпоинта помимо координат? мда
 

#ripper

Новичок
17
0
почему меня игнорируют? ребята, пожалуйста. хочу замутить DamageInformer, такой 'глобальный', с настройками, с игроками уже сделал, с входящим дамагом т/с тоже, остался только этот геморрой, с исходящим дамагом по транспорту.
CLEO:
{$CLEO .cs}
{$INCLUDE SF}
0000:

:reg
wait 1000
alloc 0@ 128

while true
wait 0
    for 12@ = 0 to 1000
        if 0B23:  samp is_player_connected 12@
        then
            log "1"
            0B20: samp 3@ = actor_handle_by_samp_player_id 12@
            if 056D:   actor 3@ defined
            then
                log "2"
                if 00DF:   actor 3@ driving
                then
                    log "3"
                    03C0: 21@ = actor 3@ car
                    if 056E:   car 21@ defined
                    then
                        log "4"
                        if 051C:   car 21@ damaged_by_actor $PLAYER_ACTOR
                        then
                            log "5"
                            0B2C: samp 4@ = get_vehicle_id_by_car_handle 21@
                            054E: clear_actor $PLAYER_ACTOR damage
                            054F: clear_car 21@ damage
                            0468: clear_car 21@ last_weapon_damage
                            format 0@ "you damaged vehID:%d, playerID:%d" 4@ 12@
                            0AF8: samp add_message_to_chat 0@ color 0xFFFFFF
                            break    
                        end
                    end
                end
            end
        end
    end
end

проверка
CLEO:
051C:   car 21@ damaged_by_actor $PLAYER_ACTOR
проходит только в том случае, если игрок сидит на НРГ, и я врезаюсь с любого т/c. стрельба игнорируется. бред в общем.


CLEO:
{$CLEO .cs}
{$INCLUDE SF}
0000:

:reg
wait 2000
alloc 10@ 128

while true
wait 0
if 00DF:   actor $PLAYER_ACTOR driving
then
    for 29@ = 0 to 1000
        if 0B23:  samp is_player_connected 29@
        then
            0B20: samp 3@ = actor_handle_by_samp_player_id 29@
            if 056D:   actor 3@ defined
            then
                03C0: 2@ = actor $PLAYER_ACTOR car
                if 051C:   car 2@ damaged_by_actor 3@
                then
                    0B2C: samp 4@ = get_vehicle_id_by_car_handle 2@
                    054E: clear_actor 3@ damage
                    054F: clear_car 2@ damage
                    0468: clear_car 2@ last_weapon_damage
                    format 10@ "vehID:%d, ammount:%d, playerID:%d" 4@ 9@ 29@
                    0AF8: samp add_message_to_chat 10@ color 0xFFFFFF
                    break   
                end
            end
        end
    end
end
end
вот этим же кодом я могу считать, так скажем, входящий дамаг. а исходящий предыдущим кодом не получается. вроде бы аналогичный код. подскажите

может есть иной способ узнать дамажется ли определенный транспорт определенным игроком, ну или транспорт в который я стреляю? RPC не нашел подходящий, структур тоже. опкодов и адресов памяти также не нашел. или может это по истине невозможно?

решил через хук PACKET_BULLET_SYNC.
 
Последнее редактирование:

kraft1k

Вынь х*й из головы и все получится © hnnssy
Друг
1,480
1,168
Как заставить педа стрелять в нпс или объект? Вроде через рпс можно, но мне нужен пример хоть небольшой.
 

#ripper

Новичок
17
0
Зачем так рвать жопу, если можно просто хукнуть RPC GiveTakeDamage, в котором уже будет вся инфа (куда урон: машина/игрок/обьект, ид, кол-во дамага, оружие, вх/исх.) и тд
по моему этот RPC_GIVETAKEDAMAGE работает только с актерами, params BYTE giveTake, WORD playerID, float amount, DWORD weaponID.
CLEO:
{$CLEO .cs}
{$INCLUDE SF}
0000:
repeat
    wait 500
until 0AFA:  is_samp_available
0BE1: raknet setup_outcoming_rpc_hook @TakeDamage23
0BDE: pause_thread 0

:TakeDamage23
0BE5: raknet 1@ = get_hook_param PARAM_PACKETID
if 1@ == RPC_GIVETAKEDAMAGE
then
    0AF8: samp add_message_to_chat "damage" color -1   
end
0BE0: raknet hook_ret true
по крайней мере этот хук срабатывает только при дамаге актера. ну или я чего то не догоняю
 

DANIIL XPC

Известный
81
5
Hello, I want to create a way for samp rp server, but we encountered some difficulty in creating it. So I want to make an interface with some buttons that can be moved, you press a button to send a text chat, gender click the button * hello * then send a greeting to chat (I want to do is more complex but I am interested in how I create that interface) I have to leave a video below that to see exactly how I want to look pretty.
 

hnnssy

Известный
Друг
2,684
2,762
Hello, I want to create a way for samp rp server, but we encountered some difficulty in creating it. So I want to make an interface with some buttons that can be moved, you press a button to send a text chat, gender click the button * hello * then send a greeting to chat (I want to do is more complex but I am interested in how I create that interface) I have to leave a video below that to see exactly how I want to look pretty.
https://www.blast.hk/wiki/tutorials:dxut_dialogs
 

R_OSB

Новичок
14
0
Heeelp, у мня два вопроса 1. Почему при заходе в игру выводит повторно надпись названия скрипта 2. При его срабатывание, флудит в 6 строк, хотя должно 1
CLEO:
//-------------MAIN---------------
{$CLEO .cs}
03A4: name_thread "Narkos"
0000: NOP

:Noname_1
not SAMP.Available()
else_jump @Noname_11
wait 0
jump @Noname_1

:Noname_11
0AF8: samp add_message_to_chat ">{FF4444} ================================== {FFFFFF}<" 16777215   
0AF8: samp add_message_to_chat ">{800080} Auto Drugs {FFFFFF}" 13172736        
0AF8: samp add_message_to_chat ">{FF4444} ================================== {FFFFFF}<" 16777215   
  03A4: name_thread 'Narkos'
  :Narkos_1
  wait 0
  0@ = Actor.Health($PLAYER_ACTOR)

  if 1
  not 0@ >=30
  not 0@ <=1
  else_jump @active
  wait 0
  0AF9: samp say_msg "/usedrugs"
  0AF9: samp say_msg "salo"  
  jump @Narkos_1

:active
if
0ab0:49
jf @Narkos_1

:no_active
wait 0
if
0ab0:50
jf @no_active
jump @Narkos_1
 

581174

Новичок
16
6
Heeelp, у мня два вопроса 1. Почему при заходе в игру выводит повторно надпись названия скрипта 2. При его срабатывание, флудит в 6 строк, хотя должно 1
CLEO:
//-------------MAIN---------------
{$CLEO .cs}
03A4: name_thread "Narkos"
0000: NOP

:Noname_1
not SAMP.Available()
else_jump @Noname_11
wait 0
jump @Noname_1

:Noname_11
0AF8: samp add_message_to_chat ">{FF4444} ================================== {FFFFFF}<" 16777215 
0AF8: samp add_message_to_chat ">{800080} Auto Drugs {FFFFFF}" 13172736      
0AF8: samp add_message_to_chat ">{FF4444} ================================== {FFFFFF}<" 16777215 
  03A4: name_thread 'Narkos'
  :Narkos_1
  wait 0
  0@ = Actor.Health($PLAYER_ACTOR)

  if 1
  not 0@ >=30
  not 0@ <=1
  else_jump @active
  wait 0
  0AF9: samp say_msg "/usedrugs"
  0AF9: samp say_msg "salo"
  jump @Narkos_1

:active
if
0ab0:49
jf @Narkos_1

:no_active
wait 0
if
0ab0:50
jf @no_active
jump @Narkos_1
Не может оно два раза срабатывать(0af8), скорее всего у тебя просто два одинаковых клео в папке
Флудит потому что скорость изменения твоего хп сервером имеет задержку куда большую, чем задержку с которой работает скрипт на клиенте, и потому он успевает несколько раз чекнуть хп перед тем, как сервер его изменит
 

hnnssy

Известный
Друг
2,684
2,762
Не может оно два раза срабатывать, скорее всего у тебя просто два одинаковых клео в папке
Флудит потому что скорость изменения твоего хп сервером имеет задержку куда большую, чем задержку с которой работает скрипт на клиенте, и потому он успевает несколько раз чекнуть хп перед тем, как сервер его изменит
он и не проверяет хп, там проверяется лишь нажатие ЛКМ
флудит 6 раз потому что реагирует несколько раз пока зажата клавиша