XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Барахолка
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
F3n1kz

offline
Опыт: 4,548
Активность:
DOS Text (vJass)
Переводит текст в ASCII картинку =)
пример: "test"
будет отображен примерно так
OOO=OOO=OO=OOO
=O==O===O=== O=
=O==OOO=OO==O=
=O==O=====O= O=
=O==OOO=OO==O=

Наработка состоит из 4 фций DOS_Text_Initialize - "библиотека" символов
DOS_Text_Convert - Внутр конвертер
DOS_Text_Create_Line - тож внутр фция)
DOSText - Осн фция, ее и вызываем)

DOSText (player p, string towr, real period, real timeout)
Плеер - кому будем выводить
towr - строка, которую будет выводить (пока что не более 15 символов)
Период - т.к. арт выводиться построчно, это задержка между выводом строк (типа как в фильмах про хакеров не сразу выводица а постепенно)
Таймаут - Сколько будет "висеть" наш арт)

Наработка юзает 5 гломалок (1 технич. и 4 для настройки)
integer array udg_DOStext_Alf - осн. "библиотека"

string udg_DOStext_ColorText = "|cFF00FF00" - цвет текста
string udg_DOStext_ColorBack = "|cFF000000" - цвет фона
string udg_DOStext_CharText = "H" - символ текста
string udg_DOStext_CharBack = "H" - символ фона (елси они будт не совпадать, то возможно "съезжание" текста)

Поддержка только англ алфавита, цифр и нескольких значков(=, ), .)
Впринципе добавить новый символ оч просто, макс размеры - 5х5 клеток

PS: Йа нуб, елси укажете ашипки - буду очень благодарен ^_^
Прикрепленные файлы
Тип файла: w3x DOS Text.w3x (16.9 Кбайт, 102 просмотров )
Старый 11.04.2008, 02:00
reload

offline
Опыт: 2,230
Активность:
круть, молодец, вот токо ее использовать та вроде как и негде :(
Старый 11.04.2008, 03:00
F3n1kz

offline
Опыт: 4,548
Активность:
reload, можно доработать и выводить ASCII арты =)
а ваще делалось чисто ради интереса)))
Старый 11.04.2008, 11:46
adic3x

offline
Опыт: 108,439
Активность:
впринципе неплохо, такие всяки сисмы весьма полезны для саморазвития
правда в жасс норм со строками непоработаешь, и из этого надо исходить)
Старый 11.04.2008, 14:36
adic3x

offline
Опыт: 108,439
Активность:
я кста посмотрел код, на днях выложу для ознакомления свои идеи как это можно реализовать, думаю афтору будет интересно)
Старый 12.04.2008, 11:45
S

offline
Опыт: 43,833
Активность:
Посмотрел... наработка более-менее, но такое ощущение что это гуи2jass, или по карте проехались X-dep`ом... =\
Старый 12.04.2008, 12:30
adic3x

offline
Опыт: 108,439
Активность:
Код:
globals
 integer offset=0x00

 integer array msg
 integer array xxx
endglobals

function S2Ix takes string s returns integer
 return s
 return 0x00
endfunction

function I2Sx takes integer i returns string
 return i
 return null
endfunction

function Str takes string s returns string
 return s
endfunction

function Get takes string s, integer row returns string
 return Str(I2Sx(msg[S2Ix(s)]*xxx[row]/0x04000000+offset))
endfunction

//   0000 0000 0000 0000 0000 0000 0000 0000
//   -XXX XXsX XXXX sXXX XXsX XXXX sXXX XX--

// a -000 00-0 0001 -000 10-0 0011 -000 01__
// b -001 00-0 0101 -000 00-0 0001 -000 00__

function Init takes nothing returns nothing
 local string s

 set s=" HHHH"
 set offset=S2Ix(s)
 set s=" HOOH"
 set s=" HHOH"
 set s=" HOHH"
 set s=" HHHO"
 set s=" HOHO"

 set msg[S2Ix("a")]=0x00108304
 set msg[S2Ix("b")]=0x10500100

 set xxx[0x00]=0x00000001
 set xxx[0x01]=0x00000040
 set xxx[0x02]=0x00001000
 set xxx[0x03]=0x00040000
 set xxx[0x04]=0x01000000
endfunction

//:::::::::::::::::::::::::::::::::::::::::::::::::::::::

function Trig_test_Actions takes nothing returns nothing
 call BJDebugMsg(Get("b", 0x00)+Get("a", 0x00))
 call BJDebugMsg(Get("b", 0x01)+Get("a", 0x01))
 call BJDebugMsg(Get("b", 0x02)+Get("a", 0x02))
 call BJDebugMsg(Get("b", 0x03)+Get("a", 0x03))
 call BJDebugMsg(Get("b", 0x04)+Get("a", 0x04))
endfunction

//===================================================

function InitTrig_test takes nothing returns nothing
 call Init()
    set gg_trg_test = CreateTrigger(  )
    call TriggerRegisterPlayerChatEvent( gg_trg_test, Player(0), "-a", true )
    call TriggerAddAction( gg_trg_test, function Trig_test_Actions )
endfunction


обьяснять как работает щас времени нет, + много чего нужно для отладки
но

попробуйте откомпилить это в "чистой карте"

т.е. у мну все пашет в таком виде)

ADOLF добавил:
Sasha, ТТ, гуи2жасс нету, хДеп нету, ты чего?!

зы, я свой код потом откоменчу и поясню что да как, т.к. ща времени нету
Прикрепленные файлы
Тип файла: w3x adx_XxX.w3x (12.5 Кбайт, 69 просмотров )
Старый 12.04.2008, 13:28
F3n1kz

offline
Опыт: 4,548
Активность:
ADOLF, а почему ты везде юзаешь 8ичные интегеры? о_О

PS: Ф код не фтыкнул о_О
Особенно ф это:
set s=" HOOH"
set s=" HHOH"
set s=" HOHH"
set s=" HHHO"
set s=" HOHO"

Саша, с чегойта у тебя такие ощущения?

Отредактировано F3n1kz, 12.04.2008 в 21:55.
Старый 12.04.2008, 19:00
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
ADOLF, омфг, ты решил всех напугать? ^_^ В общем, идея мне ясна (как ни странно бы это ни звучало).

Известно, что когда создается новая строка, ей выделяется определенный хендл (при условии, что она уникальна).
При инициализации мы получаем отступ (offset), чтобы знать, с какого дескриптора идут служебные строки (в данном случае это 21).
Далее задаются комбинации представления символов, затем задаются "волшебные" числа для каждой буквы и задается массив для сдвига. (2^0, 2^6, 2^12, 2^18, 2^24) Т.е. степень обозначает позицию перед разделителем "пяти байтов".

Собственно, в функции Get хитрая операция для получения id хендла строки. Суть ее в том, чтобы вытащить 5 байтов, которые являются номером комбинации в HEX-представлении (номеруются они с нуля). А т.к. мы делали аллокацию этих самых комбинаций, то нужно просто добавить оффсет (+21), чтобы получить id хендла строки.
С помощью Str(I2Sx(...)) корректное получение строки гарантировано.

ADOLF, кстати, можно в данном случае не 8-байтовые, а 5-байтовые числа юзать, мб понятнее было бы для народа =)
Старый 12.04.2008, 21:04
S

offline
Опыт: 43,833
Активность:
Цитата:
Саша, с чегойта у тебя такие ощущения?

Да так... =\ Просто камрад я вас знаю, и чтобы вы такое на джассе написали - почти что фонтаздега =)

Sasha добавил:
Хотя если это реально твоя наработка то ты делаешь успехи в изучении jass ;)
Старый 12.04.2008, 21:13
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
ShadoW DaemoN, а в случае с русскими символами?
Старый 12.04.2008, 21:16
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
FellGuard, ты имеешь в виду handle-id от строки на русском? Если да, то в системе Адольфа не имеет значения, символы какого языка используются, хендл будет корректен (это более чем вероятно).
Старый 12.04.2008, 21:25
adic3x

offline
Опыт: 108,439
Активность:
+1 и пряник для ShadoW DaemoN=)
т.е. он прохавал фичу) ну понятно что код в таком виде бцдет в стопицот раз бестрее кучи циклов и ифов=)

т.е. в жасс строки - это обьекты, а в переменных храниться ссылка на этот обьект (т.е. она может быть расмотренна и как число с помощью рб)

Цитата:
юзаешь 8ичные интегеры?


ну вообще то 16ричные + тут они как раз нужны, описывать сдвиги в 10 бред)))

Цитата:
ADOLF, кстати, можно в данном случае не 8-байтовые, а 5-байтовые числа юзать, мб понятнее было бы для народа =)


??? если вы про хекс и дец, то тут как я говорил хекс просто необходим для того, что бы было понятно что это сдвиги, к примеру 0x00400000 куда яснее чем 262144 =)
Старый 13.04.2008, 22:50
F3n1kz

offline
Опыт: 4,548
Активность:
%) не, йа пока еще не дорос до такого ;)
Старый 14.04.2008, 03:34
adic3x

offline
Опыт: 108,439
Активность:
ну кста мб у мну ненаглядно получилось, ну в моем примере Н - закрашенная ячейка, О - нет, т.е. строки имеют вид, ну вы поняли, мне просто влом подбирать было)

Цитата:
йа пока еще не дорос до такого ;)


ну как сказать, впринципе мой код куда проще)

http://xgm.guru/forum/showthread.php?t=15888
вот статья, можно почитать на досуге, а так...

дорастай потихеньку=)
Старый 14.04.2008, 13:55
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 22:31.