Fozzie | Дата: Среда, 02 Апреля 2014, 03:23 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Доброго времени суток! Вопрос возник весьма сложный. Нужно чтобы при нажатии Enter появлялись старые сообщения (естественно всё плавно), также в процессе игры чтобы показывало только новые сообщения которые пишут. Проще скажу так: - Нажал Enter увидил сообщения старые. - Играешь видишь новые сообщения.
Заранее Благодарен!
|
|
| |
Fozzie | Дата: Среда, 02 Апреля 2014, 14:55 | Сообщение # 3 |
частый гость
Сейчас нет на сайте
| Цитата XDominator ( ) Какие сообщения? О чем речь вообще? Ты написал ММОРПГ но не можешь оформить чатик? Я не написал ММОРПГ. Просто хочу понять, как можно реализовать это? Вот объект: Код Событие Create. { draw_set_color(c_white); script_initlines(); keyboard_string = ''; }
Код Событие Alarm 0. { script_addline('Потеряно соединение.',c_red) show_message('Потеряно соединение.') closesocket(global.servertcpsocket) dllfree() room_goto(RoomTest) }
Код Событие Step. if keyboard_check_pressed(vk_enter)
{ global.messagesize = receivemessage(global.servertcpsocket) if (global.messagesize > 0) { bufferdecrypt(global.pass) global.messageid = readbyte() switch(global.messageid) { case 1: messagevalue = readstring() script_addline(messagevalue,c_yellow); break; case 2: { messagevalue = readstring() script_addline(messagevalue,c_red); sound_play(snd_alert); break; } case 12: { show_message('Вы были заблокированы.') closesocket(global.servertcpsocket) room_goto(rm_network) break; } case 13: { messagevalue = readstring() show_message(messagevalue) break; } case 14: { show_message('Вы были брошены из игры') closesocket(global.servertcpsocket) room_goto(rm_network) break; } case 20: { script_addline(global.banplayer+' заблокирован.',c_blue) break; } case 21: { global.privatemessage = get_string('Введите приватное сообщение','') clearbuffer() writestring(global.username,true) writebyte(13) writestring(global.privatemessage,true) writestring(global.privateplayer,true) bufferencrypt(global.pass) sendmessage(global.servertcpsocket) script_addline('Приватное сообщение '+global.privateplayer,c_blue) keyboard_string = '' break; } case 22: { script_addline(global.kickplayer+' был выкинут из игры.',c_blue) keyboard_string = '' break; } case 16: { show_message('Сервер отключён.') closesocket(global.servertcpsocket) room_goto(rm_network) break; } case 25: { script_addline('Игрок '+global.banplayer+' не существует.',c_blue) break; } case 26: { script_addline('Игрок '+global.privateplayer+' не существует или в настоящее время нет в сети.',c_blue) break; } case 27: { script_addline('Игрок '+global.kickplayer+' не существует или в настоящее время нет в сети.',c_blue) break; } case 28: { script_addline('Ваш уровень аккаунта был изменён до "Администратора"!',c_blue) script_addline('Чтобы просмотреть список всех доступных команд администратора, введите /commands.',c_blue) break; } case 29: { script_addline('Ваш уровень аккаунта был изменён до "Модератора"!',c_blue) script_addline('Чтобы просмотреть список всех доступных команд модератора, введите /commands.',c_blue) break; } case 30: { script_addline('Ваш уровень аккаунта был изменен обратно до игрока.',c_blue) break; } case 33: { script_addline(global.makemod+' уровень аккаунта был изменён обратно до "Модератора"',c_blue) break; } case 35: { script_addline('Игрок '+global.makemod+' не существует.',c_blue) break; } case 34: { script_addline(global.makeplayer+' уровень аккаунта был изменён обратно до "Игрока".',c_blue) break; } case 36: { script_addline('Игрок '+global.makeplayer+' не существует.',c_blue) break; } case 38: { script_addline(global.unbanplayer+' разблокирован',c_blue) break; } case 39: { script_addline('Игрок '+global.unbanplayer+' не существует.',c_blue) break; } case 40: { script_addline('Вы не имеете достаточно прав, чтобы выкинуть из игры этого игрока.',c_blue) break; } case 41: { script_addline('Вы не имеете достаточно прав чтобы заблокировать игрока.',c_blue) break; } case 42: { script_addline('Вы не имеете достаточно прав для изменения уровня аккаунта этого игрока на "Модератора',c_blue) break; } case 43: { script_addline('Вы не имеете достаточно прав для изменения уровня аккаунта этого игрока на "Администратора".',c_blue) break; } case 46: { show_info() break; } case 100: { clearbuffer() writestring(global.username,true) writebyte(101) writestring(global.username,true) bufferencrypt(global.pass) sendmessage(global.servertcpsocket) alarm[0] = 300 break; } case 45: { script_addline('Вы не имеете достаточно прав для изменения уровня аккаунта этого игрока на "Игрок".',c_blue) break; } case 15: { logoutplayer = readstring() script_addline(logoutplayer+' вышел из игры.',c_red) break; } } } }
Код Game End. closesocket(global.servertcpsocket) dllfree()
Код Draw. { while (string_width(keyboard_string+'Сервер: ') > 625) keyboard_string = string_copy(keyboard_string,1,string_length(keyboard_string)-1); script_drawlines(250,336); draw_set_color(c_white); draw_set_font(fnt_normal); draw_text(250,460,keyboard_string +'|'); }
Код Press Enter if (keyboard_string = '') exit;
if string_pos('/ban',keyboard_string) = 1 { draw_set_color(c_white); global.banplayer = string_copy(keyboard_string,6,string_length(keyboard_string)-5) clearbuffer() writestring(global.username,true) writebyte(17) writestring(global.banplayer,true) bufferencrypt(global.pass) sendmessage(global.servertcpsocket) keyboard_string = '' }
if string_pos('/unban',keyboard_string) = 1 { draw_set_color(c_white); global.unbanplayer = string_copy(keyboard_string,8,string_length(keyboard_string)-7) clearbuffer() writestring(global.username,true) writebyte(37) writestring(global.unbanplayer,true) bufferencrypt(global.pass) sendmessage(global.servertcpsocket) keyboard_string = '' }
if string_pos('/private',keyboard_string) = 1 { draw_set_color(c_white); global.privateplayer = string_copy(keyboard_string,10,string_length(keyboard_string)-9) clearbuffer() writestring(global.username,true) writebyte(18) writestring(global.privateplayer,true) bufferencrypt(global.pass) sendmessage(global.servertcpsocket) keyboard_string = '' }
if string_pos('/kick',keyboard_string) = 1 { draw_set_color(c_white); global.kickplayer = string_copy(keyboard_string,7,string_length(keyboard_string)-6) clearbuffer() writestring(global.username,true) writebyte(19) writestring(global.kickplayer,true) bufferencrypt(global.pass) sendmessage(global.servertcpsocket) keyboard_string = '' }
if string_pos('/moderator',keyboard_string) = 1 { draw_set_color(c_white); global.makemod = string_copy(keyboard_string,12,string_length(keyboard_string)-11) clearbuffer() writestring(global.username,true) writebyte(31) writestring(global.makemod,true) bufferencrypt(global.pass) sendmessage(global.servertcpsocket) keyboard_string = '' }
if string_pos('/player',keyboard_string) = 1 { draw_set_color(c_white); global.makeplayer = string_copy(keyboard_string,9,string_length(keyboard_string)-8) clearbuffer() writestring(global.username,true) writebyte(32) writestring(global.makeplayer,true) bufferencrypt(global.pass) sendmessage(global.servertcpsocket) keyboard_string = '' }
if string_pos('/commands',keyboard_string) = 1 { draw_set_color(c_white); clearbuffer() writestring(global.username,true) writebyte(44) bufferencrypt(global.pass) sendmessage(global.servertcpsocket) keyboard_string = '' }
if keyboard_string = '' exit;
{ draw_set_color(c_white); keyboard_string = string_replace_all(keyboard_string, '','****') keyboard_string = string_replace_all(keyboard_string, '','****')
script_addline(global.username+': '+keyboard_string,c_black); clearbuffer() writestring(global.username,true) writebyte(102) writestring(keyboard_string,true) bufferencrypt(global.pass) sendmessage(global.servertcpsocket) keyboard_string = ''; }
Код Press Escape. { clearbuffer() writestring(global.username,true) writebyte(103) writestring(global.username+' вышел из игры.',true) bufferencrypt(global.pass) sendmessage(global.servertcpsocket) show_message('Вы вышли из игры.'); game_end(); }
Как тут понятно, взято из примера где используется 39dll. Мне нужно лишь чтобы при нажатии Enter менялась прозрачность текста. И чтобы я мог не всегда писать, а только если я нажал Enter.
То есть при нажатии Enter я могу писать. Без нажатия я могу лишь читать новые сообщения которые должны исчезать в течении 5 секунд. При нажатии Enter появляется возможность читать и старые сообщения, при этом показывая новые. После отправки, текст должен снова исчезнуть после 5 секунд как был отправлен текст.
Сообщение отредактировал Fozzie - Среда, 02 Апреля 2014, 14:59 |
|
| |
XDominator | Дата: Четверг, 03 Апреля 2014, 08:57 | Сообщение # 4 |
постоянный участник
Сейчас нет на сайте
| Используй альфа-канал. Он отвечает за прозрачность. То есть, самое простое как можно сделать - if чтото {draw_set_alpha(0)} - все что ты рисуешь дальше, будет невидимым. Не относится напрямую к ext-функциям отрисовки(типа draw_sprite_ext), но в качестве параметра можно указать зависимость от этого параметра, если не ошибаюсь. Таким образом заданная альфа будет делать прозрачными все твои спрайты и тексты, отрисованные после задания непосредственно альфы. Работает по такому же принципу как draw_set_font или draw_set_color. Степень прозрачности задается числом от 0 до 1.
Ghaarp
The soul lighter(Android, logic)
Zzzzombie RAGE!!!(For android)
Сообщение отредактировал XDominator - Четверг, 03 Апреля 2014, 08:57 |
|
| |