Проблема с джава скриптом

almazist1

Продвинутый
Использовал панельку Донатеров которую скидывал vulkantsk, пытался переделать под себя
Код:
DONATE_SET_PREMIUM_1 = {
    players = {
    --145852783,
    },
}

DONATE_SET_PREMIUM_2 = {
    players = {
--        347624347,
    },
}

DONATE_SET_PREMIUM_3 = {
    players = {
        145852783,
    },
}

DONATE_ITEM_TANGOS = {
    players = {
--        347624347,
    },   
}

DONATE_ITEM_BOOTS = {
    players = {
--        347624347,
    },   
}

DONATE_ITEM_AGANIM = {
    players = {
--        347624347,
    },   
}

DONATE_ITEM_RAPIER = {
    players = {
--        347624347,
    },   
}

DONATE_ITEM_APEX = {
    players = {
--        347624347,
    },   
}


DONATE_ITEMS = {
    silver_premium = {
        {
            name = "item_starter_deck",
            modname = "modifier_card_hhahha",
            can_be_bought = true,
            free_available = true,
            count = 10,
            sets ={
            },
        },
        {
            name = "item_recall_datadriven",
            modname = "modifier_card_hhahha",
            can_be_bought = true,
            free_available = true,
            count = 10,
            sets ={
            },
        },
        {
            name = "modifier_card_dust",
            modname = "modifier_card_hhahha",
            can_be_bought = true,
            count = 30,
            sets ={
                DONATE_SET_PREMIUM_1,
                DONATE_SET_PREMIUM_2,
                DONATE_SET_PREMIUM_3,
            },
        },

    },
    Almaz_premium = {
        {
            name = "modifier_card_dust",
            modname = "modifier_card_dust",
            can_be_bought = true,
            count = 10,
            sets ={
                DONATE_ITEM_TANGOS,
                DONATE_SET_PREMIUM_1,
                DONATE_SET_PREMIUM_2,
                DONATE_SET_PREMIUM_3,
            },
        },
        {
            name = "item_enchanted_mango",
            modname = "modifier_card_dust",
            can_be_bought = true,
            count = 10,
            sets ={
                DONATE_ITEM_BOOTS,
                DONATE_SET_PREMIUM_1,
                DONATE_SET_PREMIUM_2,
                DONATE_SET_PREMIUM_3,
            },
        },
        {
            name = "item_enchanted_mango",
            modname = "modifier_card_dust",
            can_be_bought = true,
            count = 10,
            sets ={
                DONATE_SET_PREMIUM_2,
                DONATE_SET_PREMIUM_3,
                DONATE_ITEM_AGANIM,
            },
        },
        {
            name = "item_rapier",
            modname = "modifier_card_dust",
            can_be_bought = true,
            count = 10,
            sets ={
                DONATE_ITEM_RAPIER,
                DONATE_SET_PREMIUM_3,
            },
        },
        {
            name = "item_enchanted_mango",
            modname = "modifier_card_dust",
            can_be_bought = false,
            count = 10,
            sets ={
                DONATE_ITEM_APEX,
                DONATE_SET_PREMIUM_3,
            },
        },

    },
    gold_premium = {
        {
            name = "item_recall_datadriven",
            modname = "modifier_card_dust",
            can_be_bought = true,
            free_available = true,
            count = 10,
            sets ={
            },
        },
        {
            name = "item_recall_datadriven",
            modname = "modifier_card_dust",
            can_be_bought = true,
            free_available = true,
            count = 10,
            sets ={
            },
        },
        {
            name = "modifier_card_dust",
            modname = "modifier_card_dust",
            can_be_bought = true,
            count = 30,
            sets ={
                DONATE_SET_PREMIUM_1,
                DONATE_SET_PREMIUM_2,
                DONATE_SET_PREMIUM_3,
            },
        },

    },
}

Donate = Donate or class({})

function Donate:OnGameRulesStateChange()
    if GameRules:State_Get() == DOTA_GAMERULES_STATE_CUSTOM_GAME_SETUP then
        self.players = {}
        for p = 0, PlayerResource:GetPlayerCount() - 1 do
            self.players[p] = {}
            local acc_id = PlayerResource:GetSteamAccountID( p )
            local player = self.players[p]

            if acc_id then
                for list, items in pairs( DONATE_ITEMS ) do
                    for _, item in pairs( items ) do
                        local item_info = {
                            name = item.name,
                            modname = item.modname,
                            sets = {}
                        }
                        local player_has = item.free_available or nil
                        for _, set in pairs( item.sets ) do
                            for _, id in pairs( set.players or {} ) do
                                if id == acc_id then
                                    player_has = true
                                end
                            end
                            if set.name and set.can_be_bought then
                                local set_info = {
                                    name = set.name,
                                    can_be_bought = set.can_be_bought,
                                    free_available = set.free_available,
                                }
                                table.insert( item_info.sets, set_info )
                            end
                        end

                        if item.can_be_bought or player_has then
                            player[list] = player[list] or {}

                            if player_has then
                                item_info.count = item.count
                            else
                                item_info.count = -1
                            end
                            table.insert( player[list], item_info )
                        end
                    end
                end
            end
            self:UpdateNetTables( p )
        end
    end
end

function Donate:UpdateNetTables( pId )
    CustomNetTables:SetTableValue( "donate", tostring( pId ), self.players[pId] )
end

function Donate:PlayerTake( info )
    local self = Donate

    local player_data = self.players[info.id]
    if not player_data then return end

    local player = PlayerResource:GetPlayer( info.id )

    if player and player:GetAssignedHero() then
        for _, l in pairs( player_data ) do
            for _, i in pairs( l ) do
                if i.name == info.itemname and i.count > 0 then
                    local hero = player:GetAssignedHero()
                    for ii = 0, 8 do
                        if not hero:GetItemInSlot( ii ) then
                            hero:AddNewModifier(hero, nil, i.name, {duration = 5})
                            i.count = i.count - 1
                            self:UpdateNetTables( info.id )
                            return
                        end
                    end
                end
            end
        end
    end
end

function addModifierBySteamID(enum,modifier_name,steamID,npc)
    for _,ID in pairs(enum) do
        if steamID == ID then
            Timers:CreateTimer(1,function() npc:AddNewModifier( npc, nil, modifier_name, nil) end)
        end
    end
end

ListenToGameEvent( "game_rules_state_change", Dynamic_Wrap( Donate, "OnGameRulesStateChange" ), Donate )
CustomGameEventManager:RegisterListener( "donate_player_take", Dynamic_Wrap( Donate, "PlayerTake" ) )
JavaScript:
function DonateToggleButtonActivate() {
    var panel = $( "#DonateContainer" )
    panel.SetHasClass('Visible', !panel.BHasClass('Visible'))
    // if ( panel.style.visibility == "visible" ) {
    //     panel.style.visibility = "collapse"
    // } else {
    //     panel.style.visibility = "visible"
    // }
}

function AddEvent( button, itemname ) {
    button.SetPanelEvent( "onactivate", function() {
        GameEvents.SendCustomGameEventToServer( "donate_player_take", { id: Players.GetLocalPlayer(), itemname: itemname } );
    } )
}




function DonatePanelUpdate( table, id, lists ) {
    if ( id == Players.GetLocalPlayer() ) {
        var panel = $( "#DonateItemsList" )
        if ( panel.GetAttributeInt( "created", 0 ) == 0 ) {
            for ( name in lists ) {
                var items = lists[name]
                // var list_panel = $.CreatePanel( "Panel", panel, "" )
                var list_name = $.CreatePanel( "Label", panel, "" )
                list_name.text = $.Localize( name )
                list_name.AddClass( "ListName" )
                var list = $.CreatePanel( "Panel", panel, "" )
                list.AddClass( "DonateItemsList" )

                var item_count = 0
                var row = null
                var countRow = 8
                for ( i in items ) {
                    if ( item_count % 7 == 0 ) {
                        row = $.CreatePanel( "Panel", list, "" )
                        row.AddClass( "Row" )
                    }
                    var iteminfo = items[i]
                    var button = $.CreatePanel( "Button", row, "" )
                    AddEvent( button, iteminfo.modname )
    
                    button.SetAttributeString( "itemname", iteminfo.name )
                    var item = $.CreatePanel( "DOTAItemImage", button, "" )
                    item.itemname = iteminfo.name
                    item.hittest = true

                    if ( iteminfo.count > 0 ) {
                        button.AddClass( "DonateItemButton" )
                    } else {
                        button.AddClass( "DonateItemButtonHidden" )
                    }

                    panel.SetAttributeInt( "created", 1 )

                    item_count++
                }
            }
        } else {
//            $.Msg( "ANIME" )
            var listsinfo = panel.Children()
            for ( i in listsinfo ) {
                var rows = listsinfo[i].Children()
                for ( int in rows ) {
                    var items = rows[int].Children()
                    for ( ii in items ) {
                        var button = items[ii]
                        var item_name = button.GetAttributeString( "itemname", "" )
                        for ( n in lists ) {
                            for ( iitem in lists[n] ) {
                                var iteminfo = lists[n][iitem]
//                                $.Msg( iteminfo )
//                                $.Msg( lists[n] )
                                if ( iteminfo.name == item_name ) {
                                    if ( iteminfo.count > 0 ) {
                                        button.AddClass( "DonateItemButton" )
                                    } else {
                                        button.AddClass( "DonateItemButtonHidden" )
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

( function () {
    GameEvents.SendCustomGameEventToServer( "donate_player_create", { id: Players.GetLocalPlayer() } );
    CustomNetTables.SubscribeNetTableListener( "donate", DonatePanelUpdate )
    var items = CustomNetTables.GetTableValue( "donate", Players.GetLocalPlayer().toString() )
    $( "#DonateItemsList" ).SetAttributeInt( "created", 0 )
    if ( items ) {
        DonatePanelUpdate( null, Players.GetLocalPlayer(), items )
    }
} )();
хотел чтоб выдавались модифаеры если кликаешь на иконку шмотки, но выдается только один модифаер, остальные не реагируют совсем
 
выдается только 3й?
ну который
Lua:
DONATE_SET_PREMIUM_3 = {
    players = {
        145852783,
    },
}
 
выдается только 3й?
ну который
Lua:
DONATE_SET_PREMIUM_3 = {
    players = {
        145852783,
    },
}
Нет, не в этом проблема, только проверил. Выдается только modifier_card_dust , это был первый модифаер, который я испробовал,
Modifier card hhahha не реагирует, хотя он рабочий( проверял).
 
Нет, не в этом проблема, только проверил. Выдается только modifier_card_dust , это был первый модифаер, который я испробовал,
Modifier card hhahha не реагирует, хотя он рабочий( проверял).
у тебя везде стоит модифаер
Код:
modname = "modifier_card_dust"
поменяй у каждого премиума на свой модифаер
 
Почему не сделать предмет, который при подборе навешивает модифаер ?
У меня например так и реализованно ...
 
Почему не сделать предмет, который при подборе навешивает модифаер ?
У меня например так и реализованно ...
Думаю в моей кастомке будет не хватать слотов, да и давать модифаер через шмотки не камильфо, в итоге я сделал свое окошко, но там мне пришлось все модифаеры прописывать отдельно и путь к их картинкам, работает так как я хотел, но хотелось бы ленивую версию как в donate.js
 
  • Хаха
Реакции: vulkantsk
Думаю в моей кастомке будет не хватать слотов, да и давать модифаер через шмотки не камильфо, в итоге я сделал свое окошко, но там мне пришлось все модифаеры прописывать отдельно и путь к их картинкам, работает так как я хотел, но хотелось бы ленивую версию как в donate.js
Ты походу не понял про, что говоришь...
У меня шмотки дающие модифаер слот не занимают ))
 
Почему не сделать предмет, который при подборе навешивает модифаер ?
У меня например так и реализованно ...
Ты походу не понял про, что говоришь...
У меня шмотки дающие модифаер слот не занимают ))
Типо сразу исчезают?
 
Реклама: