Stack

SR_team

like pancake
Автор темы
BH Team
4,798
6,469
Плагин добавляет подобие стека в CLEO-скрипты

Опкоды:
  • 0C9A - положить на стек данные
  • 0C9B - достать со стека данные

Установка плагина: Скопировать файл stack.cleo в папку CLEO

Установка опкодов

Перейдите в директорию Sanny Builder 3\data\sa и отредактируйте следующие файлы:
SASCM.ini:
0C9A=1,push %1d%
0C9B=1,pop %1d%
opcodes.txt:
0C9A: push 0@
0C9B: pop 0@
keywords.txt:
0C9A=push
0C9B=pop

Использование без установки
Дописать в начало скрипта:
{$OPCODE 0C9A=1,push %1d%}
{$OPCODE 0C9B=1,pop %1d%}



простой пример:
{$CLEO}
wait 2000
0@ = 7
0AF8: add_chat_message "0@ = %d" color -1 args 0@
0C9A: push 0@
0@ = 12
0AF8: add_chat_message "0@ = %d" color -1 args 0@
0C9B: pop 0@
0AF8: add_chat_message "0@ = %d" color -1 args 0@
0A93: end

// Результат в чат:
// 0@ = 7
// 0@ = 12
// 0@ = 7
простой пример с установленными keywords.txt:
{$CLEO}
wait 2000
0@ = 7
0AF8: add_chat_message "0@ = %d" color -1 args 0@
push 0@
0@ = 12
0AF8: add_chat_message "0@ = %d" color -1 args 0@
pop 0@
0AF8: add_chat_message "0@ = %d" color -1 args 0@
0A93: end

// Результат в чат:
// 0@ = 7
// 0@ = 12
// 0@ = 7
Более сложная конструкция:
{$CLEO}
wait 2000
0@ = 7
0AF8: add_chat_message "0@ = %d" color -1 args 0@
0C9A: push 0@
0@ = 12
0AF8: add_chat_message "0@ = %d" color -1 args 0@
0C9A: push 0@
0@ = 100
0AF8: add_chat_message "0@ = %d" color -1 args 0@
0C9B: pop 0@
0AF8: add_chat_message "0@ = %d" color -1 args 0@
if 0C9B: pop 1@ // Опкод возвращает TRUE, если достал что-то со стека
then
    0AF8: add_chat_message "0@ = %d 1@ = %d" color -1 0@ args 1@
end
0A93: end

// Результат в чат:
// 0@ = 7
// 0@ = 12
// 0@ = 100
// 0@ = 12
// 0@ = 12 1@ = 7
Попытка чтения из пустого стека:
{$CLEO}
wait 2000
if 8C9B: pop 1@
then
    0AF8: add_chat_message "stack is empty" color -1 args
end
0A93: end

// Результат в чат:
// stack is empty

Исходник: https://gitlab.com/prime-hack/cleo-stack
 

Вложения

  • stack.cleo
    299.5 KB · Просмотры: 16
Последнее редактирование:

Shlepa

Потрачен
215
48
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
И что он даёт?
Ну блин объясните для ооочень донного чайника что он даёт русским языком?
И что он даёт?

Ну блин объясните для ооочень донного чайника что он даёт русским языком?
Я код открыл посмотрел и хз
 
  • Нравится
Реакции: Izvinisb

frit

Известный
389
174
И что он даёт?

Ну блин объясните для ооочень донного чайника что он даёт русским языком?

Я код открыл посмотрел и хз
Стек — абстрактный тип данных, представляющий собой список элементов, организованных по принципу LIFO. Чаще всего принцип работы стека сравнивают со стопкой тарелок: чтобы взять вторую сверху, нужно снять верхнюю.
 
  • Нравится
Реакции: jenqqq

memir

🇷🇺
Всефорумный модератор
339
611
сделал бы без глобального состояния на весь скрипт
 

Kristyan

Известный
165
16