Jump to content
JLNNN

BC2Conn v1.06 - PHP Klasse um mit einem Gameserver zu kommunizieren

Recommended Posts

Moin Leute,

wenn ihr schon immer mal eine eigene kleine PHP Anwendung schreiben wolltet, um euren Battlefield Bad Company 2 Gameserver zu steuern/administrieren, habe ich jetzt das richtige für euch!

Ihr könnt die PHP Klasse "BC2Conn" hier herunterladen:

Download: BC2Conn_v1.06_RC2.zip (Updated: 16.01.2011)

Im Archiv befinden sich auch noch ein paar XML-Files, die leserliche Squad/Map/Playmode/Team-Names beinhalten.

Die API findet ihr hier.

Besucht das offizielle BC2Conn Forum! Tutorials, Neuigkeiten, Updates & mehr!

Changelog:

  • v1.06
    * R28 support
    * updated maxNames.xml
    * added maps for Battlefield Bad Company 2: Vietnam

Hier noch ein paar kleine Beispiele, wie ihr das ganze dann benutzt:

<?php

/**

 * some examples - how to use the BC2Conn class

 *

 * this file requires BC2Conn >= v1.03-Update1

 *

 * project page: http://bc2conn.sf.net/

 * board	   : http://bc2conn.sf.net/board/

 * API		 : http://bc2conn.sf.net/API/

 *

 * live demo of this script: http://bc2conn.sf.net/demo/

 *

 * contact	 : JLN@hush.ai

 *

 * $Id: example.php 15 2010-06-10 16:05:40Z jlnnn $

 */



// include the class file

include ("BC2Conn.php");



// opens a connection to gameserver

$BC2Conn = new BC2Conn("127.0.0.1", 48888);



if (!$BC2Conn->isConnected()) {

	echo "Connection could not be established. " .

	"To debug, set '-d' as 3rd parameter to new connection.<br />" .

	"<br />" .

	"Example: \$BC2Conn = new BC2Conn(\"127.0.0.1\", 48888, \"-d\");";



	return 0; // stop executing this script

}



// secure login

$BC2Conn->loginSecure("yourRconPassword");



// unsecure login (not salted)

//$BC2Conn->loginInsecure("yourRconPassword");



// some random serverinformation

echo "Server IP: " . $BC2Conn->getServerIP() . "<br />";

echo "Servername: " . $BC2Conn->getServerName() . "<br />";

echo "Players: " . $BC2Conn->getCurrentPlayers() . "/" . $BC2Conn->getMaxPlayers() . "<br />";

echo "Playmode: " . $BC2Conn->getCurrentPlaymodeName() . "<br />";

echo "Current Map: " . $BC2Conn->getCurrentMapName() . "<br /><br /><br /><u>Players:</u><br /><br />";



// playerlist

$playerNames = $BC2Conn->getPlayerlistNames();

foreach ($playerNames as $key => $content) {

	if ($BC2Conn->getPlayerClantag($content) != "") {

		echo "[" . $BC2Conn->getPlayerClantag($content) . "]";

	}

	echo " " . $BC2Conn->getPlayername($content) . " - Kills: ";

	echo $BC2Conn->getPlayerKills($content) . " | Deaths: ";

	echo $BC2Conn->getPlayerDeaths($content) . " | Score: ";

	echo $BC2Conn->getPlayerScore($content) . "<br />";

}



/*

 // change playmode and map and perform nextmap to save settings

 $BC2Conn->adminSetPlaylist("SQDM");

 $BC2Conn->adminMaplistClear();

 $BC2Conn->adminMaplistAppend("Levels/MP_006SDM"); // Arica Harbor

 $BC2Conn->adminMaplistSave();

 $BC2Conn->adminRunNextLevel();

 */



// say something as admin

//$BC2Conn->adminYellMessage("I'm testing BC2Conn PHP class - visit http://bc2conn.sf.net/ for more information!");



// get all available commands

//$BC2Conn->adminGetAllCommands();



// restart current map

//$BC2Conn->adminRestartMap();



// remove map index 3 from maplist and add a new one

//$BC2Conn->adminMaplistRemove(3);

//$BC2Conn->adminMaplistAppend("Levels/MP_003");



// set a new serverdescription

//$BC2Conn->adminVarSetServerDescription("Get the BC2Conn PHP class to administrate your Battlefield Bad Company 2 gameserver - visit http://bc2conn.sf.net/");



// kick a specific player

//$BC2Conn->adminKickPlayer("John Doe");



// ban a specific player permanently and view all bans by playername

//$BC2Conn->adminBanAddPlayername("John Doe");

//print_r($BC2Conn->adminBanlistList());



// turn off killcam

//$BC2Conn->adminVarSetKillCam(false);



// turn off friendly fire

//$BC2Conn->adminVarSetFriendlyFire(false);



// kills the player and moves him to the opponent team

//$BC2Conn->adminMovePlayerSwitchTeam("JLNNN", true);



// logout

$BC2Conn->logout();

?>

Viel Spaß damit - und bei Fragen: Fragen!

- JLNNN

Edited by JLNNN
Link to post
Share on other sites

Klar, mit folgendem Code

<?php

include("BC2Conn.php");

$BC2Conn = new BC2Conn("85.195.74.182", *****);

echo "Server IP: " . $BC2Conn->getServerIP() . ":11060<br />";

echo "Server Name: " . $BC2Conn->getServerName() . "<br />";

echo "Spieler: " . $BC2Conn->getCurrentPlayers() . "/" . $BC2Conn->getMaxPlayers() . "<br />";

echo "Spielmodus: " . $BC2Conn->getCurrentPlaymodeName() . "<br />";

echo "Map: " . $BC2Conn->getCurrentMapName() . "<br />";

?>

erzeuge ich diese Ausgabe: http://www.jlnx.de/BC2Conn/demo/

Link to post
Share on other sites

Super Sache :daumenhoch:

Ich wollte ja auch eine schreiben bzw. hab schon angefangen hatte aber keine Zeit mehr zum fertigstellen. :whistling:

Link to post
Share on other sites

Hey,

vielen Dank für die Arbeit. Ich muss mal Kanti oder CC überreden, das bei uns zu installieren und zu testen :)

Link to post
Share on other sites

Hi,

ersna danke für die Class, super Arbeit :)

Ich habe eine Frage und zwar wenn ich z.B abfragen will ob Friendly Fire an ist kommt immer der gleiche Wert. Meine jetzige Abfrage:

			if($bc2->adminVarGetFriendlyFire() === true) {

				$tF = 'Abschalten';

			} else {

				$tF = 'Einschalten';

			}
Aber er gibt immer Abschalten aus. Wenn ich dann den Wert ändere mit:
$bc2->adminVarSetFriendlyFire(false);

Gibt er trotzdem immer True aus.

Ist da irgendwas falsch? Oder muss ich das anders Abfragen?

Link to post
Share on other sites

Moin saphir133,

um den Wert abzufragen:

$friendlyfire = $BC2Conn->adminVarGetFriendlyFire();

if ($friendlyfire == "true") {

	echo "FriendlyFire ist an!";

} else {

	echo "FriendlyFire ist aus!";

}

Wie du in der API zu dieser Funktion siehst, gibt sie einen String zurück und nicht wie von dir angenommen einen bool'schen Wert.

Ich hoffe, dass dir diese Antwort geholfen hat.

- JLNNN

Link to post
Share on other sites

Ok danke. Jetzt klappt es nun. Hab mich nur gewundert, weil er ja eigentlich true bzw false ausgeben sollte... Aber jetzt geht es :P

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

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.