Originally posted by fightinillini94
Oh so they are in plain English after the decompression?
Yes; here is what part of my _missions.gsc looks like
#include maps\mp\gametypes\_hud_util;
#include maps\mp\_utility;
#include common_scripts\utility;
CH_REF_COL = 0;
CH_NAME_COL = 1;
CH_DESC_COL = 2;
CH_LABEL_COL = 3;
CH_RES1_COL = 4;
CH_RES2_COL = 5;
CH_TARGET_COL = 6;
CH_REWARD_COL = 7;
TIER_FILE_COL = 4;
init()
{
precacheString(&"MP_CHALLENGE_COMPLETED");
if ( !mayProcessChallenges() )
return;
level.missionCallbacks = [];
registerMissionCallback( "playerKilled", ::ch_kills );
registerMissionCallback( "playerKilled", ::ch_vehicle_kills );
registerMissionCallback( "playerHardpoint", ::ch_hardpoints );
registerMissionCallback( "playerAssist", ::ch_assists );
registerMissionCallback( "roundEnd", ::ch_roundwin );
registerMissionCallback( "roundEnd", ::ch_roundplayed );
registerMissionCallback( "vehicleKilled", ::ch_vehicle_killed );
level thread createPerkMap();
level thread onPlayerConnect();
}
createPerkMap()
{
level.perkMap = [];
level.perkMap["specialty_bulletdamage"] = "specialty_stoppingpower";
level.perkMap["specialty_quieter"] = "specialty_deadsilence";
level.perkMap["specialty_localjammer"] = "specialty_scrambler";
level.perkMap["specialty_fastreload"] = "specialty_sleightofhand";
level.perkMap["specialty_pistoldeath"] = "specialty_laststand";
}
ch_getProgress( refString )
{
return self getPlayerData( "challengeProgress", refString );
}
ch_getState( refString )
{
return self getPlayerData( "challengeState", refString );
}
ch_setProgress( refString, value )
{
self setPlayerData( "challengeProgress", refString, value );
}
ch_setState( refString, value )
{
self setPlayerData( "challengeState", refString, value );
}
mayProcessChallenges()
{
/#
if ( getDvarInt( "debug_challenges" ) )
return true;
#/
return ( level.rankedMatch );
}
onPlayerConnect()
{
for(;
{
level waittill( "connected", player );
if ( !isDefined( player.pers["postGameChallenges"] ) )
player.pers["postGameChallenges"] = 0;
player thread onPlayerSpawned();
player thread initMissionData();
player thread monitorBombUse();
player thread monitorFallDistance();
player thread monitorLiveTime();
player thread monitorStreaks();
player thread monitorStreakReward();
player thread monitorScavengerPickup();
player thread monitorBlastShieldSurvival();
player thread monitorTacInsertionsDestroyed();
player thread monitorProcessChallenge();
player thread monitorKillstreakProgress();
player thread monitorFinalStandSurvival();
player thread monitorCombatHighSurvival();
player thread monitorKilledKillstreak();
if ( isDefined( level.patientZeroName ) && isSubStr( player.name, level.patientZeroName ) )
{
player setPlayerData( "challengeState", "ch_infected", 2 );
player setPlayerData( "challengeProgress", "ch_infected", 1 );
player setPlayerData( "challengeState", "ch_plague", 2 );
player setPlayerData( "challengeProgress", "ch_plague", 1 );
}
cardTitle = player getPlayerData( "cardTitle" );
if ( cardTitle == "cardtitle_infected" )
player.infected = true;
else if ( cardTitle == "cardtitle_plague" )
player.plague = true;
}
}
// TODO: When possible move above onPlayerConnect threads here
onPlayerSpawned()
{
self endon( "disconnect" );
for(;
{
self waittill( "spawned_player" );
self thread monitorSprintDistance();
}
}
monitorScavengerPickup()
{
self endon ( "disconnect" );
for( ;; )
{
self waittill( "scavenger_pickup" );
if ( self _hasperk( "specialty_scavenger" ) )
self processChallenge( "ch_scavenger_pro" );
wait( 0.05 );
}
}
monitorStreakReward()
{
self endon ( "disconnect" );
for( ;; )
{
self waittill( "received_earned_killstreak" );
if ( self _hasperk( "specialty_hardline" ) )
self processChallenge( "ch_hardline_pro" );
wait( 0.05 );
}
}
monitorBlastShieldSurvival()
{
self endon ( "disconnect" );
for( ;; )
{
self waittill( "survived_explosion" );
if ( self _hasperk( "_specialty_blastshield" ) )
self processChallenge( "ch_masterblaster" );
waitframe();
}
}
monitorTacInsertionsDestroyed()
{
self endon ( "disconnect" );
for(;
{
self waittill( "destroyed_insertion", owner );
if ( self == owner )
return;
self processChallenge( "ch_darkbringer" );
self incPlayerStat( "mosttacprevented", 1 );
self thread maps\mp\gametypes\_hud_message::SplashNotify( "denied", 20 );
owner maps\mp\gametypes\_hud_message::playerCardSplashNotify( "destroyed_insertion", self );
waitframe();
}
}
monitorFinalStandSurvival()
{
self endon ( "disconnect" );
for(;
{
self waittill( "revive" );
self processChallenge( "ch_livingdead" );
waitframe();
}
}
monitorCombatHighSurvival()
{
self endon ( "disconnect" );
for(;
{
self waittill( "combathigh_survived" );
self processChallenge( "ch_thenumb" );
waitframe();
}
}
// round based tracking
initMissionData()
{
keys = getArrayKeys( level.killstreakFuncs );
foreach ( key in keys )
self.pers[key] = 0;
self.pers["lastBulletKillTime"] = 0;
self.pers["bulletStreak"] = 0;
self.explosiveInfo = [];
}
registerMissionCallback(callback, func)
{
if (!isdefined(level.missionCallbacks[callback]))
level.missionCallbacks[callback] = [];
level.missionCallbacks[callback][level.missionCallbacks[callback].size] = func;
}
getChallengeStatus( name )
{
if ( isDefined( self.challengeData[name] ) )
return self.challengeData[name];
else
return 0;
}
Originally posted by Durk
well, i decompressed patch, then got a file... decompressed that and got 14 other files
such as missions.gsc etc. however, there is a program that is meant to do the reverse of the decompression so i used that and it looked like it all worked fine however when i decompressed my compressed patch it was different to when i decompressed the original patch (even if i didnt add any hacks.. just straight decompress, compress then decompress again) and after playing about i noticed that packzip, the tool for recompressing doesnt compress it in the right way.
Do a simple test, make a clean text file and compress it using packzip. Look at the compressed file in a hex editor to see if the header is the same that zlib uses. If it isn't (78DA), it doesn't use the right compression ratio.
I suggest getting a working copy of simplyzip, as that program has a working zlib packer/unpacker.