Jump to content

[CLEO] Variabile nelimitate


Andreigl
 Share

Recommended Posts

@TheTom

 

CLEO te limitează până la 31 de variaible, ultimele 2 fiind timere (cresc cu 1 de fiecare dată când codul reia loop-ul principal).

Deci ai 2 variante, ori înveți să folosești 

0AB1: call_scm_func @GetSQR 1 10 $result

ori folosești funcțiile de mai jos:

:SET  
0AC6: 3@ = get_label_pointer @MEMORY
int 1@ *= 4  
int 3@ += 1@
0A8C: write_memory 3@ size 2@ value 0@ virtual_protect 0
ret 0

:GET
0AC6: 3@ = get_label_pointer @MEMORY
int 0@ *= 4
int 3@ += 0@
0A8D: 2@ = read_memory 3@ size 1@ virtual_protect 0
ret 1 2@

:Memory
hex
00 00 00 00 // variabila 1
00 00 00 00 // variabila 2
00 00 00 00 // variabila 3
// ...
00 00 00 00 // variabila n
end

 

Pentru a salva o variabilă se folosește funcția SET în felul următor:

0AB1: @SET 3 passed_value 1@ var_number 2@ var_size 4

unde 1@ reprezintă valoarea trimisă, iar 2@ numărul variabilei.

 

Pentru a lua o variabilă salvată în Memory, se folosește funcția GET în felul următor:

0AB1: @GET 2 var_number 1@ var_size 4 receiver 2@

unde 1@ reprezintă numărul variabilei care vrem să-i aflăm valoarea, iar 2@ variabila unde valoarea variabilei 1@ o să fie stocată.

 

Exemplu de script cu aceste funcții aveți mai jos:

{$CLEO}

repeat
    wait 0
until 0AFA:

goto @Main

:SET  
0AC6: 3@ = get_label_pointer @MEMORY
int 1@ *= 4  
int 3@ += 1@
0A8C: write_memory 3@ size 2@ value 0@ virtual_protect 0
ret 0

:GET
0AC6: 3@ = get_label_pointer @MEMORY
int 0@ *= 4
int 3@ += 0@
0A8D: 2@ = read_memory 3@ size 1@ virtual_protect 0
ret 1 2@

:Memory
hex
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
end

:Main
0C6A: 1@ = create_custom_thread_at_label @While_2

while true
    wait 0
    
    if 33@ > 5000
    then 0AB1: @SET 3 passed_value 1 var_number 1 var_size 4 
    end
end

:While_2
while true
    wait 0
    
    0AB1: @GET 2 var_number 1 var_size 4 receiver 0@
    if 0@ <> 0
    then chatmsg "Yes" -1
    end

end

 

Se observă că am trimis un parametru dintr-un thread într-un alt thread, ceea ce cu variabilele locale este imposibil.

Link to comment
Share on other sites

@shanker' life saver :)) pana acum faceam un loop pentru fiecare ca sa imi adauge +1, da parca cu call scm func e mai lejer si mai ordonat.
 

On 2/23/2017 at 2:17 AM, Leventhe said:

6. Topicurile în care nu s-a postat de mai mult de 3 zile vor fi închise.

:topic_closed:

Link to comment
Share on other sites

  • Tupi pinned this topic
Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.