Commands in general, Gungame modification
Featured Replies
Сейчас на странице 0
- Нет пользователей, просматривающих эту страницу
A better way to browse. Learn more.
A full-screen app on your home screen with push notifications, badges and more.
Используя этот сайт, вы соглашаетесь Условия использования.
Hi,
since the original Gungame is pretty short, i modded it a little bit, now i have a couple of questions:
1. How can i compare or find out the level / tier / score of the player i killed ?
2. How can i check the score of any other player ( i would like players who join late, to skip a couple of levels, depending on the average score )
3. Level 46 is suposed to be Intervention with just one Bullet in the chamber, any sugestions why this wont work?
4. Any cool sugestions for unusual weapons or kills?
You can view my code below.
#include common_scripts\utility; #include maps\mp\_utility; #include maps\mp\gametypes\_hud_util; /* Gun Game Objective: Progress through all weapon tiers by killing enemy players Map ends: When a player progresses through all weapon tiers Respawning: No wait / Away from other players Level requirements ------------------ Spawnpoints: classname mp_dm_spawn All players spawn from these. The spawnpoint chosen is dependent on the current locations of enemies at the time of spawn. Players generally spawn away from enemies. Spectator Spawnpoints: classname mp_global_intermission Spectators spawn from these and intermission is viewed from these positions. Atleast one is required, any more and they are randomly chosen between. */ /*QUAKED mp_dm_spawn (1.0 0.5 0.0) (-16 -16 0) (16 16 72) Players spawn away from enemies at one of these positions.*/ main() { maps\mp\gametypes\_globallogic::init(); maps\mp\gametypes\_callbacksetup::SetupCallbacks(); maps\mp\gametypes\_globallogic::SetupCallbacks(); registerTimeLimitDvar( level.gameType, 0, 0, 1440 ); registerScoreLimitDvar( level.gameType, 0, 0, 5000 ); registerWinLimitDvar( level.gameType, 1, 0, 5000 ); registerRoundLimitDvar( level.gameType, 1, 0, 10 ); registerNumLivesDvar( level.gameType, 0, 0, 10 ); registerHalfTimeDvar( level.gameType, 0, 0, 1 ); level.onPrecacheGameType = ::onPrecacheGameType; level.onStartGameType = ::onStartGameType; level.getSpawnPoint = ::getSpawnPoint; setDvar("sv_cheats", 1); setDvar("scr_game_allowkillcam", 1); setDvar("scr_game_hardpoints", 0); setDvar("scr_game_matchstarttime", 5); setDvar("ui_showEndOfGame", 1); setDvar("g_hardcore", 1); setDvar("cg_drawCrosshair", 1); setDvar("scr_dm_scorelimit", 0); setDvar("sv_cheats", 0); game["dialog"]["gametype"] = "gg"; if ( getDvarInt( "camera_thirdPerson" ) ) game["dialog"]["gametype"] = "thirdp_" + game["dialog"]["gametype"]; else if ( getDvarInt( "scr_diehard" ) ) game["dialog"]["gametype"] = "dh_" + game["dialog"]["gametype"]; else if (getDvarInt( "scr_" + level.gameType + "_promode" ) ) game["dialog"]["gametype"] = game["dialog"]["gametype"] + "_pro"; level thread onPlayerConnect(); } onPlayerConnect() { for ( ;; ) { level waittill( "connected", player ); player thread doConnect(); player thread onJoinedTeam(); } } onJoinedTeam() { self endon("disconnect"); for(; { self waittill( "joined_team" ); self thread onPlayerSpawned(); } } onPlayerSpawned() { self endon("disconnect"); for(; { self waittill("spawned_player"); wait 0.01; self thread doSpawn(); } } onPrecacheGameType() { precacheShader("cardtitle_bloodsplat"); precacheShader("hud_icon_wager"); } onStartGameType() { setClientNameMode("auto_change"); setObjectiveText( "allies", &"OBJECTIVES_DM" ); setObjectiveText( "axis", &"OBJECTIVES_DM" ); if ( level.splitscreen ) { setObjectiveScoreText( "allies", &"OBJECTIVES_DM" ); setObjectiveScoreText( "axis", &"OBJECTIVES_DM" ); } else { setObjectiveScoreText( "allies", &"OBJECTIVES_DM_SCORE" ); setObjectiveScoreText( "axis", &"OBJECTIVES_DM_SCORE" ); } setObjectiveHintText( "allies", &"OBJECTIVES_DM_HINT" ); setObjectiveHintText( "axis", &"OBJECTIVES_DM_HINT" ); level.spawnMins = ( 0, 0, 0 ); level.spawnMaxs = ( 0, 0, 0 ); maps\mp\gametypes\_spawnlogic::addSpawnPoints( "allies", "mp_dm_spawn" ); maps\mp\gametypes\_spawnlogic::addSpawnPoints( "axis", "mp_dm_spawn" ); level.mapCenter = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs ); setMapCenter( level.mapCenter ); allowed[0] = "dm"; maps\mp\gametypes\_gameobjects::main(allowed); maps\mp\gametypes\_rank::registerScoreInfo( "kill", 50 ); maps\mp\gametypes\_rank::registerScoreInfo( "headshot", 50 ); maps\mp\gametypes\_rank::registerScoreInfo( "assist", 10 ); maps\mp\gametypes\_rank::registerScoreInfo( "suicide", 0 ); maps\mp\gametypes\_rank::registerScoreInfo( "teamkill", 0 ); level.ggended = false; level thread registerWeapons(); level.highestRank = []; level.scores = []; level thread doRanking(); level.QuickMessageToAll = true; } getSpawnPoint() { spawnPoints = maps\mp\gametypes\_spawnlogic::getTeamSpawnPoints( self.pers["team"] ); spawnPoint = maps\mp\gametypes\_spawnlogic::getSpawnpoint_DM( spawnPoints ); return spawnPoint; } doConnect() { self closepopupMenu(); self closeInGameMenu(); self notify("menuresponse", "changeclass", "class1"); self thread maps\mp\gametypes\_bohud::createIcons(self); self.tier = 1; wait 1.0; self thread monitorPos(); } doSpawn() { self.score = self.tier; foreach (player in level.players) { player UpdateDMScores(); } self.aliveText.alpha = 0; self.ggspawn = true; self takeAllWeapons(); self.scoreText setText("Weapon Tier: " + self.tier + " von 47"); if ( self.tier == 2 || self.tier == 8 ) { self giveWeapon(level.weaponList[self.tier], 0, true); } else { self giveWeapon(level.weaponList[self.tier], 0, false); } self giveMaxAmmo(level.weaponList[self.tier]); wait 0.2; if ( self.tier == 46 ) { self takeAllWeapons(); self giveWeapon(level.weaponList[self.tier], 0, false); self setWeaponAmmoClip( level.weaponList[self.tier], 1 ); self setWeaponAmmoStock( level.weaponList[self.tier], 0 ); wait 0.1; } self switchToWeapon(level.weaponList[self.tier]); self _clearPerks(); self maps\mp\perks\_perks::givePerk("specialty_extendedmelee "); self maps\mp\perks\_perks::givePerk("specialty_fastreload"); self maps\mp\perks\_perks::givePerk("specialty_lightweight"); self.notifying = false; self setClientDvar("g_compassShowEnemies", 1); self thread monitorAmmo(); self thread monitorAmmo2(); self thread monitorKnives2(); self thread monitorKnives5(); self thread monitorKnives15(); self thread sillyWeaponCheck(); } monitorAmmo() { self endon("death"); self endon("disconnect"); while(1 && self.tier != 46) { self thread updateHUDAmmo(); wait 0.3; } } monitorKnives2() { self endon("disconnect"); self endon("death"); while(1) { if ( self.tier == 7 ) { wait 2; self giveMaxAmmo(level.weaponList[self.tier]); } wait 0.01; } } monitorKnives5() { self endon("disconnect"); self endon("death"); while(1) { if ( self.tier == 32 || self.tier == 42 || self.tier == 43) { wait 5; self giveMaxAmmo(level.weaponList[self.tier]); } wait 0.01; } } monitorKnives15() { self endon("disconnect"); self endon("death"); while(1) { if ( self.tier == 47 ) { wait 15; self giveMaxAmmo(level.weaponList[self.tier]); } wait 0.01; } } monitorAmmo2() { self endon("death"); self endon("disconnect"); while(1 && self.tier != 46) { self waittill("weapon_fired"); self thread updateHUDAmmo(); wait 0.01; } } monitorPos() { self endon("disconnect"); while(1) { self waittill("sentStats"); for(i = 1; i < level.finalRanking.size + 1; i++) { if(level.finalRanking[i].name == self.name) { self.rankText setText( i ); self.rankShadow setText( "^0" + i ); self.rankShadow2 setText( "^0" + i ); } } wait 0.05; } } updateHUDAmmo() { while(1 && self.tier != 46) { if ( self.tier == 2 || self.tier == 8 ) { self.ammoClip2.alpha = 1.0; self.ammoSep.alpha = 0.35; self.ammoClip1 setText(self GetWeaponAmmoClip( self getCurrentWeapon(), "right" )); self.ammoClip2 setText(self GetWeaponAmmoClip( self getCurrentWeapon(), "left" )); self.ammoStock setText(self getWeaponAmmoStock( self getCurrentWeapon() )); } else { self.ammoClip2.alpha = 0; self.ammoSep.alpha = 0; self.ammoClip1 setText(self GetWeaponAmmoClip( self getCurrentWeapon() )); self.ammoStock setText(self getWeaponAmmoStock( self getCurrentWeapon() )); } } } registerWeapons() { level.weaponList = []; //Pistols level.weaponList[1] = "glock_eotech_mp"; level.weaponList[2] = "beretta_akimbo_mp"; level.weaponList[3] = "coltanaconda_fmj_mp"; //Shotguns level.weaponList[4] = "aa12_mp"; level.weaponList[5] = "spas12_mp"; level.weaponList[6] = "m1014_mp"; level.weaponList[7] = "throwingknife_mp"; //Uzis level.weaponList[8] = "tmp_akimbo_mp"; level.weaponList[9] = "mp5k_mp"; level.weaponList[10] = "pp2000_reflex_silencer_mp"; level.weaponList[11] = "kriss_acog_mp"; level.weaponList[12] = "p90_silencer_mp"; //ARs level.weaponList[13] = "scar_mp"; level.weaponList[14] = "m16_eotech_mp"; level.weaponList[15] = "m4_eotech_mp"; level.weaponList[16] = "fn2000_acog_silencer_mp"; level.weaponList[17] = "masada_reflex_silencer_mp"; level.weaponList[18] = "famas_acog_mp"; level.weaponList[19] = "tavor_mp"; //Launcher level.weaponList[20] = "at4_mp"; level.weaponList[21] = "m79_mp"; //MG level.weaponList[22] = "sa80_acog_grip_mp"; level.weaponList[23] = "aug_eotech_grip_mp"; level.weaponList[24] = "m240_mp"; level.weaponList[25] = "rpd_silencer_mp"; //Snip level.weaponList[26] = "cheytac_mp"; level.weaponList[27] = "barrett_mp"; level.weaponList[28] = "wa2000_mp"; //Pistols Round 2 level.weaponList[29] = "fal_eotech_silencer_mp"; level.weaponList[30] = "mg4_grip_reflex_mp"; //Shotguns Round 2 level.weaponList[31] = "spas12_mp"; level.weaponList[32] = "throwingknife_mp"; level.weaponList[33] = "model1887_mp"; //Sniper Round 2 level.weaponList[34] = "m21_acog_mp"; level.weaponList[35] = "barrett_acog_mp"; level.weaponList[36] = "cheytac_acog_fmj_mp"; level.weaponList[37] = "ak47_mp"; level.weaponList[38] = "ump45_acog_silencer_mp"; level.weaponList[39] = "beretta393_reflex_silencer_mp"; //PreFinal level.weaponList[40] = "beretta_mp"; level.weaponList[41] = "usp_mp"; level.weaponList[42] = "c4_mp"; level.weaponList[43] = "frag_grenade_mp"; level.weaponList[44] = "deserteaglegold_mp"; level.weaponList[45] = "at4_mp"; level.weaponList[46] = "cheytac_acog_fmj_mp"; //Final level.weaponList[47] = "throwingknife_mp"; } sillyWeaponCheck() { self endon("death"); self endon("disconnect"); while(1) { if ( self getCurrentWeapon() != level.weaponList[self.tier] ) { self takeAllWeapons(); if ( self.tier == 2 || self.tier == 8 ) { self giveWeapon(level.weaponList[self.tier], 0, true); } else { self giveWeapon(level.weaponList[self.tier], 0, false); } self giveMaxAmmo(level.weaponList[self.tier]); wait 0.2; self switchToWeapon(level.weaponList[self.tier]); } wait 0.1; } } killedEnemy( means ) { if ( means == "MOD_MELEE" ) { self thread maps\mp\gametypes\_bohud::noticeAnim("Humiliation", "Demoted enemy!"); if ( self.tier <= 35 ) { self.tier += 3; self playLocalSound("mp_level_up"); wait 0.25; self takeAllWeapons(); if ( self.tier == 2 || self.tier == 8 ) { self.scoreText setText("Weapon Tier: " + self.tier + " of 47"); self giveWeapon(level.weaponList[self.tier], 0, true); self maps\mp\perks\_perks::givePerk("specialty_extendedmelee "); self maps\mp\perks\_perks::givePerk("specialty_fastreload"); self maps\mp\perks\_perks::givePerk("specialty_lightweight"); } else { self.scoreText setText("Weapon Tier: " + self.tier + " of 47"); self giveWeapon(level.weaponList[self.tier], 0, false); self maps\mp\perks\_perks::givePerk("specialty_extendedmelee "); self maps\mp\perks\_perks::givePerk("specialty_fastreload"); self maps\mp\perks\_perks::givePerk("specialty_lightweight"); } self giveMaxAmmo(level.weaponList[self.tier]); wait 0.2; if ( self.tier == 46 ) { self takeAllWeapons(); self giveWeapon(level.weaponList[self.tier], 0, false); self setWeaponAmmoClip( level.weaponList[self.tier], 1 ); self setWeaponAmmoStock( level.weaponList[self.tier], 0 ); } self switchToWeapon(level.weaponList[self.tier]); } } else { if ( self.tier == 47) { level.ggended = true; self thread endGameFinal(); } else { self.tier += 1; self thread maps\mp\gametypes\_bohud::noticeAnim("Player Killed", "Advanced to next tier!"); self.scoreText setText("Weapon Tier: " + self.tier + " of 47"); wait 0.25; self takeAllWeapons(); if ( self.tier == 2 || self.tier == 8 ) { self giveWeapon(level.weaponList[self.tier], 0, true); self maps\mp\perks\_perks::givePerk("specialty_extendedmelee "); self maps\mp\perks\_perks::givePerk("specialty_fastreload"); self maps\mp\perks\_perks::givePerk("specialty_lightweight"); } else { self giveWeapon(level.weaponList[self.tier], 0, false); self maps\mp\perks\_perks::givePerk("specialty_extendedmelee "); self maps\mp\perks\_perks::givePerk("specialty_fastreload"); self maps\mp\perks\_perks::givePerk("specialty_lightweight"); } self giveMaxAmmo(level.weaponList[self.tier]); if ( self.tier == 46 ) { self takeAllWeapons(); self giveWeapon(level.weaponList[self.tier], 0, false); self setWeaponAmmoClip( level.weaponList[self.tier], 1 ); self setWeaponAmmoStock( level.weaponList[self.tier], 0 ); } wait 0.2; self switchToWeapon(level.weaponList[self.tier]); } } } endGameFinal() { self thread doRanking(); self notify("gameEnded"); self thread maps\mp\gametypes\_gamelogic::endGame(level.finalRanking[1], "", false); } gotKilled( means, suicide ) { if ( means == "MOD_MELEE" && self.tier > 1 ) { self thread maps\mp\gametypes\_bohud::noticeAnim("Humiliated", "Demoted!"); self.tier -= 2; if ( self.tier <= 1) { self.tier = 1; } self.scoreText setText("Weapon Tier: " + self.tier + " of 47"); self.score = self.tier; foreach (player in level.players) { player UpdateDMScores(); } } if ( suicide && self.tier > 1 ) { self.tier -= 1; self.scoreText setText("Weapon Tier: " + self.tier + " of 47"); self.score = self.tier; foreach (player in level.players) { player UpdateDMScores(); } } } addPlayer(rplayer, score) { player = spawnstruct(); player.player = rplayer; player.score = score; return player; } sortScore(array, start, end) { i = start; k = end; if (end - start >= 1) { pivot = array[start].score; while (k > i) { while (array[i].score <= pivot && i <= end && k > i) i++; while (array[k].score > pivot && k >= start && k >= i) k--; if (k > i) array = swapArr(array, i, k); } array = swapArr(array, start, k); array = sortScore(array, start, k - 1); array = sortScore(array, k + 1, end); } else return array; return array; } swapArr(array, index1, index2) { temp = array[index1]; array[index1] = array[index2]; array[index2] = temp; return array; } doRanking() { self endon("disconnect"); self endon("gameEnded"); while(1) { level.scores = []; level.preFinalRanking = []; level.finalRanking = []; i = 0; h = 1; tplayer = false; exists = false; foreach ( player in level.players ) { level.scores[i] = addPlayer(player, player.tier); i += 1; } level.preFinalRanking = self thread sortScore(level.scores, 0, level.scores.size); for(e = level.preFinalRanking.size - 1; e > -1; e--) { level.finalRanking[h] = level.preFinalRanking[e].player; h += 1; } foreach( player in level.players ) { player notify("sentStats"); } wait 1.0; } }