LoneWolf 
 
 
		
			Senior Member 
			
			
			
 
			
	Posts: 308 
	Threads: 43 
	Joined: Sep 2010
	
 Reputation: 
0
		
	 | 
	
		
			
Final help with difficult script 
			 
			
				This is what i need to do. 
 
I have 4 chemical jars, i need them to be able to be mixed into a pot. I then need to be able to place the pot onto the ground near a barricade. Then just like the game i need it to blow up when hit by a rock. I then need the barricade to disappear so that my other barricade(which the broken version) will only be visible. 
 
Any idea how to do this, or atleast start as this is my last script thread.
			 
			
			
			
		 |  
	 
 | 
 
	| 10-13-2010, 07:43 PM  | 
	
		
	 | 
 
 
	
		
		DamnNoHtml 
 
 
		
			Senior Member 
			
			
			
 
			
	Posts: 469 
	Threads: 34 
	Joined: Sep 2010
	
 Reputation: 
16
		
	 | 
	
		
			
RE: Final help with difficult script 
			 
			
				You know you can just open that particular map's .hps file and just look at the exact code.
			 
			
			
 
Creator of Wake, Through the Portal, Insomnia, and Cycles What to do with HPL3.... 
			
		 |  
	 
 | 
 
	| 10-13-2010, 08:33 PM  | 
	
		
	 | 
 
 
	
		
		Kyle 
 
 
		
			Posting Freak 
			
			
			
 
			
	Posts: 911 
	Threads: 36 
	Joined: Sep 2010
	
 Reputation: 
7
		
	 | 
	
		
			
RE: Final help with difficult script 
			 
			
				Lol... just, lol...   
Sometimes it is not always the best thing to do if you copy the script from the game. It wouldn't be original and also wouldn't be such a cool thing to do.
			  
			
			
 
			
		 |  
	 
 | 
 
	| 10-13-2010, 09:30 PM  | 
	
		
	 | 
 
 
	
		
		Pandemoneus 
 
 
		
			Senior Member 
			
			
			
 
			
	Posts: 328 
	Threads: 2 
	Joined: Sep 2010
	
 Reputation: 
0
		
	 | 
	
		
			
RE: Final help with difficult script 
			 
			
				Problem is that we have 2 people here who just want others to create them the scripts instead of learning on their own.
			 
			
			
 
			
		 |  
	 
 | 
 
	| 10-13-2010, 09:40 PM  | 
	
		
	 | 
 
 
	
		
		HakePT 
 
 
		
			Junior Member 
			
			
			
 
			
	Posts: 49 
	Threads: 1 
	Joined: Sep 2010
	
 Reputation: 
0
		
	 | 
	
		
			
RE: Final help with difficult script 
			 
			
				 (10-13-2010, 09:40 PM)Pandemoneus Wrote:  Problem is that we have 2 people here who just want others to create them the scripts instead of learning on their own. 
True.
 
Still create inactive items and make them active when your event happens. 
That should work for the barricade. Activate particles, sound and a few random rocks flying and the change will be "easy".
			  
			
			
			
		 |  
	 
 | 
 
	| 10-13-2010, 10:24 PM  | 
	
		
	 | 
 
 
	
		
		LoneWolf 
 
 
		
			Senior Member 
			
			
			
 
			
	Posts: 308 
	Threads: 43 
	Joined: Sep 2010
	
 Reputation: 
0
		
	 | 
	
		
			
RE: Final help with difficult script 
			 
			
				 (10-13-2010, 09:40 PM)Pandemoneus Wrote:  Problem is that we have 2 people here who just want others to create them the scripts instead of learning on their own. 
Why don't you stop spamming on my threads?
 
Did you know that you can learn from others? I guess you dont.
			  
			
			
			
		 |  
	 
 | 
 
	| 10-13-2010, 10:25 PM  | 
	
		
	 | 
 
 
	
		
		ide 
 
 
		
			Junior Member 
			
			
			
 
			
	Posts: 20 
	Threads: 3 
	Joined: Oct 2010
	
 Reputation: 
0
		
	 | 
	
		
			
RE: Final help with difficult script 
			 
			
				But if you get complete code handed out to you it won't teach you anything.  
Afaik all one needs are these: 
- List of script functions  http://www.hpl2.frictionalgames.com/amne..._functions
- Knowledge of basic scripting (basic meaning knowing that: func(variables for function to use){what function does} and int=number, string=word in "", bool=true or false ) 
- Two brain cells to rub together
			  
			
			
			
		 |  
	 
 | 
 
	| 10-13-2010, 11:07 PM  | 
	
		
	 | 
 
 
	
		
		LoneWolf 
 
 
		
			Senior Member 
			
			
			
 
			
	Posts: 308 
	Threads: 43 
	Joined: Sep 2010
	
 Reputation: 
0
		
	 | 
	
		
			
RE: Final help with difficult script 
			 
			
				Couldnt find anything about mixing chemicals into a pot/container on the wiki. i looked into the game hps. and found alot of scripting to do with the mixing of chemicals buts its so confusing and its over 200 lines long... look at it. 
/*Use the final drill on the epoxy containers to drill a hole 
 */ 
void UseDrillOnEpoxy(string &in asItem, string &in asEntity) 
{ 
    if(GetLocalVarInt("GotEpoxy") == 1) return; 
     
    if(GetLocalVarInt(asEntity) != 0){  
        SetMessage("Ch01Level12", "AlreadyDrilled", 0); 
        return; 
    } 
     
    SetEntityActive(asEntity+"_area_2", true); 
    AddUseItemCallback("usecontainer1" + asEntity, "empty_container", asEntity + "_area_2", "UseEmptyContainerOnEpoxy", false); 
    AddUseItemCallback("usehalfcontainer1" + asEntity, "epoxy_container01_2", asEntity + "_area_2", "UseHalfContainerOnEpoxy", false); 
    AddUseItemCallback("usehalfcontainer2" + asEntity, "epoxy_container02_2", asEntity + "_area_2", "UseHalfContainerOnEpoxy", false); 
     
    SetEntityActive(asEntity+"_drill", true); 
     
    if(asEntity == "epoxy_container02") 
        RotatePropToSpeed(asEntity+"_drill", 8.0f, 8.0f, 1.0, 0, 0, true, asEntity+"_drill_area"); 
    else 
        RotatePropToSpeed(asEntity+"_drill", 8.0f, 8.0f, 0, 0, 1.0f, true, asEntity+"_drill_area"); 
         
    StartPlayerLookAt(asEntity+"_area_1", 2, 2, ""); 
     
    if(StringContains(asEntity, "01")) SetLocalVarString("WhatEpoxyEffect", "drill01"); 
    else if(StringContains(asEntity, "02")) SetLocalVarString("WhatEpoxyEffect", "drill02"); 
     
    CreateParticleSystemAtEntity("ps_"+GetLocalVarString("WhatEpoxyEffect"), "ps_dust_drilling.ps", asEntity+"_area_1", false); 
    PlaySoundAtEntity("s_"+GetLocalVarString("WhatEpoxyEffect"), "12_drill", asEntity+"_area_1", 1, false); 
     
    SetLocalVarInt(asEntity, 1); 
 
    AddTimer("stoplook", 1.5f, "TimerDrill"); 
     
    AddTimer(asEntity, 2, "TimerDrill"); 
    AddTimer(asEntity+"_drill", 1.5f, "TimerDrill"); 
     
    AddDebugMessage("DRILLING A HOLE", false); 
} 
void TimerDrill(string &in asTimer) 
{ 
    if(asTimer == "stoplook"){ 
        StopPlayerLookAt(); 
        return; 
    } 
    else if(StringContains(asTimer, "_drill")){ 
        if(asTimer == "epoxy_container02_drill") 
            RotatePropToSpeed(asTimer, 4.0f, 4.0f, 1.0f, 0, 0, false, asTimer+"_area"); 
        else 
            RotatePropToSpeed(asTimer, 4.0f, 4.0f, 0, 0, 1.0f, false, asTimer+"_area"); 
             
        StopSound("s_"+GetLocalVarString("WhatEpoxyEffect"), 1.0f); 
        return; 
    } 
     
    SetPropActiveAndFade(asTimer+"_drill", false, 0.5f); 
         
    CreateParticleSystemAtEntity("ps2_"+GetLocalVarString("WhatEpoxyEffect"), "ps_liquid_epoxy.ps", asTimer+"_area_1", true); 
    CreateParticleSystemAtEntity("ps3_"+GetLocalVarString("WhatEpoxyEffect"), "ps_liquid_epoxy_splatt.ps", asTimer+"_area_2", true); 
 
    PlaySoundAtEntity("s2_"+GetLocalVarString("WhatEpoxyEffect"), "12_epoxy_flow", asTimer+"_area_1", 0, true); 
} 
void UseDrillPartOnEpoxy(string &in asItem, string &in asEntity) 
{ 
    SetMessage("Ch01Level12", "UsingDrillPart", 0); 
} 
 
/*Use the chemical container on epoxy containers to fill it will liquid 
 */ 
void UseEmptyContainerOnEpoxy(string &in asItem, string &in asEntity) 
{ 
    if(GetLocalVarInt("GotEpoxy") == 1) return; 
     
    /*Container has been drilled so OK to place container 
     */ 
      
    string sEntity = StringSub(asEntity, 0, 17); 
    AddDebugMessage(sEntity, false); 
     
    if(GetLocalVarInt(sEntity) == 1){ 
        if(GetTimerTimeLeft(sEntity)>0){ 
            SetMessage("Ch01Level12", "NotDoneDrilling", 0); 
            return; 
        } 
         
        RemoveItem(asItem); 
         
        SetEntityActive(sEntity+"_area_2", false); 
 
        SetEntityActive(sEntity+"_1", true); 
         
        StartPlayerLookAt(sEntity+"_area_2", 2, 2, ""); 
         
        DestroyParticleSystem("ps3_"+GetLocalVarString("WhatEpoxyEffect")); 
         
        StopSound("s2_"+GetLocalVarString("WhatEpoxyEffect"), 2.0f); 
         
        PlaySoundAtEntity("s3_"+GetLocalVarString("WhatEpoxyEffect"), "12_epoxy_fill", sEntity+"_area_1", 1.0, false); 
        PlaySoundAtEntity("s3p_"+GetLocalVarString("WhatEpoxyEffect"), "puzzle_place_jar", sEntity+"_area_2", 0.1f, false); 
         
        AddTimer(sEntity, 2, "TimerHalfFill"); 
         
        SetLocalVarInt(sEntity, 2); 
        SetLocalVarInt("BottleNr", 1); 
    } 
    else if(GetLocalVarInt(sEntity) == 0){ 
        SetMessage("Ch01Level12", "ContainerNoUse", 0);    //Message that no use placing container as can't get to the content. 
    } 
} 
/*Switch the container to half filled item containter 
 */ 
void TimerHalfFill(string &in asTimer) 
{ 
    StopPlayerLookAt(); 
     
    SetEntityActive(asTimer+"_"+GetLocalVarInt("BottleNr"), false); 
         
    SetLocalVarInt("BottleNr", 2); 
         
    SetEntityActive(asTimer+"_"+GetLocalVarInt("BottleNr"), true); 
     
    DestroyParticleSystem("ps2_"+GetLocalVarString("WhatEpoxyEffect")); 
 
    CreateParticleSystemAtEntity("ps4_"+GetLocalVarString("WhatEpoxyEffect"), "ps_liquid_epoxy_drip.ps", asTimer+"_area_1", true); 
    PlaySoundAtEntity("s4_"+GetLocalVarString("WhatEpoxyEffect"), "12_epoxy_drip", asTimer+"_area_1", 1, true); 
} 
 
/*If player has filled the container from one epoxy and does not use it on the same epoxy, fill it 
 */ 
void UseHalfContainerOnEpoxy(string &in asItem, string &in asEntity) 
{ 
    if(GetLocalVarInt("GotEpoxy") == 1) return; 
     
    string sEntity = StringSub(asEntity, 0, 17); 
     
    /*Only place container if it is not the same epoxy as already used 
     */ 
    if((asItem == "epoxy_container01_2" or asItem == "epoxy_container02_2") && GetLocalVarInt(asEntity) != 2){ 
        if(GetLocalVarInt(sEntity) == 1){ 
            if(GetTimerTimeLeft(sEntity)>0){ 
            SetMessage("Ch01Level12", "NotDoneDrilling", 0); 
            return; 
            } 
         
            RemoveItem(asItem); 
             
            SetEntityActive(sEntity+"_area_2", false); 
 
            SetEntityActive(sEntity+"_3", true); 
             
            StartPlayerLookAt(sEntity+"_area_2", 2, 2, ""); 
             
            DestroyParticleSystem("ps3_"+GetLocalVarString("WhatEpoxyEffect")); 
             
            StopSound("s2_"+GetLocalVarString("WhatEpoxyEffect"), 2.0f); 
             
            PlaySoundAtEntity("s3_"+GetLocalVarString("WhatEpoxyEffect"), "12_epoxy_fill", sEntity+"_area_1", 1.0, false); 
            PlaySoundAtEntity("s3p_"+GetLocalVarString("WhatEpoxyEffect"), "puzzle_place_jar", sEntity+"_area_2", 0.2f, false); 
             
            AddTimer(sEntity, 2, "TimerFullFill"); 
         
            SetLocalVarInt("BottleNr", 3); 
             
            SetLocalVarInt("GotEpoxy", 1); 
 
        } else SetMessage("Ch01Level12", "NoHole", 0);     
    }  
    else 
        SetMessage("Ch01Level12", "ContainerAlreadyUsed", 0); 
} 
/*Switch the half-full container to a completely filled item container 
 */ 
void TimerFullFill(string &in asTimer) 
{ 
    StopPlayerLookAt(); 
     
    SetEntityActive(asTimer+"_"+GetLocalVarInt("BottleNr"), false); 
         
    SetLocalVarInt("BottleNr", 4); 
         
    SetEntityActive(asTimer+"_"+GetLocalVarInt("BottleNr"), true); 
     
    DestroyParticleSystem("ps2_"+GetLocalVarString("WhatEpoxyEffect")); 
     
    CreateParticleSystemAtEntity("ps4_"+GetLocalVarString("WhatEpoxyEffect"), "ps_liquid_epoxy_drip.ps", asTimer+"_area_1", true); 
    PlaySoundAtEntity("s4_"+GetLocalVarString("WhatEpoxyEffect"), "12_epoxy_drip", asTimer+"_area_1", 1, true); 
} 
 
 
/*Give Sanity Push 
 */ 
void PickEpoxy(string &in asEntity, string &in asType) 
{ 
    GiveSanityBoostSmall(); 
     
    PlayMusic("12_puzzle_epoxy.ogg", false, 1.0f, 0.0f, 10, true); 
     
    AddTimer("mmmmonsterkill", 2.0f, "TimerMmMonster"); 
} 
void TimerMmMonster(string &in asTimer) 
{ 
    StartScreenShake(0.02f, 0.25f, 0.75f, 1.5f); 
    PlaySoundAtEntity("warning", "12_warn.snt", "ScriptArea_2", 0.0f, false); 
    AddTimer("scare", 1.0f, "TimerPlayerReactions"); 
    AddTimer("breath", 3.0f, "TimerPlayerReactions"); 
    AddTimer("breathl", 5.0f, "TimerPlayerReactions"); 
} 
//END HAND DRILL & EPOXY// 
////////////////////////// 
 
 
//////////////// 
//BEGIN CAVEIN// 
/*Place the final epoxy at the cave in 
 */ 
void UseEpoxyOnCavein(string &in asItem, string &in asEntity) 
{ 
    RemoveItem(asItem); 
     
    GiveHint("run!", "Ch01Level12", "HintRunAway", 0); 
     
    StartPlayerLookAt("AreaLookAt_1", 2, 2, ""); 
 
    AddTimer("crouch", 0.5f, "TimerStopLookCaveIn"); 
    AddTimer("place", 1.0f, "TimerStopLookCaveIn"); 
    AddTimer("stoplook", 1.2f, "TimerStopLookCaveIn"); 
} 
void TimerStopLookCaveIn(string &in asTimer) 
{ 
    if(asTimer == "crouch"){ 
        MovePlayerHeadPos(0.0f, -0.5f, 0.0f, 1.0f, 0.1f); 
        PlaySoundAtEntity("crouchs", "player_climb", "Player", 0.5f, false); 
    } 
    else if(asTimer == "place"){ 
        SetEntityActive("explosive_container", true); 
        PlaySoundAtEntity("placejar", "puzzle_place_jar", "explosive_container", 0, false); 
    } 
    else if(asTimer == "stoplook"){ 
        PlaySoundAtEntity("crouchs", "player_crouch", "Player", 0.0f, false); 
        MovePlayerHeadPos(0.0f, 0.0f, 0.0f, 1.5f, 0.05f); 
        StopPlayerLookAt(); 
    } 
} 
 
void InteractEpoxyByCave(string &in asEntity) 
{ 
    SetMessage("Ch01Level12", "TouchEpoxy", 0); 
} 
 
void DaBigBoom(string &in asEntity, string &in asType) 
{ 
    AddTimer("sound", 1, "TimerBigBoomEvent"); 
    AddTimer("1", 4, "TimerBigBoomEvent"); 
     
    FadeLightTo("DangerLight", 1, 0, 0, 1, 4, 4); 
} 
/*After a second from throwing something at the container it explodes 
 */ 
 void TimerBigBoomEvent(string &in asTimer) 
{ 
    if(asTimer == "sound"){ 
        PlaySoundAtEntity("epoxyignite", "12_epoxy_blow", "cave_in_1", 0, false); 
        StartScreenShake(0.01, 0, 0, 2.9f); 
        return; 
    } 
     
    SetEntityActive("explosive_container", false); 
     
    SetPropHealth("cave_in_1", 0); 
     
    StartScreenShake(0.08, 2.5f, 0, 1.0f); 
     
    FadeImageTrailTo(0.5, 1); 
     
    FadeLightTo("BoomLight", 1, 1, 1, 1, 8, 0.1f); 
    FadeLightTo("DangerLight", 0, 0, 0, 0, 0, 0.5f); 
     
    switch(GetLocalVarInt("BoomPlayer")){ 
        case 0: 
            //GivePlayerDamage(25, "BloodSplat", true, false); 
            //AddDebugMessage("Player got damage: -25", false); 
        break; 
        case 1: 
            GivePlayerDamage(50, "BloodSplat", true, false); 
            AddDebugMessage("Player got damage: -50", false); 
        break; 
        case 2: 
            GivePlayerDamage(200, "BloodSplat", true, false); 
            AddDebugMessage("Player got damage: -200", false); 
        break; 
    } 
     
    PlayMusic("12_puzzle_cavein.ogg", false, 1, 0.0f, 10, true); 
     
    AddTimer("cquest", 2, "TimerCompleteQuest"); 
    AddTimer("light", 0.75f, "TimerCompleteQuest"); 
} 
 
void TimerCompleteQuest(string &in asTimer) 
{ 
    if(asTimer == "light"){ 
        FadeLightTo("BoomLight", 0, 0, 0, 0, 0, 1.25f); 
        return; 
    } 
     
    CompleteQuest("12Cavein", "12Cavein"); 
     
    FadeImageTrailTo(0.0, 1); 
     
    GiveSanityBoost(); 
} 
 
/*Check what area the player is in during the explosion to deal a certain amount of damage 
 */ 
void CollideBoomArea(string &in asParent, string &in asChild, int alState) 
{ 
    if(asChild == "AreaBoomDeath") SetLocalVarInt("BoomPlayer", 2); 
    else if(asChild == "AreaBoomEscape") SetLocalVarInt("BoomPlayer", 0); 
    else SetLocalVarInt("BoomPlayer", 1); 
     
    AddDebugMessage("Player to get damage: "+GetLocalVarInt("BoomPlayer"), false); 
} 
//END CAVEIN// 
//////////////
  
			 
			
			
			
		 |  
	 
 | 
 
	| 10-14-2010, 12:28 AM  | 
	
		
	 | 
 
 
	
		
		Chilton 
 
 
		
			Member 
			
			
			
 
			
	Posts: 138 
	Threads: 9 
	Joined: Sep 2010
	
 Reputation: 
0
		
	 | 
	
		
			
RE: Final help with difficult script 
			 
			
				Scripts like this are not easy - But possible. 
Unfortunately, its not possible for someone to give you a script because they would literally need to be controlling your screen just to know what theyre doing.
  
			 
			
			
			
		 |  
	 
 | 
 
	| 10-14-2010, 02:57 AM  | 
	
		
	 | 
 
 
	
		
		DamnNoHtml 
 
 
		
			Senior Member 
			
			
			
 
			
	Posts: 469 
	Threads: 34 
	Joined: Sep 2010
	
 Reputation: 
16
		
	 | 
	
		
			
RE: Final help with difficult script 
			 
			
				 (10-13-2010, 07:43 PM)LoneWolf Wrote:  This is what i need to do. 
 
I have 4 chemical jars, i need them to be able to be mixed into a pot. I then need to be able to place the pot onto the ground near a barricade. Then just like the game i need it to blow up when hit by a rock. I then need the barricade to disappear so that my other barricade(which the broken version) will only be visible. 
 
Any idea how to do this, or atleast start as this is my last script thread. 
What you are asking isn't really that hard to comprehend, it is just putting it into code.
 
Basically, you just have 4 AddCombineItemCallbacks for each of the jars. Then, you have a use item callback on the ground where you want the finished pot to go. Then, you add an AddEntityCollideCallback between a rock and the entity pot you just made. The callback for that function would probably shake the screen, fade out, set the barricade to inactive, and set the broken version to active.
			  
			
			
 
Creator of Wake, Through the Portal, Insomnia, and Cycles What to do with HPL3.... 
			
		 |  
	 
 | 
 
	| 10-14-2010, 08:33 AM  | 
	
		
	 | 
 
 
	 
 |