Вопрос по поводу условию победы

  • Автор темы Автор темы BRANGO
  • Дата начала Дата начала

BRANGO

Новичок
10 Сен 2015
6
0
Добрый день всем обратившим внимание на мой вопрос.
Мне необходимо узнать про условие победы , можно ли сделать так что бы после того как кто то собрал определенный предмет его команда побеждала, если можно (скорее всего можно) то подскажите каким образом и есть ли пример этой функции.
 
Добрый день всем обратившим внимание на мой вопрос.
Мне необходимо узнать про условие победы , можно ли сделать так что бы после того как кто то собрал определенный предмет его команда побеждала, если можно (скорее всего можно) то подскажите каким образом и есть ли пример этой функции.
Проверять при покупки/поднятии предмета если юнит имеет нужный предмет то заканчивать игру.
 
Последнее редактирование модератором:
наверное это будет уже по хамски, но все таки.
Я совсем не смыслю в луи, но подкорректировать что то могу, если вдруг у кого то есть свободное время то покажите наглядно каким оброзом можно создать это условие
 
наверное это будет уже по хамски, но все таки.
Я совсем не смыслю в луи, но подкорректировать что то могу, если вдруг у кого то есть свободное время то покажите наглядно каким оброзом можно создать это условие


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

Код:
function YourAddonName:InitGameMode()
 ListenToGameEvent("entity_killed", Dynamic_Wrap(YourAddonName, "OnEntityKilled"), self)
end


function YourAddonName:OnEntityKilled (event)
  local killedEntity = EntIndexToHScript(event.entindex_killed)
  if killedEntity:GetUnitName() == "cow" then
   CreateDrop("item_flask", killedEntity:GetAbsOrigin())
  end
 end

То есть суть та же:
прописываешь слушателя (listener) на событие выпадение/появление в инвентаре вещи (здесь было убийство монстра);
отлавливаешь событие, как тут отлавливали убийство монстра, и фигачишь победу через функцию:
Код:
GameRules:SetGameWinner(DOTA_TEAM_BADGUYS)
События можешь здесь отыскать.
Функции тут.

У меня в планах есть рассмотрение подобных вещей, когда дойду до этого (пара троек дней), скину тебе код, если сам еще не сообразишь :)
 
Последнее редактирование модератором:
Team = keys.caster:GetTeamNumber()
If keys.caster:HasItemInInventory("") then

GameRules:SetGameWinner(Team)
End

Что то типо этого, по идее должно работать так как гейм рулес не локальная а глобальная переменная, если нет то делай через гейммод, но там сложнее и запарнее
 
Последнее редактирование модератором:
Ну вот, появилась свободная минутка. Если до сих пор ищешь решение, то вот код, на поднятие вещи:

Код:
function YourAddonName:InitGameMode()
 ListenToGameEvent("dota_item_picked_up", Dynamic_Wrap(YourAddonName, 'OnItemPickedUp'), self)
end

 function YourAddonName:OnItemPickedUp(data)
 
	if data.itemname == "your_item_name" then
		local number = PlayerResource:GetTeam(data.PlayerID)
		local name = GetTeamName(number)
		if name == "#DOTA_GoodGuys" then
			GameRules:SetGameWinner(DOTA_TEAM_GOODGUYS)
		elseif name == "#DOTA_BadGuys" then
			GameRules:SetGameWinner(DOTA_TEAM_BADGUYS)
		end
	end
 
 end


Это как один из вариантов. Можно и другие виды кода написать, ибо вариаций немерено.
 
Последнее редактирование модератором:
А вот этот код, по идеи, сработает тогда, когда вещь именно появится в инвентаре:


Код:
function YourAddonName:InitGameMode() 
 ListenToGameEvent("dota_inventory_item_added", Dynamic_Wrap(YourAddonName, "OnItemAdded"), self)
end


function YourAddonName:OnItemAdded(data)
	if data.itemname == "your_item_name" then
		for i=0,PlayerResource:GetPlayerCount() do 
			if PlayerResource:IsValidPlayer(i) then 
				local player = PlayerResource:GetSelectedHeroEntity(i)
				if player:HasItemInInventory("your_item_name") then
					GameRules:SetGameWinner( player:GetTeamNumber() )
				end
			end
		end			
	end
end



Но, я эти оба кода писал с руки без проверок (на работе нет возможности проверить), поэтому не гарантирую его функциональность. Но должен быть таким :)
 
Последнее редактирование модератором:
Добрый день всем обратившим внимание на мой вопрос.
Мне необходимо узнать про условие победы , можно ли сделать так что бы после того как кто то собрал определенный предмет его команда побеждала, если можно (скорее всего можно) то подскажите каким образом и есть ли пример этой функции.

Все делается проще в самом редакторе. выделяешь предмет . жмешь Alt+Enter заходишь в Outputs . Жмешь Add . Выбираешь в поле My Output named событие OnPickup. а в поле Via this input присваиваешь победу команде.
 
Последнее редактирование модератором:
Все делается проще в самом редакторе. выделяешь предмет . жмешь Alt+Enter заходишь в Outputs . Жмешь Add . Выбираешь в поле My Output named событие OnPickup. а в поле Via this input присваиваешь победу команде.

Вот это действительно самый простой выход. + реп
 
Последнее редактирование модератором:
Реклама: