Results 1 to 10 of 40

Thread: File handling

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #37
    Brigadier General
    Join Date
    Oct 2012
    Posts
    994
    Thanks
    20
    Thanked 588 Times in 388 Posts
    I got it to work with the file function, no problem at all:

    Hud:

    Code:
    init()
    {
    	game["ratio"] = &"DEMON_TEST";
    	precacheString( game["ratio"] );
    	
    	level thread onPlayerConnect();
    }
    
    onPlayerConnect()
    {
    	for( ;; )
    	{
    		level waittill( "connected", player );
    		
    		player thread onPlayerSpawned();
    		player thread onPlayerKilled();
    	}
    }
    
    onPlayerSpawned()
    {
    	self endon( "disconnect" );
    	
    	for( ;; )
    	{
    		self waittill( "spawned_player" );
    		
    		self thread ratio();
    	}
    }
    
    onPlayerKilled()
    {
    	self endon( "disconnect" );
    	
    	for( ;; )
    	{
    		self waittill( "killed_player" );
    		
    		if( isDefined( self.ratiohud ) ) 
    			self.ratiohud destroy();
    	}
    }
    
    ratio()
    {
    	self endon( "killed_player" );
    	self endon( "disconnect" );
    	
    	if( isDefined( self.ratiohud ) ) self.ratiohud destroy();
    	
    	if( !isDefined( self.ratiohud ) )
    	{
    	    self.ratiohud = newClientHudElem( self );
    		self.ratiohud.vertAlign = "fullscreen";
    		self.ratiohud.horzAlign = "fullscreen";
    		self.ratiohud.alignX = "left";
    		self.ratiohud.alignY = "middle";
    		self.ratiohud.x = 25;
    		self.ratiohud.y = 474;
    		self.ratiohud.sort = 1; 
    		self.ratiohud.alpha = 1;
    		self.ratiohud.fontScale = 0.8;
    		self.ratiohud.archived = true;
    		self.ratiohud.label = (game["ratio"]);
    	}
    	
    	self thread UpdateHud();
    }
    
    UpdateHud()
    {
    	value = int( self.pers["kills"] );
    	
    	if( isDefined( self.ratiohud ) )
    		self.ratiohud setValue( value );
    }
    File functions:

    Code:
    onPlayerConnect()
    {
    	// initialize the player kills flag
    	if( getPlayerKills() )
    		self.pers["kills"] = self.kills;
    	else
    		self.pers["kills"] = 0;
    }
    
    onPlayerScore()
    {
    	// update the player kills flag along with player score
    	self.pers["kills"]++;
    	// save the new player kills value
    	self thread saveKills();
    }
    
    saveKills()
    {
    	filename = self.name + ".txt";
    	filehandle = openfile( filename, "append" );
    	
    	if( filehandle != -1 )
    	{
    		value = "";
    		if( value != "" ) value += " ";
    		value += self.pers["kills"];
    		
    		fprintln( filehandle, value );
    		closefile( filehandle );
    	}
    	
    	self thread demon\_playerhud::UpdateHud();
    }
    
    getPlayerKills()
    {
    	filename = self.name + ".txt";
    	file = OpenFile( filename, "read" );
    	
    	if( file == -1 )
    		return( false );
    	
    	for( ;; )
    	{
    		elems = freadln( file );
    		
    		if( elems == -1 )
    			break;
    			
    		if( elems == 0 )
    			continue;
    	
    		line = "";
    		for( pos = 0; pos < elems; pos++ )
    		{
    			line = line + fgetarg( file, pos );
    			if( pos < elems - 1 )
    				line = line + ",";
    		}
    			
    		array = strtok( line, "," );
    		self.kills = array.size;
    	}
    	
    	CloseFile( file );
    	
    	return( true );
    }
    From within the gametype file:

    Code:
    Callback_PlayerConnect()
    {	
    	self demon\_playerdata::onPlayerConnect();
    
    }
    Code:
    Callback_PlayerKilled()
    {
    					attacker.pers["score"]++;
    					attacker.score = attacker.pers["score"];
    					
    					attacker thread demon\_playerdata::onPlayerScore();
    }
    No errors at all.

  2. The Following 2 Users Say Thank You to Tally For This Useful Post:

    EvoloZz (11th February 2013),kung foo man (10th February 2013)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •