Использовал панельку Донатеров которую скидывал 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 )
}
} )();