Итак, небольшое предисловие: все мы когда-либо теряли карту (в виду глупых ошибок, лага винды или иных обстоятельств) и все мы хотели (и, думаю, хотим) избежать этой проблемы. С этой целью я написал маленький скрипт, при запуске которого будет происходить бэкап (backup - резервное копирование) карты. Скрипт кладется в корневой каталог игры, ярлык на него выносится на рабочий стол. Какова система работы: при запуске происходит создание папки Maps\backup\системная дата и копирование указанной карты, имя которой меняется на системное время. После копирования происходит сохранение результата в лог и запуск редактора, т.е. бэкап происходит перед запуском WE.[/color][/b]
Code
@echo off set now=%TIME:~0,-3% set now=%now::=_% mkdir "%~dp0Maps\backup\%date%" copy "Maps\You_Map\map_file.w3x" "%~dp0Maps\backup\%date%\backup %now%.w3x" /Y echo %time:~0,-3% %date% Backup sucsessfully done to %~dp0Maps\backup\%date%\backup %now%.w3x>>"%~dp0Maps\backup\backup.log" cls "worldedit.exe" exit /b
где Maps\You_map\map_file.w3x - путь до папки и файла вашей карты.
Если вы пользуетесь редакторами типа JNPG или WEU, т.е. которые не лежат в корневой папке игры, вам нужно исправить строчку
Каждый раз менять путь? Ты о чем? Указал путь к карте один раз и все, ок да?
Добавлено (17 Ноябрь 2011, 17:21:25) --------------------------------------------- Каждый раз менять путь? Лолштоле? Ты, походу, вообще не вкурил, как работает скрипт. Указал путь к карте и скрипт автоматически делает ее резервную копию
ну млеа че ты тупишь я же не всю жизнь одну карту делать буду поделал одну, создал другую помочь комунибудь и тд каждый раз нада менять путь когда карта другая
Ty3uK, в качестве альтернативы можно сделать таким образом: путь к карте читать как аргумент командной строки (C:\BackupSystem.exe C:\Games\WarCraft\Maps\MyProject.w3x). Фишка в том, что того же результата можно добиться, перетащив карту на значок скрипта. Проверка JNGP осуществляется достаточно легко - парсишь код карты и смотришь имя последней функции. Если оно начинается с "jasshelperinit" (или что-то в этом роде, точно не помню), значит, JNGP есть.
SirNikolas, как я уже говорил - я не шибко дружу я программированием) если кому-то надо будет раскрутить скрипт - он это сделает, я же кинул простой, но работающий вариант
а ктонибудь знает как сделать чтобы когда зпускаешь файл типа w3x он открывался в редакторе, а я открыть с помощью редактора, а он просто запускает редактор но не карту... ну можно скрипт, и открыть с помощью этот скрипт укажу.. просто я ламерок в .cmd =)
Нормальное название. Кэп утверждает, что скрипт может быть системой, если считаешь иначе- найди лексическое значение слова "система"
Добавлено (18 Ноябрь 2011, 18:21:14) --------------------------------------------- ок да мой скрипт состоит из действий: создание папки, преобразование времени, сохранение карты, ведение лога, запуск программы. Элементы собраны в систему
Добавлено (18 Ноябрь 2011, 18:27:16) --------------------------------------------- Надо учить лексические толкования слов, батенька (или на худой конец научиться искать пруф в интернете), а то туго с такими людьми общаться
Качаем файл, сохраняем в корень игры, создаем ярлык и кидаем на Рабочий стол (или куда еще надо). После этого можно как запускать по ярлыку, так и перетаскивать на него необходимые карты, до 16 штук. При запуске вручную скрипт проверяет несколько вариантов имени файла. Например, при вводе "ImbaMap" одной из карт, которую он будет искать, окажется "C:\Games\Warcraft III\Maps\ImbaMap.w3x".
static string ReadEditorPath() { Console.WriteLine("Введите путь к Редактору:"); string s; while ((s = Console.ReadLine().Trim()) == "") { } if (!Path.HasExtension(s)) s += ".exe"; StreamWriter sw = new StreamWriter(EditorPathFile); sw.Write(s); sw.Close(); return s; }
static void Copy(string path) { if (!Path.HasExtension(path)) path += ".w3x"; try { if (File.Exists(path)) File.Copy(path, CopyPath + Path.GetFileName(path), true); else if (File.Exists(DefaultDirectory + path)) File.Copy(DefaultDirectory + path, CopyPath + Path.GetFileName(path), true); else Console.WriteLine("Файла с именем \"" + path + "\" не существует."); } catch { Console.WriteLine("Не удалось скопировать файл \"" + path + "\"."); KeyPress = true; } }
static void Main(string[ ] args) { string s; if (args.Length == 0) { Console.WriteLine("Вас приветствует Backup System! Введите название карты:\n"); while ((s = Console.ReadLine().Trim()) == "") { } if (!Directory.Exists(CopyPath)) Directory.CreateDirectory(CopyPath); Copy(s); } else { if (!Directory.Exists(CopyPath)) Directory.CreateDirectory(CopyPath); foreach (string argv in args) Copy(argv); } editor: if (File.Exists(EditorPathFile)) { StreamReader sr = new StreamReader(EditorPathFile); s = sr.ReadLine(); sr.Close(); } else s = ReadEditorPath(); try { System.Diagnostics.Process.Start(s); } catch { Console.WriteLine("Невозможно запустить Редактор (" + s + ").\n"); s = ReadEditorPath(); goto editor; } if (KeyPress) { Console.Write("\nДля продолжения нажмите любую клавишу..."); Console.ReadKey(true); } } } }
Добавлено (18 Ноябрь 2011, 18:39:44) --------------------------------------------- P. S. Перетаскивать файлы можно только на ярлык, а не на саму прогу. В противном случае может произойти все, что угодно. Час мучился с этим, пока не дошло. :(