Суббота, 20 Апреля 2024, 03:49

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Исчезновение и появление текста.
Исчезновение и появление текста.
FozzieДата: Среда, 02 Апреля 2014, 03:23 | Сообщение # 1
частый гость
Сейчас нет на сайте
Доброго времени суток! Вопрос возник весьма сложный.
Нужно чтобы при нажатии Enter появлялись старые сообщения (естественно всё плавно), также в процессе игры чтобы показывало только новые сообщения которые пишут.
Проще скажу так:
- Нажал Enter увидил сообщения старые.
- Играешь видишь новые сообщения.

Заранее Благодарен!
XDominatorДата: Среда, 02 Апреля 2014, 09:01 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Какие сообщения? О чем речь вообще? Ты написал ММОРПГ но не можешь оформить чатик?

Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
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
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Исчезновение и появление текста.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг