You use a local variable.
Try this:
void OnStart()
{
AddUseItemCallback("GetOil", "pipe_piece_1", "PipeArea1", "PipeQuest1", false);
AddUseItemCallback("GetOil", "pipe_piece_2", "PipeArea2", "PipeQuest2", false);
AddUseItemCallback("GetOil", "pipe_piece_3", "PipeArea3", "PipeQuest3", false);
SetLocalVarInt("Var01", 1);
}
void PipeQuestDone()
{
[Do whatever you want to happen here]
}
void PipeQuest1(string &in asItem, string &in asEntity)
{
if (GetLocalVarInt("Var01") == 1)
{
RemoveItem("pipe_piece_1");
SetEntityActive("Pipe1", true);
PlaySoundAtEntity("", "puzzle_place_jar.snt", "Player", 0, false);
SetLocalVarInt("Var01", 2);
return;
}
else
{
AddUseItemCallback("GetOil", "pipe_piece_1", "PipeArea1", "PipeQuest1", false);
}
}
void PipeQuest2(string &in asItem, string &in asEntity)
{
if (GetLocalVarInt("Var01") == 2)
{
RemoveItem("pipe_piece_2");
SetEntityActive("Pipe2", true);
PlaySoundAtEntity("", "puzzle_place_jar.snt", "Player", 0, false);
SetLocalVarInt("Var01", 3);
return;
}
else
{
AddUseItemCallback("GetOil", "pipe_piece_2", "PipeArea2", "PipeQuest2", false);
}
}
void PipeQuest3(string &in asItem, string &in asEntity)
{
if (GetLocalVarInt("Var01") == 3)
{
RemoveItem("pipe_piece_3");
SetEntityActive("Pipe3", true);
PlaySoundAtEntity("", "puzzle_place_jar.snt", "Player", 0, false);
PipeQuestDone();
return;
}
else
{
AddUseItemCallback("GetOil", "pipe_piece_3", "PipeArea3", "PipeQuest3", false);
}
}
I think this should fix most of it.