SA-MP Forums

Go Back   SA-MP Forums > SA-MP Server > Server Support

Closed Thread
 
Thread Tools Display Modes
Old 24/03/2010, 01:11 AM   #1
Kalcor
SA-MP Developer
 
Join Date: Apr 2005
Location: 846
Posts: 850
Reputation: 2617
Default Server update: 0.3a R8

SA-MP 0.3a R8 Server

22/06/2010

- 0.3a R8 server fixes a denial of service attack where an external program interfacing with SA-MP's network layer could send a misaligned payload to RPCs.

Windows: http://files.sa-mp.com/samp03asvr_R8_win32.zip
Linux: http://files.sa-mp.com/samp03asvr_R8.tar.gz

SA-MP 0.3a R7 Server

28/03/2010

Windows: http://files.sa-mp.com/samp03asvr_R7_win32.zip
Linux: http://files.sa-mp.com/samp03asvr_R7.tar.gz

Changes from R6 server:

- There was a problem with the PVar list after DeletePVar() had been used (thanks to Toribio for pointing this out).
- PVar names use uppercase internally which speeds up the lookups. When you enumerate PVars the name will always be returned in uppercase. You can still use any case for getting/setting.

SA-MP 0.3a R6 Server

27/03/2010

Changes from R5 server:

- PVar names use exact names instead of partial matching, they're case-insensitive still ("id" is the same as "ID").
- PVars are now reset during a game mode restart.
- Hopefully fixed crash on Windows server related to a compiler problem.
- Vehicle mods sent by players have additional sanity checks (thanks to Tenshi for pointing out a problem).

SA-MP 0.3a R5 Server

23/03/2010

A new server update is being made available immediately due to a "denial of service" attack on several popular SA-MP servers.

Note: this is not 0.3b. This is an optional server-only update. It does not fix all existing bugs, as many fixes will have to wait until the next mandatory client/server update.

0.3a R5 fixes a "denial of service" vulnerability where a player sending invalid data, generated by an external program, may cause the server to generate a debug assertion, which causes the server to close.

The R5 server also contains some new scripting features that missed the initial 0.3a server releases.

Camera information:

With the camera information you can tell where a player is looking. Please note the player's camera info is only updated while they are onfoot, spectating or driving a vehicle which has a special turret like the firetruck/swatvan etc.

Code:
native GetPlayerWeaponState(playerid);
native GetPlayerCameraPos(playerid, &Float:x, &Float:y, &Float:z);
native GetPlayerCameraFrontVector(playerid, &Float:x, &Float:y, &Float:z);
native GetPlayerCameraUpVector(playerid, &Float:x, &Float:y, &Float:z);

Per-player variable system: (PVars).

Originally SA-MP was only designed for 100 maximum players. This meant defining arrays in pawn of MAX_PLAYERS size such as: PlayerInfo[MAX_PLAYERS] was generally okay. Now that MAX_PLAYERS is defined as 500, script writers are finding themselves creating arrays with 500 elements just to store a single flag. This can turn out to be very wasteful in terms of memory use. These variables also need to be manually reset when the player using them leaves the server.

Advantages of using PVars over arrays of MAX_PLAYERS:
1) PVars can be shared/accessed across gamemode scripts and filterscripts, making it easier to modularise your code.
2) PVars are automatically deleted when a player leaves the server, meaning you don't have to manually reset variables for the next player who joins.
3) No real need for complex enums/player info structures.
4) Saves memory by not allocating pawn array elements for playerids which will probably never be used.
5) You can easily enumerate and print/store the PVar list. This makes both debugging and player info storage easier.
6) Even if a PVar hasn't been created, it still will return a default value of 0.
7) PVars can hold very large strings using dynamically allocated memory.

Code:
// Per-player variable system (PVars)
native SetPVarInt(playerid, varname[], int_value);
native GetPVarInt(playerid, varname[]);
native SetPVarString(playerid, varname[], string_value[]);
native GetPVarString(playerid, varname[], string_return[], len);
native SetPVarFloat(playerid, varname[], Float:float_value);
native Float:GetPVarFloat(playerid, varname[]);
native DeletePVar(playerid, varname[]);

// PVar enumeration
#define PLAYER_VARTYPE_NONE			0
#define PLAYER_VARTYPE_INT			1
#define PLAYER_VARTYPE_STRING		2
#define PLAYER_VARTYPE_FLOAT		3

native GetPVarsUpperIndex(playerid);
native GetPVarNameAtIndex(playerid, index, ret_varname[], ret_len);
native GetPVarType(playerid, varname[]);

Addition to player markers:

If the player markers mode is PLAYER_MARKERS_MODE_GLOBAL, you can limit the radius which the player markers are drawn for each player. This may be important on some servers since there are limits to how many total markers you can have in GTA SA.

Code:
native LimitPlayerMarkerRadius(Float:marker_radius);

Additional vehicle damage functions:

Vehicle damage callback is called when a player updates the damage information on their vehicle.
New functions allow you to get and set the vehicle damage information.

Code:
forward OnVehicleDamageStatusUpdate(vehicleid, playerid);
native GetVehicleDamageStatus(vehicleid, &panels, &doors, &lights, &tires);
native UpdateVehicleDamageStatus(vehicleid, panels, doors, lights, tires);

Other:

Fix for pawn's fseek() function.
Kalcor is offline  
Old 24/03/2010, 01:25 AM   #2
Kalcor
SA-MP Developer
 
Join Date: Apr 2005
Location: 846
Posts: 850
Reputation: 2617
Default Re: Server update: 0.3a R5

Some handy utils functions for dealing with lists of PVars:

Code:
//-------------------------------------------
// Sends a list of all PVars to the player as
// client messages.

SendPVarListToPlayer(playerid)
{
  new ubound = GetPVarsUpperIndex(playerid);
	new x=0;
	new name[40+1];
	new line[128+1];
	
  SendClientMessage(playerid,0xF000F0F0, "---Player Vars List---");
	while(x != ubound) {
		if(GetPVarNameAtIndex(playerid,x,name,40)) {
			if(Util_GetPVarEntryAsString(playerid,name,line,128)) {
         SendClientMessage(playerid,0xFFFFFFFF,line);
			}
		}
		x++;
	}
}

//-------------------------------------------
// return PVar entry as 'name'='value' string

stock Util_GetPVarEntryAsString(playerid, name[], ret[], len)
{
	new Float:fValue;
	new iValue;
	new szStrValue[1024+1]; // this might require greater size if you store large strings in PVars
	new type;
  ret[0] = EOS;
  
 	type = GetPVarType(playerid, name);
	if(type != PLAYER_VARTYPE_NONE) {
		switch(type)
		{
			case PLAYER_VARTYPE_STRING:
			{
				GetPVarString(playerid,name,szStrValue,1024);
				format(ret,len,"%s=%s",name,szStrValue);
			}
			case PLAYER_VARTYPE_INT:
			{
				iValue = GetPVarInt(playerid,name);
				format(ret,len,"%s=%d",name,iValue);
			}
			case PLAYER_VARTYPE_FLOAT:
			{
			  fValue = GetPVarFloat(playerid,name);
				format(ret,len,"%s=%f",name,fValue);
			}
		}
		return 1;
	}
	return 0;
}

//-------------------------------------------
// Fills the provided string with all the player's PVars
// seperated by the specified 'delimiter'

stock Util_CreatePVarList(playerid, retstr[], len, delimiter[])
{
	if(!IsPlayerConnected(playerid)) return 0;
	
	new x=0;
	new remaining_string=len;
	new line[2048+1];
	new name[40+1];
	retstr[0] = EOS;

	new ubound = GetPVarsUpperIndex(playerid);
	
	while(x != ubound) {
		if(GetPVarNameAtIndex(playerid,x,name,40)) {
			if(Util_GetPVarEntryAsString(playerid,name,line,2048)) {
				// if there is enough space, concat this line to the return string
				if(remaining_string > (strlen(line) + strlen(delimiter))) {
			  	strcat(retstr,line);
			  	strcat(retstr,delimiter);
					remaining_string -= (strlen(line) + strlen(delimiter));
				}
			}
		}
		x++;
	}
	
	return 1;
}

//-------------------------------------------
Kalcor is offline  
Old 24/03/2010, 01:27 AM   #3
Woet
Gangsta
 
Join Date: Oct 2006
Posts: 657
Reputation: 18
Default Re: Server update: 0.3a R5

If you are a serverFFS customer, your server has already been updated to this version to fix the exploit and provide the new scripting features.
To apply this update, simply restart your server through the control panel.

Have fun with all the new features that R5 offers, it'll keep the scripters busy again
Woet is offline  
Old 24/03/2010, 01:35 AM   #5
niCe
Gangsta
 
niCe's Avatar
 
Join Date: Mar 2008
Location: CZ
Posts: 625
Reputation: 310
Default Re: Server update: 0.3a R5

Well done! Thanks for the new features.
__________________
[ENG] s2.gta-multiplayer.cz:7777 WTLS 2 (Singleplayer Features)
[ENG] s3.gta-multiplayer.cz:7777 WTLS 3 (Singleplayer Features)

- Many features from singleplayer - video trailer
- Pool and basketball minigames
- Poker Texas Holdem minigame
- Video game QUB3D from GTA 4
- Roulettes, blackjack, slot machines, video poker and horse-betting
- Stock market BAWSAQ from GTA 5
- Phone with a lot of features from GTA Online
- Missions similar to GTA Online - you can start missions from Big Smoke, Cesar or Woozie!
- Gang wars over 100 gang hoods
- More than 30 jobs (including police, paramedic, firefighter, burglar, pimp, valet and pizza-boy)
- Singleplayers races and other challenges
- Gyms, strip clubs, clothes shops, hidden packages, oysters, spray tags, horseshoes and much more
niCe is offline  
Old 24/03/2010, 01:45 AM   #6
Bob_Mars
Little Clucker
 
Join Date: Nov 2008
Posts: 32
Reputation: 0
Default Re: Server update: 0.3a R5

cool
Bob_Mars is offline  
Old 24/03/2010, 01:50 AM   #7
Hijolion
Huge Clucker
 
Hijolion's Avatar
 
Join Date: Dec 2009
Location: United States
Posts: 260
Reputation: 5
Default Re: Server update: 0.3a R5

Awesome, special thank to everyone for the hard work of finding the bugs and fixing them. My server is now running SA:MP RC5, also thanks to ServerFFS for the support to update my server. Great job team!
Hijolion is offline  
Old 24/03/2010, 01:54 AM   #8
DaRkDeViiL
Little Clucker
 
Join Date: Feb 2008
Posts: 25
Reputation: 0
Default Re: Server update: 0.3a R5

Good job!
DaRkDeViiL is offline  
Old 24/03/2010, 01:57 AM   #9
CJ101
High-roller
 
CJ101's Avatar
 
Join Date: Jan 2008
Location: RevolutionX
Posts: 1,904
Reputation: 162
Default Re: Server update: 0.3a R5

Quote:
Originally Posted by Kye
Code:
forward OnVehicleDamageStatusUpdate(vehicleid, playerid);
native GetVehicleDamageStatus(vehicleid, &panels, &doors, &lights, &tires);
native UpdateVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
I like these

good job kye, keep up the good work man
__________________
[/url]
CJ101 is offline  
Old 24/03/2010, 02:05 AM   #10
gotenks918
Huge Clucker
 
Join Date: May 2007
Posts: 247
Reputation: 0
Default Re: Server update: 0.3a R5

Epic, good work!
gotenks918 is offline  
Closed Thread

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Help me]Why wont my server objects update? olieg38 Help Archive 6 08/04/2010 12:19 PM
OnVehicleStreamIn bug [SPLIT FROM Server update: 0.3a R7] smeti Bug Reports 4 29/03/2010 01:36 PM
Server Won't? Update? owner jacob Server Support 4 12/02/2010 07:54 PM
SA-MP 0.3a R3 Server Update Karlip General 25 05/11/2009 06:59 PM


All times are GMT. The time now is 10:49 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.