Chat Selectors [@player]

This commit is contained in:
Shoghi Cervantes Pueyo 2013-05-15 16:35:26 +02:00
parent d0d5c1bb79
commit 7de0835ad9

View File

@ -494,8 +494,26 @@ class Player{
public function sendChat($message){
$mes = explode("\n", $message);
foreach($mes as $m){
if(preg_match_all('#@([@A-Za-z_]{1,})#', $m, $matches, PREG_OFFSET_CAPTURE) > 0){
$offsetshift = 0;
foreach($matches[1] as $selector){
if($selector[0]{0} === "@"){ //Escape!
$m = substr_replace($m, $selector[0], $selector[1] + $offsetshift - 1, strlen($selector[0]) + 1);
--$offsetshift;
continue;
}
switch(strtolower($selector[0])){
case "player":
case "username":
$m = substr_replace($m, $this->username, $selector[1] + $offsetshift - 1, strlen($selector[0]) + 1);
$offsetshift += strlen($selector[0]) - strlen($this->username) + 1;
break;
}
}
}
$this->dataPacket(MC_CHAT, array(
"message" => str_replace("@username", $this->username, $m),
"message" => $m,
));
}
}