PDA

Просмотр полной версии : [Plugin] Daniel's Console Colours



Daniel_Cortez
11.04.2013, 21:31
Console Colours

plugin by Daniel_Cortez




Добрый день, с вами снова я, Daniel_Cortez, хотел бы представить вам свой плагин Console Colours.


Назначение этого небольшого плагина в том, чтобы менять цвета текста в консоли, выделять особым цветом сообщения, предупреждения об ошибках и т.п.


http://s6.hostingkartinok.com/uploads/images/2013/04/c850401b24e8a23c973827a4f7c20ca7.png

Плагин Console Colours не добавит особой функциональности на ваш сервер, но зато способен неплохо украсить его.



Плагин может менять в консоли цвет как текста, так и фона.
Функции плагина:
GetConsoleColors(type=COLOR_TYPE_ALL) - получает текущую комбинацию цветов фона и текста.
type - тип цвета (необязательный параметр): COLOR_TYPE_ALL - цвет фона и текста, COLOR_TYPE_TXT - цвет текста, COLOR_TYPE_BG - цвет фона.
Пример:

bg_color = GetConsoleColors(COLOR_TYPE_BG); // записать в bg_color цвет фона в консоли сервера

txt_color = GetConsoleColors(COLOR_TYPE_TXT); // получить в txt_color цвет текста

colors = GetConsoleColors(COLOR_TYPE_ALL); // записать в переменную colors цвета текста и фона
colors = GetConsoleColors(); // ^^^ то же самое, что и выше ^^^
SetConsoleColors(colors, type=COLOR_TYPE_ALL) - устанавливает новые цвета текста и фона.
color - цвет
type - тип цвета (необязательный параметр)
Пример:

SetConsoleColors(BG_GREEN, COLOR_TYPE_BG); // установить зелёный цвет фона в консоли сервера

SetConsoleColors(TXT_RED, COLOR_TYPE_TXT); // сделать текст красного цвета

SetConsoleColors(TXT_GREEN+BG_GREY, COLOR_TYPE_ALL); // запилить зелёный текст и серый фон
SetConsoleColors(TXT_GREEN+BG_GREY); // ^^^ то же самое, что и выше ^^^
printc(color, string)
color - цвет
string - строка для вывода
printfc(color, string, ...)
color - цвет
string - строка для вывода
... - доп. параметры, как в стандартной функции printf()

И для текста, и для фона существует по 16 комбинаций цветов, итого возможны 16*16=256 комбинаций различных цветов.
Цвета текста:
TXT_BLACK - чёрный
TXT_BLUE - тёмно-синий
TXT_GREEN - тёмно-зелёный
TXT_RED - тёмно-красный
TXT_AQUA - аквамариновый
TXT_PURPLE - тёмно-фиолетовый
TXT_GOLD - золотой
TXT_LIGHTGREY - светло-серый
TXT_GREY - серый
TXT_LIGHTBLUE - светло-синий
TXT_LIGHTGREEN - светло-зелёный
TXT_LIGHTAQUA - бирюзовый
TXT_LIGHTRED - ярко-красный
TXT_MAGENTA - фиолетовый
TXT_YELLOW - жёлтый
TXT_WHITE - белый

Цвета фона: (такие же, как и цвета текста, но с префиксом "BG_")
BG_BLACK - чёрный
BG_BLUE - тёмно-синий
BG_GREEN - тёмно-зелёный
BG_RED - тёмно-красный
BG_AQUA - аквамариновый
BG_PURPLE - тёмно-фиолетовый
BG_GOLD - золотой
BG_LIGHTGREY - светло-серый
BG_GREY - серый
BG_LIGHTBLUE - светло-синий
BG_LIGHTGREEN - светло-зелёный
BG_LIGHTAQUA - бирюзовый
BG_LIGHTRED - ярко-красный
BG_MAGENTA - фиолетовый
BG_YELLOW - жёлтый
BG_WHITE - белый


http://s6.hostingkartinok.com/uploads/images/2013/04/c40e06a29fc921767102bd7a613aee95.png




Попробуем сделать простой FS для вывода сообщений разными цветами:


#include <a_samp>
#include <dcc>
#define FILTERSCRIPT
public OnFilterScriptInit()
{
// сохраняем текущий цвет
new backup_color = GetConsoleColors();
//запиливаем текст зелёного цвета
SetConsoleColors(TXT_GREEN, COLOR_TYPE_TXT);
printf("Текст зелёного цвета");
//устанавливаем светло-синий фон (при этом цвет текста останется зелёным)
SetConsoleColors(BG_LIGHTBLUE, COLOR_TYPE_BG);
printf("Синий фон");
//делаем белый фон и красный текст (при этом указывать тип цвета COLOR_TYPE_ALL необязательно)
SetConsoleColors(BK_WHITE+TXT_RED);
printf("Красный текст на белом фоне");
// восстанавливаем прежний цвет
SetConsoleColors(backup_color);
printf("Строка обычного цвета");
// упрощённый вариант (сохранение и восстановление старого цвета не требуется)
printc(BK_BLUE+TXT_GREEN, "Зелёный текст на синем фоне");
}

Результат:
http://s6.hostingkartinok.com/uploads/images/2013/04/a91d0895c0c107ee04c93c69bc44216e.png


Скачать (v1.6): https://www.dropbox.com/s/24aown53jf2y1kt/DCC_1.6.7z
Исходники (FASM): https://www.dropbox.com/s/qm1wi77n74m7cwb/DCC_1.6_Source.zip
Автор: Daniel_Cortez (http://pro-pawn.ru/member.php?100-Daniel_Cortez)
Также отдельное спасибо OKStyle за новые идеи для версии 1.6

Drive666
11.04.2013, 21:45
Отличная работа!на +!

Osetin
11.04.2013, 23:41
Плагин действительно отличный.

Mark_Twein
26.04.2013, 13:33
Отлично.

Rizzle_Smith
01.05.2013, 22:37
Круто)

Airon007
07.06.2013, 00:52
Зачёт

Ruskadance
08.06.2013, 11:09
RGHost удалил файлы, перезалей

OKStyle
17.09.2013, 11:18
Тоже закрепить бы тему - отличная работа. До нее использовал такой плагин от Cosmy, но он перестал его поддерживать.

Salvacore
13.11.2013, 01:45
Вот печаль,нету .so

Blood
10.12.2013, 17:54
Автор перезалей файл =)

Osetin
15.12.2013, 16:57
Автор перезалей файл =)

Перезалил он

[ForD]
19.12.2013, 10:34
printc(BK_BLUE+TXT_GREEN, "Зелёный текст на белом фоне");

синем фоне*

OKStyle
07.02.2014, 00:46
Не помню, спрашивал уже или нет, но: можно ли сделать так, чтобы цвет можно было указывать для каждого символа? Например, чтобы в одной строке писать разным цветом? Пример был в теме cosmy, картинки уже нет, но есть инфа: http://forum.sa-mp.com/showthread.php?t=61796&page=4

DeimoS
07.02.2014, 06:05
Последний раз редактировалось Daniel_Cortez; 11.12.2013 в 14:28. Причина: перезалил
На 13 минут пораньше и получился бы забавный парад чисел :D
Плагин интересный, хоть особой нужды в нём нет, как в таковом

Daniel_Cortez
07.02.2014, 12:34
Не помню, спрашивал уже или нет, но: можно ли сделать так, чтобы цвет можно было указывать для каждого символа? Например, чтобы в одной строке писать разным цветом? Пример был в теме cosmy, картинки уже нет, но есть инфа: http://forum.sa-mp.com/showthread.php?t=61796&page=4

Да, ты ещё в прошлом году спрашивал в скайпе. Тем не менее, пока что не вижу никакого повода продолжать разработку плагина. Причин на это несколько:
Изначально DCC задумывался чисто как доказательство того, что плагины для SA:MP можно писать на ассемблере. Этим он по сей день и остаётся.
Плагином почти никто не пользуется, т.к. нет версии на Linux (равно, как и нет надобности в Linux-версии, т.к. на хостингах обычно всё смотрят через логи). На Шindoшs хостингов (почти?) нет, а компилировать две разных версии мода для работы с DCC (на localhost) и без него (на хостинге) - просто извращение какое-то.
Плагин написан на ассемблере, это довольно сложный язык. Хоть и не brainfuck, но всё же. Отсюда и все вытекающие последствия: плохая оптимизация кода, нестабильность и т.д. и т.п., так как за этим крайне трудно уследить.
Мало кто сможет продолжить разработку плагина. Да и самописный SDK для FASM находится в зачаточном состоянии.



На 13 минут пораньше и получился бы забавный парад чисел :D
Плагин интересный, хоть особой нужды в нём нет, как в таковом
Ну вот, такой гет упустил -_-

OKStyle
09.02.2014, 13:38
Я пользуюсь этим плагином, мой сервер будет стоять на win-хостинге. Я уже дизайн для копирайтов в консоли придумал, а ты обламываешь)

BossArturKA
29.08.2014, 15:20
Скомпилируй для линукса плагин =)

L0ndl3m
29.08.2014, 17:11
Скомпилируй для линукса плагин =)
http://risovach.ru/upload/2013/12/mem/derzkij-kote_37984945_orig_.jpg

OKStyle
29.08.2014, 18:17
http://risovach.ru/upload/2013/12/mem/derzkij-kote_37984945_orig_.jpg
http://habrahabr.ru/post/119436/
http://habrahabr.ru/post/153871/

L0ndl3m
29.08.2014, 18:48
http://habrahabr.ru/post/119436/
http://habrahabr.ru/post/153871/
Прям ожидал твоего поста. Не думал, что так всё далеко зайдёт...

Это надо быть каким страстным скриптером, чтобы юзать на хостинге цветные консольки?

TrezeLurese
29.08.2014, 18:51
К тому же не каждый юзверь юзает ОС линукс на своём ПеКа для запуска сервера сампа.

Daniel_Cortez
29.08.2014, 19:06
Человеку, у которого есть своя собственная машина для хостинга, должен быть важен далеко не цвет строчек в терминале.
Большинство же держателей серверов и вовсе пользуются веб-интерфейсом.

За сим не вижу никакого резона переписывать плагин.
Исходники я выложил. Если есть желающие ломать голову с ассемблером и впустую потратить всё свободное время ради 1-2 маньяков, которым этот плагин пригодится на пингвине - go on -_-

OKStyle
29.08.2014, 19:28
Блин, 009 тоже из-за своей лени не хотел обновлять свой Controllable NPC. Вполне годное обновление предложили. Важны процесс и результат, а не применимость... Особенно для "этого" плагина.

Danny_Marcelo
20.05.2016, 08:13
Очень понравился плагин) Раскрасит скучную жизнь скриптера))

Daniel_Cortez
20.05.2016, 15:53
Ещё раз хочу предупредить, что этот плагин создавался 3 года назад чисто для фана. На практике он может послужить лишь препятствием для скриптера, поскольку не работает под Linux. Если кому-то нужно будет, пишите в этой теме, я откомпилирую плагин под линь, но с функциями-заглушками, которые ничего не будут делать. Как я уже писал ранее, вряд ли трата времени на нормальное портирование под Linux стоит того. Да и сомневаюсь, что кому-нибудь вообще нужен будет .so (пока что об этом спрашивал только OKStyle).

$continue$
20.05.2016, 17:08
А, разве не получится реализовать, что то на подобии вывода в echo (https://habrahabr.ru/post/119436/)?

Daniel_Cortez
20.05.2016, 18:50
А, разве не получится реализовать, что то на подобии вывода в echo (https://habrahabr.ru/post/119436/)?
http://pro-pawn.ru/showthread.php?723-Daniel-s-Console-Colours&p=48741&viewfull=1#post48741