Boa tarde galera,
queria compartilhar com vocês meu desenvolvimento que já estou a algum tempo fazendo a pedidos de um usuário.

Se trata de um painel para mu online com diversas opções para os jogadores além de opções para administradores e conta com plugins que você pode adicionar em qualquer template assim podendo adicionar noticias, enquete, e outros normalmente.

O painel possui um sistema de strings onde o admin pode modificar todas as strings de retorno para o jogador.

Segue o arquivo Configuracao.php:

Código:
<?

/*
	################################################################################################################################
	
	PS Plugin MuWeb
	Desenvolvido por PS Sistemas
	
	################################################################################################################################
	
*/

	# Configuração geral
	
	define("Title", "PS MuWeb Plugin 2013 - PS Sistemas");

	###
	
	# Sistema de cores Layout
	$Textos	= "#4682B4";
	$Aviso	= "#A52A2A";
	
	###
	
	$PS['VIP']['NAMES']				= array("Gratuito", "Vip 1", "Vip 2");
	$PS['VIP']['COLUMNS']			= array(/*Vip*/ "vip", /*Dias*/ "Dias");
	
	###
	
	$PS['MOEDAS']['NAMES']			= array("Moeda 1|vCoins", "Moeda 2|vPoints", "Golds|golds");
												
											# Formato: Nome Moeda|Coluna (Leitura da MEMB_INFO)
	
	###
	
	# Reset
	$PS['CHARACTER']['COLUMNS']		= array(/*Reset*/ "resets", /*Resets semanal*/ "resetsWeek", /*Resets mensal*/ "resetsMonth", /*Master Resets*/ "MResets");
	
	$PS['Reset']['LIMITS']			= array(/*Ligar*/ 1, /*Free*/ 1, /*Vip 1*/ 1, /*Vip 2*/ 1, /*Tipo*/ 2);
											
											# Tipo reset: 0 Pontuativo / 1 Acumulativo / 2 Tabelado
											
	$PS['Reset']['TIPO']			= array(
						/*Free*/ "0|400|500000000|250|0|0|0|0", 	/*Vip 1*/ "0|350|250000000|500|0|0|0|0", 	/*Vip 2*/ "0|300|100000000|1000|0|0|0|0",
						
						/*Free*/ "1|400|500000000|0|0|0|0|0",		/*Vip 1*/ "1|350|250000000|0|0|0|0|0", 		/*Vip 2*/ "1|300|100000000|0|0|0|0|0",
						
						# Formato: Tipo reset|Level para resetar|Custo|Pontos|Reset inicial|Reset final|Limpa Inventario|Limpa skills
						
						/*Free*/ "2|400|500000000|250|0|10|0|0|0", 		/*Vip 1*/ "2|350|250000000|500|0|10|0|0|1", 	/*Vip 2*/ "2|300|100000000|1000|0|10|0|0|2",
						/*Free*/ "2|400|500000000|250|10|50|0|0|0", 	/*Vip 1*/ "2|350|250000000|500|10|50|0|0|1", 	/*Vip 2*/ "2|300|100000000|1000|10|50|0|0|2",
						/*Free*/ "2|400|500000000|250|50|500|0|0|0", 	/*Vip 1*/ "2|350|250000000|500|50|500|0|0|1", 	/*Vip 2*/ "2|300|100000000|1000|50|500|0|0|2");

						# Formato: Tipo reset|Level para resetar|Custo|Pontos|Reset inicial|Reset final|Limpa Inventario|Limpa skills|Vip
					
	###
	
	# Alteração de dados
	$PS['DADOS']['LIMITS'] 			= array(/*Ligar*/ 1, /*Free*/ 1, /*Vip 1*/ 1, /*Vip 2*/ 1);
	$PS['DADOS']['COLUMNS']			= array("memb_name|Nome|15", "mail_addr|Email|30", "memb__pwd|Senha|10");
								
											# Formato: Coluna|Nome|Qtd caracteres
											
	# Sistema de limpar bau
	$PS['CleanVault']['LIMITS']		= array(/*Ligar*/ 1, /*Free*/ 1, /*Vip 1*/ 1, /*Vip 2*/ 1, /*Varbinary*/ 1920);
		
	# Sistema de reparar bau
	$PS['RepairVault']['LIMITS']	= array(/*Ligar*/ 1, /*Free*/ 1, /*Vip 1*/ 1, /*Vip 2*/ 1, /*Varbinary*/ 1920);
	
	# Sistema de PM	
	$PS['PM']['LIMITS'] 			= array(/*Ligar*/ 1, /*Msgs Free*/ 10, /*Msgs Vip 1*/ 20, /*Msgs Vip 2*/ 50, /*Caracteres em cada pm*/ 512,
											/*Free*/ 1, /*Vip 1*/ 1, /* Vip 2*/ 1);
	
	# Sistema de Troca de classe
	$PS['ChangeClass']['LIMITS']	= array(/*Ligar*/ 1, /*Free*/ 1, /*Vip 1*/ 1, /*Vip 2*/ 1);
	$PS['ChangeClass']['CLASS'] 	= array("0|Dark Wizard",   "1|Soul Master",  "2|Grand Master", 		"16|Dark Knight", 	   "17|Blade Knight", "18|Blade Master",
											"32|Fairy Elf",    "33|Muse Elf", 	 "34|High Elf", 		"48|Magic Gladiator",  "49|Duel Master",  "64|Dark Lord",
											"65|Lord Emperor", "80|Summoner", 	 "81|Blood Summoner", 	"82|Dimension Master", "96|Rage Fighter", "98|Fist Master");
											 
											 # Formato: Classe|Nome
	
	# Sistema de Troca de nick
	$PS['ChangeNick']['LIMITS']		= array(/*Ligar*/ 1, /*Free*/ 1, /*Vip 1*/ 1, /*Vip 2*/ 1);
	
	# Sistema de redistribuir pontos
	$PS['Redistribute']['LIMITS']	= array(/*Ligar*/ 1, /*Free*/ 1, /*Vip 1*/ 1, /*Vip 2*/ 1, /*LeaderShip*/ 1);
	
	# Sistema de desbugar zen
	$PS['FixZen']['LIMITS']			= array(/*Ligar*/ 1, /*Free*/ 1, /*Vip 1*/ 1, /*Vip 2*/ 1, /*Adicionar*/ 0);
	
	# Sistema de distribuir pontos
	$PS['DistributePoints']['LIMITS']		= array(/*Ligar*/ 1, /*Free*/ 1, /*Vip 1*/ 1, /*Vip 2*/ 1, /*LeaderShip*/ 1, /*Max Points*/ 35000);
	
	# Mover personagem
	$PS['MovePerson']['LIMITS'] 	= array(/*Ligar*/ 1, /*Free*/ 1, /*Vip 1*/ 1, /*Vip 2*/ 1);
	$PS['MovePerson']['MAPS']		= array("0|Lorencia|50|10000|125|125", "6|Stadium|100|50000|250|250");
	
											# Formato: Mapa|Nome|Level|Custo|X|Y
											
	# Sistema de limpar inventário
	$PS['CleanInvent']['LIMITS']	= array(/*Ligar*/ 1, /*Free*/ 1, /*Vip 1*/ 1, /*Vip 2*/ 1, /*Varbinary*/ 1728);
	
	# Sistema de reparar inventário
	$PS['RepairInvent']['LIMITS']	= array(/*Ligar*/ 1, /*Free*/ 1, /*Vip 1*/ 1, /*Vip 2*/ 1, /*Varbinary*/ 1728);
	
	# Sistema de avatar
	$PS['Avatar']['LIMITS']			= array(/*Ligar*/ 1, /*Free*/ 1, /*Vip 1*/ 1, /*Vip 2*/ 1, /*Tamanho em kb*/ 1024,
											/*Extensões*/ ".jpg|.png|.gif|.bmp|.jpeg", /*Coluna (Character)*/ "avatar", /*Local destino*/ "./avatares/");
	
	# Sistema de perfil
	
	$PS['Perfil']['LIMITS']			= array(/*Ligar*/ 1, /*Free*/ 1, /*Vip 1*/ 1, /*Vip 2*/ 1, /*Coluna  (Character)*/ "perfil", /*Caracteres*/ 1000);
	
	################################################################################################################################
	
	# Conexão com o SQL Server
	
	define("host", 	"127.0.0.1");
	define("login",	"sa");
	define("pass",	"vps01");
	define("db",	"MuOnline");
	
	$conexao = mssql_connect(host, login, pass) or die ("<script>alert('Erro no servidor, tente novamente mais tarde');</script>");
	mssql_select_db(db) or die ("<script>alert('Erro no servidor, tente novamente mais tarde');</script>");
	
	$xa 		= getenv('REMOTE_ADDR');
	$badwords 	= array("UNION","whare","'","DELETE","DROP","TRUNCATE");
	
	foreach($_REQUEST as $value)
	foreach($badwords as $word)
	if(substr_count($value, $word) > 0)
	die ("Evite usar esses tipos de caracteres!");
	
	################################################################################################################################
?>
Segue o arquivo Strings.php:

Código:
<?
	header("Content-Type: text/html; charset=ISO-8859-1",true);
	
	include "Configuracao.php";

/*
	################################################################################################################################
	
	PS Plugin MuWeb
	Desenvolvido por PS Sistemas
	
	################################################################################################################################
	
	Strings:
	
	################################################################################################################################
	
*/

	$PS['LAYOUT']['ERRO']['INICIO']	= "<br><div style='margin-top: 10px; color: $Textos; font-weight: bold;'><img src='images/alert_icon_info.png' width='15' height='15'/>&nbsp;&nbsp;Informação</div><div style='margin-top: 20px; color: $Textos;'>";
	$PS['LAYOUT']['ERRO']['FIM'] = "</div>";

	# Troca de classe
	$PS['STRINGS'][0]	= "- Sistema de Troca de classe desligado";
	$PS['STRINGS'][1]	= "- Voce nao pode usar o sistema de troca de classe";
	$PS['STRINGS'][2]	= "- Classe do personagem %s mudada com sucesso!";
	$PS['STRINGS'][3]	= "- Erro ao mudar a classe!";
	$PS['STRINGS'][61]	= "- Desconecte para trocar de classe!";
	
	# Pms
	$PS['STRINGS'][4]	= "- Sistema de PM desligado";
	$PS['STRINGS'][5]	= "- Voce nao pode usar o sistema de PM";
	$PS['STRINGS'][6]	= "- PM respondida com sucesso!";
	$PS['STRINGS'][7]	= "- Erro ao responder a PM";
	$PS['STRINGS'][8]	= "- PM deletada com sucesso!";
	$PS['STRINGS'][9]	= "- Erro ao deletar a PM";
	$PS['STRINGS'][10]	= "- Limite de mensagens atingido, delete algumas.";
	$PS['STRINGS'][11]	= "- Nenhum personagem encontrado em sua conta!";
	$PS['STRINGS'][12]	= "- Nenhuma PM encontrada!";
	$PS['STRINGS'][13]	= "- Você nao pode enviar PM para seu proprio personagem!";
	$PS['STRINGS'][14]	= "- PM enviada com sucesso!";
	$PS['STRINGS'][15]	= "- Erro ao enviar a PM";
	
	# Troca de nick
	$PS['STRINGS'][16]	= "- Sistema de troca de nick desligado";
	$PS['STRINGS'][17]	= "- Voce nao pode usar o sistema de troca de nick";
	$PS['STRINGS'][18]	= "- Nick alterado com sucesso";
	$PS['STRINGS'][19]	= "- Erro ao alterar o nick";
	$PS['STRINGS'][20]	= "- Nick em uso, escolha outro!";
	$PS['STRINGS'][62]	= "- Desconecte para trocar de nick!";
	
	# Redistribuir pontos
	$PS['STRINGS'][21]	= "- Sistema de redistribuir desligado";
	$PS['STRINGS'][22]	= "- Você não pode usar o sistema de redistribuir pontos";
	$PS['STRINGS'][49]	= "- Atenção esta operação irá redistribuir seus pontos";
	$PS['STRINGS'][23]	= "- Pontos do personagem %s redistribuidos com sucesso";
	$PS['STRINGS'][24]	= "- Erro ao redistribuir os pontos";
	$PS['STRINGS'][63]	= "- Desconecte para redistribuir os pontos!";
	
	# Desbugar zen
	$PS['STRINGS'][25]	= "- Sistema de desbugar zen desligado";
	$PS['STRINGS'][26]	= "- Você não pode usar o sistema de desbugar zen";
	$PS['STRINGS'][27]	= "- Seu zen não está bugado";
	$PS['STRINGS'][28]	= "- Zen do personagem %s desbugado com sucesso";
	$PS['STRINGS'][29]	= "- Erro ao desbugar o zen";
	$PS['STRINGS'][64]	= "- Desconecte para desbugar seu zen";
	
	# Distribuir pontos
	$PS['STRINGS'][30]	= "- Sistema de adicionar pontos desligado";
	$PS['STRINGS'][31]	= "- Você não pode usar o sistema de distribuir pontos";
	$PS['STRINGS'][32]	= "- Você não possui essa quantidade de pontos";
	$PS['STRINGS'][33]	= "- Foram adicionados %s pontos em %s!";
	$PS['STRINGS'][34]	= "- Erro ao adicionar os pontos";
	$PS['STRINGS'][65]	= "- Desconecte para distribuir seus pontos!";
	$PS['STRINGS'][92]	= "- Limite máximo de pontos %s";
	$PS['STRINGS'][93]	= "- Use somente numeros maiores ou diferente que zero";
	
	# Alteração de dados
	$PS['STRINGS'][35]	= "- Sistema de alteração de dados desligado";
	$PS['STRINGS'][36]	= "- Você não pode usar o sistema de alterar dados";
	$PS['STRINGS'][37]	= "- Dado %s alterado com sucesso";
	$PS['STRINGS'][38]	= "- Erro ao alterar o dado";
	
	# Limpar bau
	$PS['STRINGS'][39]	= "- Sistema de limpar bau desligado";
	$PS['STRINGS'][40]	= "- Você não pode usar o sistema de limpar bau";
	$PS['STRINGS'][41]	= "- Atenção a limpeza irá apagar todos os itens do seu bau!";
	$PS['STRINGS'][42]	= "- Bau limpo com sucesso";
	$PS['STRINGS'][43]	= "- Erro ao limpar o bau";
	$PS['STRINGS'][66]	= "- Desconecte para limpar seu bau!";
	
	# Reparar bau	
	$PS['STRINGS'][44]	= "- Sistema de reparar bau desligado";
	$PS['STRINGS'][45]	= "- Você não pode usar o sistema de reparar bau";
	$PS['STRINGS'][46]	= "- Atenção esta operação irá reparar todos os itens do bau!";
	$PS['STRINGS'][47]	= "- Bau reparado com sucesso";
	$PS['STRINGS'][48]	= "- Erro ao reparar o bau";
	$PS['STRINGS'][67]	= "- Desconecte para reparar seu bau!";
		
	# Mover personagem
	$PS['STRINGS'][50]	= "- Sistema de mover personagem desligado";
	$PS['STRINGS'][51]	= "- Você não pode usar o sistema de mover personagem";
	$PS['STRINGS'][52]	= "- Personagem %s movido para %s com sucesso";
	$PS['STRINGS'][53]	= "- Erro ao mover o personagem";
	$PS['STRINGS'][54]	= "- Level insuficiente para mover";
	$PS['STRINGS'][55]	= "- Zen insuficiente para mover";
	$PS['STRINGS'][68]	= "- Desconecte para mover seu personagem";
	
	# Limpar inventário
	$PS['STRINGS'][56]	= "- Sistema de limpar inventário desligado";
	$PS['STRINGS'][57]	= "- Você não pode usar o sistema de limpar inventário";
	$PS['STRINGS'][58]	= "- Atenção esta operação irá apagar todos os itens do seu inventário";
	$PS['STRINGS'][59]	= "- Inventário do personagem %s limpo com sucesso";
	$PS['STRINGS'][60]	= "- Erro ao limpar o inventário";
	$PS['STRINGS'][69]	= "- Desconecte para limpar seu inventário";
	
	# Reparar inventário
	$PS['STRINGS'][70]	= "- Sistema de reparar inventário desligado";
	$PS['STRINGS'][71]	= "- Você não pode usar o sistema de reparar inventário";
	$PS['STRINGS'][70]	= "- Atenção esta operação irá reparar todos os itens do seu inventário";
	$PS['STRINGS'][72]	= "- Inventário do personagem %s reparado com sucesso";
	$PS['STRINGS'][73]	= "- Erro ao reparar o inventário";
	$PS['STRINGS'][74]	= "- Desconecte para reparar seu inventário";
	
	# Avatar do personagem
	$PS['STRINGS'][75]	= "- Sistema de avatar desligado";
	$PS['STRINGS'][76]	= "- Você não pode usar o sistema de avatar";
	$PS['STRINGS'][77]	= "- Avatar trocado com sucesso para %s";
	$PS['STRINGS'][78]	= "- Erro ao enviar a imagem";
	$PS['STRINGS'][79]	= "- Tamanho excede o limite de %s kb";
	$PS['STRINGS'][80]	= "- Extensão não permitida, use somente (%s)";
	$PS['STRINGS'][81]	= "- Selecione uma imagem!";
	
	# Perfil
	$PS['STRINGS'][82]	= "- Sistema de perfil desligado";
	$PS['STRINGS'][83]	= "- Você não pode usar o sistema de perfil";
	$PS['STRINGS'][84]	= "- Máximo de caracteres permitidos %s atingidos";
	$PS['STRINGS'][85]	= "= Quantidade de caracteres: %s";
	$PS['STRINGS'][86]	= "- Perfil alterado com sucesso";
	$PS['STRINGS'][87]	= "- Erro ao alterar o perfil";
	$PS['STRINGS'][88]	= "- Perfil habilitado com sucesso";
	$PS['STRINGS'][89]	= "- Erro habilitar o perfil";
	$PS['STRINGS'][90] 	= "- Perfil desabilitado com sucesso";
	$PS['STRINGS'][91]	= "- Erro ao desabilitar o perfil";
	
	# Resetar
	$PS['STRINGS'][94]	= "- Sistema de reset desligado";
	$PS['STRINGS'][95]	= "- Você não pode usar o sistema de reset";
	$PS['STRINGS'][96]	= "- Desconecte para resetar";
	$PS['STRINGS'][97]	= "- Level insuficiente, faltam %s levels";
	$PS['STRINGS'][98]	= "- Zen insufuciente, faltam %s de zen";
	$PS['STRINGS'][99]	= "- Personagem %s foi resetado com sucesso, nº do reset %s";
	$PS['STRINGS'][100]	= "- Erro ao resetar o personagem";
	
	$PS['STRINGS'][101]	= "";
	$PS['STRINGS'][102]	= "";
	$PS['STRINGS'][103]	= "";
	$PS['STRINGS'][104]	= "";
	$PS['STRINGS'][105]	= "";
	$PS['STRINGS'][106]	= "";
	$PS['STRINGS'][107]	= "";
	$PS['STRINGS'][108]	= "";
	$PS['STRINGS'][109]	= "";

?>
Todas opções que estão no painel serão programadas, fora as que já foram feitas,
pretendo por compatibilidade com todas as versões disponíveis e sempre estar atualizando o sistema com novas opções como o sistema de quest, pm e outros.

Atualmente compatível de 97D até Season 2.

Para visualizar o painel você pode acessa-lo através do link: [Somente usuários registrados podem vem os links. ]
Contas/senha para login: teste/teste | teste1/teste1 | teste2/teste2

O sistema será liberado através de um cadastro no meu site onde o usuário irá libera-lo através de um iframe para seus jogadores,
os demais códigos para exibição de noticias, enquete e outros serão disponibilizados para que o administrador adicione em seu site.

Toda sugestão será bem vinda e adicionada ao sistema para torna-lo a melhor opção para todo mundo.

Créditos: PS Sistemas.