Jump to content

Server Stats page for XpKiller's 'BF3 Chat, GUID, Stats and Mapstats Logger'


ImportBot

Recommended Posts

Originally Posted by dakeeper*:

 

What do you mean by 'show all players'?

Perhaps something like a Button "all Players"

Then limit the screenoutput to 100... then on top of the page some links 1-100 - 101-200 - 201-300 etc.

I think show all players is something that makes a stats page more complete.

* Restored post. It could be that the author is no longer active.
Link to comment
  • Replies 487
  • Created
  • Last Reply

Originally Posted by ty_ger07*:

 

I will be busy over the next coming week and progress will be slow, but I haven't abandoned this project yet.

 

Things I will be working on:

- Speed up weapon stats queries

- Speed up dog tag stats queries

- Remove some repetition in the code and make it easier for people to change the color scheme and layout from one section

- Clean up the code and remove as many of the echo "..."; stuff as possible.

- Add more code commenting so that it makes more sense

- Fix up the layout with tabs to make it easier to find where sections are opened and closed

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by ty_ger07*:

 

This is the last update for a a few days. Code in first post is updated.

 

Changes:

- Player rank query is slightly faster

- Player weaponstats query is slightly faster

- Player dogtag query is significantly faster

- Suspicious players query is significantly faster

- Banned players query is significantly faster

 

I started cleaning up the formatting of the code, but only got about a 1/4 way through. You will see the changes and where I got up to if you look at the code.

 

All in all, with these code changes, the player stats page loads between 1 and 2 seconds faster for me.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Rucki*:

 

Hi,

thx for your great work!

The top25 page ist working fine, but I have a problem at the player-page.

 

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/htdocs/w0070a25/cms/bf3serverstats/player_stats.php on line 1002

You can see the example here:

http://www.zockerstrich.de/bf3server..._player=Search

 

Any ideas, whats going wrong here?

Thx!

Rucki

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by ty_ger07*:

 

Hi,

thx for your great work!

The top25 page ist working fine, but I have a problem at the player-page.

 

You can see the example here:

http://www.zockerstrich.de/bf3server..._player=Search

 

Any ideas, whats going wrong here?

Thx!

Rucki

Unfortunately, I do not have time to work on this issue right now. What appears to be the issue is that for some reason, at least one of the sniper rifles is not in your database while this code is expecting it to be there. I don't know why your database would be missing a sniper rifle, but maybe it is because nobody in your server has used that sniper rifle yet. I will work on a workaround so that missing weapon columns don't cause an error.

 

The fix is easy, but I don't have time to work on It right now. It will be a day or two.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Rucki*:

 

The fix is easy, but I don't have time to work on It right now. It will be a day or two.

Thanks a lot!

I compared your Sniper-code with my columns.

$player_sniper_query = "SELECT `M39_kills`,`M39_hs`,`M40A5_kills`,`M40A5_hs`,`Mk1 1_kills`,`Mk11_hs`,`Model98B_kills`,`Model98B_hs`, `SKS_kills`,`SKS_hs`,`SV98_kills`,`SV98_hs`,`SVD_k ills`,`SVD_hs`,`Type88_kills`,`Type88_hs`,`L96_kil ls`,`L96_hs`,`QBU-88_kills`,`QBU-88_hs` FROM tbl_weapons_sniperrifle{$table_suffix} wa INNER JOIN tbl_server_player{$table_suffix} tsp ON tsp.StatsID = wa.StatsID INNER JOIN tbl_playerdata{$table_suffix} tpd ON tsp.PlayerID = tpd.PlayerID WHERE tsp.ServerID = '{$server_ID}' AND SoldierName = '{$player_name}'";

I have no column called Type88_kills or Type88_hs.

But is Type88 a Sniper weapon?

I have the collumns Type88_kills or Type88_hs in tbl_weapons_lmg not in tbl_weapons_sniperrifle.

 

I'm confused. :huh:

 

Regards!

Rucki

 

---edit---

found a typing mistake.

Hoshahar Canals should be Noshahar Canals

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by ty_ger07*:

 

Thanks a lot!

I compared your Sniper-code with my columns.

 

 

 

I have no column called Type88_kills or Type88_hs.

But is Type88 a Sniper weapon?

I have the collumns Type88_kills or Type88_hs in tbl_weapons_lmg not in tbl_weapons_sniperrifle.

 

I'm confused. :huh:

Well... the QBU-88 is a Type-88 sniper rifle. Huh. I wonder why I have both columns. Maybe XpKiller changed the column name in one of his updates. Anyways, I will make it so that it won't matter and only columns found are displayed.

 

Regards!

Rucki

 

---edit---

found a typing mistake.

Hoshahar Canals should be Noshahar Canals

Right. Ok.

 

 

I have some time tonight to fix this stuff up.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by leibhold*:

 

This is just a very simple server and player stats webpage as requested by Friegide in these forums

me thinks you should maybe change the first page chit chat :biggrin:

 

Column names changing is why I suggested the function to get the stats using the found column names.:cool:

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by ty_ger07*:

 

Column names changing is why I suggested the function to get the stats using the found column names.:cool:

Sorry, I completely forgot.

 

Your solution is brilliant. I will go that direction instead. Thanks!

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by ty_ger07*:

 

This is how I modified your code:

Function Statsout($tbl_name,$tbl_suffix,$headingprint,$TheServerID,$ThisPlayerName)
						{
							$GetColumnNames = mysql_query("SHOW COLUMNS FROM {$tbl_name}{$tbl_suffix}") or die("mysql error");
							$numColumns = mysql_num_rows($GetColumnNames);
							$expand_id = preg_replace("/\s/","",$headingprint);
							$x = 0; 
							while ($x < $numColumns) 
							{ 
								$colname = mysql_fetch_row($GetColumnNames); 
								$col[$x] = $colname[0]; 
								$x++; 
							} 
							//Code from some smart guy on the internet
							$player_query = "SELECT * FROM {$tbl_name}{$tbl_suffix} wa INNER JOIN tbl_server_player{$tbl_suffix} tsp ON tsp.StatsID = wa.StatsID INNER JOIN tbl_playerdata{$tbl_suffix} tpd ON tsp.PlayerID = tpd.PlayerID WHERE tsp.ServerID = '{$TheServerID}' AND SoldierName = '{$ThisPlayerName}'";
							$player_result = mysql_query($player_query);
							$row=mysql_fetch_assoc($player_result);
							if (!mysql_num_rows($player_result) == 0)  // Do we have any records for this player on this section _
							{
								$colloop=1;
								while ($colloop < $numColumns) 
								{ 
									$resulter[$col[$colloop]]=$row[$col[$colloop]];  // we put the name and the number into an array
									if (substr($col[$colloop],-6)=="_kills")   // this checks - is this a kills line
									{
										$sectionkillcount=$sectionkillcount + $row[$col[$colloop]];
										// as this is a kills line tally up the number of kills in the section
									}
									$colloop++;
								}
								// Once we have a tally of the kills - see if we will show this section.
								if($sectionkillcount > 0)    // tally of kills in the section - if zero then dont show section.
								{
									// We have kills so show the heading
									echo "<div style='margin-left: auto;margin-right: auto;width: 100%;background-color: #242424;border-radius: 15px;'>";
									echo "<table width='100%' border='0'>";
									echo "<tr><td width='100%'>";
									_>
									<div style="border: 0px; padding: 0px;">
									<table border="0" cellspacing="0" cellpadding="2" width="100%">
									<tr><td style='text-align: left;'>
									  <font size="3"><a title="show/hide" id="<_php echo "$expand_id"; _>_link" href="javascript:void(0);" onclick="toggle(this, '<_php echo "$expand_id"; _>');">−</a></font> <b><_php echo "$headingprint"; _></b>
									</td>
									</tr>
									</table>
									<div id="<_php echo "$expand_id"; _>" style="padding:3px;">
									<_php
									echo "<div style='margin-left: auto;margin-right: auto;width: 99%;background-color: #151515;border-radius: 10px;'><br/>";
									// once we have dont the heading - then we can loop though the variable - which has the stats.
									foreach ($resulter as $weaponName => $value) 
									{
										if (strrpos($weaponName,"_kills") > 0)  // check for a kills stat line
										{
											if ($value > 0 ) // its a kill stats line but any kills _
											{
												// there are kills so lets go - set ThereAreKills to true
												$ThereAreKills=true;
												$kills = $value;
												echo "<table align='center' width='95%' border='0'>";
												echo "<tr>";
												// This is the row of the weapon with kills on it
												echo "<td width='25%' style='text-align: left'><font color='#999999'>";
												echo preg_replace("/_/"," ",(substr($weaponName,0,(strrpos($weaponName,"_kills")))));
												echo ":</font></td>";
												echo "<td width='25%' style='text-align: left'><font color='#999999'>Kills:</font> $kills</td>";
											} // end of kills are greater than zero
											else 
											{
												$ThereAreKills=false;
											}
										} // end of if a kills line
										if ($ThereAreKills)  // we have to process the Headshots and Deaths - otherwise we dont
										{
											if (strrpos($weaponName,"_hs") > 0) //hopefully this is the headshot stat
											{
												$headshots = $value;
												echo "<td width='25%' style='text-align: left'><font color='#999999'>Headshots:</font> $headshots</td>";
											}
											if (strrpos($weaponName,"_deaths") > 0)
											{
												// avoid dividing by zero (this shouldn't happen though because we already filtered out zero kills)
												if($kills==0)
												{
													$kills = '0.0001';
												}
												$ratio = round((($headshots / $kills)*100),2);
												echo "<td width='25%' style='text-align: left'><font color='#999999'>Headshot Ratio:</font> $ratio <font color='#999999'>%</font></td>";
												echo "</tr></table>";
											}
										} // End of if ThereAreKills
									} // end of variable loop
									// we can wrap up the end of the table
									echo "<br/></div>";
									_>
									</div>
									</div>
									<script language="javascript" type="text/javascript">toggle(getObject('<_php echo "$expand_id"; _>_link'), '<_php echo "$expand_id"; _>');</script>
									<_php
									echo "</td></tr>";
									echo "</table></div><br/>";
								} // end of the are there kills section
							} // End of check for zero entries
						}
						if(mysql_num_rows($player_data_result)!=0)
						{
							//BEGIN ASSAULT RIFLES BLOCK
							Statsout("tbl_weapons_assaultrifle",$table_suffix,"Assault Rifle",$server_ID,$player_name);
							//END ASSAULT RIFLES BLOCK

							//BEGIN LMG BLOCK
							Statsout("tbl_weapons_lmg",$table_suffix,"Light Machine Gun Stats",$server_ID,$player_name);
							//END LMG BLOCK

							//BEGIN SHOTGUN BLOCK
							Statsout("tbl_weapons_shotgun",$table_suffix,"Shot Gun",$server_ID,$player_name);
							//END SHOTGUN BLOCK

							//BEGIN SMG BLOCK
							Statsout("tbl_weapons_smg",$table_suffix,"Submachine Gun Stats",$server_ID,$player_name);
							//END SMG BLOCK

							//BEGIN SNIPER BLOCK
							Statsout("tbl_weapons_sniperrifle",$table_suffix,"Sniper Rifle Stats",$server_ID,$player_name);
							//END SNIPER BLOCK

							//BEGIN PISTOLS BLOCK
							Statsout("tbl_weapons_handgun",$table_suffix,"Hand Gun Stats",$server_ID,$player_name);
							//END PISTOLS BLOCK

							//BEGIN ROCKETS BLOCK
							Statsout("tbl_weapons_projectileexplosive",$table_suffix,"Projectile Explosive Stats",$server_ID,$player_name);
							//END ROCKETS BLOCK

							//BEGIN EXPLOSIVES BLOCK
							Statsout("tbl_weapons_explosive",$table_suffix,"Explosive Stats",$server_ID,$player_name);
							//END EXPLOSIVES BLOCK

							//BEGIN OTHER WEAPONS BLOCK
							Statsout("tbl_weapons_melee",$table_suffix,"Other Weapons Stats",$server_ID,$player_name);
							//END OTHER WEAPONS BLOCK
						}

Basically, I preg_replaced the underscores in the weapon name to spaces, added javascript expand divs using weapon name heading as div ids with spaces preg_replaced to be removed, added filters to the query to filter out the results depending on the server id, and changed the deaths information to headshot ratio.

I will change the 'smart guy' to 'leibhold'.

BTW, the missing javascript code referenced to is in the header.

Thanks a lot!

 

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by leibhold*:

 

will change the 'smart guy' to 'leibhold'.

Dont change it - it was someone else I stole the code from but forgot where from - not my code - he is smarter than me !!!

 

Hmmm - What I meant was the code for columns - the rest was mine - sniff sniff....:cool:

 

Like what you have done - I was going to say to change the query to match Xpkillers fine examples page - (Now theres a smart guy !!) but you already have - glad you found it usefull.

 

Cheers.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by ty_ger07*:

 

Update linked to in first post.

 

Changes:

- Weapon stats are smarter about choosing weapon columns (thanks for the reference leibhold)

- Minor code improvements

- Code formatting is mostly finished

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by ty_ger07*:

 

Code in first post was updated.

 

Changes:

- 'GGC-Stream failed to respond' message changed to 'GGC-Stream returned no results'

- Text color brightened up

- Code formatting complete

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by ty_ger07*:

 

I mean that is has grown out of being a very simple product. - It was a compliment :cool:

Yes, it is approaching 1,500 lines long, but it is still relatively simple. If I were going to make it a 'real' stats page, I would have divided the header and footer into separate files, and then included each type of stats page as a separate file as the body of the page and would have included weapon images, map images, class images, etc. to spruce the page up. As it is now, although pretty complicated, it still is very 'lite'.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by XpKiller*:

 

							<!-- BEGIN TOP COUNTRIES CENTER BLOCK -->
							<br/>
							<table width='100%' border='0'>
								<tr>
								<td valign='top' align='center'>
								<!-- BEGIN TOP-25 BLOCK -->
								<div style='margin-left: auto;margin-right: auto;width: 100%;background-color: #242424;border-radius: 15px;'>
									<br/>
									<table width='100%' border='0'>
										<tr>
										<th>Top 25 countries for <?php	echo "{$server_name}";	?></th>
										</tr>
										<tr>
										<td><br/>
										<?php
										$country_query = "SELECT tpd.CountryCode, COUNT(tpd.CountryCode) AS PlayerCount, tps.Score FROM tbl_playerstats{$table_suffix} tps INNER JOIN tbl_server_player{$table_suffix} tsp ON tsp.StatsID = tps.StatsID INNER JOIN tbl_playerdata{$table_suffix} tpd ON tsp.PlayerID = tpd.PlayerID WHERE tsp.ServerID = '{$server_ID}' GROUP BY CountryCode ORDER BY PlayerCount DESC LIMIT 25";
										$country_query_google = "SELECT tpd.CountryCode, COUNT(tpd.CountryCode) AS PlayerCount FROM tbl_playerstats{$table_suffix} tps INNER JOIN tbl_server_player{$table_suffix} tsp ON tsp.StatsID = tps.StatsID INNER JOIN tbl_playerdata{$table_suffix} tpd ON tsp.PlayerID = tpd.PlayerID WHERE tsp.ServerID = '{$server_ID}' AND CountryCode != '--' GROUP BY CountryCode ORDER BY PlayerCount DESC LIMIT 25";

										$country_result = mysql_query($country_query);
										$country_result_google = mysql_query($country_query_google);
										if(mysql_num_rows($country_result)==0)
										{
											?>
											<div style='margin-left: auto;margin-right: auto;width: 99%;background-color: #151515;border-radius: 10px;'><br/>
												<table width='95%' align='center' border='0'>
													<tr><td>
													<center>No players found for <?php	echo "{$server_name}";	?> server.</center>
													</td></tr>
												</table><br/>
											</div>
										<?php
										}
										else
										{
											?>
											<div style='margin-left: auto;margin-right: auto;width: 99%;background-color: #151515;border-radius: 10px;'><br/>
												<?php
												// make an array of countries to convert two-letter country abreviations to full country name
												$country_array = array('Unknown'=>'--','Afghanistan'=>'AF','Albania'=>'AL','Algeria'=>'DZ','American Samoa'=>'AS','Andorra'=>'AD','Angola'=>'AO','Anguilla'=>'AI','Antarctica'=>'AQ','Antigua'=>'AG','Argentina'=>'AR','Armenia'=>'AM','Aruba'=>'AW','Australia'=>'AU','Austria'=>'AT','Azerbaijan'=>'AZ','Bahamas'=>'BS','Bahrain'=>'BH','Bangladesh'=>'BD','Barbados'=>'BB','Belarus'=>'BY','Belgium'=>'BE','Belize'=>'BZ','Benin'=>'BJ','Bermuda'=>'BM','Bhutan'=>'BT','Bolivia'=>'BO','Bosnia'=>'BA','Botswana'=>'BW','Bouvet Island'=>'BV','Brazil'=>'BR','Indian Ocean'=>'IO','Brunei Darussalum'=>'BN','Bulgaria'=>'BG','Burkina Faso'=>'BF','Burundi'=>'BI','Cambodia'=>'KH','Cameroon'=>'CM','Canada'=>'CA','Cape Verde'=>'CV','Cayman Islands'=>'KY','Central Africa'=>'CF','Chad'=>'TD','Chile'=>'CL','China'=>'CN','Christmas Island'=>'CX','Cocos Islands'=>'CC','Columbia'=>'CO','Comoros'=>'KM','Congo'=>'CG','Republic of Congo'=>'CD','Cook Islands'=>'CK','Costa Rica'=>'CR','Ivory Coast'=>'CI','Croatia'=>'HR','Cuba'=>'CU','Cyprus'=>'CY','Czech Repuplic'=>'CZ','Denmark'=>'DK','Djibouti'=>'DJ','Dominica'=>'DM','Dominican Republic'=>'DO','East Timor'=>'TP','Ecuador'=>'EC','Egypt'=>'EG','El Salvador'=>'SV','Equatorial Guinea'=>'GQ','Eritrea'=>'ER','Estonia'=>'EE','Ethiopia'=>'ET','Falkland Islands'=>'FK','Faroe Islands'=>'FO','Fiji'=>'FJ','Finland'=>'FI','France'=>'FR','Metropolitan France'=>'FX','French Guiana'=>'GF','French Polynesia'=>'PF','French Territories'=>'TF','Gabon'=>'GA','Gambia'=>'GM','Georgia'=>'GE','Germany'=>'DE','Ghana'=>'GH','Gibraltar'=>'GI','Greece'=>'GR','Greenland'=>'GL','Grenada'=>'GD','Guadeloupe'=>'GP','Guam'=>'GU','Guatemala'=>'GT','Guinea'=>'GN','Guinea-Bissau'=>'GW','Guyana'=>'GY','Haiti'=>'HT','McDonald Islands'=>'HM','Vatican City'=>'VA','Honduras'=>'HN','Hong Kong'=>'HK','Hungary'=>'HU','Iceland'=>'IS','India'=>'IN','Indonesia'=>'ID','Iran'=>'IR','Iraq'=>'IQ','Ireland'=>'IE','Israel'=>'IL','Italy'=>'IT','Jamaica'=>'JM','Japan'=>'JP','Jordan'=>'JO','Kazakstan'=>'KZ','Kenya'=>'KE','Kiribati'=>'KI','North Korea'=>'KP','South Korea'=>'KR','Kuwait'=>'KW','Kyrgyzstan'=>'KG','Lao'=>'LA','Latvia'=>'LV','Lebanon'=>'LB','Lesotho'=>'LS','Liberia'=>'LR','Libya'=>'LY','Liechtenstein'=>'LI','Lithuania'=>'LT','Luxembourg'=>'LU','Macau'=>'MO','Macedonia'=>'MK','Madagascar'=>'MG','Malawi'=>'MW','Malaysia'=>'MY','Maldives'=>'MV','Mali'=>'ML','Malta'=>'MT','Marshall Islands'=>'MH','Martinique'=>'MQ','Mauritania'=>'MR','Mauritius'=>'MU','Mayotte'=>'YT','Mexico'=>'MX','Micronesia'=>'FM','Moldova'=>'MD','Monaco'=>'MC','Mongolia'=>'MN','Montserrat'=>'MS','Morocco'=>'MA','Mozambique'=>'MZ','Myanmar'=>'MM','Namibia'=>'NA','Nauru'=>'NR','Nepal'=>'NP','Netherlands'=>'NL','Netherlands Antilles'=>'AN','New Caledonia'=>'NC','New Zealand'=>'NZ','Nicaragua'=>'NI','Niger'=>'NE','Nigeria'=>'NG','Niue'=>'NU','Norfolk Island'=>'NF','Mariana Islands'=>'MP','Norway'=>'NO','Oman'=>'OM','Pakistan'=>'PK','Palau'=>'PW','Palestine'=>'PS','Panama'=>'PA','Papua New Guinea'=>'PG','Paraguay'=>'PY','Peru'=>'PE','Philippines'=>'PH','Pitcairn'=>'PN','Poland'=>'PL','Portugal'=>'PT','Puerto Rico'=>'PR','Qatar'=>'QA','Reunion'=>'RE','Romania'=>'RO','Russia'=>'RU','Rwanda'=>'RW','Saint Helena'=>'SH','Saint Kitts'=>'KN','Saint Lucia'=>'LC','Saint Pierre'=>'PM','Saint Vincent'=>'VC','Samoa'=>'WS','San Marino'=>'SM','Sao Tome'=>'ST','Saudi Arabia'=>'SA','Senegal'=>'SN','Seychelles'=>'SC','Sierra Leone'=>'SL','Singapore'=>'SG','Slovakia'=>'SK','Slovenia'=>'SI','Solomon Islands'=>'SB','Somalia'=>'SO','South Africa'=>'ZA','Sandwich Islands'=>'GS','Spain'=>'ES','Sri Lanka'=>'LK','Sudan'=>'SD','Suriname'=>'SR','Svalbard'=>'SJ','Swaziland'=>'SZ','Sweden'=>'SE','Switzerland'=>'CH','Syria'=>'SY','Taiwan'=>'TW','Tajikistan'=>'TJ','Tanzania'=>'TZ','Thailand'=>'TH','Togo'=>'TG','Tokelau'=>'TK','Tonga'=>'TO','Trinidad'=>'TT','Tunisia'=>'TN','Turkey'=>'TR','Turkmenistan'=>'TM','Turks Islands'=>'TC','Tuvalu'=>'TV','Uganda'=>'UG','Ukraine'=>'UA','United Arab Emirates'=>'AE','United Kingdom'=>'GB','United States'=>'US','US Minor Outlying Islands'=>'UM','Uruguay'=>'UY','Uzbekistan'=>'UZ','Vanuatu'=>'VU','Venezuela'=>'VE','Vietnam'=>'VN','Virgin Islands (British)'=>'VG','Virgin Islands (US)'=>'VI','Wallis and Futuna'=>'WF','Western Sahara'=>'EH','Yemen'=>'YE','Yugoslavia'=>'YU','Zambia'=>'ZM','Zimbabwe'=>'ZW');
												$count = '0';
												$googlecount = 0;
												//Google Graph api
												?>
												 <script type="text/javascript" src="http://www.google.com/jsapi"></script>
												 <script type="text/javascript">
													google.load('visualization', '1', {packages: ['geomap']});

													function drawVisualization() {
													  var data = new google.visualization.DataTable();
													  data.addRows(25);
													  data.addColumn('string', 'Country');
													  data.addColumn('number', 'Playercount');
												<?php  
												while($country_row2 = mysql_fetch_array($country_result_google))
												{
													$CountryCode2 = strtoupper($country_row2['CountryCode']);
													$PlayerCount2 = $country_row2['PlayerCount'];
													$country_name2 = array_search($CountryCode2,$country_array);
													echo "data.setValue($googlecount, 0, '$country_name2');";
													echo "data.setValue($googlecount, 1, $PlayerCount2);";
													$googlecount++;	
												}
												?>
													  var geomap = new google.visualization.GeoMap(
														  document.getElementById('visualization'));
													  geomap.draw(data, null);
													}
													

													google.setOnLoadCallback(drawVisualization);
												 </script>
												 <div id="visualization" style="width: 800px; height: 400px;"></div>
												
												<?php
												while($country_row = mysql_fetch_array($country_result))
												{
													$CountryCode = strtoupper($country_row['CountryCode']);
													$PlayerCount = $country_row['PlayerCount'];
													$country_name = array_search($CountryCode,$country_array);
													$count = ($count + 1);
													?>
													<table width='95%' align='center' border='0'><tr>
														<td style='text-align: left;' width='5%'><font size='2'><?php	echo "$count:";	?></font></td>
														<td width='20%' style='text-align: left;'>   <font color='#999999'><?php	echo "$country_name";	?></font></td>
														<td width='25%' style='text-align: left;'><font color='#999999'>Country Code: </font><?php	echo "$CountryCode";	?></td>
														<td width='50%' style='text-align: left;'><font color='#999999'>Player Count: </font><?php	echo "$PlayerCount";	?></td>
														</tr>
													</table>
												<?php
												}
												?>
												<br/>
											</div>
										<?php
										}
										?>
										</td></tr>
									</table>
								</div>
								</td></tr>
							</table>
							<?php
						}
						//END TOP COUNTRIES LOGIC
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by ty_ger07*:

 

I have been a bit sick lately, but I will plan to add a few javascript bells and whistles including that country map as well as incorporate xpkiller's faster player rank query.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by XpKiller*:

 

it would be nice, if you add a link to the stats plugin too, because the plugin isnt small ( one of the most complex plugins) next release will be over 6700 line of written code + a good DB design.

So it would just be fair to add a link.

 

@ty_ger

you are right, hijacking a Thread isnt fair too

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by ty_ger07*:

 

Yeah, I could make the top players able to be organized by different categories, but honestly I don't see how any player ranking other than score is accurate. Consider if a player plays 1 round and gets 20 kills and 1 death. Is it fair for that player who only played one round to be ranked higher than someone who has played 1,000 rounds and has a 2.0 KDR?

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by kopoBko*:

 

Yeah, I could make the top players able to be organized by different categories, but honestly I don't see how any player ranking other than score is accurate. Consider if a player plays 1 round and gets 20 kills and 1 death. Is it fair for that player who only played one round to be ranked higher than someone who has played 1,000 rounds and has a 2.0 KDR?

in batllog now what you describe.:smile:

may be sorted by the lead time?

how to remove the people that didn't exist on the server 10 days from DB?

* Restored post. It could be that the author is no longer active.
Link to comment

Archived

This topic is now archived and is closed to further replies.




  • Our picks

    • Game Server Hosting:

      We're happy to announce that EZRCON will branch out into the game server provider scene. This is a big step for us so please having patience if something doesn't go right in this area. Now, what makes us different compared to other providers? Well, we're going with the idea of having a scaleable server hosting and providing more control in how you set up your server. For example, in Minecraft, you have the ability to control how many CPU cores you wish your server to have access to, how much RAM you want to use, how much disk space you want to use. This type of control can't be offered in a single service package so you're able to configure a custom package the way you want it.

      You can see all the available games here. Currently, we have the following games available.

      Valheim (From $1.50 USD)


      Rust (From $3.20 USD)


      Minecraft (Basic) (From $4.00 USD)


      Call of Duty 4X (From $7.00 USD)


      OpenTTD (From $4.00 USD)


      Squad (From $9.00 USD)


      Insurgency: Sandstorm (From $6.40 USD)


      Changes to US-East:

      Starting in January 2022, we will be moving to a different provider that has better support, better infrastructure, and better connectivity. We've noticed that the connection/routes to this location are not ideal and it's been hard getting support to correct this. Our contract for our two servers ends in March/April respectively. If you currently have servers in this location you will be migrated over to the new provider. We'll have more details when the time comes closer to January. The new location for this change will be based out of Atlanta, GA. If you have any questions/concerns please open a ticket and we'll do our best to answer them.
      • 5 replies
    • Hello All,

      I wanted to give an update to how EZRCON is doing. As of today we have 56 active customers using the services offered. I'm glad its doing so well and it hasn't been 1 year yet. To those that have services with EZRCON, I hope the service is doing well and if not please let us know so that we can improve it where possible. We've done quite a few changes behind the scenes to improve the performance hopefully. 

      We'll be launching a new location for hosting procon layers in either Los Angeles, USA or Chicago, IL. Still being decided on where the placement should be but these two locations are not set in stone yet. We would like to get feedback on where we should have a new location for hosting the Procon Layers, which you can do by replying to this topic. A poll will be created where people can vote on which location they would like to see.

      We're also looking for some suggestions on what else you would like to see for hosting provider options. So please let us know your thoughts on this matter.
      • 4 replies
    • Added ability to disable the new API check for player country info


      Updated GeoIP database file


      Removed usage sending stats


      Added EZRCON ad banner



      If you are upgrading then you may need to add these two lines to your existing installation in the file procon.cfg. To enable these options just change False to True.

      procon.private.options.UseGeoIpFileOnly False
      procon.private.options.BlockRssFeedNews False



       
      • 2 replies
    • I wanted I let you know that I am starting to build out the foundation for the hosting services that I talked about here. The pricing model I was originally going for wasn't going to be suitable for how I want to build it. So instead I decided to offer each service as it's own product instead of a package deal. In the future, hopefully, I will be able to do this and offer discounts to those that choose it.

      Here is how the pricing is laid out for each service as well as information about each. This is as of 7/12/2020.

      Single MySQL database (up to 30 GB) is $10 USD per month.



      If you go over the 30 GB usage for the database then each additional gigabyte is charged at $0.10 USD each billing cycle. If you're under 30GB you don't need to worry about this.


      Databases are replicated across 3 zones (regions) for redundancy. One (1) on the east coast of the USA, One (1) in Frankfurt, and One (1) in Singapore. Depending on the demand, this would grow to more regions.


      Databases will also be backed up daily and retained for 7 days.




      Procon Layer will be $2 USD per month.


      Each layer will only allow one (1) game server connection. The reason behind this is for performance.


      Each layer will also come with all available plugins installed by default. This is to help facilitate faster deployments and get you up and running quickly.


      Each layer will automatically restart if Procon crashes. 


      Each layer will also automatically restart daily at midnight to make sure it stays in tip-top shape.


      Custom plugins can be installed by submitting a support ticket.




      Battlefield Admin Control Panel (BFACP) will be $5 USD per month


      As I am still working on building version 3 of the software, I will be installing the last version I did. Once I complete version 3 it will automatically be upgraded for you.





      All these services will be managed by me so you don't have to worry about the technical side of things to get up and going.

      If you would like to see how much it would cost for the services, I made a calculator that you can use. It can be found here https://ezrcon.com/calculator.html

       
      • 11 replies
    • I have pushed out a new minor release which updates the geodata pull (flags in the playerlisting). This should be way more accurate now. As always, please let me know if any problems show up.

       
      • 9 replies
×
×
  • Create New...

Important Information

Please review our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.