18

» WarCraft 3 / Вылет на полосе загрузки у некоторых игроков

PT153:
ну это ты зря
можно подробнее?)

8gabriel8:
UrsaBoss, у него всегда вылетает при загрузке твоей карты? Грешить только на код, который у тебя и других игроков всегда исправно работает, как-то мелко.
да, при этом на других картах которые намного тяжелее моей - всё нормально
И ещё у некоторых игроков такие же вылеты

Ещё однажды заметил ситуацию, игрок со второго раза смог прогрузить карту, но его выкинуло через 5-10 сек после старта игры (он даже успел выбрать несколько карт)
18

» WarCraft 3 / Вылет на полосе загрузки у некоторых игроков

PT153:
Тогда остаётся только инициализацию мультибоарда передвинуть, а также проверить вызовы ExecuteFunc (что имя вызываемой функции точно было) на всякий случай.
но ещё надо учитывать что у меня и у 80% игроков всё нормально, Execute сразу можно вычеркнуть)
А насчет мультиборда я попробую
Но затестить я смогу не раньше чем завтра, поэтому можно ещё варианты предположить)
И опять повторюсь, варкрафт не крашил, просто вылет без ничего
18

» WarCraft 3 / Вылет на полосе загрузки у некоторых игроков

В коде, что показан, всё чисто, но я бы вынес 41 как константную глобалку)
там define стоял, я просто для поставил туда число)
inject на config есть?
нету
Какие глобалки у тебя сразу имеют значение?
я почти всем глобалкам ставлю при объявлении null или 0 или ""
18

» WarCraft 3 / Принцип работы синхронизации

8gabriel8, в редакторе можно галочку убрать)
Файл => Параметры => Проверка карты => Фиксировать случайный разброс
18

» WarCraft 3 / Движение, jass

Создаешь юнита, убираешь ему атаку, даешь способность москиты, ставишь хп на 3 и регенерацию -1, далее ставишь ему ману 9999 и изначальную ману 9999
Даешь ему нужную способность волны
А в триггере просто создаешь его за спиной и даешь приказ применить волну в нужную точку
И ещё юниту убираешь модель, там можно просто написать в пути к моделе .mdl
Тоже самое с тенями, там всё на 0
18

» WarCraft 3 / Как работают тулзы типа "Депротекторов" ?

UPD к пункту 1:
чуть ошибся, в блоках с 04 до 07 нужно вместо обнуления написать "20 00 00 00"
и war3map.w3r это области
18

» WarCraft 3 / Как работают тулзы типа "Депротекторов" ?

Ещё файлы, которые удаляются оптимизаторами:
  1. war3map.w3r (регионы)
  2. war3map.w3c (камеры)

Процесс ручного минимального восстановления карты (годится только для изучения карты, используя редактор 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:
  1. war3map.w3u
  2. war3map.w3t
  3. war3map.w3b
  4. war3map.w3d
  5. war3map.w3a
  6. war3map.w3h
  7. war3map.w3q
  1. Готово. Главное не сохранять карту т.к редактор при сохранении создает карту заново и без war3map.imp он не знает о существовании импорта (из за этого пропадут нестандартные модели, текстуры и т.д)
  2. Если нужно работать со скриптом карты - то лучше использовать деобфускатор RMPQex
18

» WarCraft 3 / Как работают тулзы типа "Депротекторов" ?

Чтобы понимать процесс восстановления карты - нужно понимать процесс оптимизации карты
Вот процесс оптимизации/защиты карты:

Файлы редактора

В MPQ архиве карты есть файлы которые используются только редактором и при сохранении карты редактор записывает код из некоторых файлов в war3map.j
Файлы, которые удаляются оптимизаторами:
  1. war3mapUnits.doo (расположение созданных в WE юнитов на карте)
  2. war3map.wtg (код из редактора триггеров)
  3. war3map.wct (код из редактора триггеров)
  4. war3map.imp (информация о импорте в карте, редактору он нужен чтобы работать с импортированными файлами, варкрафт war3map.imp не использует)

Оптимизация скрипта

Скрипт карты оптимизируется так:
  1. Удаляются комментарии в скрипте и ненужные пробелы
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
  1. Все действия функций инициализации объектов карты переносятся в функцию main

Всё это в сумме уменьшает время "загрузки/проверки скрипта" ВМ JASS'а (к примеру: при нажатии на саму карту в списке карт - до оптимизации будет лаг, а после оптимизации он будет значительно меньше) и уменьшает вес самой карты благодаря уменьшению количества символов в war3map.j (см. первый, второй и третий пункты)
И создает эффект "защиты" карты, т.к после обфускации - со скриптом достаточно сложно работать из за "отсутствия" названий функций и переменных

Архив карты

Это способы "защиты" карты, которые не относятся к оптимизации:
  1. Удаление файла (listfile), он содержит названия файлов в карте ((listfile) варкрафтом не используется)
  2. Манипуляции с заголовком архива карты

Оптимизация объектов

Объекты в данном случае - это предметы, юниты, способности и т.д
Редактор карт работает с объектными файлами типа war3map.w3a, war3map.w3u и т.д
А варкрафт может ещё работать с SLK таблицами
Редактор с SLK таблицами работать не может, но если они будут находиться в папке варкрафта, то вполне будет читать их (такой способ подходит только для изучения карты)
Вся суть оптимизации состоит в том, чтобы конвертировать объектные файлы в SLK таблицы
Т.к SLK таблицы намного быстрее читаются варкрафтом, то карта будет заметно быстрее грузиться (но и весят SLK таблицы немного больше объектных файлов)
18

» WarCraft 3 / Копии объектов в JASS

"MyClass obj1" тоже самое что "int obj1"
obj1 и obj2 будут указывать на один и тот же экземпляр структуры
18

» WarCraft 3 / Баг через 6000 сек

Варкрафт же пишет реплей и после каждой игры создает файл LastReplay
Вроде помню что говорилось: типа можно отключать запись реплея и нагрузка на карту/варкрафт уменьшится
А 6000 секунд это 4 с лишним дня)
Вдруг всё таки из за этого

Вот нативка, чтобы отключать запись реплея
native DoNotSaveReplay takes nothing returns nothing
18

» WarCraft 3 / Почему вы ливаете из игр в War3 или почему это делают другие?

Absolute:
UrsaBoss:
я привел пример того, как было раньше в компьютерных залах)
Ну теперь хоть каждый. Хотя бы справедливо)
Некоторые индивидуумы не понимают что это всего лишь игра и из за малейших "неверных" движений своего союзника могут обосрать его всеми видами оскорблений.
Особенно это касается игр где каждый день играют дофига человек и куча задротов (дота, петры и т.д)
Ну в каждой игре найдется как минимум 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
18

» WarCraft 3 / Почему вы ливаете из игр в War3 или почему это делают другие?

Absolute:
Ага, согласен. Пусть только сильные гнобят слабых. Как в джунглях.
я привел пример того, как было раньше в компьютерных залах)
18

» WarCraft 3 / Почему вы ливаете из игр в War3 или почему это делают другие?

16GB:
Вот во времена компьтерных клубов, ливеров мочили всем клубом.Кто ногами, кто руками. Эх были времена.
кто был сильнее тот мог ругаться на других)
Не то что сейчас, каждый друг другу в игре гадости говорит
18

» WarCraft 3 / Почему вы ливаете из игр в War3 или почему это делают другие?

Немного глупо != глупо
Я когда писал это, делал акцент на "очень необычно"

PT153:
Так проблема в том, что он не объяснил, почему это глупо.
Хорошо)
Представь сколько за всё время существования варкрафта, людей вышло из игры, не доиграв в неё
То что опрос необычный - это да
А опрос немного глупый, потому что искать в этом причину бесполезно - т.к существует бесконечное количество причин
Из игр ливали, ливают и будут ливать)
18

» WarCraft 3 / Почему вы ливаете из игр в War3 или почему это делают другие?

8gabriel8:
UrsaBoss, смею предположить, что из-за того, что назвал опрос глупым, соответственно и участвовашие в нём глупые.
Ну блин, я же сразу сказал что не хочу оскорблять, даже добавил к "глупо" слово "немного"

UrsaBoss:
Не хочу оскорбить, но заниматься такими опросами в наше время очень необычно и даже немного глупо)
18

» WarCraft 3 / Почему вы ливаете из игр в War3 или почему это делают другие?

Для примера:
Некоторые выходили из моих карт и иногда даже негативно критиковали мои карты из за скучного процесса игры
Но мне как то было пофиг)
18

» WarCraft 3 / Почему вы ливаете из игр в War3 или почему это делают другие?

Прикольно, это уже классика молча влепить мне минусы
Браво)
Хоть бы написали почему не понравились мои слова
Я всё адекватно написал и даже в одном месте пошутил)