Выдача вещей по steam id не пашет(

almazist1

Продвинутый
Скинь полный код евента с этой версией
Код:
function GameMode:OnNPCSpawned(keys)
    print("[BAREBONES] NPC Spawned")
--    DeepPrintTable(keys)
    local npc = EntIndexToHScript(keys.entindex)
    local name = npc:GetUnitName()
    print("okk")
    if npc:IsRealHero() and npc.bFirstSpawned == nil then
        npc.bFirstSpawned = true
        
            local playerID = npc:GetPlayerID()
            local steamID = PlayerResource:GetSteamAccountID(playerID)
             local current_hero = npc:GetUnitName()
            print( "Steam Community ID: " .. tostring( steamID ) )
            print( "Current Hero: " .. tostring( current_hero ) )
            
    local DubgAdmin =
    {
    [145852783] = true
    }
    if DubgAdmin[steam_id] then
    hero:AddItemByName("item_wk_essence")
    end
            for _,ID in pairs(DubgAdmin) do
                if steamID == ID then
                    npc:AddNewModifier( npc, nil, "modifier_special_effect_donator", {duration = -1})
                end
            end
            
            addItemBySteamID(DubgAdmin,"item_WK_essence",steamID,npc)
            --addItemBySteamID(DubgAdmin,"item_skull_of_midas",steamID,npc)
            
            local premium1 =
            {

                
            }
            
            --addItemBySteamID(premium1,"item_roshan_essence",steamID,npc)
            --addItemBySteamID(premium1,"item_skull_of_midas",steamID,npc)

            local midasSkull1 =
            {

            }
            
            --addItemBySteamID(midasSkull1,"item_skull_of_midas",steamID,npc)

            
            local HeroEssenceDrowRanger = -- Drow ranger
            {           

            }       
            --addItemBySteamID(HeroEssenceDrowRanger,"item_drow_essence",steamID,npc)
            
            local HeroEssencePhantom = -- Phantom assassin
            {           

            }       
            --addItemBySteamID(HeroEssencePhantom,"item_phantom_essence",steamID,npc)
            
            local HeroEssenceAlchemist = -- Alchemist
            {           

            }           
            --addItemBySteamID(HeroEssenceAlchemist,"item_alchemist_essence",steamID,npc)
            
            local HeroEssenceSniper = -- Sniper
            {           

            }       
            
            --addItemBySteamID(HeroEssenceSniper,"item_sniper_essence",steamID,npc)
            
            --addItemBySteamID(PremiumPack1,"item_roshan_essence")
            --addItemBySteamID(PremiumPack1,"item_skull_of_midas")
            


            --if steamID == 34762434700 then
--                local Pet = CreateUnitByName("unit_premium_pet5", npc:GetAbsOrigin() + RandomVector(RandomFloat(0,100)), true, npc, nil, npc:GetTeamNumber())
--                Pet:SetOwner(npc)
                --npc:AddItemByName("item_roshan_testitem")
                --npc:AddItemByName("item_courier")
            --end   
        
    end
end
 
20 Дек 2016
892
170
Ахахах, я бля щас в окно выпрыгну, хотя я об этом с самого начала подозревал.
Ты записываешь стимид в одно имя, а к таблице с айдишниками обращаешься по другому, надо же хотя бы немного проверять код, прежде чем писать на форум.
 

I_GRIN_I

Друзья CG
15 Мар 2016
1,335
105
Код:
function GameMode:OnNPCSpawned(keys)
    print("[BAREBONES] NPC Spawned")
--    DeepPrintTable(keys)
    local npc = EntIndexToHScript(keys.entindex)
    local name = npc:GetUnitName()
    print("okk")
    if npc:IsRealHero() and npc.bFirstSpawned == nil then
        npc.bFirstSpawned = true
       
            local playerID = npc:GetPlayerID()
            local steamID = PlayerResource:GetSteamAccountID(playerID)
             local current_hero = npc:GetUnitName()
            print( "Steam Community ID: " .. tostring( steamID ) )
            print( "Current Hero: " .. tostring( current_hero ) )
           
    local DubgAdmin =
    {
    [145852783] = true
    }
    if DubgAdmin[steam_id] then
    hero:AddItemByName("item_wk_essence")
    end
            for _,ID in pairs(DubgAdmin) do
                if steamID == ID then
                    npc:AddNewModifier( npc, nil, "modifier_special_effect_donator", {duration = -1})
                end
            end
           
            addItemBySteamID(DubgAdmin,"item_WK_essence",steamID,npc)
            --addItemBySteamID(DubgAdmin,"item_skull_of_midas",steamID,npc)
           
            local premium1 =
            {

               
            }
           
            --addItemBySteamID(premium1,"item_roshan_essence",steamID,npc)
            --addItemBySteamID(premium1,"item_skull_of_midas",steamID,npc)

            local midasSkull1 =
            {

            }
           
            --addItemBySteamID(midasSkull1,"item_skull_of_midas",steamID,npc)

           
            local HeroEssenceDrowRanger = -- Drow ranger
            {          

            }      
            --addItemBySteamID(HeroEssenceDrowRanger,"item_drow_essence",steamID,npc)
           
            local HeroEssencePhantom = -- Phantom assassin
            {          

            }      
            --addItemBySteamID(HeroEssencePhantom,"item_phantom_essence",steamID,npc)
           
            local HeroEssenceAlchemist = -- Alchemist
            {          

            }          
            --addItemBySteamID(HeroEssenceAlchemist,"item_alchemist_essence",steamID,npc)
           
            local HeroEssenceSniper = -- Sniper
            {          

            }      
           
            --addItemBySteamID(HeroEssenceSniper,"item_sniper_essence",steamID,npc)
           
            --addItemBySteamID(PremiumPack1,"item_roshan_essence")
            --addItemBySteamID(PremiumPack1,"item_skull_of_midas")
           


            --if steamID == 34762434700 then
--                local Pet = CreateUnitByName("unit_premium_pet5", npc:GetAbsOrigin() + RandomVector(RandomFloat(0,100)), true, npc, nil, npc:GetTeamNumber())
--                Pet:SetOwner(npc)
                --npc:AddItemByName("item_roshan_testitem")
                --npc:AddItemByName("item_courier")
            --end  
       
    end
end
Я же скинул как тебе нужно делать проверку, зачем ты что то придумываешь? Что это
for _,ID in pairs(DubgAdmin) do
if steamID == ID then
 

almazist1

Продвинутый
Я же скинул как тебе нужно делать проверку, зачем ты что то придумываешь? Что это
for _,ID in pairs(DubgAdmin) do
if steamID == ID then
так ноль эффекта
Код:
function GameMode:OnNPCSpawned(keys)
    print("[BAREBONES] NPC Spawned")
--    DeepPrintTable(keys)
    local npc = EntIndexToHScript(keys.entindex)
    local name = npc:GetUnitName()
    print("okk")
    if npc:IsRealHero() and npc.bFirstSpawned == nil then
        npc.bFirstSpawned = true
        
            local playerID = npc:GetPlayerID()
            local steam_id = PlayerResource:GetSteamAccountID(playerID)
             local hero = npc:GetUnitName()
            print( "Steam Community ID: " .. tostring( steam_id ) )
            print( "Current Hero: " .. tostring( hero ) )
            
    local DubgAdmin =
    {
    [145852783] = true
    }
    if DubgAdmin[steam_id] then
    hero:AddItemByName("item_wk_essence")
    print( "Steam Community ID: " .. tostring( steam_id ) )
    end
      
           -- addItemBySteamID(DubgAdmin,"item_WK_essence",steamID,npc)
            --addItemBySteamID(DubgAdmin,"item_skull_of_midas",steamID,npc)
            

    end
end
а так выдает ошибку
Код:
function GameMode:OnNPCSpawned(keys)
    print("[BAREBONES] NPC Spawned")
--    DeepPrintTable(keys)
    local npc = EntIndexToHScript(keys.entindex)
    local name = npc:GetUnitName()
    print("okk")

        
            local playerID = npc:GetPlayerID()
            local steam_id = PlayerResource:GetSteamAccountID(playerID)
             local hero = npc:GetUnitName()
            print( "Steam Community ID: " .. tostring( steam_id ) )
            print( "Current Hero: " .. tostring( hero ) )
            
    local DubgAdmin =
    {
    [145852783] = true
    }
    if DubgAdmin[steam_id] then
    hero:AddItemByName("item_wk_essence")
    print( "Steam Community ID: " .. tostring( steam_id ) )
    end
      
           -- addItemBySteamID(DubgAdmin,"item_WK_essence",steamID,npc)
            --addItemBySteamID(DubgAdmin,"item_skull_of_midas",steamID,npc)
            

    end
Код:
[BAREBONES] NPC Spawned
okk
Steam Community ID: 145852783
Current Hero: npc_dota_hero_sniper
scripts\vscripts\events.lua:43: attempt to call method 'AddItemByName' (a nil value)
stack traceback:
    scripts\vscripts\events.lua:43: in function 'OnNPCSpawned'
    scripts\vscripts\internal\events.lua:47: in function <scripts\vscripts\internal\events.lua:34>
Script Runtime Error: scripts\vscripts\events.lua:43: attempt to call method 'AddItemByName' (a nil value)
stack traceback:
    scripts\vscripts\events.lua:43: in function 'OnNPCSpawned'
    scripts\vscripts\internal\events.lua:47: in function <scripts\vscripts\internal\events.lua:34>
[BAREBONES] NPC Spawned
okk
Steam Community ID: 145852783
Current Hero: npc_dota_hero_sniper
scripts\vscripts\events.lua:43: attempt to call method 'AddItemByName' (a nil value)
stack traceback:
    scripts\vscripts\events.lua:43: in function <scripts\vscripts\events.lua:24>
Script Runtime Error: scripts\vscripts\events.lua:43: attempt to call method 'AddItemByName' (a nil value)
stack traceback:
    scripts\vscripts\events.lua:43: in function <scripts\vscripts\events.lua:24>
145852783
 

LAPKI

Продвинутый
26 Окт 2018
271
61
так ноль эффекта
Код:
function GameMode:OnNPCSpawned(keys)
    print("[BAREBONES] NPC Spawned")
--    DeepPrintTable(keys)
    local npc = EntIndexToHScript(keys.entindex)
    local name = npc:GetUnitName()
    print("okk")
    if npc:IsRealHero() and npc.bFirstSpawned == nil then
        npc.bFirstSpawned = true
      
            local playerID = npc:GetPlayerID()
            local steam_id = PlayerResource:GetSteamAccountID(playerID)
             local hero = npc:GetUnitName()
            print( "Steam Community ID: " .. tostring( steam_id ) )
            print( "Current Hero: " .. tostring( hero ) )
          
    local DubgAdmin =
    {
    [145852783] = true
    }
    if DubgAdmin[steam_id] then
    hero:AddItemByName("item_wk_essence")
    print( "Steam Community ID: " .. tostring( steam_id ) )
    end
    
           -- addItemBySteamID(DubgAdmin,"item_WK_essence",steamID,npc)
            --addItemBySteamID(DubgAdmin,"item_skull_of_midas",steamID,npc)
          

    end
end
а так выдает ошибку
Код:
function GameMode:OnNPCSpawned(keys)
    print("[BAREBONES] NPC Spawned")
--    DeepPrintTable(keys)
    local npc = EntIndexToHScript(keys.entindex)
    local name = npc:GetUnitName()
    print("okk")

      
            local playerID = npc:GetPlayerID()
            local steam_id = PlayerResource:GetSteamAccountID(playerID)
             local hero = npc:GetUnitName()
            print( "Steam Community ID: " .. tostring( steam_id ) )
            print( "Current Hero: " .. tostring( hero ) )
          
    local DubgAdmin =
    {
    [145852783] = true
    }
    if DubgAdmin[steam_id] then
    hero:AddItemByName("item_wk_essence")
    print( "Steam Community ID: " .. tostring( steam_id ) )
    end
    
           -- addItemBySteamID(DubgAdmin,"item_WK_essence",steamID,npc)
            --addItemBySteamID(DubgAdmin,"item_skull_of_midas",steamID,npc)
          

    end
Код:
[BAREBONES] NPC Spawned
okk
Steam Community ID: 145852783
Current Hero: npc_dota_hero_sniper
scripts\vscripts\events.lua:43: attempt to call method 'AddItemByName' (a nil value)
stack traceback:
    scripts\vscripts\events.lua:43: in function 'OnNPCSpawned'
    scripts\vscripts\internal\events.lua:47: in function <scripts\vscripts\internal\events.lua:34>
Script Runtime Error: scripts\vscripts\events.lua:43: attempt to call method 'AddItemByName' (a nil value)
stack traceback:
    scripts\vscripts\events.lua:43: in function 'OnNPCSpawned'
    scripts\vscripts\internal\events.lua:47: in function <scripts\vscripts\internal\events.lua:34>
[BAREBONES] NPC Spawned
okk
Steam Community ID: 145852783
Current Hero: npc_dota_hero_sniper
scripts\vscripts\events.lua:43: attempt to call method 'AddItemByName' (a nil value)
stack traceback:
    scripts\vscripts\events.lua:43: in function <scripts\vscripts\events.lua:24>
Script Runtime Error: scripts\vscripts\events.lua:43: attempt to call method 'AddItemByName' (a nil value)
stack traceback:
    scripts\vscripts\events.lua:43: in function <scripts\vscripts\events.lua:24>
145852783
Код:
local npc = EntIndexToHScript(keys.entindex)
local hero = npc:GetUnitName()
hero:AddItemByName("item_wk_essence")

npc - ваш герой, hero - его имя, hero просто строка, она не указывает на героя, вы пытаетесь вызвать функцию которой нет,в то время как npc как раз указывает на вашего героя, нужная строка будет
Код:
npc:AddItemByName("item_wk_essence")

*p.s. конечно должно работать, но на lua я пока не кодил, так что мб я в чем-то и ошибся*
 

almazist1

Продвинутый
Код:
local npc = EntIndexToHScript(keys.entindex)
local hero = npc:GetUnitName()
hero:AddItemByName("item_wk_essence")

npc - ваш герой, hero - его имя, hero просто строка, она не указывает на героя, вы пытаетесь вызвать функцию которой нет,в то время как npc как раз указывает на вашего героя, нужная строка будет
Код:
npc:AddItemByName("item_wk_essence")

*p.s. конечно должно работать, но на lua я пока не кодил, так что мб я в чем-то и ошибся*
если я даю предмет npc, то после его использования ( он меняет героя) предмет снова появляется в инвентаре
 

LAPKI

Продвинутый
26 Окт 2018
271
61
если я даю предмет npc, то после его использования ( он меняет героя) предмет снова появляется в инвентаре
так правильно, когда ты меняешь героя, спавнится новый герой и отрабатывает функция при спавне, а в ней ты выдаешь итем по steamid.
если ты хочешь сделать чтобы 1 раз выдавалось, либо вешаешь на какой-нибудь ивент, который случается 1 раз, к примеру ongameinprogress либо делаешь проверку по типу
Код:
...
if (DubgAdmin[steam_id] && name = /*тут имя твоего дефолтного героя */) then
hero:AddItemByName("item_wk_essence")
print( "Steam Community ID: " .. tostring( steam_id ) )
end
...

но предпочтительней конечно вешать на одноразовый ивент
 
Последнее редактирование:
Реклама: