Zum Inhalt springen
JLNNN

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

Empfohlene Beiträge

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

Bearbeitet von JLNNN
Link zu diesem Kommentar
Auf anderen Seiten teilen

eine Demo wäre mal ganz cool. geht das?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

Super Sache :daumenhoch:

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hey,

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

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 zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden


  • Wer ist Online   0 Benutzer

    • Keine registrierten Benutzer online.
×
×
  • Neu erstellen...

Wichtige Information

Wir haben Cookies auf Deinem Gerät platziert. Das hilft uns diese Webseite zu verbessern. Du kannst die Cookie-Einstellungen anpassen, andernfalls gehen wir davon aus, dass Du damit einverstanden bist, weiterzumachen.