Пятница, 26 Апреля 2024, 14:30

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Записи участника » zzzzza [182]
Результаты поиска
zzzzzaДата: Воскресенье, 11 Мая 2014, 04:30 | Сообщение # 41 | Тема: Возможно ли создать лаунчер?
участник
Сейчас нет на сайте
1)Ну если делать с помощью "39dll" или "Faucet Networking", то можно не скачивать файл, в котором хранится версия, а просто обратиться к серверу и посмотреть на его ответ. Все хорошо, кроме одного, все файлы не нужно удалять, нужно удалить только те, которые будут заменены. А то каждый раз качать все файлы, это не айс)
2)Лучше в ".ini"(ини файлы) храни.
3)Я вижу три варианта:
I)С помощью FTP сервера. Для этого тебе нужно будет скачать библиотеку или писать ".bat"(батники), которые будут скачивать/загружать файлы, и создать свой FTP сервер естественно(есть бесплатные хостинги). А дальше все понятно.
II)С помощью консольной программы "wget". Загружаешь файлы на какой-нибудь файлообменник, а потом с помощью wget скачиваешь. Так же придется писать ".bat"(батники) и загружать файлы ты вряд ли сможешь, хотя может быть можно что-нибудь придумать)
III)С помощью "39dll" или "Faucet Networking". На мой взгляд, это самый удобный способ. Я лично с "Faucet Networking" работаю. Создаешь клиент и сервер. При запуске клиента, он подключается к серверу, клиет отправляет свою версию, сервер проверяет, если совпадает, то отправляет клиенту сообщение "Все хорошо, запускать можно"(пример), если же не совпадает, то начинает отправлять новые файлы. Клиент их принимает.
4)В первом способе можно. Во втором можно, только это будет очень-очень геморойно. В третьем способе можно, ну скорее всего, придется архивировать, передавать архив, и распаковывать. Можно без архивации попробовать: хранишь все названия файлов в ".ini" или ".txt", потом проверяешь, файлы которых не хватает или которые нужно обновить отправляешь.
zzzzzaДата: Четверг, 10 Апреля 2014, 13:49 | Сообщение # 42 | Тема: Смена спрайта в зависимости от значения переменной
участник
Сейчас нет на сайте
Cmaujluk, ну можно все в один спрайт запихнуть и когда тебе нужно сменить на другой индекс, пишешь "image_index=value".
Если тебе нужно поменять спрайт, то можешь сделать так, как предложил ErrantBug или так:
Код

switch (value)
   {
     case 0:
      sprite_index=spr_player1;
     break;

    case 1:
     sprite_index=spr_block;
    break;
    ...
   }

Или если будешь делать таким способом, легче будет назвать все спрайты числами "spr_1". И тогда можно будет сделать так:
Код

switch (value)
   {
     ll='spr_'+string(value);
     case 0:
      sprite_index=ll;
     break;

    case 1:
     sprite_index=ll;
    break;
    ...
   }


Сообщение отредактировал zzzzza - Четверг, 10 Апреля 2014, 13:50
zzzzzaДата: Суббота, 15 Марта 2014, 10:04 | Сообщение # 43 | Тема: 39DLL
участник
Сейчас нет на сайте
То что в коде первым выполняется, в тот буфер и приходит. Попробуй их поменять местами. Вообще странный метод принятия.
zzzzzaДата: Пятница, 14 Марта 2014, 22:27 | Сообщение # 44 | Тема: 39DLL
участник
Сейчас нет на сайте
maksim1221232, конечно может быть:)
zzzzzaДата: Четверг, 13 Марта 2014, 07:52 | Сообщение # 45 | Тема: 39DLL
участник
Сейчас нет на сайте
1)В информатике буфер — это область памяти, используемая для временного хранения данных при вводе или выводе(Википедия). То есть ты сначала заполняешь буфер, а потом его отправляешь. Разность в том, что он держит в себе информацию и ее каждый раз приходиться ее отчищать.
Пример отправки:
Код
clearbuffer(1); //отчищаем буфер
writebyte(0,1); //записываем в первый буфер 0 байт
sendmessage(server, 0, '', 1); //отправляем все серверу

Раньше, когда 39dylib пользовался, у меня буфер 1 - был для отправки, а буфер 0 - для принятия. Так их можно сделать любыми.
2)Я думаю, что можно. Это легко проверить.
3)На этот вопрос точно не могу ответить. Вообще было давно, когда намудрил с кодом, игра не отвечала, а потом отвисла и все передалось.
Но так же был случай, когда разбирался с передачей файлов. Пытался сам разобраться и приходила только часть файла или через секунды две, приходил один байт, или вообще ничего не приходило. Потом разобрался и понял в чем были ошибки, но смысла объяснять их нет, так как FN и 39DLL отличаются.
zzzzzaДата: Вторник, 04 Марта 2014, 15:19 | Сообщение # 46 | Тема: 39DLL - Передача объектов в комнате
участник
Сейчас нет на сайте
maksim1221232, пересмотри мой последний пост в этой теме, там реализовано по такому же способу, как и у XDominator, только для большого количества объектов.
zzzzzaДата: Среда, 26 Февраля 2014, 20:21 | Сообщение # 47 | Тема: 39DLL - Передача объектов в комнате
участник
Сейчас нет на сайте
maksim1221232, тебе нужно отправить название этого блока, с какой координаты начинать создание, количество таких блоков - ну это фигня, обычный пакет данных. Зная, что такое minecraft и сколько там блоков, тебе придется перебрать циклом ВСЮ карту и все это передать.
Хотя мне пришел в голову самый оптимальный, как я думаю, вариант передачи координат каждого объекта в комнате c 1-им циклом отправки и 2-мя циклами принятия(хотя я бы использовал мой первый вариант с файлом).
Буду писать, как в FN, так как 39DLL не особо хорошо помню.
Сервер. Create.
Код

globalvar obj;
obj[1]='obj_1';
obj[2]='obj_2';
k=2; //количество элементов массива.

Сервер. Когда клиент присоединился(можно и без цикла, но тогда придется в ручную вписывать в код with с каждым объектом и все, что в create можно удалить):
Код

var i;
write_ubyte(client,0);
write_ubyte(client,k); //Если блоков больше 255, то write_ushort и т.д.
for(i=1;i<=k;i+=1)
   {
    in=instance_number(obj[i]);
    write_ubyte(client,in);
    with (obj[i])
    {
     write_ubyte(client,string_length(obj[i])); //В FN в read_string нужно указывать сколько символов нужно принять.
     write_string(client,obj[i]);
     write_ushort(client,x);
     write_ushort(client,y);
    }   
   }

Клиент. Принятие 0 байта(так же можно без одного цикла, но придется прописывать все в ручную):
Код

k=read_ubyte(server); //read_ushort и т.д.
for(i=1;i<=k;i+=1)
   {
    in=read_ubyte(server);
    for(j=1;j<=in;j+=1)
     {
      str_l=read_ubyte(server);
      str=read_string(server,str_l);
      xx=read_short(server);
      yy=read_ushort(server);
      instance_create(xx,yy,str);
     }
   }

Вроде ничего не упустил.


Сообщение отредактировал zzzzza - Среда, 26 Февраля 2014, 20:22
zzzzzaДата: Вторник, 25 Февраля 2014, 21:00 | Сообщение # 48 | Тема: 39DLL - Передача объектов в комнате
участник
Сейчас нет на сайте
maksim1221232, мне кажется, что это не лучший способ: тебе нужно записать координаты всех этих блоков в переменную типа "string", а клиент должен принять и через цикл доставать "x-сы" и "y-ки", и может быть не один цикл, так как передаваться может максимум 255 символов за 1 раз. Ну короче, это слишком геморно.

Сообщение отредактировал zzzzza - Вторник, 25 Февраля 2014, 21:07
zzzzzaДата: Вторник, 25 Февраля 2014, 15:57 | Сообщение # 49 | Тема: 39DLL - Передача объектов в комнате
участник
Сейчас нет на сайте
maksim1221232, я имел ввиду не с моего компьютера на мой же компьютер, а с другого на мой.
То что у тебя передается не всегда - это, возможно, недоработка 39DLL. Я использую Faucet Networking и тебе советую(новее, то есть убраны недочеты 39DLL и обновляется).
zzzzzaДата: Понедельник, 24 Февраля 2014, 19:23 | Сообщение # 50 | Тема: 39DLL - Передача объектов в комнате
участник
Сейчас нет на сайте
maksim1221232, как вариант, можно сделать так:
1)Записываешь всю карту в ini файл и на протяжение всей игры дополняешь/удаляешь.(я думаю, что у тебя и так мир в ini хранится, если только он не генерируется каждый раз новый)
2)При присоединение клиента, отправляешь ему этот файл(у меня быстро файлы передаются)
3)Получив этот ini файл, клиент создает такой же мир.


Сообщение отредактировал zzzzza - Понедельник, 24 Февраля 2014, 19:24
zzzzzaДата: Воскресенье, 23 Февраля 2014, 22:38 | Сообщение # 51 | Тема: 39DLL - Передача объектов в комнате
участник
Сейчас нет на сайте
maksim1221232, карта постоянно передается или только один раз, когда присоединяется игрок?
zzzzzaДата: Четверг, 20 Февраля 2014, 19:39 | Сообщение # 52 | Тема: Таймеры
участник
Сейчас нет на сайте
HSP, он же не пустой. Если ты имел ввиду маленький, то все равно код есть и он постоянно выполняется. Я не говорю, что без alarm'а нельзя сделать, но если использовать alarm, то производительность будет выше, вопрос лишь в количестве объектов используемых в комнате.
Я когда только начинал изучать GM тоже обходил alarm стороной и выкручивался step'ом, так как не понимал как он работает. Потом задал вопрос здесь на форуме и понял что да как. И скажу, что alarm'ом гораздо удобнее пользоваться.


Сообщение отредактировал zzzzza - Четверг, 20 Февраля 2014, 19:40
zzzzzaДата: Четверг, 20 Февраля 2014, 15:48 | Сообщение # 53 | Тема: Таймеры
участник
Сейчас нет на сайте
HSP, пойми, что "step" работает постоянно, даже если у тебя условие в step'е не выполняется(то есть ничего не происходит), step все равно работает: проверяет эти же условия и т.д.(событие "Draw" так же работает)

Сообщение отредактировал zzzzza - Четверг, 20 Февраля 2014, 15:48
zzzzzaДата: Четверг, 20 Февраля 2014, 15:41 | Сообщение # 54 | Тема: Global.money Сбивается
участник
Сейчас нет на сайте
Используй ini файлы или в объекте, в котором стоит global.money=0 поставь галочку "постоянный", тогда событие "create" не будет выполняться при каждом переходе в комнату.
zzzzzaДата: Среда, 19 Февраля 2014, 01:26 | Сообщение # 55 | Тема: Экземпляр объекта
участник
Сейчас нет на сайте
HSP, поставь плюсик:D
zzzzzaДата: Вторник, 18 Февраля 2014, 20:36 | Сообщение # 56 | Тема: Экземпляр объекта
участник
Сейчас нет на сайте
smile196, В объекте, которых у тебя 3, в событие столкновения с главным объектом(как я понял, это главный герой):
Код
show_message(string(id))


Сообщение отредактировал zzzzza - Вторник, 18 Февраля 2014, 20:37
zzzzzaДата: Вторник, 18 Февраля 2014, 14:07 | Сообщение # 57 | Тема: Подскажите насчет смены объекта..
участник
Сейчас нет на сайте
HSP, зачем создавать новый/удалять старый, для этого придумана функция instance_change("объект, на который нужно сменить","цифра 1 или 0(1-в новом объекте выполняется событие create, 0 -не выполняется)")
В Create:
Код
alarm[0]=random_range(room_speed,room_speed+60)

В Alarm[0]:
Код
instance_change(obj_2,1)


Сообщение отредактировал zzzzza - Вторник, 18 Февраля 2014, 14:07
zzzzzaДата: Суббота, 25 Января 2014, 19:09 | Сообщение # 58 | Тема: Можно ли сделать программу на GM на подобие Вконтакте?
участник
Сейчас нет на сайте
Чтобы в вк и инстаграм входило не знаю как сделать, а вот если хочешь сделать свой "вконтакте" или "инстаграм", то используй FaucetNetworking.
zzzzzaДата: Воскресенье, 19 Января 2014, 21:48 | Сообщение # 59 | Тема: Не работает анимация
участник
Сейчас нет на сайте
Initro, image_index - это индекс картинки в спрайте.(1,2...)
sprite_index - это то, что тебе нужно.
zzzzzaДата: Понедельник, 16 Декабря 2013, 23:52 | Сообщение # 60 | Тема: file_copy()
участник
Сейчас нет на сайте
LunarPixel, то что нужно, спасибо:)
Форум игроделов » Записи участника » zzzzza [182]
Поиск:

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