14

» WarCraft 3 / Сыграйте в Warcraft: Orcs & Humans прямо сейчас!

На сайте DOS_dek появился
новость
так это новость или тупо оплаченная реклама уникального неподражаемого аналоговнет сайта?
14

» WarCraft 3 / Низкий фпс на карте в начале игры

Это можно как-то подправить?
  1. несёшь сюда карту
  2. докупаешь оперативу
14

» Администрация XGM / Плохо прогружаются изображения при просмотре

ScorpioT1000: можешь ещё примеров покидать?
я давно уже это заметил
любое изображение на превью как будто в jpg качестве со сжатием
поэтому если хочу качества - открываю в новой вкладке каждый png пик
14

» WarCraft 3 / Visual Studio Code: WarCode

ScorpioT1000: Борьба Nazarpunk против быстрых современных решений
тоже наблюдаю за этим сериалом
14

» WarCraft 3 / как открыть свойства звука? WE

использовать как звук - тогда появится справа и там даблклик
Загруженные файлы
14

» Survivor Challenge TD / Релиз в СТИМЕ

soshroom: захватывающая новая Tower Defense игра
то есть одна вышка в центре это захватывающе и ново?
пойду передам это грин цирклю 15-ти летней давности
Загруженные файлы
14

» XGM Team / Онлайн-инструменты для геймдев и моддинг арта

host_pi: не показывается такая моделька
обновление:
работает только если закинуть mdx + blp всей кучей разом, причём 1й раз моргнёт и не покажет а если второй раз сразу перетащить всю кучу поверх первой то уже загрузится нормально модель
14

» WarCraft 3 / как выключить(задать) анимацию при добавлении модели на ланд ?

какая полезная картинка
poisoNDealer: Особо это не тестил, но подозреваю
тестанул:
оставил Stand и Stand 3, остальные поменял на токены - при загрузке в WE стали чередоваться только Stand и Stand 3
оставил только Stand, остальные поменял на токены - при загрузке в WE чередование прекратилось
бонусом текст из картинки:
Appendix A - Animation Tokens
Primary Animations
Attack
Birth
Cinematic
Death
Decay
Dissipate
Morph
Portrait
Sleep
Spell
Stand
Walk
Animation Properties
Alternate
Alternateex
Chain
Channel
Complete
Critical
Defend
Drain
Eattree
Fast
Fill
Flail
Flesh
Fifth
Fire
First
Five
Four
Fourth
Gold
Hit
Large
Left
Light
Looping
Lumber
Medium
Moderate
Off
One
Puke
Ready
Right
Second
Severe
Slam
Small
Spiked
Spin
Swim
Talk
Third
Three
Throw
Two
Turn
Victory
Work
Wounded
Upgrade

итого все вопросы решены
Загруженные файлы
14

» WarCraft 3 / как выключить(задать) анимацию при добавлении модели на ланд ?

poisoNDealer: какого результата нужно в итоге добиться?
оставить только одну анимацию при добавлении модельки на карту


в общем вот сводка:
  1. выставил в модели из шапки редкость 1000 на всех ненужных стендах - они перестали сменяться в WE и в игре
  2. переименовал Stand 12345 в Attack 12345 + редкость 0 --- тоже сработало
  3. по какой то причине не сработало переименование стендов в aaaa bbbb cccc dddd
  4. на дефолтных модельках в варике в среднем по 3 стенда и у второстепенных стоит рарити 3 или 4 или 5
остался один вопрос без ответа (да и особо и не нужно)
в этой модели
MDL
//+-----------------------------------------------------------------------------
//| Mushroom.mdl
//| Generated by War3 Model Editor v1.07
//+-----------------------------------------------------------------------------
Version {
	FormatVersion 800,
}
Model "Texture" {
	NumGeosets 1,
	NumBones 1,
	BlendTime 150,
	MinimumExtent { -64, -64, 0.199997 },
	MaximumExtent { 64, 64, 0.200003 },
	BoundsRadius 90.5097,
}
Sequences 8 {
	Anim "Stand First" {
		Interval { 0, 500 },
		MinimumExtent { -64, -64, 0.199997 },
		MaximumExtent { 64, 64, 0.200003 },
		BoundsRadius 90.5097,
	}
	Anim "Walk First" {
		Interval { 501, 951 },
	}
	Anim "Stand ready First" {
		Interval { 1001, 1002 },
		NonLooping,
		MinimumExtent { -64, -64, 0.199997 },
		MaximumExtent { 64, 64, 0.200003 },
		BoundsRadius 90.5097,
	}
	Anim "Spell First" {
		Interval { 1003, 1004 },
		NonLooping,
		MinimumExtent { -64, -64, 0.199997 },
		MaximumExtent { 64, 64, 0.200003 },
		BoundsRadius 90.5097,
	}
	Anim "Stand Second" {
		Interval { 2000, 2500 },
		MinimumExtent { -64, -64, 0.199997 },
		MaximumExtent { 64, 64, 0.200003 },
		BoundsRadius 90.5097,
	}
	Anim "Walk Second" {
		Interval { 2501, 2951 },
	}
	Anim "Stand ready Second" {
		Interval { 3001, 3002 },
		NonLooping,
		MinimumExtent { -64, -64, 0.199997 },
		MaximumExtent { 64, 64, 0.200003 },
		BoundsRadius 90.5097,
	}
	Anim "Spell Second" {
		Interval { 3003, 3004 },
		NonLooping,
		MinimumExtent { -64, -64, 0.199997 },
		MaximumExtent { 64, 64, 0.200003 },
		BoundsRadius 90.5097,
	}
}
Textures 5 {
	Bitmap {
		Image "Mushroom001.blp",
	}
	Bitmap {
		Image "Mushroom002.blp",
	}
	Bitmap {
		Image "Mushroom003.blp",
	}
	Bitmap {
		Image "Mushroom004.blp",
	}
	Bitmap {
		Image "Mushroom005.blp",
	}
}
Materials 1 {
	Material {
		Layer {
			FilterMode Transparent,
			TextureID 14 {
				DontInterp,
				0: 0,
				250: 1,
				501: 2,
				651: 3,
				801: 4,
				1001: 3,
				1003: 4,
				2000: 0,
				2250: 1,
				2501: 2,
				2651: 3,
				2801: 4,
				3001: 3,
				3003: 4,
			}
			TwoSided,
			Unshaded,
			Unfogged,
		}
	}
}
Geoset {
	Vertices 4 {
		{ -64, -64, 0.199997 },
		{ -64, 64, 0.199997 },
		{ 64, -64, 0.200003 },
		{ 64, 64, 0.200003 },
	}
	Normals 4 {
		{ -4.37722e-008, 0, 1 },
		{ -4.37722e-008, 0, 1 },
		{ -4.37722e-008, 0, 1 },
		{ -4.37722e-008, 0, 1 },
	}
	TVertices 4 {
		{ 0, 0 },
		{ 1, 0 },
		{ 0, 1 },
		{ 1, 1 },
	}
	VertexGroup  {
		0,
		0,
		0,
		0,
	}
	Faces 1 6 {
		Triangles {
			{ 0, 2, 3, 0, 3, 1 },
		}
	}
	Groups 1 1 {
		Matrices { 0 },
	}
	MinimumExtent { -64, -64, 0.199997 },
	MaximumExtent { 64, 64, 0.200003 },
	BoundsRadius 181.019,
	Anim {
		MinimumExtent { -64, -64, 0.199997 },
		MaximumExtent { 64, 64, 0.200003 },
		BoundsRadius 181.019,
	}
	Anim {
		MinimumExtent { -64, -64, 0.199997 },
		MaximumExtent { 64, 64, 0.200003 },
		BoundsRadius 181.019,
	}
	Anim {
		MinimumExtent { -64, -64, 0.199997 },
		MaximumExtent { 64, 64, 0.200003 },
		BoundsRadius 181.019,
	}
	Anim {
		MinimumExtent { -64, -64, 0.199997 },
		MaximumExtent { 64, 64, 0.200003 },
		BoundsRadius 181.019,
	}
	Anim {
		MinimumExtent { -64, -64, 0.199997 },
		MaximumExtent { 64, 64, 0.200003 },
		BoundsRadius 181.019,
	}
	Anim {
		MinimumExtent { -64, -64, 0.199997 },
		MaximumExtent { 64, 64, 0.200003 },
		BoundsRadius 181.019,
	}
	Anim {
		MinimumExtent { -64, -64, 0.199997 },
		MaximumExtent { 64, 64, 0.200003 },
		BoundsRadius 181.019,
	}
	Anim {
		MinimumExtent { -64, -64, 0.199997 },
		MaximumExtent { 64, 64, 0.200003 },
		BoundsRadius 181.019,
	}
	Anim {
		MinimumExtent { -64, -64, 0.199997 },
		MaximumExtent { 64, 64, 0.200003 },
		BoundsRadius 181.019,
	}
	Anim {
		MinimumExtent { -64, -64, 0.199997 },
		MaximumExtent { 64, 64, 0.200003 },
		BoundsRadius 181.019,
	}
	MaterialID 0,
	SelectionGroup 0,
}
Bone "TextureBone" {
	ObjectId 0,
	Rotation 1 {
		DontInterp,
		0: { 0, 0, 0, 0 },
	}
	Scaling 5 {
		DontInterp,
		0: { 1, 1, 1 },
		2000: { 1, -1, 1 },
		2501: { 1, -1, 1 },
		3001: { 1, -1, 1 },
		3003: { 1, -1, 1 },
	}
	GeosetId 0,
	GeosetAnimId None,
}
PivotPoints 1 {
	{ 0, 0, 0 },
}
Camera "Name" {
	FieldOfView 0.785398,
	FarClip 10000,
	NearClip 1,
	Position { 2.7075, 0.00862157, 270.944 },
	Target {
		Position { 0, 0, 0.2 },
	}
}
рарити стоит везде 0, а есть 4 "Stand *" при этом проигрывается только одна из них при добавлении модельки на карту (а ведь должны тогда 4 сменяться)
хотя на тестовом переименовании модели из шапки из "Stand 12345" в "Stand abcd" - ничего не изменило и ротация всех стендов сохранилась, т.е. "Stand A-z" должно браться в авторотацию (а не только номерные "Stand 1-9"), но в этой модели из этого поста не берётся


poisoNDealer красава
не могу выбрать какой ответ из твоих трёх поставить в ответ - они все разные, правильные, и каждый друг друга дополняет
14

» WarCraft 3 / как выключить(задать) анимацию при добавлении модели на ланд ?

poisoNDealer: увидишь как у него периодически проигрываются Stand 1, Stand 2, Stand 3, с учётом редкости
так может как раз где то и выставляется дефолтный набор анимаций при добавлении на карту - и там можно выбрать или только одну или 10 любых с редкостью
если это зависит от названия - тогда почему в этой модели показывается только 1 из 4 стендов
на остальные 3 выставлена редкость 0/100 ? где выставлять эту редкость тогда?

пойду тестить тада
Загруженные файлы
14

» WarCraft 3 / как выключить(задать) анимацию при добавлении модели на ланд ?

poisoNDealer: Все анимации с названием Stand будут "дефолтными"
так там не "Stand"
а "Stand 12345"
анимация "Stand" только одна
тем более у меня есть модель, где 4 штуки "Stand*", но по дефолту проигрывается только первая (нулевая) (с двумя blp, как и указано на таймлайне)

переименовал в двух разных редакторах и сохранил в 2 разных файла - xgm.guru/files/100/316703/comments/521179/rename.zip
в обоих вариантах в WE и игре вообще пропали анимации кроме Stand и Death
а в обоих редакторах показываются все 7 анимаций как и ожидалось
какая же запара это ваше картоделание хосспаде
Загруженные файлы
14

» WarCraft 3 / как починить? - blp текстура отображается полосами

короче это из-за перехлёста по оси z между моделями, надо их подальше растянуть др от др и они перестанут и будут знать кто впереди а кто сзади
14

» WarCraft 3 / не отображается анимация в игре - как починить?

по итогу просмотровщик на сайте смог сделать больше чем спец софт предназначенный для редактирования моделей
надо было Stand и Death поставить в раскадровке перед всеми остальными анимациями
14

» WarCraft 3 / Demon Retera Model Studio 0.4.5m PTR

как удалить 4 неиспользуемых текстуры BookPortal?
если удаляю через War3ModelEditor, то потом при открытии в ретере - такое
если удаляю через ретеру - Tools - Edit Textures - то та же самая ошибка после открытия пересохранённого файла
версия ретеры 0.04.5h
или с таким надо в вопросы?

а всё
помимо самих текстур - надо было ещё их из анимаций удалить
14

» WarCraft 3 / Как можно хранить значения в юнитах? Аналог SetUnitUserData

вариант 1 имеет кучу ограничений:
SetUnitState - сначала идёт проверка по свойствам юнита в WE, и нельзя поставить значения вне рамок заданных в WE
SetUnitMoveSpeed - от 25 до 400
SetHeroStr SetHeroAgi SetHeroInt SetHeroXP SetHeroLevel - только героям
SetResourceAmount - тоже зависит от WE вроде
т.е. наиболее простые и оптимальные это варианты 0 3 4
SAND: Также можно сохранять и Real и Group и Unit, Str и тд, что позволяет сохранять хештаблица
так LoadInteger returns integer - как ты там сохранишь что-то кроме целого числа?
14

» XGM Team / Онлайн-инструменты для геймдев и моддинг арта

ScorpioT1000: Есть imHex
это который вместо расширенной ASCII-256 показывает точки?
или который не даёт редактировать значения?
и при этом который занимает 150 метров?
круто круто, мы как нить без такой годноты лучше посидим
nazarpunk: доделал парсер
ну вот, 2000 строк с ректами
а люди их предлагают вручную добавлять
нет уж, я лучше через ссылку от назарпанка
ректы добавляются хорошо
14

» WarCraft 3 / Как можно оптимизировать этот код с 2D коллизиями?

nazarpunk: для хранения данных именно на грибах идеально подойдут паралельные массивы по индексу игрока
ага, там изначально вся инфа (кроме координат) и хранится в таких массивах - направление, нажатые стрелки, ускорение, гравитация, цвет, имя, коды, наблюдение, статус финиша, фон, музыка
14

» WarCraft 3 / Как можно оптимизировать этот код с 2D коллизиями?

nazarpunk: Очищать глобальную группу G дешевле, чем дрочить создание/удаление локалки.
Глобальная группа очищается через ClearGroup
исправлено, на фпс не сказалось, но код стал на несколько строк меньше
nazarpunk: На каждого юнита вызывается UnitIndex. Тоесть лишний цикл на количество игроков. Можно просто каждому грибу записать его индекс через SetUnitUserData. Будет дешевле.
после переработки UnitIndex и переноса номера юнита в его хп - количество фпс увеличилось в разы
теперь можно с 30 коробками бегать в 64 фпс
и даже заспавнить 50 коробок двумя лесенками на 30 фпс
подробности на графике
код 1.7 тут controlc.com/4bf12fa3
14

» WarCraft 3 / Как можно оптимизировать этот код с 2D коллизиями?

nazarpunk: На каждого юнита вызывается UnitIndex. Тоесть лишний цикл на количество игроков. Можно просто каждому грибу записать его индекс через SetUnitUserData. Будет дешевле
в версии 1.5 не вылечил это место, т.к. через SetUnitUserData и GetUnitUserData можно хранить только 1 значение на каждого юнита
и это значение уже занято в функции Propelly__Main
Propelly__Main
function Propelly__Main takes nothing returns nothing
	local integer i=1
	local integer j=1
	if GetUnitTypeId(GetTriggerUnit())=='orai' then
		loop
			exitwhen Propelly__CompareRect[i]==null
			if GetTriggeringRegion()==Propelly__Rects[i]then
				loop
					exitwhen j>Stage_BoxsCount
					if GetUnitTypeId(OrangeMushroom[PLAYER_MAXINUM+j])=='orai' and GetTriggerUnit()==OrangeMushroom[PLAYER_MAXINUM+j]and GetUnitUserData(GetTriggerUnit())!=i then
						call SetUnitUserData(GetTriggerUnit(),i)
						if Propelly__Angle[i]=="Left" then
							if GravityChanger_State==false then
								call SetUnitAnimation(GetTriggerUnit(),"Stand First")
							else
								call SetUnitAnimation(GetTriggerUnit(),"Stand Second")
							endif
							set LeftArrow[PLAYER_MAXINUM+j]=true
							set RightArrow[PLAYER_MAXINUM+j]=false
						elseif Propelly__Angle[i]=="Right" then
							if GravityChanger_State==false then
								call SetUnitAnimation(GetTriggerUnit(),"Stand Second")
							else
								call SetUnitAnimation(GetTriggerUnit(),"Stand First")
							endif
							set LeftArrow[PLAYER_MAXINUM+j]=false
							set RightArrow[PLAYER_MAXINUM+j]=true
						else
							set LeftArrow[PLAYER_MAXINUM+j]=false
							set RightArrow[PLAYER_MAXINUM+j]=false
						endif
						set gravity[PLAYER_MAXINUM+j]=Propelly__FlyGravity[i]
					endif
					set j=j+1
				endloop
				return
			endif
			set i=i+1
		endloop
	endif
endfunction

function Propelly__SetRect takes trigger t,integer i,rect r,real g,string a returns nothing
	set Propelly__Rects[i]=CreateRegion()
	call RegionAddRect(Propelly__Rects[i],r)
	set Propelly__FlyGravity[i]=g
	set Propelly__CompareRect[i]=r
	set Propelly__Angle[i]=a
	call TriggerRegisterEnterRegion(t,Propelly__Rects[i],null)
endfunction

function Propelly__init takes nothing returns nothing
	local trigger t=CreateTrigger()
	call Propelly__SetRect(t,1,gg_rct_PropellyMove001,10,"none")
	call TriggerAddAction(t,function Propelly__Main)
	set t=null
endfunction
буду искать какими способами можно хранить в юнитах числовую информацию
т.к. на тестах после замены UnitIndex(u) на GetUnitUserData(u) фпс поднялся в разы
например 40 фпс наступает не при -box1 20 , а уже при -box1 37
а если сделать две лесенки: -ladder2 20 + 30 раз -box - итого 50 коробок двумя лесенками - то будет 30 фпс
а в текущей версии на 50 коробках фпс упадёт до 0 из-за UnitIndex
nazarpunk: Очищать глобальную группу G дешевле, чем дрочить создание/удаление локалки.
потестировать это пока не удалось, т.к. коллизии всегда выдавали true и коробки проваливались - наверное неправильно очищал группу через дестрой, покурю ещё это место
Загруженные файлы