Односвязный список в CLEO

Kristyan

Известный
Автор темы
165
16
Я знаю что это безумие, но помогите пожалуйста с проблемой которая появилась. Мне нужно как-то избежать использование опкода free 2@ иначе в 31@ будет только одна строчка везде, каракули, другие строки.
unknown.png

unknown.png

Простите за моей "примитивной" индексации.

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

repeat
wait 0
until SAMP.Available()

0b34: "list" @linked_list

alloc 0@ 128
0C11: memset destination 0@ value 0 size 128
0085: 31@ = 0@
1@ = 0
5@ = 1

while true
wait 0


if not 4@ == 1
then
    if key_press 190 // period or >
    then
        if 801D: not 5@ > 4@  
        then
         
            0A8D:  3@ = read_memory 0@ size 4 virtual_protect 0    
            0@ += 4
                                                             
            if 6@ == 2
            then
                5@ += 1
                0A8D:  3@ = read_memory 0@ size 4 virtual_protect 0
                0@ += 4
                6@ = 1
            else
                6@ = 1
            end
           
            chatmsg "Next: %s | %d" -1 3@ 5@
            5@ += 1
        end
    end
 
    if key_press 188 // comma or <
    then
        5@ -= 1
        if not 5@ == 0
        then
     
            0@ -= 4
                             
            if 6@ == 1
            then
                0@ -= 4
                5@ -= 1
                6@ = 2
            end
         
            0A8D:  3@ = read_memory 0@ size 4 virtual_protect 0
         
            chatmsg "Prev: %s | %d" -1 3@ 5@
        else
            5@ += 1
        end    
    end
end

END


:linked_list
1@ += 1
0085: 4@ = 1@
alloc 2@ 128
format 2@ "string%d" 1@
log "Inserted %s | %d" 2@ 4@
0A8C: write_memory 31@ size 4 value 2@ virtual_protect 0
31@ += 4  
free 2@
SAMP.CmdRet()
 
Последнее редактирование: