Beiträge: 125
Themen: 28
Registriert seit: 30.08.2007
Hi,
ich bin gerade dabei ein Plugin für die BB Codes eines Browsergames zu schreiben bzw. fürs MyBB anzupassen.
Der Code sieht so aus:
PHP-Code:
function dsbbcodes_run() {
global $mybb;
include('get_id.php');
function get_serverdomain($servername) {
$file = file_get_contents('http://www.die-staemme.de/backend/get_servers.php');
$servers = unserialize($file);
$domain = $servers[$servername];
if (empty($domain)) {
return false;
}
else
{
return $domain;
}
}
$world = $mybb->settings['dsbb_world'];
$domain = get_serverdomain($world);
//Tag [player]
if(strpos($message,"\[player\]")){
$message=preg_replace("\[player\](.*?)\[/player\]",'<a href='.$domain.'/game.php?screen=info_player&id='.get_id_of_player($1).' target="_blank">'.$1.'</a>',$message);
return $message;
}
natürlich mit dem ganzen anderen zeugs, blabla aktivierung etc,
natürlich ist auch das
PHP-Code:
$plugins->add_hook("parse_message", "dsbbcodes_run");
drin, jedoch bekomme ich eine Fehlermeldung wenn ich das AdminCP betreten will:
Zitat:Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in C:\Users\Christopher\Desktop\xampp\htdocs\mybb\inc\plugins\dsbbcodes.php on line 152
Zeile 152 ist diese:
PHP-Code:
$message=preg_replace("\[player\](.*?)\[/player\]",'<a href='.$domain.'/game.php?screen=info_player&id='.get_id_of_player($1).' target="_blank">'.$1.'</a>',$message);
get_id.php (ein Teil davon):
PHP-Code:
function get_id_of_player($name){
$selectname="SELECT * FROM ".TABLE_PREFIX."ds_tribe WHERE name='".$name."' LIMIT 1";
$ergebnis=mysql_query($selectname) or die("Fehler beim suchen von der Playerid im Code: <b>".$selectname."</b>".mysql_error());
if($player=mysql_fetch_assoc($ergebnis)){
return $player['id'];
}else{
return 111111;
}
}
Was mache ich falsch?
lg
Beiträge: 125
Themen: 28
Registriert seit: 30.08.2007
07.10.2007, 10:42
(Dieser Beitrag wurde zuletzt bearbeitet: 07.10.2007, 10:43 von Chrissi.)
Okay, einen Fehler hab ich.
Jedoch: Wie mache ich das mit der get_id ?
Der Code sieht nun so aus:
PHP-Code:
//Tag [player]
if(strpos($message,"\[player\]")){
$message = preg_replace("\[player\](.*?)\[/player\]", '<a href='.$domain.'/game.php?screen=info_player&id='.get_id_of_player('$1').' target="_blank">$1</a>', $message);
return $message;
}
Fehler:
Zitat:Fatal error: Cannot redeclare get_id_of_player() (previously declared in C:\Users\Christopher\Desktop\xampp\htdocs\mybb\get_id.php:2) in C:\Users\Christopher\Desktop\xampp\htdocs\mybb\get_id.php on line 10
Beiträge: 25.762
Themen: 269
Registriert seit: 20.09.2005
Die Funktion "get_id_of_player()" ist in der get_id.php 2x definiert. Das ist nicht erlaubt.
Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Beiträge: 125
Themen: 28
Registriert seit: 30.08.2007
07.10.2007, 10:49
(Dieser Beitrag wurde zuletzt bearbeitet: 07.10.2007, 10:50 von Chrissi.)
Zeile 10 ist aber nur das Ende der get_id_of_player, die endklammer }.
Zitat:function get_id_of_player($name){
$selectname="SELECT * FROM ".TABLE_PREFIX."ds_tribe WHERE name='".$name."' LIMIT 1";
$ergebnis=mysql_query($selectname) or die("Fehler beim suchen von der Playerid im Code: <b>".$selectname."</b>".mysql_error());
if($player=mysql_fetch_assoc($ergebnis)){
return $player['id'];
}else{
return 111111;
}
}
Und: nein, sie ist nicht zweimal definiert.
Beiträge: 2.769
Themen: 28
Registriert seit: 18.03.2006
Poste bitte mal die ganze Datei.
Beiträge: 125
Themen: 28
Registriert seit: 30.08.2007
07.10.2007, 11:16
(Dieser Beitrag wurde zuletzt bearbeitet: 07.10.2007, 12:34 von Chrissi.)
PHP-Code:
<?php
function get_id_of_player($name){
$selectname="SELECT * FROM ".TABLE_PREFIX."ds_tribe WHERE name='".$name."' LIMIT 1";
$ergebnis=mysql_query($selectname) or die("Fehler beim suchen von der Playerid im Code: <b>".$selectname."</b>".mysql_error());
if($player=mysql_fetch_assoc($ergebnis)){
return $player['id'];
}else{
return 111111;
}
}
function get_id_of_village($x,$y){
$befehl="SELECT * FROM ".TABLE_PREFIX."ds_villages WHERE x=".$x." AND y=".$y." LIMIT 1";
$ergebnis=mysql_query($befehl) or die("Error".mysql_error());
if ($village=mysql_fetch_assoc($ergebnis)) {
return $village['id'];
}else{
die("Fehler beim ermitteln der VillageID.");
return false;
}
}
function get_id_of_ally($name){
$befehl="SELECT * FROM ".TABLE_PREFIX."ds_ally WHERE name='".$name."' OR tag='".$name."' LIMIT 1";
$ergebnis=mysql_query($befehl) or die("Error beim suchen von der Allyid :<b>".$befehl."</b>".mysql_error()."<p>");
if($ally=mysql_fetch_assoc($ergebnis)){
return $ally['id'];
}else{
return 111111;
}
}
function get_name_of_village($id){
$befehl="SELECT * FROM ".TABLE_PREFIX."ds_villages WHERE id=".$id." LIMIT 1";
$ergebnis=mysql_query($befehl);
if ($village=mysql_fetch_assoc($ergebnis)) {
return urldecode($village['name']);
}else{
return "Dorf ungültig";
}
}
?>
Ist die ganze Datei, die anderen Funktionen sind aber immo unwichtig, da die BB Codes dazu erst später kommen. Erstmal den player Tag abschließen, dann werden die anderen ganz einfach
lg
/edit : hallloooo? xD
Beiträge: 125
Themen: 28
Registriert seit: 30.08.2007
07.10.2007, 13:04
(Dieser Beitrag wurde zuletzt bearbeitet: 07.10.2007, 13:05 von Chrissi.)
Okay, der Fehler ist auch raus.
require_once() hats getan
Zitat:Warning: preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash in C:\Users\Christopher\Desktop\xampp\htdocs\mybb\inc\plugins\dsbbcodes.php on line 139
Warning: preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash in C:\Users\Christopher\Desktop\xampp\htdocs\mybb\inc\plugins\dsbbcodes.php on line 139
Warning: preg_replace() [function.preg-replace]: Delimiter must not be alphanumeric or backslash in C:\Users\Christopher\Desktop\xampp\htdocs\mybb\inc\plugins\dsbbcodes.php on line 139
ist der nächste Fehler.
Zeile 139 ist wieder:
PHP-Code:
$message = preg_replace('\[player\](.*?)\[/player\]', '<a href='.$domain.'/game.php?screen=info_player&id='.get_id_of_player('$1').' target="_blank">$1</a>', $message);
/edit: Sind drei Posts, deshalb drei Fehlermeldungen
Beiträge: 1.626
Themen: 41
Registriert seit: 24.01.2006
Hallo Chrissi,
Versuche es mal bitte hiermit:
PHP-Code:
$message = preg_replace("\[player\](.*?)\[/player\]", "<a href=\"".$domain."/game.php?screen=info_player&id=".get_id_of_player($1)." target=\"_blank\">$1</a>", $message);
Mfg Garlant
Ich gebe keinen Support per Messenger oder PN!
Beiträge: 125
Themen: 28
Registriert seit: 30.08.2007
Garlant schrieb:Hallo Chrissi,
Versuche es mal bitte hiermit:
PHP-Code:
$message = preg_replace("\[player\](.*?)\[/player\]", "<a href=\"".$domain."/game.php?screen=info_player&id=".get_id_of_player($1)." target=\"_blank\">$1</a>", $message);
Mfg Garlant
Das hatte ich ja schon, da kommt
Zitat:Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in C:\Users\Christopher\Desktop\xampp\htdocs\mybb\inc\plugins\dsbbcodes.php on line 136
Beiträge: 1.626
Themen: 41
Registriert seit: 24.01.2006
07.10.2007, 20:07
(Dieser Beitrag wurde zuletzt bearbeitet: 07.10.2007, 20:09 von Garlant.)
Hallo Chrissi,
Der Fehler erscheint da $1 eine unzulässige Variable ist.
Ersetze diese Variable durch eine andere, anschließend sollte es ohne Probleme Funktionieren.
Mfg Garlant
Ich gebe keinen Support per Messenger oder PN!