Putmalk
Senior Member
Posts: 290
Threads: 13
Joined: Apr 2012
Reputation:
15
|
RE: How can I check what my item name is in inventory?
Okay, I cheated. 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.
//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.
(This post was last modified: 05-25-2012, 07:05 PM by Putmalk.)
|
|