搜索
热搜: 活动 交友 discuz
查看: 326|回复: 1

[讨论] 测试代码高亮帖子

[复制链接]

17

主题

40

帖子

470

积分

大摸导师

UID
1
金币
1961
精华
0
节操
-1

隐修议员

发表于 2019-10-12 13:41:08 | 显示全部楼层 |阅读模式

前方高能预警!非战斗人员请尽快登录!

您需要 登录 才可以下载或查看,没有帐号?注册账号

x
function public:DamageFilter(params)
        local hVictim = EntIndexToHScript(params.entindex_victim_const)
        local hAttacker = EntIndexToHScript(params.entindex_attacker_const)
        local iDamageType = params.damagetype_const
        if IsValid(hAttacker) and hAttacker ~= hVictim then
                local fDamage = params.damage
                local iPlayerID = hAttacker:GetPlayerOwnerID()

                if PlayerResource:IsValidPlayerID(iPlayerID) then
                        local hHero = PlayerResource:GetSelectedHeroEntity(iPlayerID)
                        if hAttacker:IsSummoned() or hAttacker:IsIllusion() then
                                hAttacker = IsValid(hAttacker:GetSummoner()) and hAttacker:GetSummoner() or hAttacker
                        end
                        if hHero ~= hAttacker then
                                if iDamageType == DAMAGE_TYPE_NONE then
                                        iDamageType = DAMAGE_TYPE_PURE
                                end
                                if hAttacker:IsBuilding() and hAttacker.GetBuilding ~= nil then
                                        local hBuilding = hAttacker:GetBuilding()
                                        local tRoundDamage = PlayerData.playerRoundDamage[iPlayerID]
                                        local iIndex = #tRoundDamage
                                        if tRoundDamage[iIndex][hBuilding:GetUnitEntityName()] == nil then
                                                tRoundDamage[iIndex][hBuilding:GetUnitEntityName()] = {}
                                        end
                                        tRoundDamage[iIndex][hBuilding:GetUnitEntityName()][iDamageType] = (tRoundDamage[iIndex][hBuilding:GetUnitEntityName()][iDamageType] or 0) + fDamage
                                        hBuilding:ModifyTotalDamage(fDamage)
                                end
                        end
                end
        end
        return true
end


        <Panel class="FlyoutScoreboardRoot" hittest="false" >
                <Panel id="FlyoutScoreboard" hittest="false" >
                        <Panel id="FlyoutScoreboardTitle" >
                                <Panel id="FlyoutScoreboardTitleContainer" >
                                        <Panel id="GameModeInfo" >
                                                <Label id="GameModeInfo_CountingMode" class="GameModeInfoLabel" text="{s:counting_mode_name}" onmouseover="DOTAShowTitleTextTooltip('{s:counting_mode_name}','{s:counting_mode_description}')" onmouseout="DOTAHideTitleTextTooltip()" />
                                                <Label class="GameModeInfoLabel" text="/" />
                                                <Label id="GameModeInfo_Difficulty" class="GameModeInfoLabel" text="{s:difficulty_name}" onmouseover="DOTAShowTitleTextTooltip('{s:difficulty_name}','{s:difficulty_description}')" onmouseout="DOTAHideTitleTextTooltip()" />
                                        </Panel>
                                        <Label class="ScoreCol_Kills" text="#Score_Kills"/>
                                        <Label class="ScoreCol_Missing" text="#Score_Missing"/>
                                        <Label class="ScoreCol_VentureChallenge" text="#Score_VentureChallenge"/>
                                </Panel>
                        </Panel>
                        <Panel id="PlayersContainer" >
                        </Panel>
                </Panel>
                <!-- <Image id="DouyuImage" scaling="stretch-to-fit-preserve-aspect" src="file://{images}/custom_game/adv/douyu_roshan.png" /> -->
        </Panel>




 // 主键
        "npc_dota_hero_monkey_king_custom"
        {
                // 名字
                "Name"        "齐天大圣"
                // 基类
                "BaseClass"        "npc_dota_creature"
                // 模型
                "Model"        "models/heroes/monkey_king/monkey_king.vmdl"
                // 模型尺寸
                "ModelScale"        "0.81"
                // 特殊数据
                "Creature"
                {
                        // 挂载饰品
                        "AttachWearables"
                        {
                                "1"        { "ItemDef" "657" }
                                "2"        { "ItemDef" "594" }
                                "3"        { "ItemDef" "608" }
                                "4"        { "ItemDef" "609" }
                        }
                }
                // 声音设置
                "SoundSet"        "Hero_MonkeyKing"
                // 选取音效
                "HeroSelectSoundEffect"        "Hero_MonkeyKing.Pick"
                // 粒子目录
                "particle_folder"        "particles/units/heroes/hero_monkey_king"
                // 声音文件
                "GameSoundsFile"        "soundevents/game_sounds_heroes/game_sounds_monkey_king.vsndevts"
                // 语音文件
                "VoiceFile"        "soundevents/voscripts/game_sounds_vo_monkey_king.vsndevts"
                // 技能1
                "Ability1"        "monkey_king_1"
                // 技能2
                "Ability2"        "monkey_king_2"
                // 技能3
                "Ability3"        "monkey_king_3"
                // 技能10
                "Ability10"        "special_bonus_unique_monkey_king_custom"
                // 技能11
                "Ability11"        "special_bonus_custom_attack_damage_50"
                // 技能12
                "Ability12"        "special_bonus_unique_monkey_king_custom_3"
                // 技能13
                "Ability13"        "special_bonus_unique_monkey_king_custom_2"
                // 技能14
                "Ability14"        "special_bonus_unique_monkey_king_custom_5"
                // 技能15
                "Ability15"        "special_bonus_unique_monkey_king_custom_4"
                // 技能16
                "Ability16"        "special_bonus_unique_monkey_king_custom_7"
                // 技能17
                "Ability17"        "special_bonus_unique_monkey_king_custom_6"
                // 技能槽位
                "AbilityLayout"        "4"
                // 血条高度
                "HealthBarOffset"        "200"
                // 移动速度
                "MovementSpeed"        "300"
                // 转身速度
                "MovementTurnRate"        "0.5"
                // 攻击姿态
                "HasAggressiveStance"        "0"
                // 移动类型
                "MovementCapabilities"        "DOTA_UNIT_CAP_MOVE_GROUND"
                // 护甲值
                "ArmorPhysical"        "0"
                // 魔抗
                "MagicalResistance"        "0"
                // 生命值
                "StatusHealth"        "100"
                // 生命恢复
                "StatusHealthRegen"        "0.25"
                // 魔法值
                "StatusMana"        "200"
                // 魔法恢复
                "StatusManaRegen"        "1"
                // 攻击类型
                "AttackCapabilities"        "DOTA_UNIT_CAP_MELEE_ATTACK"
                // 最小攻击力v812
                "AttackDamageMin"        "29"
                // 最大攻击力v812
                "AttackDamageMax"        "35"
                // 攻击间隔
                "AttackRate"        "1.3"
                // 攻击前摇
                "AttackAnimationPoint"        "0.45"
                // 攻击范围
                "AttackRange"        "900"
                // 警戒范围
                "AttackAcquisitionRange"        "900"
                // 投射物特效
                "ProjectileModel"        "particles/base_attacks/ranged_hero.vpcf"
                // 投射物速率
                "ProjectileSpeed"        "900"
                // 主属性
                "AttributePrimary"        "DOTA_ATTRIBUTE_AGILITY"
                // 力量v812
                "AttributeBaseStrength"        "19"
                // 力量成长v812
                "AttributeStrengthGain"        "8.6"
                // 敏捷v812
                "AttributeBaseAgility"        "22"
                // 敏捷成长v812
                "AttributeAgilityGain"        "14.1"
                // 智力v812
                "AttributeBaseIntelligence"        "20"
                // 智力成长v812
                "AttributeIntelligenceGain"        "6.6"
                // 单位标签
                "UnitLabel"        "HERO"
                // 是否有道具栏
                "HasInventory"        "1"
                // 物品栏格数
                "InventorySlots"        "6"
                // 作为英雄生命条
                "ConsideredHero"        "1"
                // 攻击类型
                "CombatClassAttack"        "DOTA_COMBAT_CLASS_ATTACK_HERO"
                // 防御类型
                "CombatClassDefend"        "DOTA_COMBAT_CLASS_DEFEND_HERO"
                // 初始
                "AmbientModifiers"        "modifier_ambient_monkey_king | modifier_ambient_monkey_king_attack_range | modifier_ambient_monkey_king_attack_speed"
                // 幽灵单位
                "GhostModelUnitName"        "npc_dota_hero_monkey_king"
        }



function StartBuildingHelper( params )
{
        if (params !== undefined)
        {
                // Set the parameters passed by AddBuilding
                state = params.state;
                size = params.size;
                overlay_size = size * 3;
                grid_alpha = Number(params.grid_alpha);
                model_alpha = Number(params.model_alpha);
                recolor_ghost = Number(params.recolor_ghost);
                builderIndex = params.builderIndex;
                var scale = params.scale;
                var entindex = params.entindex;
                var attack_range = params.attack_range;

                // If we chose to not recolor the ghost model, set it white
                var ghost_color = [0, 255, 0]
                if (!recolor_ghost)
                        ghost_color = [255,255,255]

                var localHeroIndex = Players.GetPlayerHeroEntityIndex( Players.GetLocalPlayer() );

                if (modelParticle !== undefined) {
                        Particles.DestroyParticleEffect(modelParticle, true)
                }
                if (gridParticles !== undefined) {
                        for (var i in gridParticles) {
                                Particles.DestroyParticleEffect(gridParticles[i], true)
                        }
                }

                // Range
                rangeParticle = Particles.CreateParticle("particles/ui_mouseactions/range_display.vpcf", ParticleAttachment_t.PATTACH_CUSTOMORIGIN, -1);
                Particles.SetParticleControl(rangeParticle, 1, [attack_range, attack_range, attack_range]);

                // Building Ghost
                modelParticle = Particles.CreateParticle("particles/buildinghelper/ghost_model.vpcf", ParticleAttachment_t.PATTACH_ABSORIGIN, localHeroIndex);
                Particles.SetParticleControlEnt(modelParticle, 1, entindex, ParticleAttachment_t.PATTACH_ABSORIGIN_FOLLOW, "", Entities.GetAbsOrigin(entindex), true)
                Particles.SetParticleControl(modelParticle, 2, ghost_color)
                Particles.SetParticleControl(modelParticle, 3, [model_alpha,0,0])
                Particles.SetParticleControl(modelParticle, 4, [scale,0,0])

                // Grid squares
                gridParticles = [];
                for (var x=0; x < size*size; x++)
                {
                        var particle = Particles.CreateParticle("particles/buildinghelper/square_sprite.vpcf", ParticleAttachment_t.PATTACH_CUSTOMORIGIN, 0)
                        Particles.SetParticleControl(particle, 1, [32,0,0])
                        Particles.SetParticleControl(particle, 3, [grid_alpha,0,0])
                        gridParticles.push(particle)
                }

                overlayParticles = [];
                for (var y=0; y < overlay_size*overlay_size; y++)
                {
                        var particle = Particles.CreateParticle("particles/buildinghelper/square_overlay.vpcf", ParticleAttachment_t.PATTACH_CUSTOMORIGIN, 0)
                        Particles.SetParticleControl(particle, 1, [32,0,0])
                        Particles.SetParticleControl(particle, 3, [0,0,0])
                        overlayParticles.push(particle)
                }
        }

        if (state == 'active')
        {
                $.Schedule(0, StartBuildingHelper);

                var mPos = GameUI.GetCursorPosition();
                var GamePos = GameUI.GetScreenWorldPosition(mPos);;

                if ( GamePos !== null )
                {
                        SnapToGrid(GamePos, size)

                        var invalid = false;
                        var color = [0,255,0]
                        var part = 0
                        var halfSide = (size/2)*64
                        var boundingRect = {}
                        boundingRect["leftBorderX"] = GamePos[0]-halfSide
                        boundingRect["rightBorderX"] = GamePos[0]+halfSide
                        boundingRect["topBorderY"] = GamePos[1]+halfSide
                        boundingRect["bottomBorderY"] = GamePos[1]-halfSide

                        if (GamePos[0] > 10000000) return

                        // Building Base Grid

                        for (var x=boundingRect["leftBorderX"]+32; x <= boundingRect["rightBorderX"]-32; x+=64)
                        {
                                for (var y=boundingRect["topBorderY"]-32; y >= boundingRect["bottomBorderY"]+32; y-=64)
                                {
                                        var pos = [x,y,GamePos[2]]
                                        if (part>size*size)
                                                return

                                        var gridParticle = gridParticles[part]
                                        Particles.SetParticleControl(gridParticle, 0, pos)
                                        part++;

                                        // Grid color turns red when over invalid positions
                                        // Until we get a good way perform clientside FindUnitsInRadius & Gridnav Check, the prevention will stay serverside
                                        color = [0,255,0]
                                        for (var index = 0; index < blockers.length; index++) {
                                                if (IsPointInPolygon(pos, blockers[index]))
                                                {
                                                        color = [255,0,0]
                                                        invalid = true //Mark invalid for the ghost recolor
                                                        break;
                                                }
                                        }

                                        Particles.SetParticleControl(gridParticle, 2, color)
                                }
                        }

                        // Overlay Grid, visible with Alt pressed
                        // Keep in mind that a particle with 0 alpha does still eat frame rate.
                        //overlay_alpha = GameUI.IsAltDown() ? 90 : 0;

                        //color = [255,255,255]
                        var part2 = 0
                        var halfSide2 = (overlay_size/2)*64
                        var boundingRect2 = {}
                        boundingRect2["leftBorderX"] = GamePos[0]-halfSide2
                        boundingRect2["rightBorderX"] = GamePos[0]+halfSide2
                        boundingRect2["topBorderY"] = GamePos[1]+halfSide2
                        boundingRect2["bottomBorderY"] = GamePos[1]-halfSide2

                        for (var x2=boundingRect2["leftBorderX"]+32; x2 <= boundingRect2["rightBorderX"]-32; x2+=64)
                        {
                                for (var y2=boundingRect2["topBorderY"]-32; y2 >= boundingRect2["bottomBorderY"]+32; y2-=64)
                                {
                                        var pos2 = [x2,y2,GamePos[2]]
                                        if (part2>=overlay_size*overlay_size)
                                                return

                                        var overlayParticle = overlayParticles[part2]
                                        Particles.SetParticleControl(overlayParticle, 0, pos2)
                                        part2++;

                                        // Grid color turns red when over invalid positions
                                        // Until we get a good way perform clientside FindUnitsInRadius & Gridnav Check, the prevention will stay serverside
                                        color = [255,255,255]
                                        for (var index = 0; index < blockers.length; index++) {
                                                if (IsPointInPolygon(pos2, blockers[index]))
                                                {
                                                        color = [255,0,0]
                                                        break;
                                                }
                                        }
                                        Particles.SetParticleControl(overlayParticle, 2, color)
                                        Particles.SetParticleControl(overlayParticle, 3, [overlay_alpha,0,0])
                                }
                        }

                        // Update the range particle
                        Particles.SetParticleControl(rangeParticle, 0, GamePos)

                        // Update the model particle
                        Particles.SetParticleControl(modelParticle, 0, GamePos)

                        // Turn the model red if we can't build there
                        if (recolor_ghost){
                                if (invalid)
                                        Particles.SetParticleControl(modelParticle, 2, [255,0,0])
                                else
                                        Particles.SetParticleControl(modelParticle, 2, [255,255,255])
                        }
                }
        }
}



#LoadingTitle
{
        vertical-align: center;
        horizontal-align: center;
        /* margin-left: -50px; */
        margin-top: -190px;
        width: 780px;
        height: 584.85px;
        background-image: url("file://{images}/custom_game/loading/title_2.png");
        background-size: 100%;
        background-position: 50%;
        background-repeat: no-repeat;
}


欢迎大家 加入研究~
回复

使用道具 举报

0

主题

10

帖子

755

积分

Lv:4 虚灵先知

UID
12961
金币
226
精华
0
节操
0
发表于 2019-10-13 00:56:37 | 显示全部楼层
首页下面的友链被篡改了,全是黄连
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|Archiver|手机版|小黑屋|AMHC!dota2rpg~ ( 闽ICP备14009209 )

GMT+8, 2019-11-21 02:00 , Processed in 0.087940 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc. Theme.Yeei

快速回复 返回顶部 返回列表