Перейти к содержимому
View in the app

A better way to browse. Learn more.

Zloplay community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Опубликовано:

This is a small modification of what i've realesed earlier here: viewtopic.php?f=17&t=7790

It pretty much completely turns the nuke into moab, so that:

- it doesn't end the game

- kills enemy players only

- emps enemies for one minute

- double xp-rate for the team (TDM) / the player which called the nuke (FFA) until the game ends

- multiple call-ins one game are possible

NOTE: It will only change the nuke for gametypes TDM and FFA

 

_nuke.gsc:

#include common_scripts\utility;
#include maps\mp\_utility;

/*
Nuke to MOAB - mod by banz
normal nuke call in -> only enemies die, but game goes on after the nuke exploded, enemy team is emp'd for one minute, double xp-rate for team/player who called the nuke
multiple nuke calls possible in one game
*/

init()
{
precacheItem( "nuke_mp" );
precacheLocationSelector( "map_nuke_selector" );
precacheString( &"MP_TACTICAL_NUKE_CALLED" );
precacheString( &"MP_FRIENDLY_TACTICAL_NUKE" );
precacheString( &"MP_TACTICAL_NUKE" );

level._effect[ "nuke_player" ] = loadfx( "explosions/player_death_nuke" );
level._effect[ "nuke_flash" ] = loadfx( "explosions/player_death_nuke_flash" );
level._effect[ "nuke_aftermath" ] = loadfx( "dust/nuke_aftermath_mp" );

game["strings"]["nuclear_strike"] = &"MP_TACTICAL_NUKE";

level.killstreakFuncs["nuke"] = ::tryUseNuke;

setDvarIfUninitialized( "scr_nukeTimer", 10 );
setDvarIfUninitialized( "scr_nukeCancelMode", 0 );

level.nukeTimer = getDvarInt( "scr_nukeTimer" );
level.cancelMode = getDvarInt( "scr_nukeCancelMode" );


/#
setDevDvarIfUninitialized( "scr_nukeDistance", 5000 );
setDevDvarIfUninitialized( "scr_nukeEndsGame", false );
setDevDvarIfUninitialized( "scr_nukeDebugPosition", false );
#/
}

tryUseNuke( lifeId, allowCancel )
{
if( isDefined( level.nukeIncoming ) )
{
	self iPrintLnBold( &"MP_NUKE_ALREADY_INBOUND" );
	return false;	
}

if ( self isUsingRemote() && ( !isDefined( level.gtnw ) || !level.gtnw ) )
	return false;

if ( !isDefined( allowCancel ) )
	allowCancel = true;

self thread doNuke( allowCancel );
self notify( "used_nuke" );

return true;
}

delaythread_nuke( delay, func )
{
level endon ( "nuke_cancelled" );

wait ( delay );

thread [[ func ]]();
}

doNuke( allowCancel )
{
level endon ( "nuke_cancelled" );

level.nukeInfo = spawnStruct();
level.nukeInfo.player = self;
level.nukeInfo.team = self.pers["team"];

level.nukeIncoming = true;

maps\mp\gametypes\_gamelogic::pauseTimer();
level.timeLimitOverride = true;
setGameEndTime( int( gettime() + (level.nukeTimer * 1000) ) );
setDvar( "ui_bomb_timer", 4 ); // Nuke sets '4' to avoid briefcase icon showing

if ( level.teambased )
{
	thread teamPlayerCardSplash( "used_nuke", self, self.team );
	/*
	players = level.players;

	foreach( player in level.players )
	{
		playerteam = player.pers["team"];
		if ( isdefined( playerteam ) )
		{
			if ( playerteam == self.pers["team"] )
				player iprintln( &"MP_TACTICAL_NUKE_CALLED", self );
		}
	}
	*/
}
else
{
	if ( !level.hardcoreMode )
		self iprintlnbold(&"MP_FRIENDLY_TACTICAL_NUKE");
}

level thread delaythread_nuke( (level.nukeTimer - 3.3), ::nukeSoundIncoming );
level thread delaythread_nuke( level.nukeTimer, ::nukeSoundExplosion );
level thread delaythread_nuke( level.nukeTimer, ::nukeSlowMo );
level thread delaythread_nuke( level.nukeTimer, ::nukeEffects );
level thread delaythread_nuke( (level.nukeTimer + 0.25), ::nukeVision );
level thread delaythread_nuke( (level.nukeTimer + 1.5), ::nukeDeath );
level thread delaythread_nuke( (level.nukeTimer + 1.5), ::nukeEarthquake );
level thread nukeAftermathEffect();

if ( level.cancelMode && allowCancel )
	level thread cancelNukeOnDeath( self ); 

// leaks if lots of nukes are called due to endon above.
clockObject = spawn( "script_origin", (0,0,0) );
clockObject hide();

while ( !isDefined( level.nukeDetonated ) )
{
	clockObject playSound( "ui_mp_nukebomb_timer" );
	wait( 1.0 );
}
}

cancelNukeOnDeath( player )
{
player waittill_any( "death", "disconnect" );

if ( isDefined( player ) && level.cancelMode == 2 )
	player thread maps\mp\killstreaks\_emp::EMP_Use( 0, 0 );


maps\mp\gametypes\_gamelogic::resumeTimer();
level.timeLimitOverride = false;

setDvar( "ui_bomb_timer", 0 ); // Nuke sets '4' to avoid briefcase icon showing

level notify ( "nuke_cancelled" );
}

nukeSoundIncoming()
{
level endon ( "nuke_cancelled" );

foreach( player in level.players )
	player playlocalsound( "nuke_incoming" );
}

nukeSoundExplosion()
{
level endon ( "nuke_cancelled" );

foreach( player in level.players )
{
	player playlocalsound( "nuke_explosion" );
	player playlocalsound( "nuke_wave" );
}
}

nukeEffects()
{
level endon ( "nuke_cancelled" );

setDvar( "ui_bomb_timer", 0 );

//set timer to 0 if not TDM/FFA
if( level.gameType != "war" && level.gameType != "dm" )
	setGameEndTime( 0 );

level.nukeDetonated = true;
level maps\mp\killstreaks\_emp::destroyActiveVehicles( level.nukeInfo.player );

foreach( player in level.players )
{
	playerForward = anglestoforward( player.angles );
	playerForward = ( playerForward[0], playerForward[1], 0 );
	playerForward = VectorNormalize( playerForward );

	nukeDistance = 5000;
	/# nukeDistance = getDvarInt( "scr_nukeDistance" );	#/

	nukeEnt = Spawn( "script_model", player.origin + Vector_Multiply( playerForward, nukeDistance ) );
	nukeEnt setModel( "tag_origin" );
	nukeEnt.angles = ( 0, (player.angles[1] + 180), 90 );

	/#
	if ( getDvarInt( "scr_nukeDebugPosition" ) )
	{
		lineTop = ( nukeEnt.origin[0], nukeEnt.origin[1], (nukeEnt.origin[2] + 500) );
		thread draw_line_for_time( nukeEnt.origin, lineTop, 1, 0, 0, 10 );
	}
	#/

	nukeEnt thread nukeEffect( player );
	player.nuked = true;
}
}

nukeEffect( player )
{
level endon ( "nuke_cancelled" );

player endon( "disconnect" );

waitframe();
PlayFXOnTagForClients( level._effect[ "nuke_flash" ], self, "tag_origin", player );
}

nukeAftermathEffect()
{
level endon ( "nuke_cancelled" );

level waittill ( "spawning_intermission" );

afermathEnt = getEntArray( "mp_global_intermission", "classname" );
afermathEnt = afermathEnt[0];
up = anglestoup( afermathEnt.angles );
right = anglestoright( afermathEnt.angles );

PlayFX( level._effect[ "nuke_aftermath" ], afermathEnt.origin, up, right );
}

nukeSlowMo()
{
level endon ( "nuke_cancelled" );

//SetSlowMotion( , ,  )
setSlowMotion( 1.0, 0.25, 0.5 );
level waittill( "nuke_death" );
setSlowMotion( 0.25, 1, 2.0 );
}

nukeVision()
{
level endon ( "nuke_cancelled" );

level.nukeVisionInProgress = true;
visionSetNaked( "mpnuke", 3 );

level waittill( "nuke_death" );

visionSetNaked( "mpnuke_aftermath", 5 );


if( level.gameType != "war" && level.gameType != "dm" ) {
	wait 5;
	level.nukeVisionInProgress = undefined;
}
else {	

wait 3.5; 
//reset nuke vision
visionSetNaked( getDvar( "mapname" ), 2.0 );

//allow next nuke to be called in, reset nuke variables
level.nukeIncoming = undefined;
level.nukeDetonated = undefined;
level.nukeVisionInProgress = undefined;


//enable timer again
maps\mp\gametypes\_gamelogic::resumeTimer();
level.timeLimitOverride = false;
setDvar( "ui_bomb_timer", 0 ); // Nuke sets '4' to avoid briefcase icon showing


//reset nuked variable to be able to call ac130, predator missile ect. in
foreach( player in level.players ) {
	player.nuked = undefined;
	//emp enemies
	if( level.nukeInfo.player == player )
		player thread maps\mp\killstreaks\_emp::EMP_Use( 0, 0 );

	//double xp
	if( level.nukeInfo.team == player.pers["team"] && level.gameType == "war" )
		player.xpScaler = 2;	

	if( level.nukeInfo.player == player && level.gameType == "dm"  )	
		player.xpScaler = 2;
}


level notify ( "nuke_cancelled" );
}
}

nukeDeath()
{
level endon ( "nuke_cancelled" );

level notify( "nuke_death" );

maps\mp\gametypes\_hostmigration::waitTillHostMigrationDone();

AmbientStop(1);

foreach( player in level.players )
{
	//avoid that friendly players are killed
	if ( level.gameType == "war" && level.nukeInfo.team == player.pers["team"] )
		continue;

	//avoid that self gets killed
	if ( level.gameType == "dm" && level.nukeInfo.player == player )
		continue;	

	//kill others (enemies)
	if ( isAlive( player ) ) 
		player thread maps\mp\gametypes\_damage::finishPlayerDamageWrapper( level.nukeInfo.player, level.nukeInfo.player, 999999, 0, "MOD_EXPLOSIVE", "nuke_mp", player.origin, player.origin, "none", 0, 0 );

}

if( level.gameType != "war" && level.gameType != "dm" ) {
	nukeEndsGame = true;
	level.postRoundTime = 10;
}
else
	nukeEndsGame = false;

//block nuke from ending the game in TDM and FFA
if( level.gameType != "war" && level.gameType != "dm" ) {
	if ( level.teamBased )
		thread maps\mp\gametypes\_gamelogic::endGame( level.nukeInfo.team, game["strings"]["nuclear_strike"], true );
	else
	{
		if ( isDefined( level.nukeInfo.player ) )
			thread maps\mp\gametypes\_gamelogic::endGame( level.nukeInfo.player, game["strings"]["nuclear_strike"], true );
		else
			thread maps\mp\gametypes\_gamelogic::endGame( level.nukeInfo, game["strings"]["nuclear_strike"], true );
	} 
}
}

nukeEarthquake()
{
level endon ( "nuke_cancelled" );

level waittill( "nuke_death" );

// TODO: need to get a different position to call this on
//earthquake( 0.6, 10, nukepos, 100000 );

//foreach( player in level.players )
	//player PlayRumbleOnEntity( "damage_heavy" );
}


waitForNukeCancel()
{
self waittill( "cancel_location" );
self setblurforplayer( 0, 0.3 );
}

endSelectionOn( waitfor )
{
self endon( "stop_location_selection" );
self waittill( waitfor );
self thread stopNukeLocationSelection( (waitfor == "disconnect") );
}

endSelectionOnGameEnd()
{
self endon( "stop_location_selection" );
level waittill( "game_ended" );
self thread stopNukeLocationSelection( false );
}

stopNukeLocationSelection( disconnected )
{
if ( !disconnected )
{
	self setblurforplayer( 0, 0.3 );
	self endLocationSelection();
	self.selectingLocation = undefined;
}
self notify( "stop_location_selection" );
}

 

Video:

 

virustotal: https://www.virustotal.com/file/ea16640 ... 351530942/

 

credits: me (banz)

 

Ready to go .iwd:

Опубликовано:

Niceee :shock:

  • 1 month later...
Опубликовано:

How do you install the file, and/or where do you put it when you download? Sorry, I am technology-illiterate. O_O

Опубликовано:
How do you install the file, and/or where do you put it when you download? Sorry, I am technology-illiterate. O_O

dat_bump

 

Well download the file and move it into your mods folder. (Only work with servers)

Опубликовано:

NOTE: It will only change the nuke for gametypes TDM and FFA

 

Is it possible to make it so it works for SND to?

Like i put it on snd to try it and sometimes it does a nuke and sometimes it does the moab

 

 

 

 

 

 

 

p.s i get this error when i try use [.quote] "You are not allowed to post any URLs yet. If you need to display a screenshot, try uploading it as attachment."

Опубликовано:

how do i install that on four delta one ?

Опубликовано:

If you want, you can take the nuke.gsc file from my Specialist Mod. It's better in that there's no post-blast EMP animation, and the MOAB color filter is exactly like how it is in MW3. I see you used the original nuke color filter, which isn't good to use, as it makes some parts of maps too dark to see, since the contrast level is too high. The other advantage to my MOAB script is that it works for all gametypes.

Опубликовано:
  • Автор
If you want, you can take the nuke.gsc file from my Specialist Mod. It's better in that there's no post-blast EMP animation, and the MOAB color filter is exactly like how it is in IW5. I see you used the original nuke color filter, which isn't good to use, as it makes some parts of maps too dark to see, since the contrast level is too high. The other advantage to my MOAB script is that it works for all gametypes.

 

Haven't added moab for all gametypes (i guess i should've for the other 'non round-based' gametypes), as i don't really see people getting one in round-based gametypes. Seems to be quite hard to get in SnD and such, anyway might add that if requested.

 

About the nuke 'filter': I don't really see a problem there, as i reset the vision to 'normal' after about 14 seconds.

I've tested your _nuke.gsc and it turns out that you don't reset some of the nuke variables, which get set when the nuke comes in. (e.g. player.nuked = true;)

That's the reason why you can't call in any chopper gunners / ac130's after one nuke was called in, in your specialist mod.

Опубликовано:
Nice. I seen one that took the same style, and it has a kill counter (kills to MOAB), and when you dropped your MOAB (kills only enemies), the counter changes to "kills to double MOAB" etc..

 

Nice that you remind our Server :)

lxe-clan.de:28961

LxE' Antinoob Server with Quad MOAB

example.php

 

and btw i made my MOAB mod myself!

Опубликовано:
Nice. I seen one that took the same style, and it has a kill counter (kills to MOAB), and when you dropped your MOAB (kills only enemies), the counter changes to "kills to double MOAB" etc..

 

Nice that you remind our Server :)

lxe-clan.de:28961

LxE' Antinoob Server with Quad MOAB

example.php

 

and btw i made my MOAB mod myself!

what's so hard about disabling team kill and end game?

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу

Важная информация

Используя этот сайт, вы соглашаетесь Условия использования.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.