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

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,468
При делении получается бесконечная десятичная дробь, как убрать остаток, оставив только целое число в переменной. Иначе слетает весь формат (переменная вставлена в текст)?
0092: 22@ = float 17@ to_integer
////
0AD3: 0@ { string } = format "%.0f" 15.5
 

SDstudio

Известный
13
0
И еще вопрос:
Перестали отображаться строки добавленныые через 0ADF, хотя, до этого всё отображалось... больше не отображается.
В чем может быть проблема?
 

zhas

Новичок
10
0
Здрасте! Подскажите пожалуйста как биты перевести в текст. Вообщем я открываю текст документ и считываю байты с файла. Далее мне нужно перевести эти байты в текст, в котором я буду искать нужную строку.
Код:
0A9A: 0@ = openfile "C:\Users\Public\Documents\GTA San Andreas User Files\SAMP\chatlog.txt" mode "r"
0A9C: 1@ = file 0@ size 
0AC8: 2@ = allocate_memory_size 1@
0A9D: readfile 0@ size 1@ to 2@
if 0C18: 3@ = strstr string1 2@v string2 "Имя[ID] Ранг[Номер] АФК секунд"
У меня выскакивает исключение, и скорее всего потому что я считал байты а не текст.
 

я воскрес

Активный
245
36
Здрасте! Подскажите пожалуйста как биты перевести в текст. Вообщем я открываю текст документ и считываю байты с файла. Далее мне нужно перевести эти байты в текст, в котором я буду искать нужную строку.
Код:
0A9A: 0@ = openfile "C:\Users\Public\Documents\GTA San Andreas User Files\SAMP\chatlog.txt" mode "r"
0A9C: 1@ = file 0@ size
0AC8: 2@ = allocate_memory_size 1@
0A9D: readfile 0@ size 1@ to 2@
if 0C18: 3@ = strstr string1 2@v string2 "Имя[ID] Ранг[Номер] АФК секунд"
У меня выскакивает исключение, и скорее всего потому что я считал байты а не текст.
зачем ты чатлог из файла чекаешь? Можно же опкодом проверить чат на определённый текст
 

hnnssy

Известный
Друг
2,684
2,762
чатлог так ты не откроешь
нужно сменить рабочую директорию через 0A99
и ты считываешь файл в 2@, а сравниваешь уже с 2@v, krasava
 
  • Нравится
Реакции: zhas

zhas

Новичок
10
0
зачем ты чатлог из файла чекаешь? Можно же опкодом проверить чат на определённый текст
Сэр, мне это нужно для практической работы с текстом и байтами. Если вам не трудно подскажите мне как сделать этот перевод. Также буду благодарен если вы дадите мне опкод о котором говорили!
 

#ripper

Новичок
17
0
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
вот этим же кодом я могу считать, так скажем, входящий дамаг. а исходящий предыдущим кодом не получается. вроде бы аналогичный код. подскажите
 

zhas

Новичок
10
0
Всем привет! У меня тут идея появилась, но для нее нужен генератор ников в формате cleo. Можно ли его как-то сделать?
Генератор можно сделать c помощью рандомного числа которое далее преобразуется в букву и так далее пока не получиться ник. Опкод для рандома 0099.
 

hnnssy

Известный
Друг
2,684
2,762
Я попросил помочь мне реализовать генератор, а не написать теорию. Я до этого и сам догадался, но как это сделать, вот это секрет... А за опкод спасибо!
помочь реализовать или реализовать за тебя? лол
 

Dark_Knight

Me, me and me.
Друг
4,081
2,099
Кек! Я прошу помочь... Подтолкнуть как то или может какие то опкоды дать...
Я тебе лучше дам курдючное сало аля справка в Санни Билдера и скажу, что без её прочтения тебе грозят топорики, т.е. без неё ты не напишешь сам. За тебя никто не будет этого делать, билять.
 

581174

Новичок
16
6
Кек! Я прошу помочь... Подтолкнуть как то или может какие то опкоды дать...
тебе уже дали вполне понятную подсказку:
Генератор можно сделать c помощью рандомного числа которое далее преобразуется в букву и так далее пока не получиться ник. Опкод для рандома 0099.
я не уверен, но по-моему ты один из тех кому нужен готовый код и с пояснениями, чтоб ты мог переделать под себя и выдать за своё. Любой, хоть маломальски понимающий в скриптинге/программировании человек поймёт, что всё это вполне реализуемо через массивы - в одном имена, в другом фамилии. Перед подключением генерируются два числа и отылаются в разные функции, которые обращаются к массивам и выдают строки соответстующие этим цифрам - в твоём случае, имена и фамилии. Затем эти строки клеются, между ними вставляется цифровой пробел (хотя можно и сразу имя с ним делать, в общем-то), и вот тебе готовая случайная смена имён-фамилий. Ты просто ленивый говнюк :-\
 

zhas

Новичок
10
0
Нет, мне не нужен готовый код тем более с подсказками, но опять же повторюсь про опкоды, я не против их.
И еще... Как мне установить @ символ? (0@ = "q" примерно так, только так не компилит)
Вот тебе нужен будет этот опкод 0C15, он соединяет строки. Попробуй одинарные кавычки для переменной. Или добавляй после собачки v ,что бы получилось так: 0@v
 

hnnssy

Известный
Друг
2,684
2,762
Спасибо за ответ! Но ты похоже не правильно меня понял) Мне нужно из числа сделать букву (символ) по этому примеру (который не компилируется) - 0@ = "q". Просто я хочу сделать так. Я генерирую рандомное число и (например) если это число 1, то оно заменяется на букву q, далее в формате сшивается наш ник и та буква, которая получилась, вот тебе и простенький генератор ников (хоть и говнокод)
дикий говнокод
пусть лучше возвращается число, которое далее преобразуется в символ
например 0ad3: 0@ "%c" 1@, где 1@ - само число
просто нужно будет подобрать диапазон, в котором будет генерироваться это самое число
например буква "h" - это 0x68, то есть 104
 
  • Нравится
Реакции: zhas

zhas

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

if  0@ == 1
then
1@v = 'A'
end
if  0@ == 2
then
1@v = 'B'
end
. В переменную 1@v заносится символ. Далее с помощью опкода 0C15 соединяешь все рандомные символы в третью переменную.