| 
| 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 |  |  |  |  |