Замена файла после закрытия игры - Проблема - решение. GML и прочее. - Разработка игр на Game Maker (Simple Mode) - Форум Game Maker. Разработка игр.
Здравствуй Гость | Перейти на сайт

Главная | Форум | Регистрация | Войти
gmaker.net ;) [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум Game Maker. Разработка игр. » Разработка игр на Game Maker (Simple Mode) » Проблема - решение. GML и прочее. » Замена файла после закрытия игры (все сложнее чем кажется)
Замена файла после закрытия игры
[E]lol Дата: Суббота, 04.09.2010, 19:27 | Сообщение # 1
Хрен заткнешь
Группа: Пользователь
Сообщений: 324
Статус: Offline
вообщем есть апдейтер, который качает по файльно, все хорошо, но что если сам апдейтер обновляться?
естественно мы не можем качать на место апдейтера, потому что он запущен
качаем например в updater.tmp, а после закрытия игры копируем файл
тут то и вопрос
это нельзя поставить в событии закрытия игры. не скопирует, потому что нету доступа.
поэтому первое что мне пришло в голову, что нужна отдельная програмка, которая после закрытия запуститься и скопирует скачаный файл, на место старого.
полез С#, сделал консольку, но тут влезла другая проблема, во-первых мне нужно узнать дерикторию игры(я не знаю), во вторых файл предстовляет из себя exe а не удобный bat(с которым я не знаком)
потом подумал сделать на гамаке прогу такую. но будет слишком много весить всего для одной функции то
директория игры храниться в документах, к которому путь не всегда одинаковый(например у ХР - C:/Document and Settings/%user%/My Docyments, а у семёрки и висты - C:/Users/%user%/Documents), поэтому понадобиться найти функцию которая вычислит подобное.
можно конечно найти относительный путь, но я не знаю как это сделать(ни на bat'e ни на C#'е, и кстати нахожу нахождение относительного путя более выгодным чем чтение из ини которая храниться извините где то в [выпилено])

я склоняюсь к тому что это будет bat, но проблема в том что хранится она будет не в директории игры, а в директории игры + /data/bla-bla.bat

поэтому я и тут:3

кстати вся эта проблема возникла только из за нежелания делать инсталяционных пакетов.

а может быть у вас будут другие предложения по реализации...

СПАСИБО ЗА ВНИМАНИЕ И БУДУЩЕЕ СОДЕЙСТВИЕ!

Не извиняю. SRes



[url=http://yemsalat.org/captiongame/highscore.php?curname=[E]lol][img]http://yemsalat.org/captiongame/images/[E]lol.png[/img][/url]


Сообщение отредактировал [E]lol - Суббота, 04.09.2010, 19:55
 
SRes Дата: Суббота, 04.09.2010, 19:41 | Сообщение # 2
Каждый 5й пост мой
Группа: Страж
Сообщений: 2512
Статус: Offline
Code
@echo off
cd../
cd../
xcopy "updater.tmp" "updater.exe" /y /q /i
del "updater.tmp"

cd../ - прыгает в директорию которая находится выше.
Итого простейший бат файл. Можно сделать прожку и на асме, но это только против особо умных игроков, которые этот бат будут править, а вообще можно просто его создавать перед выходом из игры и запускать.
P.S. Все легче, чем кажется.


Velociped Inc.
 
[E]lol Дата: Суббота, 04.09.2010, 20:06 | Сообщение # 3
Хрен заткнешь
Группа: Пользователь
Сообщений: 324
Статус: Offline
трансформировал до подобного образа:
Code
@echo off
cd../
xcopy "tmp.exe" "update.exe" /y /q /i
del "tmp.exe"

но если файла update.exe не существует, то он спрашивает, директория это или файл
можно это убрать?




[url=http://yemsalat.org/captiongame/highscore.php?curname=[E]lol][img]http://yemsalat.org/captiongame/images/[E]lol.png[/img][/url]
 
SRes Дата: Суббота, 04.09.2010, 20:22 | Сообщение # 4
Каждый 5й пост мой
Группа: Страж
Сообщений: 2512
Статус: Offline
Code
@echo off
cd../
copy "tmp.exe" "update.exe"
del "tmp.exe"


Velociped Inc.
 
[E]lol Дата: Суббота, 04.09.2010, 21:32 | Сообщение # 5
Хрен заткнешь
Группа: Пользователь
Сообщений: 324
Статус: Offline
спасибо:3

Добавлено (04.09.2010, 21:32)
---------------------------------------------
а можно что бы он выждал пару миллисекунд?
а то иногда слишком резво запускается, и не удается ему совершить действие по назначению...




[url=http://yemsalat.org/captiongame/highscore.php?curname=[E]lol][img]http://yemsalat.org/captiongame/images/[E]lol.png[/img][/url]
 
SRes Дата: Суббота, 04.09.2010, 22:31 | Сообщение # 6
Каждый 5й пост мой
Группа: Страж
Сообщений: 2512
Статус: Offline
Code
@echo off  
cd../
ping 1.1.1.1 -n 1 -w 100 >NUL
copy "tmp.exe" "update.exe"  
del "tmp.exe"

100 - это кол-во миллисекунд которые cmd ждет ответ, насколько знаю 1.1.1.1 всегда будет неправильным айпишником, так что это вполне нормальная эмуляция паузы (именно команды паузы в bat нет).

Добавлено (04.09.2010, 22:31)
---------------------------------------------
Впрочем очень советую использовать гугл, ибо я с бат файлами никогда не работал, но составить такой "скрипт" проблем не нашел.



Velociped Inc.
 
[E]lol Дата: Суббота, 04.09.2010, 22:42 | Сообщение # 7
Хрен заткнешь
Группа: Пользователь
Сообщений: 324
Статус: Offline
спасибо за содействие, я попробую как нибудь бат изучить



[url=http://yemsalat.org/captiongame/highscore.php?curname=[E]lol][img]http://yemsalat.org/captiongame/images/[E]lol.png[/img][/url]
 
Ninja Дата: Суббота, 04.09.2010, 22:43 | Сообщение # 8
Хоть палкой гони
Группа: Проверенные
Сообщений: 683
Статус: Offline
по-моему для паузы рекомендуют 127.0.0.1 пинговать


Oh, my God! You kill Kenny! You bastard!
 
[E]lol Дата: Суббота, 04.09.2010, 22:45 | Сообщение # 9
Хрен заткнешь
Группа: Пользователь
Сообщений: 324
Статус: Offline
самого себя быстро отпингуешь наверно



[url=http://yemsalat.org/captiongame/highscore.php?curname=[E]lol][img]http://yemsalat.org/captiongame/images/[E]lol.png[/img][/url]
 
SRes Дата: Суббота, 04.09.2010, 22:46 | Сообщение # 10
Каждый 5й пост мой
Группа: Страж
Сообщений: 2512
Статус: Offline
Ninja, biggrin Как ? Пинг пройдет сразу и паузы не будет. А так прога ждет пока 1.1.1.1 ответит, чего не будет ни в коем случае...


Velociped Inc.
 
Ninja Дата: Воскресенье, 05.09.2010, 00:50 | Сообщение # 11
Хоть палкой гони
Группа: Проверенные
Сообщений: 683
Статус: Offline
SRes, я когда-то проверял, работало правильно, судя по всему пинг вставляет секундные паузы, и 127.0.0.1 всегда локалхост, так что надежнее будет его использовать

Добавлено (05.09.2010, 00:50)
---------------------------------------------
команда такая:
ping 127.0.0.1 -n k
k - количество секунд.



Oh, my God! You kill Kenny! You bastard!

Сообщение отредактировал Ninja - Воскресенье, 05.09.2010, 00:51
 
SRes Дата: Воскресенье, 05.09.2010, 09:22 | Сообщение # 12
Каждый 5й пост мой
Группа: Страж
Сообщений: 2512
Статус: Offline
Надежнее и прозрачнее юзать как раз пинг с ожиданием отклика, а так как отклик не придет - то можно спокойно использовать это как паузу...


Velociped Inc.
 
[E]lol Дата: Вторник, 07.09.2010, 14:50 | Сообщение # 13
Хрен заткнешь
Группа: Пользователь
Сообщений: 324
Статус: Offline
Code
@echo off  
ping 1.1.1.1 -n 1 -w 100 >NUL

cd../  
copy "tmp.02" "update.exe"  
del "tmp.02"
copy "tmp.01" "RB4.exe"  
del "tmp.01"

знаю что нужен великий гугл, но почему при трансформации кода в подобное, он отказывается перетаскивать файлы
ниче не говорит, просто не перетаскивает

Добавлено (07.09.2010, 14:50)
---------------------------------------------
я понял в чем была проблема, как только выходит ошибка в коде, он прекращает действия, во моем случае проблема была в tmp.02, если его нету, то тогда у него проблемы возникают, причем серъёзные




[url=http://yemsalat.org/captiongame/highscore.php?curname=[E]lol][img]http://yemsalat.org/captiongame/images/[E]lol.png[/img][/url]
 
SRes Дата: Вторник, 07.09.2010, 15:19 | Сообщение # 14
Каждый 5й пост мой
Группа: Страж
Сообщений: 2512
Статус: Offline
Сделай два батника, один копирует один файл, другой - другой, так проще.


Velociped Inc.
 
[E]lol Дата: Среда, 15.09.2010, 21:52 | Сообщение # 15
Хрен заткнешь
Группа: Пользователь
Сообщений: 324
Статус: Offline
а как в гм подняться в корневую папку?

Добавлено (11.09.2010, 21:24)
---------------------------------------------

Code
@echo off   
@ping 1.1.1.1 -n 2 -w 100 >NUL
cd../
move "tmp01" "RB4.exe"

как сделать следующее:
при запуске батника в конце "игры"-апдейтера, он отказывается копировать
а если просто запустить, то отлично работает
так вот как совершить такое едйствие правильно:
через execute_shell, или execute_program?
и почему через оба способа, он отказывется копировать?
при любой задержи перед действием, не копирует(а раньше копировал)

Добавлено (15.09.2010, 21:52)
---------------------------------------------
вообщем складывается такая ситуация:
код вот такой:

Code
@echo off
@ping 1.1.1.1 -n 1 -w 100 >NUL
cd../
move "tmp01" "RB4.exe"
pause

если игра запускает его то пишет:
Code
The system cannot find the file specified.
Press any key to continue . . .

если просто запустить то:
Code
        1 file(s) moved.
Press any key to continue . . .

в чем проблема? не пойму никак.



[url=http://yemsalat.org/captiongame/highscore.php?curname=[E]lol][img]http://yemsalat.org/captiongame/images/[E]lol.png[/img][/url]


Сообщение отредактировал [E]lol - Среда, 15.09.2010, 21:53
 
Форум Game Maker. Разработка игр. » Разработка игр на Game Maker (Simple Mode) » Проблема - решение. GML и прочее. » Замена файла после закрытия игры (все сложнее чем кажется)
Страница 1 из 11
Поиск:



Сообщество Gmaker.SU 2005-2012
Используются технологии uCoz
Простой вход