Как сделать гроб после смерти.

Роман

Активный
12 Май 2016
88
0
DQYbSDO6_Xg.jpg

Как сделать гроб после смерти ,как в эпик бос файт.Если на него нажать ,то герой возрадиться на том же месте через некоторое время.
 
Чет полазил ничего не нашел ,там слишком много непонятного кода.Где искать хоть?
 
Ищи по событию убийства героя или юнита. Так же можешь залезть в файлы локализации и там отыскать этот самый гробик, его описание, а через него вылезти в объект, которому это описание адресовано.
 
  • Нравится
Реакции: Zek13f1
Вообщем код я нашел.
Это lua
Код:
function CHoldoutGameMode:OnEntityKilled( event )
	local killedUnit = EntIndexToHScript( event.entindex_killed )
	if killedUnit and killedUnit:IsRealHero() then
		local newItem = CreateItem( "item_tombstone", killedUnit, killedUnit )
		newItem:SetPurchaseTime( 0 )
		newItem:SetPurchaser( killedUnit )
		local tombstone = SpawnEntityFromTableSynchronous( "dota_item_tombstone_drop", {} )
		tombstone:SetContainedItem( newItem )
		tombstone:SetAngles( 0, RandomFloat( 0, 360 ), 0 )
		FindClearSpaceForUnit( tombstone, killedUnit:GetAbsOrigin(), true )	
	end
end
И ещё вот это
npc_items_custom
Код:
"DOTAAbilities"
{
	"item_tombstone"
	{
		// General
		//-------------------------------------------------------------------------------------------------------------
		"AbilityName"					"item_tombstone"
		"AbilityBehavior"				"DOTA_ABILITY_BEHAVIOR_NO_TARGET | DOTA_ABILITY_BEHAVIOR_CHANNELLED | DOTA_ABILITY_BEHAVIOR_DONT_RESUME_ATTACK"
		"Model"							"models/props_gameplay/tombstoneb01.vmdl"
		"PingOverrideText"				"DOTA_Chat_Tombstone_Pinged"
		"precache"
		{
			"particle_folder" "particles/units/heroes/hero_morphling"
		}

		
		// Stats
		//-------------------------------------------------------------------------------------------------------------
		"AbilityCastRange"				"100"
		"AbilityCastPoint"				"0.0"
		"AbilityChannelTime"			"8.0"
		
		// Item Info
		//-------------------------------------------------------------------------------------------------------------
		"ItemCost"						"99999"
		"ItemPurchasable"				"0"
		"ItemShopTags"					"consumable"
		"ItemQuality"					"consumable"
		"ItemStackable"					"1"
		"ItemShareability"				"ITEM_FULLY_SHAREABLE"
		"ItemPermanent"					"0"
		"ItemInitialCharges"			"1"
		"ItemCastOnPickup"				"1"
		"ItemKillable"					"0"

	}
}
Но я не понял как он работает :P
В доте можно выкладывать предмет,но он работает никогда мы его подбираем с пола ,а когда он в инвентаре,а тут наоборот кароч я не понял.
 
Последнее редактирование модератором:
Код:
"ItemCastOnPickup"				"1"
Что непонятного?
 
Последнее редактирование модератором:
[quote author=Adam Smith link=topic=970.msg4973#msg4973 date=1466247510]
Код:
"ItemCastOnPickup"				"1"
Что непонятного?
[/quote]
В какой строчке прописано оживление персонажа и круглой полоски ,которая заполняется.
 
Последнее редактирование модератором:
Дальше ищи абилку в духе "item_tombstone"
 
Последнее редактирование модератором:
Я конечно может не понимаю ,но там нет такой абилки.Да там все и без нее работает,я создал новый проэкт ,и в этом проэкте пустой файл с абилками ,но эта фишка все равно работает...
 
Ещё один вопрос.Мне нужно что бы умершие воскресали после конца раунда,как это реализовать?Мне нужен типо их индефикатор ,там же что то записывается в функцию ,когда они умирают?
 
Ещё один вопрос.Мне нужно что бы умершие воскресали после конца раунда,как это реализовать?Мне нужен типо их индефикатор ,там же что то записывается в функцию ,когда они умирают?
Код:
function CHoldoutGameMode:OnEntityKilled( event )
	local killedUnit = EntIndexToHScript( event.entindex_killed )
	if killedUnit and killedUnit:IsRealHero() then
        table.insert(hero)
        if x=1 then 
   hero:SetAbsOrigin( point )
   FindClearSpaceForUnit(hero, 0,0,0, false) 
--нули координаты спавна героев
   hero:Stop() 
end
		local newItem = CreateItem( "item_tombstone", killedUnit, killedUnit )
		newItem:SetPurchaseTime( 0 )
		newItem:SetPurchaser( killedUnit )
		local tombstone = SpawnEntityFromTableSynchronous( "dota_item_tombstone_drop", {} )
		tombstone:SetContainedItem( newItem )
		tombstone:SetAngles( 0, RandomFloat( 0, 360 ), 0 )
		FindClearSpaceForUnit( tombstone, killedUnit:GetAbsOrigin(), true )	
	end
end
А точнее
Код:
table.insert(hero)
        if x=1 then 
   hero:SetAbsOrigin( point )
   FindClearSpaceForUnit(hero, 0,0,0, false) 
--нули координаты спавна героев
   hero:Stop() 
end
Так будет работать?
X это переменная ,которая равна 1 ,когда происходит смена раунда и которая сразуже приравнивается к нулю...
 
Последнее редактирование модератором:
Реализуешь функцию, которую запускаешь по окончанию раунда и в теле функции проверяешь, кто жив, а кто мертв. Соответственно, мертвых респавнишь.
 
Реализуешь функцию, которую запускаешь по окончанию раунда и в теле функции проверяешь, кто жив, а кто мертв. Соответственно, мертвых респавнишь.
Вот ,а как эту проверку делать? там в переменную killed unit записываются все убитые или только последний?Если только последний нужно делать таблицу...
 
Последнее редактирование модератором:
Не нужно тебе событие смерти. И таблицы тебе не нужны.
Ты любого игрока можешь по id достать, а они раздаются с 0 и далее.
Создаешь отдельную функцию, а в её теле реализуешь алгоритм:

Давай подумай сам, когда у тебя есть множество элементов и каждый тебе надо проверить, первым шагом что делаешь? (математически в контексте программы)
 
[quote author=Илья link=topic=970.msg4986#msg4986 date=1466321540]
Не нужно тебе событие смерти. И таблицы тебе не нужны.
Ты любого игрока можешь по id достать, а они раздаются с 0 и далее.
Создаешь отдельную функцию, а в её теле реализуешь алгоритм:

Давай подумай сам, когда у тебя есть множество элементов и каждый тебе надо проверить, первым шагом что делаешь? (математически в контексте программы)
[/quote]
Какая фунция проверки жив ли игрок?
 
Сначала тебе надо сделать обход. Обход элементов, что у тебя есть. Через что в программировании в основном реализуется обход элементов?


Функция проверки жизни: IsAlive
 
Реклама: