Простые вопросы

Статус
В этой теме нельзя размещать новые ответы.

LastEdge

Новичок
12 Мар 2017
6
0
Ты имеешь в виду то, что ты расставил по карте модельки и герой через них проходит?
Есть много способов блочить местность, один из них - сущность simple_point_abstraction (найдешь во вкладке с лампочкой).

Да именно. Спасибо) А какие еще варианты есть? И еще хотел спросить, можно как то привязку к сетке убрать?
 
Последнее редактирование модератором:

Илья

Друзья CG
25 Сен 2015
2,348
41
Я не разбираюсь в hammere.

Вот этот человек постил видео о способах блокировки. Можешь покопаться в истории его сообщений или в личку спросить. На ютюбе вроде так же хватает дизайнеров, что ковырялись в hammere.
 

LastEdge

Новичок
12 Мар 2017
6
0
Можно узнать какой keys.caster нужно прописать чтобы получить опыт? Вместо Heal и HealthRestore что нужно прописать?
Код:
function item_tome_of_knowledge2_start(keys)
keys.caster:Heal(keys.HealthRestore, keys.caster)

И еще я не уверен что это верно)
Код:
		{
			"01"
			{
				"var_type"				"FIELD_INTEGER"
				"xp_bonus"				"500"
			}
		}
	{
		"RunScript"
		{
			"ScriptFile"			"tome.lua"
			"Function"				"item_tome_of_knowledge2_start"
			"XpBonus"			"%xp_bonus"
		}
	}
 
Последнее редактирование модератором:

Илья

Друзья CG
25 Сен 2015
2,348
41
Чет я не понял твой вопрос: что тебе нужно?

А касательно кода твоего:

Этот блок
Код:
		"RunScript"
		{
			"ScriptFile"			"tome.lua"
			"Function"				"item_tome_of_knowledge2_start"
			"XpBonus"			"%xp_bonus"
		}

Вызывает функцию "item_tome_of_knowledge2_start", которая описана в скрипте "tome.lua", который хранится в папке vscripts твоего проекта. Вызывает функцию и еще передает в неё параметр "XpBonus" со значением (%) "xp_bonus". "xp_bonus" в свою очередь у тебя должен быть описан в ability special, что собственно и сделано.

Но вот блок вызова скрипта - он сам по себе не будет работать. Его надо поместить в блок любого события/действия.
Читай тут, к примеру.

Вот эта же часть:
Код:
function item_tome_of_knowledge2_start(keys)
keys.caster:Heal(keys.HealthRestore, keys.caster)

Должна находиться в скрипте tome.lua. function - оператор объявления функции, метода, с именем "item_tome_of_knowledge2_start" и, в твоем случае, таблицей значений "keys", которые передаются в функцию из вне (из того блока запуска скрипта). Далее идет тело функции, там у тебя строчка:
Код:
keys.caster:Heal(keys.HealthRestore, keys.caster)
, в которой ты обращаешься к таблице "keys", запрашиваешь у неё через оператор "." объект "caster", у которого в свою очередь вызываешь метод Heal(). Однако этот метод не сработает, так как у тебя попросту нет кастера (caster), ведь ты блок скрипта вызываешь не в блоке каста способности, а вообще не пойми где (походу просто впихнул его после abil spec). Но да еслиб у тебя был кастер, то во первых, он должен быть класса CDOTA BaseNPC (это по сути герои и юниты), а во вторых ты должен передать в него два значения: (float amount, handle source), где amount - это число с плавающей точкой, а source - объект-источник хила. Можно того же кастера указать. Что ты и делаешь:
Код:
(keys.HealthRestore, keys.caster)
Однако, у тебя нет keys.HealthRestore, потому что ты в таблицу данных keys передал только "XpBonus" и стандартные объекты, вроде кастера. И еще не хватает "end" после этой строчки, если это все тело твоей функции.

Стал понятнее собственный код?
 
Последнее редактирование модератором:

I_Explorer

Друзья CG
30 Июл 2016
318
16
Проект
Жизнь в тюрьме
Ну когда ночь наступит, запусти таймер на отсчет минуты и по его истечению выполни эту команду в коде:
GameRules:SetTimeOfDay( 0.75 )

В итоге у тебя ночь опять откатится на начало и снова будет идти 4 минуты, а плюс ту минуту, что уже прошла - вот тебе и пять минут ночи. Ну либо поэкспериментируй с цифрой в SetTimeOfDay( ). Я только знаю то, что 0.75 - это начало ночи.


То же самое с днем. Только выясни, какая цифра отвечает за начало дня.
Плз скинь полный код, у меня не выходит.
Пробовал этот код но он мало того что не работает, так ещё и делает кол-во команд стандартным.
Код:
function HDGSurvival:GameRulesStateChange(keys) 
local newState = GameRules:State_Get() 
if newState == DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then 

Timers:CreateTimer(180, function() 
GameRules:SetTimeOfDay( 0.251 ) 
Timers:CreateTimer(300, function() 
GameRules:SetTimeOfDay( 0.751 ) 
return 720.0 
end 
end 
end 
end 
end 
end
 
Последнее редактирование модератором:

LastEdge

Новичок
12 Мар 2017
6
0
Илья, я хочу создать предмет который дает опыт или увеличивает уровень на 1. И я не понимаю как это сделать)
 

CryDeS

Друзья CG
14 Июл 2015
1,210
11
Илья, я хочу создать предмет который дает опыт или увеличивает уровень на 1. И я не понимаю как это сделать)
1.Ищешь на сайте гайд по айтемам
2.https://developer.valvesoftware.com...cripting/API/CDOTA_BaseNPC_Hero.AddExperience
3.https://developer.valvesoftware.com.../Scripting/API/CDOTA_BaseNPC_Hero.HeroLevelUp
 
Последнее редактирование модератором:

Илья

Друзья CG
25 Сен 2015
2,348
41
Плз скинь полный код, у меня не выходит.
Пробовал этот код но он мало того что не работает, так ещё и делает кол-во команд стандартным.

Начни с этого:
Код:
function HDGSurvival:GameRulesStateChange(keys) 
	local newState = GameRules:State_Get() 
	if newState == DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then 
		GameRules:GetGameModeEntity():SetContextThink("NightTimeThink", 
			function()
				GameRules:SetTimeOfDay( 0.75 )
			end,
		0.1)
	end
end

П.С. У тебя главный скрипт называется HDGSurvival? Потому что если это не так, то тебе надо переименовать функцию. И ты слушателя то поставил? Скинь лучше вообще весь код файла своего.
 
Последнее редактирование модератором:

I_Explorer

Друзья CG
30 Июл 2016
318
16
Проект
Жизнь в тюрьме
[quote author=Илья link=topic=849.msg8837#msg8837 date=1489507260]
Начни с этого:
Код:
function HDGSurvival:GameRulesStateChange(keys) 
	local newState = GameRules:State_Get() 
	if newState == DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then 
		GameRules:GetGameModeEntity():SetContextThink("NightTimeThink", 
			function()
				GameRules:SetTimeOfDay( 0.75 )
			end,
		0.1)
	end
end

П.С. У тебя главный скрипт называется HDGSurvival? Потому что если это не так, то тебе надо переименовать функцию. И ты слушателя то поставил? Скинь лучше вообще весь код файла своего.
[/quote]
Если всё таки не сложно, то пожалуйста напиши код, чтобы день длился 7 минут, а ночь 5 минут.
Как использовать твой пример, который меняет день и ночь местами, я пока что не понимаю.
Мне нужно что-то типа:
если игра успешно началась то
подождать 3 минуты
установить начало дня
подождать 5 минут
установить начало ночи
повторять пока одна из команд не победит.
p.s. главный скрипт называется HDGSurvival, слушателя поставил.
 
Последнее редактирование модератором:

Илья

Друзья CG
25 Сен 2015
2,348
41
Я же тебе объясняю, что функция GameRules:SetTimeOfDay(х)выставляет в зависимости от значения "х" ночь или день. Причем "х" этот может принимать значение от 0 до 1 (может интервал и больше, я не проверял). И как раз в этом интервале и располагаются различные "стадии" дня и ночи (начало ночи, минута ночи, две минуты ночи, минута дня и т.п.). И я не знаю, какие значения каким этим "минутам"/"стадиями" соответствуют, я не проверял. Я только знаю, что значение 0.75 выставляет ночь в игре. Дальше уже сам разбирайся, тебе одно из решений, функцию SetTimeOfDay, подсказали (может даже единственное), за тебя писать код и разбираться я не буду.
 
Последнее редактирование модератором:

Илья

Друзья CG
25 Сен 2015
2,348
41
подождать 3 минуты
установить начало дня
Ставишь таймер на три минуты, по его истечению устанавливаешь время в "начало дня".

подождать 5 минут
установить начало ночи
Ставишь таймер на минуту после того таймера. Как закончится,устанавливаешь время в "начало дня". Ставишь таймер на 4 минуты. Как закончится,устанавливаешь время в "начало ночи".

Почитай про таймеры.
 
Последнее редактирование модератором:

I_Explorer

Друзья CG
30 Июл 2016
318
16
Проект
Жизнь в тюрьме
Я же тебе объясняю, что функция GameRules:SetTimeOfDay(х)выставляет в зависимости от значения "х" ночь или день. Причем "х" этот может принимать значение от 0 до 1 (может интервал и больше, я не проверял). И как раз в этом интервале и располагаются различные "стадии" дня и ночи (начало ночи, минута ночи, две минуты ночи, минута дня и т.п.). И я не знаю, какие значения каким этим "минутам"/"стадиями" соответствуют, я не проверял. Я только знаю, что значение 0.75 выставляет ночь в игре. Дальше уже сам разбирайся, тебе одно из решений, функцию SetTimeOfDay, подсказали (может даже единственное), за тебя писать код и разбираться я не буду.
как сделать чтобы какое-либо действие ( например SetTimeOfDay(0.75) ) произошло через определённое время? меня только это интересует
 
Последнее редактирование модератором:

ZLOY

Администратор
Команда форума
27 Июн 2016
953
182
Код:
GameMode:SetContextThink("DayNightDuration",DayNightDuration,1)

function DayNightDuration()
  dayDuration = 5 --в секундах
  nightDuration = 20
  if GameRules:IsDaytime() then
    --print(1/(dayDuration*2))
    SendToServerConsole("dota_time_of_day_rate "..1/(dayDuration*2))
  else
    --print(1/(nightDuration*2))
    SendToServerConsole("dota_time_of_day_rate "..1/(nightDuration*2))
  end
  return 0.5
end
 
Последнее редактирование модератором:

Agrail

Новичок
25 Мар 2017
4
0
Здравствуйте! В хаммере сделал пути для каждой команды. Как заставить юнита, который создаётся не спавнером, а способностью героя, идти по определенному пути
 

Agrail

Новичок
25 Мар 2017
4
0
[quote author=Илья link=topic=849.msg8929#msg8929 date=1490397579]
Через SetInitialGoalEntity() в lua скрипте абилки, что спавнит юнита.
[/quote]
А как сделать, чтобы юнит выбрал ближайший к себе путь?
 

Илья

Друзья CG
25 Сен 2015
2,348
41
Интересный вопрос. Только вот, ближайший до чего?

Раз ты указываешь ему куда идти через SetInitialGoalEntity(), то рискну предположить, что ты используешь заранее подготовленный маршрут в виде блоков path corner. А значит, у тебя имеются определенные точки пути. Ну и ты можешь попросту сравнивать расположение этих точек через их координаты с расположением твоей цели или крипа, а после указывать крипу именно ближайшую. Математика.
 

I_Explorer

Друзья CG
30 Июл 2016
318
16
Проект
Жизнь в тюрьме
Как изменить или убрать стандартные "Победа сил света" и "Победа сил тьмы"?
 
Последнее редактирование модератором:

somsim

Пользователь
14 Мар 2017
23
0
Помогите - 1) Как сделать магазин вседоступным? (обычный+секретный) (пробовал 2 тригера с разными магазинами - они накладываются друг на друга и... объяснять дальше толку...)
2)Уточнить бы как свой предмет добавить в тот или иной столбец.
И 3) Где хранятся параметры предметов? (Нигде - Гуглить?9) Просто со способностями проще. Они в корне игры.
 
Статус
В этой теме нельзя размещать новые ответы.
Реклама: