Modme Forums

Buildable Game Ending!

Game Asset Reversing | Releases


sharpgamers4you:

Hey, thanks for using my scripts.,


Let's start by giving credits.
Just copy and paste this in your credits list.

Credits to,
Sharpgamers4you
- scripting the buildable ending.
Vertasea - Creating the buyable ending.

Link to his modme post,
https://forum.modme.co/threads/fully-customizable-buyable-ending-by-vertasea.3090/

Now let us go through the tutorial!

I made a video on how to install & change everything so check it out for more details.


Download,
https://drive.google.com/file/d/1ddTLC08u8BGtcJ-sITt4kbnZoBsdndpC/view?usp=sharing

Drag and drop everything from the download into your bo3 root.
usually, that's:
C:\SteamLibrary\steamapps\common\Call of Duty Black Ops III
if it asks to overwrite anything you can click on no.
(it shouldn't, but it may if you have downloaded something from me before)


open your mapname.GSC (NOT CSC)

locate: "zm_usermap::main();"

paste the following under it,


//sg4y buildable end game!
thread sg4y_endgame_build();
thread sg4y_open_endgame_room();



Now paste the following at the very bottom of your map name.GSC (NOT CSC)

function sg4y_endgame_build()
{

//Models
endagme_model1 = GetEnt("sg4y_endgame1", "targetname");
endagme_model2 = GetEnt("sg4y_endgame2", "targetname");
endagme_model3 = GetEnt("sg4y_endgame3", "targetname");

endagme_down_model1 = GetEnt("sg4y_endgame_down1", "targetname");
endagme_down_model2 = GetEnt("sg4y_endgame_down2", "targetname");
endagme_down_model3 = GetEnt("sg4y_endgame_down3", "targetname");

//triggers
endagme_model1_trigger = GetEnt("sg4y_endgame_laptop_pickup", "targetname");
endagme_model1_trigger setHintString("Press [&&1] to pickup the laptop");

endagme_model2_trigger = GetEnt("sg4y_endgame_cable_pickup", "targetname");
endagme_model2_trigger setHintString("Press [&&1] to pickup the cable");

endagme_model3_trigger = GetEnt("sg4y_endgame_electric_pickup", "targetname");
endagme_model3_trigger setHintString("Press [&&1] to pickup the electric box");

endagme_model1_down = GetEnt("sg4y_endgame_laptop_place", "targetname");
endagme_model1_down setHintString("Press [&&1] to place the laptop");

endagme_model2_down = GetEnt("sg4y_endgame_cable_place", "targetname");
endagme_model2_down setHintString("Press [&&1] to place the cable");

endagme_model3_down = GetEnt("sg4y_endgame_electric_place", "targetname");
endagme_model3_down setHintString("Press [&&1] to place the electric box");



//hiding some models/triggers first
endagme_down_model1 hide();
endagme_down_model2 hide();
endagme_down_model3 hide();

endagme_model1_down hide();
endagme_model2_down hide();
endagme_model3_down hide();

//main easter egg funcyion(s)\


//pickup model 1
endagme_model1_trigger waittill("trigger", player);
endagme_model1_trigger hide();
player playsound("zmb_craftable_pickup");
playfx(level._effect["powerup_grabbed"] ,GetEnt("sg4y_endgame1","targetname").origin);
endagme_model1 hide();
endagme_model1_down Show();
wait(1);
endagme_model1 Delete();
endagme_model1_trigger Delete();

//place model 1
endagme_model1_down waittill("trigger", player);
endagme_model1_down hide();
endagme_down_model1 Show();
player playsound("zmb_craftable_pickup");
playfx(level._effect["powerup_grabbed"] ,GetEnt("sg4y_endgame_down1","targetname").origin);
wait(1);
endagme_model1_down Delete();
level notify("sg4y_endgame_1_completed");


//pickup model 2
endagme_model2_trigger waittill("trigger", player);
endagme_model2_trigger hide();
player playsound("zmb_craftable_pickup");
playfx(level._effect["powerup_grabbed"] ,GetEnt("sg4y_endgame2","targetname").origin);
endagme_model2 hide();
endagme_model2_down Show();
wait(1);
endagme_model2 Delete();
endagme_model2_trigger Delete();

//place model 2
endagme_model2_down waittill("trigger", player);
endagme_model2_down hide();
endagme_down_model2 Show();
player playsound("zmb_craftable_pickup");
playfx(level._effect["powerup_grabbed"] ,GetEnt("sg4y_endgame_down2","targetname").origin);
wait(1);
endagme_model2_down Delete();
level notify("sg4y_endgame_2_completed");

//pickup model 3
endagme_model3_trigger waittill("trigger", player);
endagme_model3_trigger hide();
player playsound("zmb_craftable_pickup");
playfx(level._effect["powerup_grabbed"] ,GetEnt("sg4y_endgame3","targetname").origin);
endagme_model3 hide();
endagme_model3_down Show();
wait(1);
endagme_model3 Delete();
endagme_model3_trigger Delete();

//place model 3
endagme_model3_down waittill("trigger", player);
endagme_model3_down hide();
endagme_down_model3 Show();
player playsound("zmb_craftable_pickup");
playfx(level._effect["powerup_grabbed"] ,GetEnt("sg4y_endgame_down3","targetname").origin);
wait(1);
endagme_model3_down Delete();
level notify("sg4y_endgame_3_completed");
}



function sg4y_open_endgame_room()
{

sg4y_endgame_wall = GetEnt("endgame_wall", "targetname");

level waittill("sg4y_endgame_1_completed");
level waittill("sg4y_endgame_2_completed");
level waittill("sg4y_endgame_3_completed");
sg4y_endgame_wall moveZ(140,2);

wait(3);
sg4y_endgame_wall Delete();

}





That's all for scripting!
now let's go through the funs stuff!


open radiant.

right-click and select misc --> prefab

go into the "ZM" folder, and you'll see a new folder called "SG4Y"
open that folder and you'll see a folder called "endgame_buildable"

open it up and drag the prefabs into your map.

Prefab: Pick_Up_1
= the first models to be picked up.
Prefab: Pick_Up_2 = the second model to be picked up.
Prefab: Pick_Up_3 = the third model to be picked up.
Prefab: place_buildables = the location and everything where the player places the models.
Prefab: secret_wall = an optional prefab, this is used so the player(s) can go into the secret room. (you can add "endgame_wall" as a targetname to your own door.

if you want to change the models, target name or anything drag and drop the prefab into your map then select the prefab right click and hit stamp prefab(or on the top menu
press on prefab and stamp prefab, now you can change the model, target name, and so on.)



If you have any question(s) or you need models, scripts and more feel free to contact me through the following,

Discord: sharpgamers4you #6056
Twitter: @fuck_policia
Youtube: sharpgamers4you
Snapchat: sharpgamers4you
Instagram: Mehmetdemir1997

Pepergogo:

This happen when I try to download it :(


dmac442:

This happen when I try to download it :(


me too :(

sharpgamers4you:

me too :(

i fixed it sorry about that

sharpgamers4you:

This happen when I try to download it :(


yeah it was still locked, sorry but its fixed now

dmac442:

yeah it was still locked, sorry but its fixed now

I downloaded it earlier, thanks for fixing it! Watching your scripting video right now

sharpgamers4you:

I downloaded it earlier, thanks for fixing it! Watching your scripting video right now

Thanks bro 🙏

LogicalEdits:

I dont want to bash you, but this script is fucking aids man. This whole thing is fucked and cursed. I understand if this is your first script but you should really go thru and check everything to make sure its perfect before releasing to the public - you have to understand that there are new mappers here looking for simple stuff to add to their map and they see this and say "hey this is perfect for my map" and then when they add this in, their map/idea is fucked.

level waittill("sg4y_endgame_1_completed");
level waittill("sg4y_endgame_2_completed");
level waittill("sg4y_endgame_3_completed");

This can't be completed in any order. Nothing happens until 1 is done, then 2, then 3.
//pickup model 1
endagme_model1_trigger waittill("trigger", player);
endagme_model1_trigger hide();
player playsound("zmb_craftable_pickup");
playfx(level._effect["powerup_grabbed"] ,GetEnt("sg4y_endgame1","targetname").origin);
endagme_model1 hide();
endagme_model1_down Show();
wait(1);
endagme_model1 Delete();
endagme_model1_trigger Delete();

//place model 1
endagme_model1_down waittill("trigger", player);
endagme_model1_down hide();
endagme_down_model1 Show();
player playsound("zmb_craftable_pickup");
playfx(level._effect["powerup_grabbed"] ,GetEnt("sg4y_endgame_down1","targetname").origin);
wait(1);
endagme_model1_down Delete();
level notify("sg4y_endgame_1_completed");
This is just bad scripting. this can be shortened way down, and NOTHING can happen UNTIL you pick up the first piece, then place the first piece, and this continues for the next objects. This really limits players. There's waittills everywhere. Also, lots and lots of spelling errors; this will be hard for anyone trying to find something in your script.

You can just use the buildable script Treyarch gives us and make a new buildable that includes sounds and functionality with LUA, csc, etc. There's already a tutorial on this. Also this doesnt have to be tied to Vertesea's BE, since in your script a wall just moves. That can literally be for anything. I'd take this down honestly. Sorry :(


sharpgamers4you:

I dont want to bash you, but this script is fucking aids man. This whole thing is fucked and cursed. I understand if this is your first script but you should really go thru and check everything to make sure its perfect before releasing to the public - you have to understand that there are new mappers here looking for simple stuff to add to their map and they see this and say "hey this is perfect for my map" and then when they add this in, their map/idea is fucked.

level waittill("sg4y_endgame_1_completed");
level waittill("sg4y_endgame_2_completed");
level waittill("sg4y_endgame_3_completed");

This can't be completed in any order. Nothing happens until 1 is done, then 2, then 3.
//pickup model 1
endagme_model1_trigger waittill("trigger", player);
endagme_model1_trigger hide();
player playsound("zmb_craftable_pickup");
playfx(level._effect["powerup_grabbed"] ,GetEnt("sg4y_endgame1","targetname").origin);
endagme_model1 hide();
endagme_model1_down Show();
wait(1);
endagme_model1 Delete();
endagme_model1_trigger Delete();

//place model 1
endagme_model1_down waittill("trigger", player);
endagme_model1_down hide();
endagme_down_model1 Show();
player playsound("zmb_craftable_pickup");
playfx(level._effect["powerup_grabbed"] ,GetEnt("sg4y_endgame_down1","targetname").origin);
wait(1);
endagme_model1_down Delete();
level notify("sg4y_endgame_1_completed");
This is just bad scripting. this can be shortened way down, and NOTHING can happen UNTIL you pick up the first piece, then place the first piece, and this continues for the next objects. This really limits players. There's waittills everywhere. Also, lots and lots of spelling errors; this will be hard for anyone trying to find something in your script.

You can just use the buildable script Treyarch gives us and make a new buildable that includes sounds and functionality with LUA, csc, etc. There's already a tutorial on this. Also this doesnt have to be tied to Vertesea's BE, since in your script a wall just moves. That can literally be for anything. I'd take this down honestly. Sorry :(

Hahahha thanks for the feedback bro, and yeah i know it can be done in less lines of this., but it gets the job done.

Also i know it waits untill the first piece is done and so on but i just thrown things together as fast as possible.

like i didn't thought of picking models up in any order, realized it at the end but was like eeh gets the job done and people can change it.
So didn't optimized the script.

Not my best job, not my worst

The Original:

I am a new mapper. And the script dose work fine and dandy but one thing was how would I modify the script so the player can pick up all parts at once. I am no scripter, but I understand a little bit, I am learning.

Hahahha thanks for the feedback bro, and yeah i know it can be done in less lines of this., but it gets the job done.

Also i know it waits untill the first piece is done and so on but i just thrown things together as fast as possible.

like i didn't thought of picking models up in any order, realized it at the end but was like eeh gets the job done and people can change it.
So didn't optimized the script.

Not my best job, not my worst