Frictional Games Forum (read-only)
How can I check what my item name is in inventory? - Printable Version

+- Frictional Games Forum (read-only) (https://www.frictionalgames.com/forum)
+-- Forum: Amnesia: The Dark Descent (https://www.frictionalgames.com/forum/forum-6.html)
+--- Forum: Custom Stories, TCs & Mods - Development (https://www.frictionalgames.com/forum/forum-38.html)
+---- Forum: Development Support (https://www.frictionalgames.com/forum/forum-39.html)
+---- Thread: How can I check what my item name is in inventory? (/thread-15624.html)



How can I check what my item name is in inventory? - Putmalk - 05-25-2012

Is there a way to check what the item name is in my inventory? Because I need to know this as my "complicated" script is producing an item that's not working on objects like they're supposed to be when certain conditions are met.

Thank you. Smile


RE: How can I check what my item name is in inventory? - Your Computer - 05-25-2012

How is the item given to the player?


RE: How can I check what my item name is in inventory? - Putmalk - 05-25-2012

Through script.

Code:
    RemoveItem(asItem);
    GiveItem("chemical_container_1", "chemical_container.ent", "ChemicalContainer", "chemical_container.tga", 0);

I only ask because that "chemical_container_1" that's generated under specific circumstances isn't working on the callbacks that have "chemical_container_1".

Let me explain how the bug occurs:

You place 4 items on a machine, place an empty container on the machine. (this container can be picked up and retrieved, this works fine).

Activate the machine, the container becomes Ineffective acid.

You can dump this acid in a drain to become an empty container again (that little snippet of code).

When you place the container on the machine again and pick it up, the item you receive isn't working on the intended objects.

Should I post the entire code of how it works? It is lengthy.

Here's the monstrosity of code.

I found where the issue occurs: When you drain the chemicals and get a new chemical_container_1, when you place the container on the table it doesn't give it the correct name. I'm trying to find out why...

Code:
//drainage

void InteractDrain(string &in asEntity)
{
    SetMessage("Interact", "11_DrainChemicals", 0);
}

void SpillChemicals(string &in asItem, string &in asEntity)
{
    if(asItem == "chemical_container_good")
    {
        SetMessage("Interact", "11_NoDrainGood", 0);
        return;
    }

    SetMessage("Interact", "11_ChemicalsDrained", 0);

    RemoveItem(asItem);
    GiveItem("chemical_container_1", "chemical_container.ent", "ChemicalContainer", "chemical_container.tga", 0);
}

//call when player interacts with empty container
void PickContainer(string &in asEntity, string &in type)
{
    if(asEntity == "chemical_container_2")
    {
        SetEntityActive(asEntity, false);
        SetEntityActive("AreaPlaceContainer", true);
        
        //replace with chemical_container_1 so we can place again!
        RemoveItem(asEntity);
        GiveItem("chemical_container_1", "chemical_container.ent", "ChemicalContainer", "chemical_container.tga", 0);
        
        SetLocalVarInt("EmptyPotOnMachine", 0);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        
        PlayGuiSound("pick_generic.snt", 1);
        SetMessage("Interact", "11_PickContainer", 0);
    }
    if(asEntity == "chemical_container_half_a_2")
    {
        SetEntityActive(asEntity, false);
        SetEntityActive("AreaPlaceContainer", true);
        
        //replace with chemical_container_1 so we can place again!
        RemoveItem(asEntity);
        GiveItem("chemical_container_half_a", "Inventory", "ChemA", "chemical_container_half.tga", 0);
        
        SetLocalVarInt("EmptyPotOnMachine", 0);
        SetLocalVarInt("A", 0);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        
        PlayGuiSound("pick_generic.snt", 1);
        SetMessage("Interact", "11_PickA", 0);
    }
    if(asEntity == "chemical_container_half_b_2")
    {
        SetEntityActive(asEntity, false);
        SetEntityActive("AreaPlaceContainer", true);
        
        //replace with chemical_container_1 so we can place again!
        RemoveItem(asEntity);
        GiveItem("chemical_container_half_b", "Inventory", "ChemB", "chemical_container_half.tga", 0);
        
        SetLocalVarInt("EmptyPotOnMachine", 0);
        SetLocalVarInt("B", 0);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        
        PlayGuiSound("pick_generic.snt", 1);
        SetMessage("Interact", "11_PickB", 0);
    }
    if(asEntity == "chemical_container_half_c_2")
    {
        SetEntityActive(asEntity, false);
        SetEntityActive("AreaPlaceContainer", true);
        
        //replace with chemical_container_1 so we can place again!
        RemoveItem(asEntity);
        GiveItem("chemical_container_half_c", "Inventory", "ChemC", "chemical_container_half.tga", 0);
        
        SetLocalVarInt("EmptyPotOnMachine", 0);
        SetLocalVarInt("C", 0);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        
        PlayGuiSound("pick_generic.snt", 1);
        SetMessage("Interact", "11_PickC", 0);
    }
    if(asEntity == "chemical_container_ab_2")
    {
        SetEntityActive(asEntity, false);
        SetEntityActive("AreaPlaceContainer", true);
        
        //replace with chemical_container_1 so we can place again!
        RemoveItem(asEntity);
        GiveItem("chemical_container_ab", "Inventory", "ChemAB", "chemical_container_full.tga", 0);
        
        SetLocalVarInt("EmptyPotOnMachine", 0);
        SetLocalVarInt("AB", 0);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        
        PlayGuiSound("pick_generic.snt", 1);
        SetMessage("Interact", "11_PickAB", 0);
    }
    if(asEntity == "chemical_container_ac_2")
    {
        SetEntityActive(asEntity, false);
        SetEntityActive("AreaPlaceContainer", true);
        
        //replace with chemical_container_1 so we can place again!
        RemoveItem(asEntity);
        GiveItem("chemical_container_ac", "Inventory", "ChemAC", "chemical_container_full.tga", 0);
        
        SetLocalVarInt("EmptyPotOnMachine", 0);
        SetLocalVarInt("AC", 0);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        
        PlayGuiSound("pick_generic.snt", 1);
        SetMessage("Interact", "11_PickAC", 0);
    }
    if(asEntity == "chemical_container_bc_2")
    {
        SetEntityActive(asEntity, false);
        SetEntityActive("AreaPlaceContainer", true);
        
        //replace with chemical_container_1 so we can place again!
        RemoveItem(asEntity);
        GiveItem("chemical_container_bc", "Inventory", "ChemBC", "chemical_container_full.tga", 0);
        
        SetLocalVarInt("EmptyPotOnMachine", 0);
        SetLocalVarInt("BC", 1);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        
        PlayGuiSound("pick_generic.snt", 1);
        SetMessage("Interact", "11_PickBC", 0);
    }
    if(asEntity == "chemical_container_good")
    {
        ResetMachine();
    
        SetEntityActive(asEntity, false);
        SetEntityActive("AreaPlaceContainer", true);
        
        RemoveItem(asEntity);
        GiveItem("chemical_container_good", "Inventory", "Chems_Good", "chemical_container_full.tga", 0);
        
        PlayGuiSound("pick_generic.snt", 1);
        SetMessage("Interact", "11_PickGood", 0);
    }
    if(asEntity == "chemical_container_bad")
    {
        ResetMachine();
    
        SetEntityActive(asEntity, false);
        SetEntityActive("AreaPlaceContainer", true);
        
        RemoveItem(asEntity);
        GiveItem("chemical_container_bad", "Inventory", "Chems_Bad", "chemical_container_half.tga", 0);
        
        PlayGuiSound("pick_generic.snt", 1);
        SetMessage("Interact", "11_PickBad", 0);
    }
}

void PlaceJarOnArea(string &in asItem, string &in asEntity)
{
    //NOTE: Empty Pot On Machine variable is strictly to determine if using the chemicals does anything!
    //Place Jar on the area for pick up at any time
    //Make sure we get the right items back
    
    //do nothing
    if(asItem == "glass_container_1")
    {
        SetMessage("Interact", "11_BadContainer", 0);
        return;
    }
    
    PlaySoundAtEntity("placejar", "puzzle_place_jar.snt", asEntity, 0, true);
    
    //Empty
    if(asItem == "chemical_container_1")
    {
        RemoveItem(asItem);
        
        SetLocalVarInt("EmptyPotOnMachine", 1);
        
        SetEntityActive("AreaPlaceContainer", false);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        //when we activate machine, make sure to change this to the static pot!
        CreateEntityAtArea("chemical_container_2", "chemical_container.ent", "AreaChemicalJar", true);
        SetEntityCallbackFunc("chemical_container_2", "PickContainer");
    }
    //Chemical Pot A
    if(asItem == "chemical_container_half_a")
    {
        RemoveItem(asItem);
        SetLocalVarInt("EmptyPotOnMachine", 1);
        SetLocalVarInt("A", 1);
        
        SetEntityActive("AreaPlaceContainer", false);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        //when we activate machine, make sure to change this to the static pot!
        CreateEntityAtArea("chemical_container_half_a_2", "chemical_container_half.ent", "AreaChemicalJar", true);
        SetEntityCallbackFunc("chemical_container_half_a_2", "PickContainer");
    }
    //Chemical Pot B
    if(asItem == "chemical_container_half_b")
    {
        RemoveItem(asItem);
        SetLocalVarInt("EmptyPotOnMachine", 1);
        SetLocalVarInt("B", 1);
        
        SetEntityActive("AreaPlaceContainer", false);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        //when we activate machine, make sure to change this to the static pot!
        CreateEntityAtArea("chemical_container_half_b_2", "chemical_container_half.ent", "AreaChemicalJar", true);
        SetEntityCallbackFunc("chemical_container_half_b_2", "PickContainer");
    }
    //Chemical Pot C
    if(asItem == "chemical_container_half_c")
    {
        RemoveItem(asItem);
        SetLocalVarInt("EmptyPotOnMachine", 1);
        SetLocalVarInt("C", 1);
        
        SetEntityActive("AreaPlaceContainer", false);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        //when we activate machine, make sure to change this to the static pot!
        CreateEntityAtArea("chemical_container_half_c_2", "chemical_container_half.ent", "AreaChemicalJar", true);
        SetEntityCallbackFunc("chemical_container_half_c_2", "PickContainer");
    }
    //Chemical AB
    if(asItem == "chemical_container_ab")
    {
        RemoveItem(asItem);
        SetLocalVarInt("EmptyPotOnMachine", 1);
        SetLocalVarInt("AB", 1);
        
        SetEntityActive("AreaPlaceContainer", false);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        //when we activate machine, make sure to change this to the static pot!
        CreateEntityAtArea("chemical_container_ab_2", "chemical_container_full.ent", "AreaChemicalJar", true);
        SetEntityCallbackFunc("chemical_container_ab_2", "PickContainer");
    }
    //Chemical AC
    if(asItem == "chemical_container_ac")
    {
        RemoveItem(asItem);
        SetLocalVarInt("EmptyPotOnMachine", 1);
        SetLocalVarInt("AC", 1);
        
        SetEntityActive("AreaPlaceContainer", false);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        //when we activate machine, make sure to change this to the static pot!
        CreateEntityAtArea("chemical_container_ac_2", "chemical_container_full.ent", "AreaChemicalJar", true);
        SetEntityCallbackFunc("chemical_container_ac_2", "PickContainer");
    }
    //Chemical BC
    if(asItem == "chemical_container_bc")
    {
        RemoveItem(asItem);
        SetLocalVarInt("EmptyPotOnMachine", 1);
        
        SetEntityActive("AreaPlaceContainer", false);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        //when we activate machine, make sure to change this to the static pot!
        CreateEntityAtArea("chemical_container_bc_2", "chemical_container_full.ent", "AreaChemicalJar", true);
        SetEntityCallbackFunc("chemical_container_bc_2", "PickContainer");
    }
}

void SpinWheel(string &in asEntity, int alState)
{
    //turned the machine on
    if(alState == 1)
    {
        //which machine is it?
        if(asEntity == "acid_machine_valve_x_1")
        {
            if(GetLocalVarInt("Eon") == 1)
            {
                SetWheelStuckState(asEntity, 1, true);
                AddLocalVarInt("ElementsOn", 1);
                
                CreateParticleSystemAtEntity("bubbles_1", "ps_acid_machine_bubble_large.ps", "AreaBubbles_1", true);
                PlaySoundAtEntity("boil_1", "puzzle_boil.snt", "AreaBubbles_1", 0, true);
                
                AddDebugMessage("Elements placed: "+GetLocalVarInt("ElementsOn"), false);
            }
            else
            {
                SetMessage("Interact", "11_NoChem", 0);
                return;
            }
        }
        if(asEntity == "acid_machine_valve_x_2")
        {
            if(GetLocalVarInt("Hon") == 1)
            {
                SetWheelStuckState(asEntity, 1, true);
                AddLocalVarInt("ElementsOn", 1);
                
                CreateParticleSystemAtEntity("bubbles_2", "ps_acid_machine_bubble_large.ps", "AreaBubbles_2", true);
                PlaySoundAtEntity("boil_1", "puzzle_boil.snt", "AreaBubbles_2", 0, true);
                
                AddDebugMessage("Elements placed: "+GetLocalVarInt("ElementsOn"), false);
            }
            else
            {
                SetMessage("Interact", "11_NoChem", 0);
                return;
            }
        }
        if(asEntity == "acid_machine_valve_x_3")
        {
            if(GetLocalVarInt("Von") == 1)
            {
                SetWheelStuckState(asEntity, 1, true);
                AddLocalVarInt("ElementsOn", 1);
                
                CreateParticleSystemAtEntity("bubbles_3", "ps_acid_machine_bubble_large.ps", "AreaBubbles_3", true);
                PlaySoundAtEntity("boil_1", "puzzle_boil.snt", "AreaBubbles_3", 0, true);
                
                AddDebugMessage("Elements placed: "+GetLocalVarInt("ElementsOn"), false);
            }
            else
            {
                SetMessage("Interact", "11_NoChem", 0);
                return;
            }
        }
        if(asEntity == "acid_machine_valve_x_4")
        {
            if(GetLocalVarInt("Yon") == 1)
            {
                SetWheelStuckState(asEntity, 1, true);
                AddLocalVarInt("ElementsOn", 1);
                
                CreateParticleSystemAtEntity("bubbles_4", "ps_acid_machine_bubble_large.ps", "AreaBubbles_4", true);
                PlaySoundAtEntity("boil_1", "puzzle_boil.snt", "AreaBubbles_4", 0, true);
                
                AddDebugMessage("Elements placed: "+GetLocalVarInt("ElementsOn"), false);
            }
            else
            {
                SetMessage("Interact", "11_NoChem", 0);
                return;
            }
        }
    }
}

void StartAcidMachine(string &in asEntity, int alState)
{
    //wheel is on
    if(alState == 1)
    {
        //check acids placed yes?
        if(GetLocalVarInt("ElementsOn") == 4)
        {
            //jar is placed
            if(GetLocalVarInt("EmptyPotOnMachine") == 1)
            {
                CreateParticleSystemAtEntity("finalflow", "ps_acid_machine_bubble_end.ps", "AreaPSDumpChems", false);
                AddTimer("changeitem", 1, "TimerChangeItem");
            }
            else
            {
                SetMessage("Interact", "11_NoJar", 0);
            }
        }
        else
        {
            SetMessage("Interact", "11_NotEnoughChems", 0);
            return;
        }
    }
}

void TimerChangeItem(string &in asTimer)
{
    //single element
    if((GetLocalVarInt("AC") == 1))
    {
        SetEntityActive("chemical_container_ac_2", false);
        CreateEntityAtArea("chemical_container_good", "chemical_container_full.ent", "AreaChemicalJar", true);
        SetEntityCallbackFunc("chemical_container_good", "PickContainer");
    }
    else
    {
        SetEntityActive("chemical_container_2", false);
        SetEntityActive("chemical_container_half_a_2", false);
        SetEntityActive("chemical_container_half_b_2", false);
        SetEntityActive("chemical_container_half_c_2", false);
        SetEntityActive("chemical_container_ab_2", false);
        SetEntityActive("chemical_container_bc_2", false);
        CreateEntityAtArea("chemical_container_bad", "chemical_container_half.ent", "AreaChemicalJar", true);
        SetEntityCallbackFunc("chemical_container_bad", "PickContainer");
    }
}


void PlaceElementOnMachine(string &in asItem, string &in asEntity)
{
    PlaySoundAtEntity("add", "puzzle_add_chemical.snt", asEntity, 0, true);
    
    if(asItem == "Ethyrium")
    {
        RemoveItem(asItem);
        SetEntityActive("acid_machine_bottle_empty01_3", false);
        SetEntityActive("acid_machine_bottle01_1", true);
        
        SetLocalVarInt("Eon", 1);
    }
    if(asItem == "Haprium")
    {
        RemoveItem(asItem);
        SetEntityActive("acid_machine_bottle_empty01_2", false);
        SetEntityActive("acid_machine_bottle02_1", true);
        SetLocalVarInt("Hon", 1);
        //AddLocalVarInt("ElementsOn", 1);
                
    }
    if(asItem == "Valium")
    {
        RemoveItem(asItem);
        SetEntityActive("acid_machine_bottle_empty01_1", false);
        SetEntityActive("acid_machine_bottle03_1", true);
        SetLocalVarInt("Von", 1);
        //AddLocalVarInt("ElementsOn", 1);
    }
    if(asItem == "Yansine")
    {
        RemoveItem(asItem);
        SetEntityActive("acid_machine_bottle_empty04_1", false);
        SetEntityActive("acid_machine_bottle04_1", true);
        SetLocalVarInt("Yon", 1);
        //AddLocalVarInt("ElementsOn", 1);
    }
}

void ResetMachine()
{

    SetLocalVarInt("EmptyPotOnMachine", 0);
    SetLocalVarInt("A", 0);
    SetLocalVarInt("B", 0);
    SetLocalVarInt("C", 0);
    SetLocalVarInt("AB", 0);
    SetLocalVarInt("AC", 0);
    SetLocalVarInt("BC", 0);    
}



RE: How can I check what my item name is in inventory? - Your Computer - 05-25-2012

(05-25-2012, 06:37 PM)Putmalk Wrote: Should I post the entire code of how it works?

Yeah.

I am also interested in OnEnter and OnStart.


RE: How can I check what my item name is in inventory? - Putmalk - 05-25-2012

Okay, I cheated. Smile I kind of guessed that when it was giving me the item, it was adding +1 to the number. So it wasn't chemical_container_1 anymore, it was chemical_container_2, which doesn't work with the code.

To, ahem...*fix* this, (and by fix I did something terrible and brute forced it....), I adding a for-loop for 500 times (no way the player should have to drain their pot 500 times to solve the puzzle. And it works, I guess. I'm going to keep trying.

I'm going to post the entire code with the for loops added.

Code:
//drainage

void InteractDrain(string &in asEntity)
{
    SetMessage("Interact", "11_DrainChemicals", 0);
}

void SpillChemicals(string &in asItem, string &in asEntity)
{
    if(asItem == "chemical_container_good")
    {
        SetMessage("Interact", "11_NoDrainGood", 0);
        return;
    }

    SetMessage("Interact", "11_ChemicalsDrained", 0);

    RemoveItem(asItem);
    GiveItem("chemical_container_1", "chemical_container.ent", "ChemicalContainer", "chemical_container.tga", 0);
}

//call when player interacts with empty container
void PickContainer(string &in asEntity, string &in type)
{
    for(int i=0;i<=500;i++)
    {    
        if(asEntity == "chemical_container_"+i)
        {
            SetEntityActive(asEntity, false);
            SetEntityActive("AreaPlaceContainer", true);
            
            //replace with chemical_container_1 so we can place again!
            RemoveItem(asEntity);
            GiveItem("chemical_container_1", "chemical_container.ent", "ChemicalContainer", "chemical_container.tga", 0);
            
            SetLocalVarInt("EmptyPotOnMachine", 0);
            
            AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
            
            PlayGuiSound("pick_generic.snt", 1);
            SetMessage("Interact", "11_PickContainer", 0);
        }
    }
    if(asEntity == "chemical_container_half_a_2")
    {
        SetEntityActive(asEntity, false);
        SetEntityActive("AreaPlaceContainer", true);
        
        //replace with chemical_container_1 so we can place again!
        RemoveItem(asEntity);
        GiveItem("chemical_container_half_a", "Inventory", "ChemA", "chemical_container_half.tga", 0);
        
        SetLocalVarInt("EmptyPotOnMachine", 0);
        SetLocalVarInt("A", 0);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        
        PlayGuiSound("pick_generic.snt", 1);
        SetMessage("Interact", "11_PickA", 0);
    }
    if(asEntity == "chemical_container_half_b_2")
    {
        SetEntityActive(asEntity, false);
        SetEntityActive("AreaPlaceContainer", true);
        
        //replace with chemical_container_1 so we can place again!
        RemoveItem(asEntity);
        GiveItem("chemical_container_half_b", "Inventory", "ChemB", "chemical_container_half.tga", 0);
        
        SetLocalVarInt("EmptyPotOnMachine", 0);
        SetLocalVarInt("B", 0);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        
        PlayGuiSound("pick_generic.snt", 1);
        SetMessage("Interact", "11_PickB", 0);
    }
    if(asEntity == "chemical_container_half_c_2")
    {
        SetEntityActive(asEntity, false);
        SetEntityActive("AreaPlaceContainer", true);
        
        //replace with chemical_container_1 so we can place again!
        RemoveItem(asEntity);
        GiveItem("chemical_container_half_c", "Inventory", "ChemC", "chemical_container_half.tga", 0);
        
        SetLocalVarInt("EmptyPotOnMachine", 0);
        SetLocalVarInt("C", 0);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        
        PlayGuiSound("pick_generic.snt", 1);
        SetMessage("Interact", "11_PickC", 0);
    }
    if(asEntity == "chemical_container_ab_2")
    {
        SetEntityActive(asEntity, false);
        SetEntityActive("AreaPlaceContainer", true);
        
        //replace with chemical_container_1 so we can place again!
        RemoveItem(asEntity);
        GiveItem("chemical_container_ab", "Inventory", "ChemAB", "chemical_container_full.tga", 0);
        
        SetLocalVarInt("EmptyPotOnMachine", 0);
        SetLocalVarInt("AB", 0);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        
        PlayGuiSound("pick_generic.snt", 1);
        SetMessage("Interact", "11_PickAB", 0);
    }
    if(asEntity == "chemical_container_ac_2")
    {
        SetEntityActive(asEntity, false);
        SetEntityActive("AreaPlaceContainer", true);
        
        //replace with chemical_container_1 so we can place again!
        RemoveItem(asEntity);
        GiveItem("chemical_container_ac", "Inventory", "ChemAC", "chemical_container_full.tga", 0);
        
        SetLocalVarInt("EmptyPotOnMachine", 0);
        SetLocalVarInt("AC", 0);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        
        PlayGuiSound("pick_generic.snt", 1);
        SetMessage("Interact", "11_PickAC", 0);
    }
    if(asEntity == "chemical_container_bc_2")
    {
        SetEntityActive(asEntity, false);
        SetEntityActive("AreaPlaceContainer", true);
        
        //replace with chemical_container_1 so we can place again!
        RemoveItem(asEntity);
        GiveItem("chemical_container_bc", "Inventory", "ChemBC", "chemical_container_full.tga", 0);
        
        SetLocalVarInt("EmptyPotOnMachine", 0);
        SetLocalVarInt("BC", 1);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        
        PlayGuiSound("pick_generic.snt", 1);
        SetMessage("Interact", "11_PickBC", 0);
    }
    if(asEntity == "chemical_container_good")
    {
        ResetMachine();
    
        SetEntityActive(asEntity, false);
        SetEntityActive("AreaPlaceContainer", true);
        
        RemoveItem(asEntity);
        GiveItem("chemical_container_good", "Inventory", "Chems_Good", "chemical_container_full.tga", 0);
        
        PlayGuiSound("pick_generic.snt", 1);
        SetMessage("Interact", "11_PickGood", 0);
    }
    if(asEntity == "chemical_container_bad")
    {
        ResetMachine();
    
        SetEntityActive(asEntity, false);
        SetEntityActive("AreaPlaceContainer", true);
        
        RemoveItem(asEntity);
        GiveItem("chemical_container_bad", "Inventory", "Chems_Bad", "chemical_container_half.tga", 0);
        
        PlayGuiSound("pick_generic.snt", 1);
        SetMessage("Interact", "11_PickBad", 0);
    }
}

void PlaceJarOnArea(string &in asItem, string &in asEntity)
{
    //NOTE: Empty Pot On Machine variable is strictly to determine if using the chemicals does anything!
    //Place Jar on the area for pick up at any time
    //Make sure we get the right items back
    
    //do nothing
    if(asItem == "glass_container_1")
    {
        SetMessage("Interact", "11_BadContainer", 0);
        return;
    }
    
    PlaySoundAtEntity("placejar", "puzzle_place_jar.snt", asEntity, 0, true);
    
    //Empty
    for(int i=0;i<=500;i++)
    {    
        if(asItem == "chemical_container_"+i)
        {
            RemoveItem(asItem);
            
            SetLocalVarInt("EmptyPotOnMachine", 1);
            
            SetEntityActive("AreaPlaceContainer", false);
            
            AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
            //when we activate machine, make sure to change this to the static pot!
            CreateEntityAtArea("chemical_container_2", "chemical_container.ent", "AreaChemicalJar", true);
            SetEntityCallbackFunc("chemical_container_2", "PickContainer");
        }
    }
    //Chemical Pot A
    if(asItem == "chemical_container_half_a")
    {
        RemoveItem(asItem);
        SetLocalVarInt("EmptyPotOnMachine", 1);
        SetLocalVarInt("A", 1);
        
        SetEntityActive("AreaPlaceContainer", false);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        //when we activate machine, make sure to change this to the static pot!
        CreateEntityAtArea("chemical_container_half_a_2", "chemical_container_half.ent", "AreaChemicalJar", true);
        SetEntityCallbackFunc("chemical_container_half_a_2", "PickContainer");
    }
    //Chemical Pot B
    if(asItem == "chemical_container_half_b")
    {
        RemoveItem(asItem);
        SetLocalVarInt("EmptyPotOnMachine", 1);
        SetLocalVarInt("B", 1);
        
        SetEntityActive("AreaPlaceContainer", false);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        //when we activate machine, make sure to change this to the static pot!
        CreateEntityAtArea("chemical_container_half_b_2", "chemical_container_half.ent", "AreaChemicalJar", true);
        SetEntityCallbackFunc("chemical_container_half_b_2", "PickContainer");
    }
    //Chemical Pot C
    if(asItem == "chemical_container_half_c")
    {
        RemoveItem(asItem);
        SetLocalVarInt("EmptyPotOnMachine", 1);
        SetLocalVarInt("C", 1);
        
        SetEntityActive("AreaPlaceContainer", false);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        //when we activate machine, make sure to change this to the static pot!
        CreateEntityAtArea("chemical_container_half_c_2", "chemical_container_half.ent", "AreaChemicalJar", true);
        SetEntityCallbackFunc("chemical_container_half_c_2", "PickContainer");
    }
    //Chemical AB
    if(asItem == "chemical_container_ab")
    {
        RemoveItem(asItem);
        SetLocalVarInt("EmptyPotOnMachine", 1);
        SetLocalVarInt("AB", 1);
        
        SetEntityActive("AreaPlaceContainer", false);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        //when we activate machine, make sure to change this to the static pot!
        CreateEntityAtArea("chemical_container_ab_2", "chemical_container_full.ent", "AreaChemicalJar", true);
        SetEntityCallbackFunc("chemical_container_ab_2", "PickContainer");
    }
    //Chemical AC
    if(asItem == "chemical_container_ac")
    {
        RemoveItem(asItem);
        SetLocalVarInt("EmptyPotOnMachine", 1);
        SetLocalVarInt("AC", 1);
        
        SetEntityActive("AreaPlaceContainer", false);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        //when we activate machine, make sure to change this to the static pot!
        CreateEntityAtArea("chemical_container_ac_2", "chemical_container_full.ent", "AreaChemicalJar", true);
        SetEntityCallbackFunc("chemical_container_ac_2", "PickContainer");
    }
    //Chemical BC
    if(asItem == "chemical_container_bc")
    {
        RemoveItem(asItem);
        SetLocalVarInt("EmptyPotOnMachine", 1);
        
        SetEntityActive("AreaPlaceContainer", false);
        
        AddDebugMessage("Pot on Machine: "+GetLocalVarInt("EmptyPotOnMachine"), false);
        //when we activate machine, make sure to change this to the static pot!
        CreateEntityAtArea("chemical_container_bc_2", "chemical_container_full.ent", "AreaChemicalJar", true);
        SetEntityCallbackFunc("chemical_container_bc_2", "PickContainer");
    }
}

void SpinWheel(string &in asEntity, int alState)
{
    //turned the machine on
    if(alState == 1)
    {
        //which machine is it?
        if(asEntity == "acid_machine_valve_x_1")
        {
            if(GetLocalVarInt("Eon") == 1)
            {
                SetWheelStuckState(asEntity, 1, true);
                AddLocalVarInt("ElementsOn", 1);
                
                CreateParticleSystemAtEntity("bubbles_1", "ps_acid_machine_bubble_large.ps", "AreaBubbles_1", true);
                PlaySoundAtEntity("boil_1", "puzzle_boil.snt", "AreaBubbles_1", 0, true);
                
                AddDebugMessage("Elements placed: "+GetLocalVarInt("ElementsOn"), false);
            }
            else
            {
                SetMessage("Interact", "11_NoChem", 0);
                return;
            }
        }
        if(asEntity == "acid_machine_valve_x_2")
        {
            if(GetLocalVarInt("Hon") == 1)
            {
                SetWheelStuckState(asEntity, 1, true);
                AddLocalVarInt("ElementsOn", 1);
                
                CreateParticleSystemAtEntity("bubbles_2", "ps_acid_machine_bubble_large.ps", "AreaBubbles_2", true);
                PlaySoundAtEntity("boil_1", "puzzle_boil.snt", "AreaBubbles_2", 0, true);
                
                AddDebugMessage("Elements placed: "+GetLocalVarInt("ElementsOn"), false);
            }
            else
            {
                SetMessage("Interact", "11_NoChem", 0);
                return;
            }
        }
        if(asEntity == "acid_machine_valve_x_3")
        {
            if(GetLocalVarInt("Von") == 1)
            {
                SetWheelStuckState(asEntity, 1, true);
                AddLocalVarInt("ElementsOn", 1);
                
                CreateParticleSystemAtEntity("bubbles_3", "ps_acid_machine_bubble_large.ps", "AreaBubbles_3", true);
                PlaySoundAtEntity("boil_1", "puzzle_boil.snt", "AreaBubbles_3", 0, true);
                
                AddDebugMessage("Elements placed: "+GetLocalVarInt("ElementsOn"), false);
            }
            else
            {
                SetMessage("Interact", "11_NoChem", 0);
                return;
            }
        }
        if(asEntity == "acid_machine_valve_x_4")
        {
            if(GetLocalVarInt("Yon") == 1)
            {
                SetWheelStuckState(asEntity, 1, true);
                AddLocalVarInt("ElementsOn", 1);
                
                CreateParticleSystemAtEntity("bubbles_4", "ps_acid_machine_bubble_large.ps", "AreaBubbles_4", true);
                PlaySoundAtEntity("boil_1", "puzzle_boil.snt", "AreaBubbles_4", 0, true);
                
                AddDebugMessage("Elements placed: "+GetLocalVarInt("ElementsOn"), false);
            }
            else
            {
                SetMessage("Interact", "11_NoChem", 0);
                return;
            }
        }
    }
}

void StartAcidMachine(string &in asEntity, int alState)
{
    //wheel is on
    if(alState == 1)
    {
        //check acids placed yes?
        if(GetLocalVarInt("ElementsOn") == 4)
        {
            //jar is placed
            if(GetLocalVarInt("EmptyPotOnMachine") == 1)
            {
                CreateParticleSystemAtEntity("finalflow", "ps_acid_machine_bubble_end.ps", "AreaPSDumpChems", false);
                AddTimer("changeitem", 1, "TimerChangeItem");
            }
            else
            {
                SetMessage("Interact", "11_NoJar", 0);
            }
        }
        else
        {
            SetMessage("Interact", "11_NotEnoughChems", 0);
            return;
        }
    }
}

void TimerChangeItem(string &in asTimer)
{
    //single element
    if((GetLocalVarInt("AC") == 1))
    {
        SetEntityActive("chemical_container_ac_2", false);
        CreateEntityAtArea("chemical_container_good", "chemical_container_full.ent", "AreaChemicalJar", true);
        SetEntityCallbackFunc("chemical_container_good", "PickContainer");
    }
    else
    {
        SetEntityActive("chemical_container_2", false);
        SetEntityActive("chemical_container_half_a_2", false);
        SetEntityActive("chemical_container_half_b_2", false);
        SetEntityActive("chemical_container_half_c_2", false);
        SetEntityActive("chemical_container_ab_2", false);
        SetEntityActive("chemical_container_bc_2", false);
        CreateEntityAtArea("chemical_container_bad", "chemical_container_half.ent", "AreaChemicalJar", true);
        SetEntityCallbackFunc("chemical_container_bad", "PickContainer");
    }
}


void PlaceElementOnMachine(string &in asItem, string &in asEntity)
{
    PlaySoundAtEntity("add", "puzzle_add_chemical.snt", asEntity, 0, true);
    
    if(asItem == "Ethyrium")
    {
        RemoveItem(asItem);
        SetEntityActive("acid_machine_bottle_empty01_3", false);
        SetEntityActive("acid_machine_bottle01_1", true);
        
        SetLocalVarInt("Eon", 1);
    }
    if(asItem == "Haprium")
    {
        RemoveItem(asItem);
        SetEntityActive("acid_machine_bottle_empty01_2", false);
        SetEntityActive("acid_machine_bottle02_1", true);
        SetLocalVarInt("Hon", 1);
        //AddLocalVarInt("ElementsOn", 1);
                
    }
    if(asItem == "Valium")
    {
        RemoveItem(asItem);
        SetEntityActive("acid_machine_bottle_empty01_1", false);
        SetEntityActive("acid_machine_bottle03_1", true);
        SetLocalVarInt("Von", 1);
        //AddLocalVarInt("ElementsOn", 1);
    }
    if(asItem == "Yansine")
    {
        RemoveItem(asItem);
        SetEntityActive("acid_machine_bottle_empty04_1", false);
        SetEntityActive("acid_machine_bottle04_1", true);
        SetLocalVarInt("Yon", 1);
        //AddLocalVarInt("ElementsOn", 1);
    }
}

void ResetMachine()
{

    SetLocalVarInt("EmptyPotOnMachine", 0);
    SetLocalVarInt("A", 0);
    SetLocalVarInt("B", 0);
    SetLocalVarInt("C", 0);
    SetLocalVarInt("AB", 0);
    SetLocalVarInt("AC", 0);
    SetLocalVarInt("BC", 0);    
}

void OnStart()
{
    //Use Chemicals to Place On Machine
    AddUseItemCallback("glassonmachine", "glass_container_1", "AreaPlaceContainer", "PlaceJarOnArea", false);
    AddUseItemCallback("glassonmachine", "glass_container_1", "acid_machine_1", "PlaceJarOnArea", false);
    for(int i=0;i<500;i++)
        AddUseItemCallback("emptyonmachine", "chemical_container_"+i, "AreaPlaceContainer", "PlaceJarOnArea", false);
    AddUseItemCallback("halfonmachine", "chemical_container_half_a", "AreaPlaceContainer", "PlaceJarOnArea", false);
    AddUseItemCallback("halfonmachine", "chemical_container_half_b", "AreaPlaceContainer", "PlaceJarOnArea", false);
    AddUseItemCallback("halfonmachine", "chemical_container_half_c", "AreaPlaceContainer", "PlaceJarOnArea", false);
    AddUseItemCallback("fullonmachine", "chemical_container_ab", "AreaPlaceContainer", "PlaceJarOnArea", false);
    AddUseItemCallback("fullonmachine", "chemical_container_ac", "AreaPlaceContainer", "PlaceJarOnArea", false);
    AddUseItemCallback("fullonmachine", "chemical_container_bc", "AreaPlaceContainer", "PlaceJarOnArea", false);
    
    for(int i=0;i<500;i++)
        AddUseItemCallback("emptyonmachine", "chemical_container_"+i, "acid_machine_1", "PlaceJarOnArea", false);
    AddUseItemCallback("halfonmachine", "chemical_container_half_a", "acid_machine_1", "PlaceJarOnArea", false);
    AddUseItemCallback("halfonmachine", "chemical_container_half_b", "acid_machine_1", "PlaceJarOnArea", false);
    AddUseItemCallback("halfonmachine", "chemical_container_half_c", "acid_machine_1", "PlaceJarOnArea", false);
    AddUseItemCallback("fullonmachine", "chemical_container_ab", "acid_machine_1", "PlaceJarOnArea", false);
    AddUseItemCallback("fullonmachine", "chemical_container_ac", "acid_machine_1", "PlaceJarOnArea", false);
    AddUseItemCallback("fullonmachine", "chemical_container_bc", "acid_machine_1", "PlaceJarOnArea", false);
    
    AddUseItemCallback("eonmachine", "Ethyrium", "acid_machine_1", "PlaceElementOnMachine", false);
    AddUseItemCallback("yonmachine", "Yansine", "acid_machine_1", "PlaceElementOnMachine", false);
    AddUseItemCallback("honmachine", "Haprium", "acid_machine_1", "PlaceElementOnMachine", false);
    AddUseItemCallback("vonmachine", "Valium", "acid_machine_1", "PlaceElementOnMachine", false);
    AddUseItemCallback("eonarea", "Ethyrium", "AreaPlaceElement", "PlaceElementOnMachine", false);
    AddUseItemCallback("yonarea", "Yansine", "AreaPlaceElement", "PlaceElementOnMachine", false);
    AddUseItemCallback("honarea", "Haprium", "AreaPlaceElement", "PlaceElementOnMachine", false);
    AddUseItemCallback("vonarea", "Valium", "AreaPlaceElement", "PlaceElementOnMachine", false);
    
    //to drain the chemicals and start new
    AddUseItemCallback("spillab", "chemical_container_ab", "AreaDrainChemicals", "SpillChemicals", false);
    AddUseItemCallback("spillac", "chemical_container_ac", "AreaDrainChemicals", "SpillChemicals", false);
    AddUseItemCallback("spillbc", "chemical_container_bc", "AreaDrainChemicals", "SpillChemicals", false);
    AddUseItemCallback("spilla", "chemical_container_half_a", "AreaDrainChemicals", "SpillChemicals", false);
    AddUseItemCallback("spillb", "chemical_container_half_b", "AreaDrainChemicals", "SpillChemicals", false);
    AddUseItemCallback("spillc", "chemical_container_half_c", "AreaDrainChemicals", "SpillChemicals", false);
    AddUseItemCallback("spillc", "chemical_container_good", "AreaDrainChemicals", "SpillChemicals", false);
    AddUseItemCallback("spillc", "chemical_container_bad", "AreaDrainChemicals", "SpillChemicals", false);

    if(ScriptDebugOn() == true)
    {
        GiveItemFromFile("lantern", "lantern.ent");
        //Kitchen Chemical Mixes
        /*
        GiveItemFromFile("", "");
        */
        GiveItemFromFile("glass_container_1", "glass_container.ent");
        GiveItemFromFile("chemical_container_1", "chemical_container.ent");
        GiveItem("chemical_container_half_a", "Inventory", "ChemA", "chemical_container_half.tga", 0);
        GiveItem("chemical_container_half_b", "Inventory", "ChemB", "chemical_container_half.tga", 0);
        GiveItem("chemical_container_half_c", "Inventory", "ChemC", "chemical_container_half.tga", 0);
        GiveItem("chemical_container_ab", "Inventory", "ChemAB", "chemical_container_full.tga", 0);
        GiveItem("chemical_container_ac", "Inventory", "ChemAC", "chemical_container_full.tga", 0);
        GiveItem("chemical_container_bc", "Inventory", "ChemBC", "chemical_container_full.tga", 0);
        
        for(int i=0;i<10;i++)
            GiveItemFromFile("tinderbox_"+i, "tinderbox.ent");
    }
}

void OnEnter()
{
    PlayMusic("18_amb", true, 1, 5, 0, true);
}

void OnLeave()
{

}

So I'm going to see if this works. It seemed to have worked when I tried it out, I've expanded it to cover everywhere I needed.

My head hurts. That one bug is making me seriously consider redoing this whole puzzle into something so much simplier. Because what is happening now is unacceptable and my head really hurts. Sad


RE: How can I check what my item name is in inventory? - Your Computer - 05-25-2012

It is safe to use the same names for the items. The game should make use of the latest item given to the player. No need to add hundreds of AddUseItemCallbacks, just one for each item.


RE: How can I check what my item name is in inventory? - Putmalk - 05-25-2012

It's okay.

I decided to say screw it. Made a new script, much simplier, and should work. Thanks anyway. Smile Sometimes it's best to just start over.