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

Bogach

Активный
558
27
Помогите пожалуйста разобраться, как работает цикл "For" ибо я уже ничего не понимаю.
Вот функция понижения ранга:
C++:
0AC8: 6@ = allocate_memory_size 50
if 0B3C:  samp is_dialog_responded id 1005 button 13@ list_item 0 input_text 6@
then
    if 13@ == 1
    then
        if 0AD4: 8@ = scan_string 6@ format "%d" 7@
        then
            FOR 12@ = 9 downto 7@ step 1
                0AF9: samp say_msg "/rang %d -" 1@
                wait 1000
            END
        0AC9: free_allocated_memory 6@
        end
    else
    end
end

Ввожу цифру "1" - понижает на 9 рангов ниже, ввожу цифру "2", на 8 рангов ниже и т.д.
Как сделать так, чтобы я вводил в диалог допустим цифру "2" и он понижал на 2 ранга ниже и далее в таком духе.
Заранее спасибо.
 

Bogach

Активный
558
27
FOR 12@ = 9 downto 7@ step 1 - обратный счет
FOR 12@ = 9 to 7@ step 1 - обычный счет
Это я понимаю, но суть в том, что у меня повышение ранга нормально работает. Я ввожу цифру на которую хочу повысить ранг и он повышает и никаких проблем нет. Пример: у игрока 1 ранг, хочу повысить до 5, вписываю цифру 4.
Понижение я не могу понять как такое же сделать, может я не правильную цифру в начальном отсчете?
вот повышение:
C++:
0AC8: 6@ = allocate_memory_size 50
if 0B3C:  samp is_dialog_responded id 1004 button 11@ list_item 0 input_text 6@
then
    if 11@ == 1
    then
        if 0AD4: 8@ = scan_string 6@ format "%d" 7@
        then
            FOR 12@ = 1 to 7@ step 1
                0AF9: samp say_msg "/rang %d +" 1@
                wait 1000
            END
        0AC9: free_allocated_memory 6@
        end
    else
    end
end
Тут я вписал 12@ = 1 "начальный отсчет" цифру 1, так как минимальный ранг игрока - первый.
В понижении я указал число "9", так как повышать мы можем только до 9 ранга, соотв. он начальный.
Но вот повышение работает удовлетворительно, а понижение - нет :с.
 

hnnssy

Известный
Друг
2,684
2,762
Это я понимаю, но суть в том, что у меня повышение ранга нормально работает. Я ввожу цифру на которую хочу повысить ранг и он повышает и никаких проблем нет. Пример: у игрока 1 ранг, хочу повысить до 5, вписываю цифру 4.
Понижение я не могу понять как такое же сделать, может я не правильную цифру в начальном отсчете?
вот повышение:
C++:
0AC8: 6@ = allocate_memory_size 50
if 0B3C:  samp is_dialog_responded id 1004 button 11@ list_item 0 input_text 6@
then
    if 11@ == 1
    then
        if 0AD4: 8@ = scan_string 6@ format "%d" 7@
        then
            FOR 12@ = 1 to 7@ step 1
                0AF9: samp say_msg "/rang %d +" 1@
                wait 1000
            END
        0AC9: free_allocated_memory 6@
        end
    else
    end
end
Тут я вписал 12@ = 1 "начальный отсчет" цифру 1, так как минимальный ранг игрока - первый.
В понижении я указал число "9", так как повышать мы можем только до 9 ранга, соотв. он начальный.
Но вот повышение работает удовлетворительно, а понижение - нет :с.
мда, делай такой же цикл, как и для повышения, просто "/rang %d -"
 
  • Нравится
Реакции: Thomas_Johnson

Thomas_Johnson

Известный
Проверенный
183
21
Это я понимаю, но суть в том, что у меня повышение ранга нормально работает. Я ввожу цифру на которую хочу повысить ранг и он повышает и никаких проблем нет. Пример: у игрока 1 ранг, хочу повысить до 5, вписываю цифру 4.
Понижение я не могу понять как такое же сделать, может я не правильную цифру в начальном отсчете?
вот повышение:
C++:
0AC8: 6@ = allocate_memory_size 50
if 0B3C:  samp is_dialog_responded id 1004 button 11@ list_item 0 input_text 6@
then
    if 11@ == 1
    then
        if 0AD4: 8@ = scan_string 6@ format "%d" 7@
        then
            FOR 12@ = 1 to 7@ step 1
                0AF9: samp say_msg "/rang %d +" 1@
                wait 1000
            END
        0AC9: free_allocated_memory 6@
        end
    else
    end
end
Тут я вписал 12@ = 1 "начальный отсчет" цифру 1, так как минимальный ранг игрока - первый.
В понижении я указал число "9", так как повышать мы можем только до 9 ранга, соотв. он начальный.
Но вот повышение работает удовлетворительно, а понижение - нет :с.

Псс... Понижение должно быть такое же, как и повышение
 

kraft1k

Вынь х*й из головы и все получится © hnnssy
Друг
1,480
1,168
Ну тк измени тогда))


CLEO:
alloc 0@ 32
// 1@ = random_int 0x41 to 0x5A
// 0C1C: 2@ = itoa 1@ radix 10
// 0C15: strcat destination 0@ source 2@
for 2@ = 0 to 30 // 0 - 30 = 31 символ, 31 символ нулевой.
    1@ = random_int 0x41 to 0x5A
    0C1E: array 0@ element 2@ el_size 1 = 1@
end
мне вот нужно от 6 до 10 рандом , типа sdfnskbweu
DtCaHNs.png
 
Последнее редактирование:

Bogach

Активный
558
27
мда, делай такой же цикл, как и для повышения, просто "/rang %d -"
Он и так аналогичный, различие только в этом:
повышение:
Код:
FOR 12@ = 1 to 7@ step 1
начальное значение поставлено "1".
понижение:
C++:
FOR 12@ = 9 downto 7@ step 1
начальное значение поставлено "9".
Есл я и тут поставлю цифру "1" вместо "9", то скрипт перестанет работать должным образом, то есть, какую бы я цифру в диалог не ввел бы, он будет понижать только на 1 ранг ниже.
 

hnnssy

Известный
Друг
2,684
2,762
Он и так аналогичный, различие только в этом:
повышение:
Код:
FOR 12@ = 1 to 7@ step 1
начальное значение поставлено "1".
понижение:
C++:
FOR 12@ = 9 downto 7@ step 1
начальное значение поставлено "9".
Есл я и тут поставлю цифру "1" вместо "9", то скрипт перестанет работать должным образом, то есть, какую бы я цифру в диалог не ввел бы, он будет понижать только на 1 ранг ниже.
Ты тупишь что ли? Делай ТАКОЙ ЖЕ цикл.
 

Mustang228

Известный
62
15
Зависание при запуске.

CLEO:
{$CLEO}

0000:
wait 300
repeat
    wait 400
until 0AFA: is_samp_structures_available

0B34: samp register_client_command "textdraw" to_label @textdraw
whiletrue
    wait 0
end


:textdraw
wait 100
for1@=0 to 999
   if
    0C5D: samp textdraw 1@ is_exists
    then
        0af8:"texdraw ID %d"1@
      end
end
samp.cmdret