27

» WarCraft 3 / зачем в lua нужны локальные функции?

GetLocalPlayer, спасибо за помощь))
понял в чем ошибка, опять не все перенес. И из-за этого обрываются действия/потоки. И мне нужно print везде чекать от начала и до.
27

» WarCraft 3 / зачем в lua нужны локальные функции?

prog, в сети можно получить, но зачастую посылают учить матчасть. Где уже все изучено здесь
GetLocalPlayer, а если я создаем локалки в процессе инициализации код, они будут существовать всю игру. Или только существуют в процессе инициализации? И уже перестанут существовать? пример локалка Table?
do -- создаём область видимости, чтоб не конфликтовать с другим кодом
    local InitGlobalsOrigin = InitGlobals -- хукаем функцию InitGlobals

	function InitGlobals()
		InitGlobalsOrigin()
			local Table = { {},{},{} } 
		
	end
end

ps просто че то не выполняется правильно. Поэтому ищу причину.
27

» WarCraft 3 / Изменение текстуры земли (не из основного tileset) - Reforged HD

makkad, да но в том то и проблема, что при смене с SD на HD редактор выдает ошибку и закрывается. Открываешь заново, и в настройках опять SD. надо наверн перегрузить комп
пример

неа все равно перегрузил, не работает
Загруженные файлы
27

» WarCraft 3 / Изменение текстуры земли (не из основного tileset) - Reforged HD

у меня работает
ой че-то картинка охренеть большая
ааа HD графика.. Ну попробуем. Только надо вспомнить как делать переходы

эх че то не могу переключиться с SD на HD. Какая то ошибка. Было обновление только что. Но не хочется сейчас перегружать ничего
Загруженные файлы
27

» WarCraft 3 / цикл в lua

biridius, спасибо) бывает невнимательнвм
Bergi_Bear, воспользовался вашим советом
я еще нашел ошибку в самом ректе, у него размеры не те. Короче мб дело в инициализации.
надо
do -- создаём область видимости, чтоб не конфликтовать с другим кодом
    local InitGlobalsOrigin = InitGlobals -- хукаем функцию InitGlobals

<а я инициализацию глобалок сюда запихал и ниче не работает поэтому. ректы неправильно инициируются>

	function InitGlobals()
		InitGlobalsOrigin()
		-- в этом моменте прошла инициализация карты и можно смело работать
		
		<надо сюда писать весь код>
		
	end
end
27

» WarCraft 3 / Как работать с картой в виде папки?

Bergi_Bear, а мне хотелось чтобы idee работала. ипрям из нее запускала, как прошлый раз. быстрее запускает отсюда. чем из игры 200 лет
27

» WarCraft 3 / Определение чётности числа и рандом

по-моему, четность число определяется делением на число 2. если с целыми числами. нужно будет целое число перевести в реальное число
у четных чисел не бывает дроби.
10/2=5 8/2=4 и др
у не четных чисел бывает дроби.
5/2=2.5 31/2=15.5
Есть такая функция как R2I она отсекает дробную часть. Можно благодаря ей узнать есть ли дробная часть.
r = 25.5
r1 = R2I(r) получили 25
r2 = r - I2R(r1) = 0.5
с действительными (не целыми!!) числами можно делить до сих пор пока не станет равно 1.00 или меньше 1.00. Если 1.00 значит четная, иначе нечетная.
Или отделить дробную и целую часть, и попытаться сделать как с целыми числами.
Не нрав ну что делать, jass вообще ограниченная штука. Когда я спрашивал никто не хотел помогать, тогда и собственную библиотеку писал. В вашем способе можно было и по-другому сделать

посмотри у PT153 в либе мат функции мб есть че то.
с lua кодом с этим проблем нет. кроме метатаблиц, Есть функции математические. и там же рандом ывидел.
27

» WarCraft 3 / Как работать с картой в виде папки?

просто вы можете сохранить в рефорджете в режиме папки. Удобно работать с папкой, весь импорт туда пихать и работать прям там с кодом в спец программах. А когда завершите, можете открыть редактор рефорджета и сохранить в формате w3x
У вас папка открывается редактором, и программами. Запускаете тест-игру там

с импортом я в рефордже в режиме папки не пробовал. так что могу ошибаться
27

» WarCraft 3 / Текстура тайминдикатора

тут только угадывать можно.
мб неправильно импортировали?
мб текстуру сжали?
мб надо альфа-каналом обвести, типа как рамкой? как в оригинале?
27

» WarCraft 3 / Memory hack API v1.4

Vlod, мб там разные кнопки? там на мини-карте 5 кнопок. Возможно, к ним имеет какое то отношение. Хотя есть еще именные названия фреймов GetFrameByName
хотя пояснения приветствуются
27

» WarCraft 3 / Импорт интерфейса

Принятый ответ
ConsoleTexture01=UI\Console\NightElf\NightElfUITile01
ConsoleTexture02=UI\Console\NightElf\NightElfUITile02
ConsoleTexture03=UI\Console\NightElf\NightElfUITile03
ConsoleTexture04=UI\Console\NightElf\NightElfUITile04
ConsoleTexture05=UI\Console\NightElf\NightElfUITile05
ConsoleTexture06=UI\Console\NightElf\NightElfUITile06
ConsoleInventoryCoverTexture=UI\Console\NightElf\NightElfUITile-InventoryCover.blp

ConsoleTexture01=UI\Console\Undead\UndeadUITile01
ConsoleTexture02=UI\Console\Undead\UndeadUITile02
ConsoleTexture03=UI\Console\Undead\UndeadUITile03
ConsoleTexture04=UI\Console\Undead\UndeadUITile04
ConsoleTexture05=UI\Console\Undead\UndeadUITile05
ConsoleTexture06=UI\Console\Undead\UndeadUITile06
ConsoleInventoryCoverTexture=UI\Console\Undead\UndeadUITile-InventoryCover.blp

ConsoleTexture01=UI\Console\Human\HumanUITile01
ConsoleTexture02=UI\Console\Human\HumanUITile02
ConsoleTexture03=UI\Console\Human\HumanUITile03
ConsoleTexture04=UI\Console\Human\HumanUITile04
ConsoleTexture05=UI\Console\Human\HumanUITile05
ConsoleTexture06=UI\Console\Human\HumanUITile06
ConsoleInventoryCoverTexture=UI\Console\Human\HumanUITile-InventoryCover.blp
27

» WarCraft 3 / Импорт интерфейса

ConsoleTexture01=UI\Console\Orc\OrcUITile01
ConsoleTexture02=UI\Console\Orc\OrcUITile02
ConsoleTexture03=UI\Console\Orc\OrcUITile03
ConsoleTexture04=UI\Console\Orc\OrcUITile04
ConsoleTexture05=UI\Console\Orc\OrcUITile05
ConsoleTexture06=UI\Console\Orc\OrcUITile06
ConsoleInventoryCoverTexture=UI\Console\Orc\OrcUITile-InventoryCover.blp
27

» WarCraft 3 / Импорт интерфейса

Fly123, нужно нажать Ctrl + F. пример UITile - InventoryCover вбиваешь в поиск. Пример: ниче не находит, возможно что то автор добавил. пробуем урезать название до InventoryCover. там несколько находит

кстати все лежит в папке UI
27

» WarCraft 3 / Импорт интерфейса

возьми импорт и посмотри как он делается у создателей импорта интерфейса на сайте, у них должен быть путь прописан. еще можно извлечь файл ui/war3skins.txt и там посмотреть или таблицу в той папке ui
27

» WarCraft 3 / World2Win Конвертирование мировых координат в экранные и обратно

Принятый ответ
можно получить обзор/плоскость камеры?
у нас есть
//координаты камеры
x1 = GetCameraEyePositionX()
y1 = GetCameraEyePositionY()
z1 = GetCameraEyePositionZ()
координаты цели
//координаты центра обзора камеры
x2 = GetCameraTargetPositionX()
y2 = GetCameraTargetPositionY()
z2 = GetCameraTargetPositionZ()
смещение высоты камеры
ZOffset = GetCameraField(CAMERA_FIELD_ZOFFSET) 
расстояние между камерой и целью
r = GetCameraField(CAMERA_FIELD_TARGET_DISTANCE)
обзоры камеры
//размеры экрана
real WidthScreen = 0.544
real HeightScreen = 0.302
//размеры границ камеры GetCameraBoundMaxX и GetCameraBoundMaxY равны 2816x2816

//размеры обзора камеры GetCameraBoundMaxX*WidthScreen и GetCameraBoundMaxY*HeightScreen равны 1531.904x850.432
 CameraMaxX = GetCameraBoundMaxX()*WidthScreen
 CameraMaxY = GetCameraBoundMaxY()*HeightScreen
Кроме того нужны 3 угла для плоскости:
//эти три параметра alpha, beta, gamma поворачиваются относительно дефольтных размеров
//надо проверять разницу, т.е. изменения с чем-то. А то смотрите угол 360, он возмет и перевернет. Потом выпадет опять 360, снова перевернет
local real alpha = ModuloReal((GetCameraField(CAMERA_FIELD_ROTATION)-bj_CAMERA_DEFAULT_ROTATION* bj_DEGTORAD), bj_PI*2)
//вращение камеры аокруг оси X относительно дефолтного размера
local real beta = ModuloReal((GetCameraField(CAMERA_FIELD_ROLL)-bj_CAMERA_DEFAULT_ROLL* bj_DEGTORAD), bj_PI*2)
//наклоны камеры вокруг оси Y относительного дефолтного размера
local real gamma = ModuloReal((GetCameraField(CAMERA_FIELD_ANGLE_OF_ATTACK)-bj_CAMERA_DEFAULT_AOA* bj_DEGTORAD), bj_PI*2)
как не пытаюсь сам понять, так и не получается. Не верна это, то что написал выше. Верно работает только для одной оси поворот. Шарнирный замок.
нашел ее информацию здесь матрицу не понимаю от чего берут.
Загруженные файлы
27

» WarCraft 3 / Нарезалка LoadingScreen'а (теперь с интерфейсом!)

PT153, но есть утвержденная. видать автор лишнюю копию оставил. можно по ссылке перейти
27

» WarCraft 3 / Бойся зомбей, по коридорам идущих...

сделай много ворон. и когда игрок заглянеть, вороны будут орать: каааааааар. и по крику все сбегутся

чувствую тепло жертвы, крики, свет. мозги... там icq. на драки сбегается толпа
27

» WarCraft 3 / Мемхак - возня с фреймами.

Ну эта всплывающая подсказка называется Tooltip. По идее это смесь backdrop и text или texture и string. Чаще всего backdrop является родителем.
Не знаю как в мемхаке, но в рефордже есть
BlzFrameSetTooltip takes framehandle frame, framehandle tooltip returns nothing
Короче, к фрейму прикрепляют второй фрейм backdrop.
Другой вариант, это отслеживать события входа/выхода курсора мыши в фрейм. Есть ли в этом мемзаке? Когда вы двигает курсор по кнопке, выскакивает подсказка. Когда вы покидаете, подсказка исчезает. Аналогично, когда и кнопка подсвечивается, когда курсор наводят.
27

» WarCraft 3 / Переменный юнит и предмет выпадающий с него

Fly123, зачем создавать если можно дропнуть на землю или попробовать удалить инвентарь (мб вылеты). тфу опять туплю, нигде не написано что надо из инвентаря.
27

» WarCraft 3 / World2Win Конвертирование мировых координат в экранные и обратно

у меня есть координаты мыши - x,y. как применить их тут
    -- Converts window coordinate to world coordinate
    -- @param v Vector3 where x and y - window coords and z - overlay range
    -- @return Vector3
    windowToWorld = function(self, v)
      return Vector3:new(
        self.eye.x+self.axisZ.x*v.z+v.x*self.axisX.x*screenWidth*v.z+v.y*self.axisY.x*screenHeight*v.z,
        self.eye.y+self.axisZ.y*v.z+v.x*self.axisX.y*screenWidth*v.z+v.y*self.axisY.y*screenHeight*v.z,
        self.eye.z+self.axisZ.z*v.z+v.x*self.axisX.z*screenWidth*v.z+v.y*self.axisY.z*screenHeight*v.z
      )
    end,
    
    -- Converts world coordinate to window coordinate
    -- @param v Vector3
    -- @return Vector3
    worldToWindow = function(self, v)
      v = v:transform4(self.view):transform4(self.projection)
      v.z = math.abs(v.z)
      return v
    end

а вот
-- Create a new vector from coords. Skip the coords to create a zero vector
new = function(self, x, y, z)
local o = {}
setmetatable(o,self)
o.x = x or 0.
o.y = y or 0.
o.z = z or 0.
return o
end,

откуда берутся всякие точки, двоеточие, всякие self не понятно. еще setmetatable. похоже lua надо изучать
27

» WarCraft 3 / Автокаст прожимных навыков

ну смотря как она у вас работает. Вы не пишите как у вас способность должна работать. большинство стандартных автокастов заточены под определенные условия срабатывания.
  1. когда вас атаковали или ваших союзников, пример ярость. Всякие полезные баффы вешают на союзников, вредные дебаффы на врагов.
  2. когда нету маны или запас здоровья не полный - хил колодца или жреца, повозка нежити, ремонт здании
  3. когда вас бьют, уходим в астрал - у лесного дракончика
  4. диспелы: когда вешают баффы, снимаем баффы. Некоторые пример ведьмаки, воруют баффы полезные и передают другим союзникам, а вредные передают врагам
  5. требует трупы - поввозка
  6. стрелы
  7. атака с самоподрывом у гоблинов
короче, чтобы сработал под нестандартные условия, вам нужно тогда имитацию делать визуально. Помню башню бобла делали так: там создавали труп, подкидывая, и здание подбирало. Получался что автокаст срабатывал и все норм. Но никогда не знает, а вдруг пойдет что-то не так. Пример, если нескольким зданиями выбросить труп, то кто-же подберет его. Можно накостылявить и радиус задавать, и кидать. И прочие костыли.
Можно сделать на фреймах кнопки, там еще визуально рамки автокаст отобразить. И прописать код сработки. это намноооого лееегче