
Posts
191
Respect
30Add +1
Forum Rank
Pack-a-Puncher
Primary Group
Donator ♥
Login Issues
Forgot password?Activate Issues
Account activation email not received? Wrong account activation email used?Other Problems?
Contact Support - Help Center Get help on the UGX Discord. Join it now!![]() | Benevolent Soul who has our eternal gratitude and exclusive access to betas and the donator section of the forum. |
So my first map is kind of an objective-based map, and for one of the challenges, I want the players to have to collect zombie souls to move on to the next area of the map. Now I dont exactly want a soul chest-type deal here, but very close to it. Basically i just want to use blunts script but on a different model instead of a soul chest. I have a table in the center of the room and it serves as kind of a "collect souls for satan" type thing. And I want the souls to go into the table. I know this is probably very simple to do but I'm a new, learning scripter and would love some help here.
Thanks!
![]() | Benevolent Soul who has our eternal gratitude and exclusive access to betas and the donator section of the forum. |
stamp the prefab and remove the model. Make sure it is centered where it should be. I think that is all. ! IF ! the model has KVP's, copy them to the new model (im not farmillar with his soul boxes)
![]() | Benevolent Soul who has our eternal gratitude and exclusive access to betas and the donator section of the forum. |
![]() | Has shown excellence and experience in the area of custom scripting in the UGX-Mods community. |
![]() Oil Rig Beta Access |
#include maps\_utility;
#include common_scripts\utility;
#include maps\_zombiemode_utility;
#include maps\_anim;
PreCache_soul_chest()
{
level._effect["blst_chest_soul"] = loadfx("blst_custom/blst_fx_chest_soul");
}
main()
{
reward_trigger = getentarray( "soul_chest_reward" , "targetname" );
for(i=0;i<reward_trigger.size;i++)
{
reward_trigger[i] disable_trigger();
}
soul_chest_area = getentarray( "soul_chest_area" , "targetname") ;
for(i=0;i<soul_chest_area.size;i++)
{
soul_chest_area[i] thread spawn_initial_model();
}
level.chest_amount = soul_chest_area.size;
level.chest_active = true;
level.chest_completed = 0;
level.chest_counting = 0;
}
spawn_initial_model()
{
self.death_count = 0;
}
chest_anims()
{
///////////////////////////////////////////////////// EDIT AMOUNT OF KILLS NEEDED HERE /////////////////////////////////////////////////////////////////////////////
chest_1_kills = 12;
chest_2_kills = 25;
chest_3_kills = 45;
chest_4_kills = 65;
chest_5_kills = 90;
chest_6_kills = 140;
///////////////////////////////////////////////////// EDIT AMOUNT OF KILLS NEEDED HERE /////////////////////////////////////////////////////////////////////////////
chest_clip = getentarray( "soul_chest_clip" , "targetname" );
self.max_count = undefined;
if( level.chest_completed == 0 )
{
if( level.chest_counting == 1 )
{
self.max_count = chest_1_kills;
}
else if( level.chest_counting == 2 )
{
self.max_count = chest_2_kills;
}
else if( level.chest_counting == 3 )
{
self.max_count = chest_3_kills;
}
else if( level.chest_counting == 4 )
{
self.max_count = chest_4_kills;
}
else if( level.chest_counting == 5 )
{
self.max_count = chest_5_kills;
}
else if( level.chest_counting == 6 )
{
self.max_count = chest_6_kills;
}
}
else if( level.chest_completed >= 1 )
{
if( level.chest_counting + level.chest_completed == 2 )
{
self.max_count = chest_2_kills;
}
if( level.chest_counting + level.chest_completed == 3 )
{
self.max_count = chest_3_kills;
}
if( level.chest_counting + level.chest_completed == 4 )
{
self.max_count = chest_4_kills;
}
if( level.chest_counting + level.chest_completed == 5 )
{
self.max_count = chest_5_kills;
}
if( level.chest_counting + level.chest_completed == 6 )
{
self.max_count = chest_6_kills;
}
}
wait 0.2;
self playsound( "chest_open");
wait 1;
self waittill( "chest_full" );
if( self.max_count == self.death_count || self.death_count >= 9000 )
{
level.chest_counting--;
self playsound( "chest_full") ;
wait 0.3;
self playsound( "chest_full") ;
wait 1;
self playsound( "chest_full2") ;
self playsound( "chest_close_lid" );
for(i=0;i<chest_clip.size;i++)
{
if( self IsTouching( chest_clip[i] ) == true )
{
chest_clip[i] delete();
}
}
wait 1;
self playsound( "chest_full2" );
wait 2.1;
self delete();
self delete();
}
else if( self.max_count < self.death_count )
{
iprintlnbold( "death count exceeded due to timeout" );
}
else if( self.max_count > self.death_count )
{
level.chest_counting--;
self.death_count = -10;
self playsound( "chest_close_lid" );
wait 0.7;
self thread spawn_initial_model();
}
}
chest_death_count( last_origin, area_radius )
{
self notify( "chest_kill" );
self_origin = self.origin;
self.death_count++;
if( self.death_count == -9 || self.death_count >= 9000)
{
self.death_count--;
}
else if( self.death_count == 1)
{
level.chest_counting++;
self notify( "chest_activated" );
self thread chest_anims();
thread chest_death_fx( last_origin, self_origin, area_radius );
self thread time_out();
}
else if( self.death_count >= 2 && self.death_count <= self.max_count-1 )
{
thread chest_death_fx( last_origin, self_origin, area_radius );
self thread time_out();
}
else if( self.death_count == self.max_count )
{
self.death_count = 9000;
thread chest_death_fx( last_origin, self_origin, area_radius );
level.chest_completed++;
thread progres_check();
self notify( "time_out" );
wait 2;
self notify( "chest_full" );
}
}
time_out()
{
self endon( "chest_kill" );
self endon( "chest_full" );
self endon( "disconnect" );
self.timer = 50; //////////////////////////////// EDIT TIME-OUT TIMER HERE ////////////////////////////////////////////////
while(1)
{
if( self.timer <= 50 && self.timer >= 6 ) //////////////////////////////// AND HERE //////////////////////////////////////////////////
{
self.timer-= 5;
wait 5;
}
else if( self.timer <= 5 )
{
self.timer-= 0.2;
wait 0.2;
if( self.timer <= 0 )
{
self notify( "time_out" );
wait 2;
self notify( "chest_full" );
}
}
}
}
chest_death_fx( last_origin, self_origin, area_radius )
{
soul = Spawn( "script_model", last_origin+( 0,0,50) );
soul setmodel( "tag_origin" );
dist = DistanceSquared( last_origin, self_origin );
radius = area_radius * area_radius;
time = undefined;
if( dist >= radius* 0.66 )
{
time = 1.3;
}
else if( dist <= radius* 0.65 && dist >= radius* 0.33 )
{
time = 1;
}
else if( dist <= radius* 0.32 )
{
time = 0.5;
}
PlayFxOnTag( level._effect["blst_chest_soul"], soul, "tag_origin" );
soul moveto( self_origin+( 0,0,30) , time, 0.5, 0);
wait time;
soul movez( 200, 0.4);
soul playsound( "soul_fly" );
wait 0.4;
soul delete();
}
progres_check()
{
if( level.chest_completed == level.chest_amount )
{
thread soul_chest_reward(); //////// THIS IS WHERE THE REWARD IS GIVEN WHEN ALL CHESTS ARE COMPLETED
level thread maps\_zombiemode_powerups::special_powerup_drop( self.origin );
level.chest_active = false; //// leave this line in here, it deactivates the thread in _zombiemode_spawner
}
}
soul_chest_reward()
{
self endon( "took_gun" );
self endon( "disconnect" );
reward_trigger = getentarray( "soul_chest_reward" , "targetname" );
players = get_players();
for(i=0;i<players.size;i++)
{
players[i].free_ray_gun = false;
reward_trigger[i] enable_trigger();
reward_trigger[i] thread reward_trigger( );
}
}
ray_gun_rotate( ray_gun )
{
self endon( "took_gun" );
self endon( "disconnect" );
while(1)
{
ray_gun rotateyaw( 360 ,1.5 );
wait 1.5;
}
}
reward_trigger( )
{
player = undefined;
ray_gun = Spawn( "script_model", self.origin );
ray_gun.angles = (-30,0,-30);
ray_gun setmodel( "weapon_usa_ray_gun" );
self thread ray_gun_rotate( ray_gun );
playfxontag (level._effect["powerup_on"], ray_gun, "tag_origin");
self setCursorHint("HINT_NOICON");
self UseTriggerRequireLookAt();
self setHintString( "Press and hold &&1 to take your free Ray-Gun." );
while(1)
{
self waittill( "trigger", player );
player.has_gun = false;
player.has_gun_upgr = false;
if( player.free_ray_gun == false)
{
player.free_ray_gun = true;
old_gun = player getcurrentweapon();
weaplist = player GetWeaponsListPrimaries();
for(i=0;i<weaplist.size;i++)
{
if( weaplist[i] == "ray_gun" )
{
player.has_gun = true;
}
else if ( weaplist[i] == "ray_gun_upgraded" )
{
player.has_gun_upgr = true;
}
}
if( player.has_gun == true )
{
player switchtoweapon( "ray_gun" );
player givemaxammo( "ray_gun" );
player playsound( "ammo_pickup" );
self notify( "took_gun" );
ray_gun delete();
self delete();
break;
}
else if( player.has_gun_upgr == true )
{
player switchtoweapon( "ray_gun_upgraded" );
player givemaxammo( "ray_gun_upgraded" );
player playsound( "ammo_pickup" );
self notify( "took_gun" );
ray_gun delete();
self delete();
break;
}
else if( weaplist.size <= 1 )
{
player giveweapon( "ray_gun" );
player switchtoweapon( "ray_gun" );
player playsound( "weap_pickup_plr" );
self notify( "took_gun" );
ray_gun delete();
self delete();
break;
}
else if( weaplist.size >= 2 )
{
player takeweapon( old_gun );
player giveweapon( "ray_gun" );
player switchtoweapon( "ray_gun" );
player playsound( "weap_pickup_plr" );
self notify( "took_gun" );
ray_gun delete();
self delete();
break;
}
}
else if( player.free_ray_gun == true )
{
iprintlnbold( "This one is not for you..!" );
}
wait 0.1;
}
}
![]() | Benevolent Soul who has our eternal gratitude and exclusive access to betas and the donator section of the forum. |
There is no prefab
It's been a while since i made that script, so i'll have to take a quick look at it. I'll post what you need to change in a bit
Double Post Merge: April 06, 2015, 07:03:57 am
Use this script, i have removed the chest-models from this one everything else still works the same. So you just place a trigger_radius and a clip with the correct KVP's and that's it ( just follow the normal tut )
I dont have time to test it now, but if something is not working / throw's an error just post back here... Code SnippetPlaintext#include maps\_utility;
#include common_scripts\utility;
#include maps\_zombiemode_utility;
#include maps\_anim;
PreCache_soul_chest()
{
level._effect["blst_chest_soul"] = loadfx("blst_custom/blst_fx_chest_soul");
}
main()
{
reward_trigger = getentarray( "soul_chest_reward" , "targetname" );
for(i=0;i<reward_trigger.size;i++)
{
reward_trigger[i] disable_trigger();
}
soul_chest_area = getentarray( "soul_chest_area" , "targetname") ;
for(i=0;i<soul_chest_area.size;i++)
{
soul_chest_area[i] thread spawn_initial_model();
}
level.chest_amount = soul_chest_area.size;
level.chest_active = true;
level.chest_completed = 0;
level.chest_counting = 0;
}
spawn_initial_model()
{
self.death_count = 0;
}
chest_anims()
{
///////////////////////////////////////////////////// EDIT AMOUNT OF KILLS NEEDED HERE /////////////////////////////////////////////////////////////////////////////
chest_1_kills = 12;
chest_2_kills = 25;
chest_3_kills = 45;
chest_4_kills = 65;
chest_5_kills = 90;
chest_6_kills = 140;
///////////////////////////////////////////////////// EDIT AMOUNT OF KILLS NEEDED HERE /////////////////////////////////////////////////////////////////////////////
chest_clip = getentarray( "soul_chest_clip" , "targetname" );
self.max_count = undefined;
if( level.chest_completed == 0 )
{
if( level.chest_counting == 1 )
{
self.max_count = chest_1_kills;
}
else if( level.chest_counting == 2 )
{
self.max_count = chest_2_kills;
}
else if( level.chest_counting == 3 )
{
self.max_count = chest_3_kills;
}
else if( level.chest_counting == 4 )
{
self.max_count = chest_4_kills;
}
else if( level.chest_counting == 5 )
{
self.max_count = chest_5_kills;
}
else if( level.chest_counting == 6 )
{
self.max_count = chest_6_kills;
}
}
else if( level.chest_completed >= 1 )
{
if( level.chest_counting + level.chest_completed == 2 )
{
self.max_count = chest_2_kills;
}
if( level.chest_counting + level.chest_completed == 3 )
{
self.max_count = chest_3_kills;
}
if( level.chest_counting + level.chest_completed == 4 )
{
self.max_count = chest_4_kills;
}
if( level.chest_counting + level.chest_completed == 5 )
{
self.max_count = chest_5_kills;
}
if( level.chest_counting + level.chest_completed == 6 )
{
self.max_count = chest_6_kills;
}
}
wait 0.2;
self playsound( "chest_open");
wait 1;
self waittill( "chest_full" );
if( self.max_count == self.death_count || self.death_count >= 9000 )
{
level.chest_counting--;
self playsound( "chest_full") ;
wait 0.3;
self playsound( "chest_full") ;
wait 1;
self playsound( "chest_full2") ;
self playsound( "chest_close_lid" );
for(i=0;i<chest_clip.size;i++)
{
if( self IsTouching( chest_clip[i] ) == true )
{
chest_clip[i] delete();
}
}
wait 1;
self playsound( "chest_full2" );
wait 2.1;
self delete();
self delete();
}
else if( self.max_count < self.death_count )
{
iprintlnbold( "death count exceeded due to timeout" );
}
else if( self.max_count > self.death_count )
{
level.chest_counting--;
self.death_count = -10;
self playsound( "chest_close_lid" );
wait 0.7;
self thread spawn_initial_model();
}
}
chest_death_count( last_origin, area_radius )
{
self notify( "chest_kill" );
self_origin = self.origin;
self.death_count++;
if( self.death_count == -9 || self.death_count >= 9000)
{
self.death_count--;
}
else if( self.death_count == 1)
{
level.chest_counting++;
self notify( "chest_activated" );
self thread chest_anims();
thread chest_death_fx( last_origin, self_origin, area_radius );
self thread time_out();
}
else if( self.death_count >= 2 && self.death_count <= self.max_count-1 )
{
thread chest_death_fx( last_origin, self_origin, area_radius );
self thread time_out();
}
else if( self.death_count == self.max_count )
{
self.death_count = 9000;
thread chest_death_fx( last_origin, self_origin, area_radius );
level.chest_completed++;
thread progres_check();
self notify( "time_out" );
wait 2;
self notify( "chest_full" );
}
}
time_out()
{
self endon( "chest_kill" );
self endon( "chest_full" );
self endon( "disconnect" );
self.timer = 50; //////////////////////////////// EDIT TIME-OUT TIMER HERE ////////////////////////////////////////////////
while(1)
{
if( self.timer <= 50 && self.timer >= 6 ) //////////////////////////////// AND HERE //////////////////////////////////////////////////
{
self.timer-= 5;
wait 5;
}
else if( self.timer <= 5 )
{
self.timer-= 0.2;
wait 0.2;
if( self.timer <= 0 )
{
self notify( "time_out" );
wait 2;
self notify( "chest_full" );
}
}
}
}
chest_death_fx( last_origin, self_origin, area_radius )
{
soul = Spawn( "script_model", last_origin+( 0,0,50) );
soul setmodel( "tag_origin" );
dist = DistanceSquared( last_origin, self_origin );
radius = area_radius * area_radius;
time = undefined;
if( dist >= radius* 0.66 )
{
time = 1.3;
}
else if( dist <= radius* 0.65 && dist >= radius* 0.33 )
{
time = 1;
}
else if( dist <= radius* 0.32 )
{
time = 0.5;
}
PlayFxOnTag( level._effect["blst_chest_soul"], soul, "tag_origin" );
soul moveto( self_origin+( 0,0,30) , time, 0.5, 0);
wait time;
soul movez( 200, 0.4);
soul playsound( "soul_fly" );
wait 0.4;
soul delete();
}
progres_check()
{
if( level.chest_completed == level.chest_amount )
{
thread soul_chest_reward(); //////// THIS IS WHERE THE REWARD IS GIVEN WHEN ALL CHESTS ARE COMPLETED
level thread maps\_zombiemode_powerups::special_powerup_drop( self.origin );
level.chest_active = false; //// leave this line in here, it deactivates the thread in _zombiemode_spawner
}
}
soul_chest_reward()
{
self endon( "took_gun" );
self endon( "disconnect" );
reward_trigger = getentarray( "soul_chest_reward" , "targetname" );
players = get_players();
for(i=0;i<players.size;i++)
{
players[i].free_ray_gun = false;
reward_trigger[i] enable_trigger();
reward_trigger[i] thread reward_trigger( );
}
}
ray_gun_rotate( ray_gun )
{
self endon( "took_gun" );
self endon( "disconnect" );
while(1)
{
ray_gun rotateyaw( 360 ,1.5 );
wait 1.5;
}
}
reward_trigger( )
{
player = undefined;
ray_gun = Spawn( "script_model", self.origin );
ray_gun.angles = (-30,0,-30);
ray_gun setmodel( "weapon_usa_ray_gun" );
self thread ray_gun_rotate( ray_gun );
playfxontag (level._effect["powerup_on"], ray_gun, "tag_origin");
self setCursorHint("HINT_NOICON");
self UseTriggerRequireLookAt();
self setHintString( "Press and hold &&1 to take your free Ray-Gun." );
while(1)
{
self waittill( "trigger", player );
player.has_gun = false;
player.has_gun_upgr = false;
if( player.free_ray_gun == false)
{
player.free_ray_gun = true;
old_gun = player getcurrentweapon();
weaplist = player GetWeaponsListPrimaries();
for(i=0;i<weaplist.size;i++)
{
if( weaplist[i] == "ray_gun" )
{
player.has_gun = true;
}
else if ( weaplist[i] == "ray_gun_upgraded" )
{
player.has_gun_upgr = true;
}
}
if( player.has_gun == true )
{
player switchtoweapon( "ray_gun" );
player givemaxammo( "ray_gun" );
player playsound( "ammo_pickup" );
self notify( "took_gun" );
ray_gun delete();
self delete();
break;
}
else if( player.has_gun_upgr == true )
{
player switchtoweapon( "ray_gun_upgraded" );
player givemaxammo( "ray_gun_upgraded" );
player playsound( "ammo_pickup" );
self notify( "took_gun" );
ray_gun delete();
self delete();
break;
}
else if( weaplist.size <= 1 )
{
player giveweapon( "ray_gun" );
player switchtoweapon( "ray_gun" );
player playsound( "weap_pickup_plr" );
self notify( "took_gun" );
ray_gun delete();
self delete();
break;
}
else if( weaplist.size >= 2 )
{
player takeweapon( old_gun );
player giveweapon( "ray_gun" );
player switchtoweapon( "ray_gun" );
player playsound( "weap_pickup_plr" );
self notify( "took_gun" );
ray_gun delete();
self delete();
break;
}
}
else if( player.free_ray_gun == true )
{
iprintlnbold( "This one is not for you..!" );
}
wait 0.1;
}
}
![]() | Benevolent Soul who has our eternal gratitude and exclusive access to betas and the donator section of the forum. |
![]() UGX V.I.P. | |
![]() | Has released one or more maps to the UGX-Mods community which have been added to the UGX Map Manager. |
![]() BO3 Modtools Alpha | This user has access to the Black Ops 3 Modtools Alpha |
Thanks blunt!![]()
So I did everything like said in the tutorial, replaced the soul chest script with the new one you gave me, but I get this error:
Server script compile error
bad token 'Â'
soul_chest_area = getentarea ( "soul_chest_area" ,
"targetname");Â. Â. Â. Â.
Any thoughts?
Thanks blunt!![]()
Server script compile error
bad token 'Â'
soul_chest_area = getentarea ( "soul_chest_area" ,
"targetname");Â. Â. Â. Â.
Thanks blunt!![]()
So I did everything like said in the tutorial, replaced the soul chest script with the new one you gave me, but I get this error:
Server script compile error
bad token 'Â'
soul_chest_area = getentarea ( "soul_chest_area" ,
"targetname");Â. Â. Â. Â.
Any thoughts?
soul_chest_area = getentarray( "soul_chest_area" , "targetname");
![]() | Benevolent Soul who has our eternal gratitude and exclusive access to betas and the donator section of the forum. |
This happens sometimes if I copy text into a file from my phone then paste into gsc.
In notepad++ double click a space to highlight it and press "ctrl c" , "ctrl f" then click "find and replace" and replace the space with another space made from your keyboard.
Same with the indented lines. double click a indented area and using "ctrl f" then "find and replace" with a new tab(indent).
Removing the space between the declaration and the semi-colon might fix it. Code SnippetPlaintextsoul_chest_area = getentarray( "soul_chest_area" , "targetname");
![]() | Benevolent Soul who has our eternal gratitude and exclusive access to betas and the donator section of the forum. |
Just copy it straight on your computer to a gsc not to another text file.
![]() | Benevolent Soul who has our eternal gratitude and exclusive access to betas and the donator section of the forum. |
![]() | Has shown excellence and experience in the area of custom scripting in the UGX-Mods community. |
![]() Oil Rig Beta Access |
hey guys is there a link to a tut for sole chests As Id Like to try and use them in my map too
Thanks alot
-Tommy
sorry for the questions im still learning and askin is the best thing to do