UrsaBoss, у него всегда вылетает при загрузке твоей карты? Грешить только на код, который у тебя и других игроков всегда исправно работает, как-то мелко.
да, при этом на других картах которые намного тяжелее моей - всё нормально И ещё у некоторых игроков такие же вылеты
Ещё однажды заметил ситуацию, игрок со второго раза смог прогрузить карту, но его выкинуло через 5-10 сек после старта игры (он даже успел выбрать несколько карт)
Тогда остаётся только инициализацию мультибоарда передвинуть, а также проверить вызовы ExecuteFunc (что имя вызываемой функции точно было) на всякий случай.
но ещё надо учитывать что у меня и у 80% игроков всё нормально, Execute сразу можно вычеркнуть)
А насчет мультиборда я попробую
Но затестить я смогу не раньше чем завтра, поэтому можно ещё варианты предположить)
И опять повторюсь, варкрафт не крашил, просто вылет без ничего
Создаешь юнита, убираешь ему атаку, даешь способность москиты, ставишь хп на 3 и регенерацию -1, далее ставишь ему ману 9999 и изначальную ману 9999
Даешь ему нужную способность волны
А в триггере просто создаешь его за спиной и даешь приказ применить волну в нужную точку
И ещё юниту убираешь модель, там можно просто написать в пути к моделе .mdl
Тоже самое с тенями, там всё на 0
Процесс ручного минимального восстановления карты (годится только для изучения карты, используя редактор JNGP): Этот метод рассчитан только для восстановления после тул векса
1. Восстановление заголовка карты
В Hex редакторе находим "строчку" под номером 200
С блока 04 до блока 07 будет записано "56 78 4F 50" ("VxOP") - всё это нужно обнулить, в итоге получится "00 00 00 00"
2. Восстановление листфайла
Для этого потребуется программа RMPQex, далее открываем карту и создаем листфайл
После этого нужно вставить полученный листфайл в карту
Прямого способа вставить листфайл в карту я не нашел, но есть один рабочий вариант: Путь к карте или MPQ редактору не должен содержать кириллицу
Открываем карту с помощью MPQ редактора и при открытии используем ранее полученный листфайл
Далее делаем что нибудь в карте, к примеру: можно вытащить war3map.j из папки Scripts и после этого просто закрыть MPQ редактор
Или вместо war3map.j можно добавить файлы из третьего пункта, если они заранее были
3. Добавление файлов для открытия карты редактором
Создаем пустую карту, сохраняем её
Далее, используя MPQ редактор - нужно вытащить war3map.w3i и war3mapUnits.doo и вставить/заменить их в восстанавливаемую карту
4. Восстановление объектных файлов
Если на карте была SLK оптимизация, то нужно применить программу "Silk Object 3"
Вытаскиваем из карты папку Units и сохраняем её куда нибудь
Далее создаем копию карты, открываем в редакторе и сохраняем, после этого - через MPQ редактор вставляем в только что сохраненную карту папку Units
Кидаем копию карты в папку "Silk Object 3"
В конфиге программы указываем имя копии карты (без пути и с w3x)
Так же в конфиге ставим в EXPORT_OBJECT_DATA единицу и сохраняем конфиг, далее запускаем программу и ждем
Потом из папки OUT берем эти файлы и вставляем/заменяем в карту ДО копирования, так же удаляем все файлы из папки Units, не трогая папки в папке Units:
war3map.w3u
war3map.w3t
war3map.w3b
war3map.w3d
war3map.w3a
war3map.w3h
war3map.w3q
Готово. Главное не сохранять карту т.к редактор при сохранении создает карту заново и без war3map.imp он не знает о существовании импорта (из за этого пропадут нестандартные модели, текстуры и т.д)
Если нужно работать со скриптом карты - то лучше использовать деобфускатор RMPQex
Чтобы понимать процесс восстановления карты - нужно понимать процесс оптимизации карты
Вот процесс оптимизации/защиты карты:
Файлы редактора
В MPQ архиве карты есть файлы которые используются только редактором и при сохранении карты редактор записывает код из некоторых файлов в war3map.j
Файлы, которые удаляются оптимизаторами:
war3mapUnits.doo (расположение созданных в WE юнитов на карте)
war3map.wtg (код из редактора триггеров)
war3map.wct (код из редактора триггеров)
war3map.imp (информация о импорте в карте, редактору он нужен чтобы работать с импортированными файлами, варкрафт war3map.imp не использует)
Оптимизация скрипта
Скрипт карты оптимизируется так:
Удаляются комментарии в скрипте и ненужные пробелы
2. Сокращаются названия функций и переменных
До:
function MyFunction takes nothing returns integer
local integer MyInteger = 2+2
return MyInteger
endfunction
После:
function a takes nothing returns integer
local integer A = 2+2
return A
endfunction
Все действия функций инициализации объектов карты переносятся в функцию main
Всё это в сумме уменьшает время "загрузки/проверки скрипта" ВМ JASS'а (к примеру: при нажатии на саму карту в списке карт - до оптимизации будет лаг, а после оптимизации он будет значительно меньше) и уменьшает вес самой карты благодаря уменьшению количества символов в war3map.j (см. первый, второй и третий пункты)
И создает эффект "защиты" карты, т.к после обфускации - со скриптом достаточно сложно работать из за "отсутствия" названий функций и переменных
Архив карты
Это способы "защиты" карты, которые не относятся к оптимизации:
Удаление файла (listfile), он содержит названия файлов в карте ((listfile) варкрафтом не используется)
Манипуляции с заголовком архива карты
Оптимизация объектов
Объекты в данном случае - это предметы, юниты, способности и т.д
Редактор карт работает с объектными файлами типа war3map.w3a, war3map.w3u и т.д
А варкрафт может ещё работать с SLK таблицами
Редактор с SLK таблицами работать не может, но если они будут находиться в папке варкрафта, то вполне будет читать их (такой способ подходит только для изучения карты)
Вся суть оптимизации состоит в том, чтобы конвертировать объектные файлы в SLK таблицы
Т.к SLK таблицы намного быстрее читаются варкрафтом, то карта будет заметно быстрее грузиться (но и весят SLK таблицы немного больше объектных файлов)
Варкрафт же пишет реплей и после каждой игры создает файл LastReplay
Вроде помню что говорилось: типа можно отключать запись реплея и нагрузка на карту/варкрафт уменьшится
А 6000 секунд это 4 с лишним дня)
Вдруг всё таки из за этого
я привел пример того, как было раньше в компьютерных залах)
Ну теперь хоть каждый. Хотя бы справедливо)
Некоторые индивидуумы не понимают что это всего лишь игра и из за малейших "неверных" движений своего союзника могут обосрать его всеми видами оскорблений.
Особенно это касается игр где каждый день играют дофига человек и куча задротов (дота, петры и т.д)
Ну в каждой игре найдется как минимум 2-3 неприятных человека, как правило - они строго следят за статистикой союзников и особенно за своей
А бывает просто считают своей обязанностью обосрать тех кто играет хуже чем они
Вот пример из доты:
я нашел стак крипов во вражеском лесу, решил его забрать, а оказалось его сделал мидер.
Ну конечно это был вражеских лес, откуда мне было знать.
И конечно же посыпались бранные слова от мидера в мой адрес, а ещё желание отправить на форум жалобу на меня, типа я мешаю ему играть)
В такой ситуации я проигнорировал, иначе никак
Или вот ещё пример:
local integer i = 0
loop
exitwhen i > 15
if GetPTS(Player(i)) >= 5000. then
SendMessageToChat(Player(i), "/stats")
SendMessageToChat(Player(i), "у урсы 2к птс")
SendMessageToChat(Player(i), "урса рак")
SendMessageToChat(Player(i), "кик урсу")
//SendMessageToChat отправляет сообщение в чат от имени игрока
//Если что, такой функции не существует)
endif
set i = i + 1
endloop
Так проблема в том, что он не объяснил, почему это глупо.
Хорошо)
Представь сколько за всё время существования варкрафта, людей вышло из игры, не доиграв в неё
То что опрос необычный - это да
А опрос немного глупый, потому что искать в этом причину бесполезно - т.к существует бесконечное количество причин
Из игр ливали, ливают и будут ливать)
Ред. Hodor
» WarCraft 3 / Вылет на полосе загрузки у некоторых игроков
8gabriel8: да, при этом на других картах которые намного тяжелее моей - всё нормально
И ещё у некоторых игроков такие же вылеты
Ещё однажды заметил ситуацию, игрок со второго раза смог прогрузить карту, но его выкинуло через 5-10 сек после старта игры (он даже успел выбрать несколько карт)
» WarCraft 3 / Вылет на полосе загрузки у некоторых игроков
А насчет мультиборда я попробую
Но затестить я смогу не раньше чем завтра, поэтому можно ещё варианты предположить)
И опять повторюсь, варкрафт не крашил, просто вылет без ничего
» WarCraft 3 / Вылет на полосе загрузки у некоторых игроков
я почти всем глобалкам ставлю при объявлении null или 0 или ""
» WarCraft 3 / Принцип работы синхронизации
Файл => Параметры => Проверка карты => Фиксировать случайный разброс
» WarCraft 3 / Отлов WASD по сети - да/нет?
» WarCraft 3 / Движение, jass
Даешь ему нужную способность волны
А в триггере просто создаешь его за спиной и даешь приказ применить волну в нужную точку
И ещё юниту убираешь модель, там можно просто написать в пути к моделе .mdl
Тоже самое с тенями, там всё на 0
» WarCraft 3 / Хочу узнать структуры карт.
» WarCraft 3 / Движение, jass
» WarCraft 3 / Хочу узнать структуры карт.
P.P.S "w3t" без кавычек
» WarCraft 3 / Тупо перестала запускаться карта варкрафт 3
» WarCraft 3 / Таверна
» WarCraft 3 / Таймер или триггер таймер что лучше?
» WarCraft 3 / Как работают тулзы типа "Депротекторов" ?
чуть ошибся, в блоках с 04 до 07 нужно вместо обнуления написать "20 00 00 00"
и war3map.w3r это области
Ред. Hodor
» WarCraft 3 / Как работают тулзы типа "Депротекторов" ?
Процесс ручного минимального восстановления карты (годится только для изучения карты, используя редактор JNGP):
Этот метод рассчитан только для восстановления после тул векса
С блока 04 до блока 07 будет записано "56 78 4F 50" ("VxOP") - всё это нужно обнулить, в итоге получится "00 00 00 00"
После этого нужно вставить полученный листфайл в карту
Прямого способа вставить листфайл в карту я не нашел, но есть один рабочий вариант:
Путь к карте или MPQ редактору не должен содержать кириллицу
Открываем карту с помощью MPQ редактора и при открытии используем ранее полученный листфайл
Далее делаем что нибудь в карте, к примеру: можно вытащить war3map.j из папки Scripts и после этого просто закрыть MPQ редактор
Или вместо war3map.j можно добавить файлы из третьего пункта, если они заранее были
Далее, используя MPQ редактор - нужно вытащить war3map.w3i и war3mapUnits.doo и вставить/заменить их в восстанавливаемую карту
Вытаскиваем из карты папку Units и сохраняем её куда нибудь
Далее создаем копию карты, открываем в редакторе и сохраняем, после этого - через MPQ редактор вставляем в только что сохраненную карту папку Units
Кидаем копию карты в папку "Silk Object 3"
В конфиге программы указываем имя копии карты (без пути и с w3x)
Так же в конфиге ставим в EXPORT_OBJECT_DATA единицу и сохраняем конфиг, далее запускаем программу и ждем
Потом из папки OUT берем эти файлы и вставляем/заменяем в карту ДО копирования, так же удаляем все файлы из папки Units, не трогая папки в папке Units:
Ред. Hodor
» WarCraft 3 / Как работают тулзы типа "Депротекторов" ?
Файлы редактора
Файлы, которые удаляются оптимизаторами:
Оптимизация скрипта
Всё это в сумме уменьшает время "загрузки/проверки скрипта" ВМ JASS'а (к примеру: при нажатии на саму карту в списке карт - до оптимизации будет лаг, а после оптимизации он будет значительно меньше) и уменьшает вес самой карты благодаря уменьшению количества символов в war3map.j (см. первый, второй и третий пункты)
И создает эффект "защиты" карты, т.к после обфускации - со скриптом достаточно сложно работать из за "отсутствия" названий функций и переменных
Архив карты
Оптимизация объектов
Редактор карт работает с объектными файлами типа war3map.w3a, war3map.w3u и т.д
А варкрафт может ещё работать с SLK таблицами
Редактор с SLK таблицами работать не может, но если они будут находиться в папке варкрафта, то вполне будет читать их (такой способ подходит только для изучения карты)
Вся суть оптимизации состоит в том, чтобы конвертировать объектные файлы в SLK таблицы
Т.к SLK таблицы намного быстрее читаются варкрафтом, то карта будет заметно быстрее грузиться (но и весят SLK таблицы немного больше объектных файлов)
Ред. Hodor
» WarCraft 3 / Копии объектов в JASS
obj1 и obj2 будут указывать на один и тот же экземпляр структуры
» WarCraft 3 / Баг через 6000 сек
» WarCraft 3 / Баг через 6000 сек
Вроде помню что говорилось: типа можно отключать запись реплея и нагрузка на карту/варкрафт уменьшится
А 6000 секунд это 4 с лишним дня)
Вдруг всё таки из за этого
Вот нативка, чтобы отключать запись реплея
Ред. Hodor
» WarCraft 3 / Почему вы ливаете из игр в War3 или почему это делают другие?
Особенно это касается игр где каждый день играют дофига человек и куча задротов (дота, петры и т.д)
Ну в каждой игре найдется как минимум 2-3 неприятных человека, как правило - они строго следят за статистикой союзников и особенно за своей
А бывает просто считают своей обязанностью обосрать тех кто играет хуже чем они
Вот пример из доты:
я нашел стак крипов во вражеском лесу, решил его забрать, а оказалось его сделал мидер.
Ну конечно это был вражеских лес, откуда мне было знать.
И конечно же посыпались бранные слова от мидера в мой адрес, а ещё желание отправить на форум жалобу на меня, типа я мешаю ему играть)
В такой ситуации я проигнорировал, иначе никак
Или вот ещё пример:
» WarCraft 3 / Почему вы ливаете из игр в War3 или почему это делают другие?
Ред. Hodor
» WarCraft 3 / Почему вы ливаете из игр в War3 или почему это делают другие?
Не то что сейчас, каждый друг другу в игре гадости говорит
Ред. Hodor
» WarCraft 3 / Почему вы ливаете из игр в War3 или почему это делают другие?
Я когда писал это, делал акцент на "очень необычно"
PT153: Хорошо)
Представь сколько за всё время существования варкрафта, людей вышло из игры, не доиграв в неё
То что опрос необычный - это да
А опрос немного глупый, потому что искать в этом причину бесполезно - т.к существует бесконечное количество причин
Из игр ливали, ливают и будут ливать)
Ред. Hodor
» WarCraft 3 / Почему вы ливаете из игр в War3 или почему это делают другие?
UrsaBoss:
Ред. Hodor
» WarCraft 3 / Почему вы ливаете из игр в War3 или почему это делают другие?
Некоторые выходили из моих карт и иногда даже негативно критиковали мои карты из за скучного процесса игры
Но мне как то было пофиг)
Ред. Hodor
» WarCraft 3 / Почему вы ливаете из игр в War3 или почему это делают другие?
Хоть бы написали почему не понравились мои слова
Я всё адекватно написал и даже в одном месте пошутил)