Modme Forums
Menu:

Hey needing supplies!

Game Modding | Call of Duty: Black Ops 3 | Scripting


ModmeBot:

Thread By: Dedrix
Hey forum,
I'm really struggling to find any of the below items that are to a reasonable standard, and I know that they may be a bit to ask for however It'd be Fantastic! if you guys could help me out.

- script to open (not delete) a door by shooting it with a specific gun
- script to open (not delete) a door with a key (item)
- door you can open & close like the doors in Blackout (for shutters)
- a PHD that actually works
- Blundergat (Acidgat...maybe?)
- the proper dragon shield projectile fx


Thanks so much for anyone who's able to help me out!


ModmeBot:

Reply By: KillJoyYT
the first three can be found on the forums here or a youtube search. uptownpapi has a nice keycard door tut on youtube


ModmeBot:

Reply By: Dedrix

KillJoyYT
the first three can be found on the forums here or a youtube search. uptownpapi has a nice keycard door tut on youtube

The problem I have with that script is that it deletes the door rather than having it move (rotate/vector). I'm looking for one that allows that.
Perhaps It could be edited to do that, however I'm not sure how to...? Also the key does not disappear when I pick it up lol



function init_keycard()
{
level.key_obtained = false;
key = GetEnt( "key_trigger", "targetname" );
key SetCursorHint( "HINT_NOICON" );
key SetHintString( "Press and Hold ^3&&1^7 to Pick Up Keycard" );
key thread wait_for_pickup();

key_doors = GetEntArray( "key_door", "targetname" );
foreach( door in key_doors )
{
door SetCursorHint( "HINT_NOICON" );
door SetHintString( "A Key is Required to Open the Door" );
door thread wait_for_unlock();
}
}

function wait_for_pickup()
{
self waittill( "trigger", player );
model = GetEnt( self.target, "targetname" );
model delete();
self delete();
level.key_obtained = true;
iprintlnbold( "The Keycard Has Been Obtained" );
}

function wait_for_unlock()
{
level endon( "intermission" );

while( !level.key_obtained )
wait(0.25);

self SetHintString( "Press and Hold ^3&&1^7 to Unlock Door" );
self waittill( "trigger", player );
models = GetEntArray( self.target, "targetname" );
PlaySoundAtPosition( "zmb_cha_ching", player.origin );
spawn_flag = models[0].script_flag;
flag::set( spawn_flag );
wait(0.05);
foreach( model in models )
model delete();
self delete();
}


ModmeBot:

Reply By: xdferpc
here is the solution
modified your code to erase the key card and rotate the door

function init_keycard()
{
level.key_obtained = false;
key = GetEnt( "key_trigger", "targetname" );
key SetCursorHint( "HINT_NOICON" );
key SetHintString( "Press and Hold ^3&&1^7 to Pick Up Keycard" );
key waittill( "trigger", player );
key delete();
model = GetEnt( self.target, "targetname" );
model delete();
level.key_obtained = true;
iprintlnbold( "The Keycard Has Been Obtained" );

key_doors = GetEntArray( "key_door", "targetname" );
foreach( door in key_doors )
{
door SetCursorHint( "HINT_NOICON" );
door SetHintString( "A Key is Required to Open the Door" );
door thread wait_for_unlock();
}
}



function wait_for_unlock()
{
level endon( "intermission" );

while( !level.key_obtained )
wait(0.25);

self SetHintString( "Press and Hold ^3&&1^7 to Unlock Door" );
self waittill( "trigger", player );
models = GetEntArray( self.target, "targetname" );
PlaySoundAtPosition( "zmb_cha_ching", player.origin );
spawn_flag = models[0].script_flag;
flag::set( spawn_flag );
wait(0.05);
foreach( model in models )
model RotateYaw(90,1);
self RotateYaw(90,1);
}


ModmeBot:

Reply By: KillJoyYT
in the last function...…….. function wait_for_unlock()



change

foreach( model in models )
model delete();

to

foreach( model in models )
model MoveX(120,2); //moving the model on the x axis 120 units in 2 sec


ModmeBot:

Reply By: Dedrix
This is really good stuff guys, however what if I have two models to move...?


ModmeBot:

Reply By: mathfag

Dedrix
This is really good stuff guys, however what if I have two models to move...?

it will move both of them
thats what foreach(x in y) does


ModmeBot:

Reply By: Dedrix

mathfag
Dedrix This is really good stuff guys, however what if I have two models to move...? it will move both of them thats what foreach(x in y) does

Sorry I meant move them differently, meaning I have a double opening door, so the left one rotates (-90) and right rotates (90).


ModmeBot:

Reply By: mathfag

Dedrix
mathfag Dedrix This is really good stuff guys, however what if I have two models to move...? it will move both of them thats what foreach(x in y) does Sorry I meant move them differently, meaning I have a double opening door, so the left one rotates (-90) and right rotates (90).


Give them the KVP script_angles and enter the angle you want it to turn to NOT by how much (like when you make a buyable door).

Example:
KVP - Value
script_angles 0 -120 0

foreach( model in models )
	{
	time = 1; 
	if(isDefined(model.script_angles))
		{
		rot_angle = model.script_angles;
		model RotateTo( rot_angle, time, 0, 0 ); 
		}
	else
		{
		model MoveX(120,time); //moving the model on the x axis 120 units in 2 sec
		}
	}
**copied from _zm_blockers.gsc**