Хорошо, тогда как сделать плитку прозрачнойПлоскость, по которой можно ходить, но под которой прохода нет можно сделать гораздо проще: вырезаешь плитки (tile) из земли, копируешь и поднимешь копии на нужный тебе уровень, куртишь/вертишь, а оригинал возвращаешь на место. Не помню точно, может через тот же коллапс плиток все делается, а может и без него обходится.
При попытке сохранить карту, игра крашится, в чем может быть проблема? (она ещё почему-то выделена черным цветом также как и стандартные и парочка других)
p.s. и что такое bot scripting?
"Я не знаю но я все равно влезу и скажу что я не знаю"Насчет карты не в курсе, если столкнусь - напишу)
"life_break_datadriven"
{
// General
//-------------------------------------------------------------------------------------------------------------
"BaseClass" "ability_datadriven"
"AbilityType" "DOTA_ABILITY_TYPE_ULTIMATE"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_UNIT_TARGET"
"AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_ENEMY"
"AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP"
"AbilityUnitTargetFlags" "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES"
"AbilityUnitDamageType" "DAMAGE_TYPE_MAGICAL"
"SpellImmunityType" "SPELL_IMMUNITY_ENEMIES_YES"
"FightRecapLevel" "2"
"AbilityTextureName" "huskar_life_break"
// Casting
//-------------------------------------------------------------------------------------------------------------
"AbilityCastPoint" "0.3 0.3 0.3"
// Time
//-------------------------------------------------------------------------------------------------------------
"AbilityCooldown" "12"
// Cost
//-------------------------------------------------------------------------------------------------------------
"AbilityManaCost" "0 0 0"
// Cast Range
//-------------------------------------------------------------------------------------------------------------
"AbilityCastRange" "550"
// Casting
//-------------------------------------------------------------------------------------------------------------
"AbilityDuration" "4 5 6"
// Special
//-------------------------------------------------------------------------------------------------------------
"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_FLOAT"
"health_cost_percent" "0.35"
}
"02"
{
"var_type" "FIELD_FLOAT"
"health_damage" "0.35"
}
"03"
{
"var_type" "FIELD_FLOAT"
"health_damage_scepter" "0.65"
}
"04"
{
"var_type" "FIELD_INTEGER"
"charge_speed" "1000"
}
"05"
{
"var_type" "FIELD_INTEGER"
"tooltip_health_damage" "35"
}
"06"
{
"var_type" "FIELD_INTEGER"
"tooltip_health_cost_percent" "35"
}
"07"
{
"var_type" "FIELD_INTEGER"
"movespeed_slow" "-40 -50 -60"
}
"08"
{
"var_type" "FIELD_FLOAT"
"slow_duration_tooltip" "4 5 6"
}
"09"
{
"var_type" "FIELD_INTEGER"
"tooltip_health_damage_scepter" "65"
}
"10"
{
"var_type" "FIELD_FLOAT"
"Costoldown_scepter" "4"
}
"11"
{
"var_type" "FIELD_FLOAT"
"max_distance" "1400"
}
}
// Precache
//-------------------------------------------------------------------------------------------------------------
"precache"
{
"soundfile" "soundevents/game_sounds_heroes/game_sounds_huskar.vsndevts"
"particle" "particles/units/heroes/hero_huskar/huskar_life_break.vpcf"
"particle" "particles/units/heroes/hero_huskar/huskar_life_break_cast.vpcf"
"particles" "particles/status_fx/status_effect_huskar_lifebreak.vpcf"
}
// Datadriven
//-------------------------------------------------------------------------------------------------------------
"OnSpellStart"
{
"ApplyModifier"
{
"ModifierName" "modifier_huskar_life_break_datadriven"
"Target" "CASTER"
"Duration" "1"
}
"RunScript"
{
"ScriptFile" "heroes/hero_huskar/life_break.lua"
"Function" "LifeBreak"
"ModifierName" "modifier_huskar_life_break_datadriven"
"ModifierName_Debuff" "modifier_huskar_life_break_datadriven_debuff"
}
"FireSound"
{
"EffectName" "Hero_Huskar.Life_Break"
"Target" "CASTER"
}
"FireEffect"
{
"EffectName" "particles/units/heroes/hero_huskar/huskar_life_break_cast.vpcf"
"EffectAttachType" "follow_origin"
"Target" "CASTER"
}
"ApplyMotionController"
// For this: gfycat.com/BraveHideousGiantschnauzer -> check: bit.ly/1KWulqA
{
"Target" "CASTER"
"ScriptFile" "heroes/hero_huskar/life_break.lua"
"HorizontalControlFunction" "JumpHorizonal"
"VerticalControlFunction" "JumpVertical"
}
}
"Modifiers"
{
"modifier_huskar_life_break_datadriven"
{
"Passive" "0"
"IsHidden" "1"
"IsDebuff" "0"
"Duration" "1"
"States"
{
"MODIFIER_STATE_DISARMED" "MODIFIER_STATE_VALUE_ENABLED"
"MODIFIER_STATE_MAGIC_IMMUNE" "MODIFIER_STATE_VALUE_ENABLED"
}
}
"modifier_huskar_life_break_datadriven_debuff"
{
"Passive" "0"
"IsHidden" "0"
"IsDebuff" "1"
"Duration" "%AbilityDuration"
"StatusEffectName" "particles/status_fx/status_effect_huskar_lifebreak.vpcf"
"StatusEffectPriority" "15" //What this
"Properties"
{
"MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%movespeed_slow"
}
}
}
}
Ну сложно же :cНаписать спаунер рун самому?
есть гайд? хотя бы на инглише.Написать спаунер рун самому?
Timers:CreateTimer(120,
function()
if rune and IsValidEntity(rune) then
rune:GetContainer():RemoveSelf()
rune:RemoveSelf()
end
rune = CreateItem("my_rune_name", nil, nil)
CreateItemOnPositionSync(vRuneSpawnPos, rune)
return 120
end)
есть гайд? хотя бы на инглише.