Xat Criando Mu Online

quarta-feira, 15 de junho de 2011

Bonus Ao Se Cadastrar

Qual a função deste script?
Ao se criar novos personagens em jogo, irão receber uma quantidade de resets, pontos iniciais, e zen para iniciar sua aventura no mu online.
Requisito Básico:
Coluna "Resets" criada na tabela "Character" do banco de dados, o que normalmente já é um padrão utilizado, para armazenar os resets de um personagem.
Como pré-configurar:
Você pode definir os resets iniciais, pontos de distribuição iniciais e dinheiro inicial no local em destaque do script. NÃO INSIRA valores negativos, e para não utilizar um dos atributos, basta manter o valor "0". E NÃO INSIRA mais de 2kkk em Dinheiro, para não bugar o personagem.
Como instalar o script:
Basta roda-lo uma única vez no query analyzer e pronto.
Script:
USE MuOnline
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'MUC_BONUS' AND type = 'TR')
DROP TRIGGER MUC_BONUS
GO
CREATE TRIGGER MUC_BONUS ON Dbo.Character FOR INSERT
AS
BEGIN
-- Bonus para Novos Chars -- Por Alex do Muciados
DECLARE
@Resets INT,
@Pontos INT,
@Dinheiro INT,
@Char varchar(10)
SELECT @Char = Name FROM INSERTED
SET @Resets = 10 -- INSERIR QUANTIDADE DE RESETS
SET @Pontos = 3500 -- INSERIR QUANTIDADE DE PONTOS INICIAIS
SET @Dinheiro = 1000000 -- INSERIR QUANTIDADE DE DINHEIRO
UPDATE Dbo.Character
SET Resets = @Resets, LevelUpPoint = @Pontos, Money = @Dinheiro
WHERE Name = @Char
END
Como remover o script:
Basta rodar o script abaixo uma única vez no query analyzer e estará removida.
USE MuOnline
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'MUC_BONUS' AND type = 'TR')
DROP TRIGGER MUC_BONUS
GO

Auto PK

1º Va em SLQ Server Enterprise Manager.
2º Va em Management.
3º Va em SQL Server Agent.
4º Va em Jobs, e click com botão direito e NewJob.
5º Va em General coloque um nome como AutoPK.
6º Depois vai em Steps.
7º New em Steps em "name" coloque AutoPK tambem.
8º Va em Type deixe Transact-SQL Script (TSQL).
9º Em Database selecione MUOnline.
10ºNo Command coloque o seguinte codigo :

AutoPK - Pago 50 milhões

UPDATE Character
SET PkCount= ('0') , PkLevel= ('2') , PkTime= ('-100')
WHERE Money=('50000000')


AutoPK - Free

Citação:
UPDATE Character
SET PkCount= ('0') , PkLevel= ('2') , PkTime= ('-100')


11º Depois clique em Parse e de OK.
12º Va para Schedules.
13º Em New Sechedule coloque tambem la AutoPK.
14º Depois clique em Change.
15º Na primeira parte selecione Daily e deixe em Every 1 day(s).
16º Depois selecione em baixo Occurs every e troque Hour(s) por Minute(s).
17º Duration selecione a data atual do dia e de ok.

18º Agora e so finalizar dando Aplicar e OK.
19º Pronto está feito AUTOPK.

20º Sempre de Start no SQL Server Agent, e deixe como auto start para facilitar.

Auto Ban em Dupers

1 - Vá em Iniciar / Todos os Programas / Microsoft SQL Server / Query Analyzer.

2 - Será aberto um recorrente que diz conectar ao SQL Server, ai você entra com seu login e senha do SQL.

3- Após entrar no Query analyzer irá abrir um grande espaço para se inserir um texto, neste espaço você cola o seguinte texto:

[+] Abrir Codigo 1

4 - Presione F5 e depois Ctrl N

5 - Irá abrir outra tela, nesta outra tela você cola o seguinte código:

[+] Abrir Codigo 2

6 - F5 e Ctrl+N novamente e mais uma vez irá abrir outra tela, ai você cola o código abaixo:

[+] Abrir Codigo 3

7 - Pressione F5 e está tudo pronto, em seguida feche todas as janelas abertas salvando os "logs" aonde desejar.

Auto Reset

1º Va em SLQ Server Enterprise Manager.
2º Va em Databases, Muonline e Tables.
3º Na tabela Character Click com botão direito, Design Table.
4º Va até o ultimo campo (collun name) escrito e crie um chamado Reset.
5º Colunname = Reset , DataType = int , Default value = 1 , salve e feche.
6º Agora em Management.
7º Va em SQL Server Agent.
8º Va em Jobs, e click com botão direito e NewJob.
9º Va em General coloque um nome como AutoReset.
10º Depois vai em Steps.
11º New em Steps em "name" coloque AutoReset tambem.
12º Va em Type deixe Transact-SQL Script (TSQL).
13º Em Database selecione MUOnline.
14º No Command coloque o seguinte codigo :



[[ [ Auto Reset Para Vip na table MEMB_INFO ]

-- =============================================
-- Reset não acumulativo (Pontos x Resets) + VIP
-- =============================================

--
-- Definindo as variaveis (Não mexer)
declare
@MaxLevel int,
@PontosReset int,
@ZenReq int,
@Forca int,
@Agilidade int,
@Vitalidade int,
@Energia int,
@MaxLevelVIP int,
@PontosResetVIP int,
@ZenReqVIP int,
@ForcaVIP int,
@AgilidadeVIP int,
@VitalidadeVIP int,
@EnergiaVIP int
-- Definindo valor das variaveis (Configure conforme necessário)
--
-- Contas não VIP
set @MaxLevel = 349 -- Level ao qual poderá resetar
set @PontosReset = 300 -- Pontos que ganhará por reset (Pontos vezes Resets)
set @ZenReq = 50000000 -- Zen requerido para resetar
set @Forca = 30 -- Ponto padrão de força que ira retornar após resetar
set @Agilidade = 30 -- Ponto padrão de agilidade que ira retornar após resetar
set @Vitalidade = 30 -- Ponto padrão de vitalidade que ira retornar após resetar
set @Energia = 30 -- Ponto padrão de energia que ira retornar após resetar
-- Contas VIP
set @MaxLevelVIP = 299 -- Level ao qual poderá resetar
set @PontosResetVIP = 400 -- Pontos que ganhará por reset (Pontos vezes Resets)
set @ZenReqVIP = 20000000 -- Zen requerido para resetar
set @ForcaVIP = 100 -- Ponto padrão de força que ira retornar após resetar
set @AgilidadeVIP = 100 -- Ponto padrão de agilidade que ira retornar após resetar
set @VitalidadeVIP = 100 -- Ponto padrão de vitalidade que ira retornar após resetar
set @EnergiaVIP = 100 -- Ponto padrão de energia que ira retornar após resetar
-- Execução do comando SQL (Não mexer)
--
-- Contas não VIP
UPDATE Character
SET cLevel = 1,
Experience = 0,
LevelUpPoint = @PontosReset * (Resets + 1),
Strength = @Forca,
Dexterity = @Agilidade,
Vitality = @Vitalidade,
Energy = @Energia,
Money = Money - @ZenReq,
Resets = Resets + 1
FROM Character
JOIN MEMB_STAT ON Character.AccountID=MEMB_STAT.memb___id COLLATE Latin1_General_CS_AS
JOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_AS
WHERE cLevel > (@MaxLevel - 1)
AND Money > (@ZenReq - 1)
AND MEMB_STAT.ConnectStat = 0
AND MEMB_INFO.vip = 0
AND Resets <= 150
-- Contas VIP
UPDATE Character
SET cLevel = 1,
Experience = 0,
LevelUpPoint = @PontosResetVIP * (Resets + 1),
Strength = @ForcaVIP,
Dexterity = @AgilidadeVIP,
Vitality = @VitalidadeVIP,
Energy = @EnergiaVIP,
Money = Money - @ZenReqVIP,
Resets = Resets + 1
FROM Character
JOIN MEMB_STAT ON Character.AccountID=MEMB_STAT.memb___id COLLATE Latin1_General_CS_AS
JOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Latin1_General_CS_AS
WHERE cLevel > (@MaxLevelVIP - 1)
AND Money > (@ZenReqVIP - 1)
AND MEMB_STAT.ConnectStat = 0
AND MEMB_INFO.vip = 1
AND Resets <= 1000
-------------------------------------------------------------------------------------------------------------

E aqui estão alguns comandos de QUERY:

CODE
-- Tornar uma conta VIP
UPDATE MEMB_INFO SET vip=1 WHERE memb___id='nome_da_conta'
-- Tornar uma conta Não VIP
UPDATE MEMB_INFO SET vip=0 WHERE memb___id='nome_da_conta'
-- Listar todas a contas VIP
SELECT memb___id FROM MEMB_INFO WHERE vip=1
-- Listar todas a contas Não VIP
SELECT memb___id FROM MEMB_INFO WHERE vip=0



Mudando o Código:
LevelUpPoint= 300*Reset
Significa que os pontos por reset vão ser definidos assim:
300 multiplicado pelo numero de resets atuais.
Strength= ('20') , Dexterity= ('20') , Vitality= ('20') , Energy= ('20')
Isso são os atributos que o char recomeça, ou seja, esse char recomeçaria com 20 pontos em todos os atributos (skills).
WHERE clevel>349
Lvl de Reset ( deixe -1 do lvl desejado ), nesse ele resetaria no 350.
-------------------------------------------------------------------------------------------------------------
[[ [ Auto Reset Para Vip na table Character ]
Auto Reset para GM's
UPDATE Character
SET clevel=('50'), Experience=('0'),Money=Money-('0'), Reset=Reset+1, Strength=('32500'), Dexterity=('26000'), Vitality=('32500'), Energy=('32500')
FROM Character join Memb_Stat on Character.Accountid=Memb_Stat.memb___id
collate Latin1_general_CI_AS
WHERE clevel>349 AND Vip = 8 AND Memb_Stat.ConnectStat = 0
Auto Reset para Usuários Normais ( and Vip = 0 ) :Ganhando 350 pontos, Resetando lvl 350
UPDATE Character
SET clevel=('1'), Experience=('0'),Money=Money-('0'),LevelUpPoint=350+350*Reset, Reset=Reset+1,Strength=('30'), Dexterity=('30'), Vitality=('30'),Energy=('30')
FROM Character join Memb_Stat on Character.Accountid=Memb_Stat.memb___id
collate Latin1_general_CI_AS
WHERE clevel>349 AND Memb_Stat.ConnectStat = 0 and Vip = 0 and Money>('0')


Auto Reset para Users Normais ( and Vip = 0 ) :Ganhando 350 pontos, Resetando lvl 350, Resetando Itens
UPDATE Character
SET clevel=('1'), Experience=('0'),Money=Money-('0'),LevelUpPoint=350+350*Reset, Reset=Reset+1,
Strength=('30'), Dexterity=('30'), Vitality=('30'),Energy=('30'), Inventory=null, MagicList=null
FROM Character join Memb_Stat on Character.Accountid=Memb_Stat.memb___id
collate Latin1_general_CI_AS
WHERE clevel>349 AND Memb_Stat.ConnectStat = 0 and Vip = 0 and Money>('0')
Auto Reset para Usuários Vips ( and Vip = 1 ) : Ganhando 400 pontos, Resetando lvl 350
UPDATE Character
SET clevel=('1'), Experience=('0'),Money=Money-('0'),LevelUpPoint = 400+400*Reset, Reset=Reset+1, Strength=('50'), Dexterity=('50'), Vitality=('50'), Energy=('50')
FROM Character join Memb_Stat on Character.Accountid=Memb_Stat.memb___id
collate Latin1_general_CI_AS
WHERE clevel>349 AND Vip = 1 AND Memb_Stat.ConnectStat = 0

Auto Reset para Qualquer Usuário Acumulativo : Resetando lvl 350 Acumulativo

UPDATE Character
SET clevel= ('1') , experience= ('0')
WHERE clevel>349



15º Depois clique em Parse e de OK.
16º Va para Schedules.
17º Em New Sechedule coloque tambem la AutoReset.
18º Depois clique em Change.
19º Na primeira parte selecione Daily e deixe em Every 1 day(s).
20º Depois selecione em baixo Occurs every e troque Hour(s) por Minute(s).
21º Duration selecione a data atual do dia e de ok.

22º Agora e so finalizar dando Aplicar e OK.
23º Pronto está feito AUTORESET.
24º Sempre de Start no SQL Server Agent, e deixe como auto start para facilitar.

Auto Mensagem

1° Abra seu Enterprise Manager
2º Vá database, Muonline, Tables depois em AutoGMGG
3º Clique com o botão direito do mouse e vá em Open Tables depois Return All Arows
4º Clique em Return All Arows
5º Veja a foto como colocar as mensagens, o tempo e etc.
6º Apois ter colocado as msg vai em um ponto de ! (esclamação) para da o RUN
7º Agora na pasta Game Server abra o arquivo MyGSFun
8º vai esta ServerID=0 mude para ServerID=1
9º em AutoGmGG=0 mude para AutoGmGG=1
10º Pronto já esta fucionando a auto mensagem

Protegendo o Servidor

Iº Configuração : Usando Firewall do Windowns

1º Entre no Painel de controle e logo depois entre em firewall do windows


2º Verifique se a opção Ativado(recomendado) esteja selecionada e click em
Exceções logo acima



3º Vai ter uma lista, clike em Adicionar Porta



4º Em nome, coloque o número da porta ,em Número da porta coloque a porta que
você quer abrir (lista a baixo) e click em TCP e de OK e novamente click em adicionar
porta em nome coloque a mesma porta que você colocou e em número também e
marque UDP e de OK (faça isso com todas as portas)



Lista de portas necessarias libera no firewall:
44405 - Porta de conexão dos playes para entra no server
55901 - Porta do gameserver
8090 - Porta do site
1433 - Porta do sq
5º Faça isso com todas as portas
6º Selecione todas as portas que você abriu, e de OK na janela do firewall



7º Ligue o server normalmente, Ai cada link que abrir vai aparecer um aviso do
Firewall perguntando se quer desbloquear ou manter bloqueado certo?
No data server 1 e 2 ( links 1 e 2 ) coloque MANTER BLOQUEADO e no resto dos
links coloque desbloquear. Quando terminar de liga o server, vai no firewall do windows
novamente e click em exceções, só deixe selecionada as portas necessárias para
o server, ou seja as portas 44405 e 8090 e o resto deixe tudo DESCELECIONADAS!




*********************************************************************
IIº Configuração : Usando SygateFirewall
Primeiramente baixe o Firewall : Firewall ,
SygatePersonalFirewall ou SygateFirewall
.

1º Instale o Sygate e Reenicie o Computador
2º Ligue o Servidor e o Sygate.
3º Abra o Sygate.
4º Bloquei "SQL Server WindowsNT", "Data Server 1" e "Data Server 2".

*********************************************************************
IIIº Configuração : Usando PortBlock

Primeiramente baixe o : Port Bloqued.

1º Instale-o
2º Depois de você ligar teu server , abra, e ele aparecerá perto do relogiodo win.
3º Apos abri-lo click nele e aperte em mapping e de add.
4º Adicione as ports que são usadas para hackear :

55960
55961
55962
55963
55970

5º Sempre Uma de Cada Veiz e deixando a OPCAO TCP marcada.

6º De ok e done e dexe aberto seu server estara livre de hacks.

Obs. : Caso você tenha que desligar os LINKS do server tire o programa
se não ele ira blokear a conexão das Data Base e o Server não ira Ligar.

*********************************************************************
IVº Configuração : Trocando as Portas do Servidor


Trocando as Ports do Servidor :

1º Abra as propriedades dos links 1, 2 e 8.
Por padrão devem estar da forma do exemplo, modifique elas. Exemplo:

?:\Muserver\DataServer1\Dataserver.exe 55960
Mude Para:
?:\Muserver\DataServer1\Dataserver.exe 55980

?:\Muserver\DataServer1\Dataserver.exe 5596
Mude Para:
?:\Muserver\DataServer1\Dataserver.exe 55980

?:\muserver\GameServer\GameServer.exe 127.0.0.1 55970 127.0.0.1             55960 55901      

Mude Para:
?:\muserver\GameServer\GameServer.exe 127.0.0.1 55940 127.0.0.1             55980 55921      


2° Mude a porta de Conexão do seu server, issu fara com que parem alguns hacks.

Baixe o CSPORTCHANGER

Modifique a porta do connectserver de 44405 para qualquer outro entre 1 e 60000
*********************************************************************
Vº Configuração : Colocando Ant Sql Inject no Site PHP


Anti SQL Inject

Na pasta de seu site, tem o config.php, abra-o, após abri-lo você terá que
adicionar esse codigo após o < ?php(uma linha abaixo):

$xa = getenv('REMOTE_ADDR');
$badwords = array(";","'","\"","*","union","del","DEL","insert","update",
" =","drop","sele","$");

foreach($_POST as $value)
foreach($badwords as $word)
if(substr_count($value, $word) > 0)
die("Security Warning!<br />Forbidden simbols are included,
please remove them and try again -> $xa");

Assim ele bloqeará os codigos usados para hackear usando o sql injection.


*********************************************************************
VIº Configuração : Bloqueando Bau de Duppers


Bloqueando os Baús de Duppers
Execute esse código no SQL Query Analizer uma vez na semana por garantia.

Selecione a DB MuOnline
copie e cole o codigo:
if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[trg_CheckSameID]')
and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[trg_CheckSameID]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[AllItemsLog]')
and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[AllItemsLog]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CopyLog]')
and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[CopyLog]
GO
CREATE TABLE [dbo].[AllItemsLog] (
[items_id] [int] IDENTITY (1, 1) NOT NULL ,
[items_type] [binary] (1) NOT NULL ,
[items_serial] [binary] (4) NOT NULL ,
[items_acid] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[CopyLog] (
[copy_id] [int] IDENTITY (1, 1) NOT NULL ,
[copy_acid] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[copy_whdata] [binary] (1200) NOT NULL ,
[copy_date] [datetime] NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[AllItemsLog] ADD
CONSTRAINT [DF_CT_ITEM_item] DEFAULT (0) FOR [items_type],
CONSTRAINT [DF_CT_ITEM_itemid] DEFAULT (0) FOR [items_serial],
CONSTRAINT [DF_CT_ITEM_itemrole] DEFAULT ('\') FOR [items_acid]
GO
CREATE INDEX [IX_CT_ITEM] ON [dbo].[AllItemsLog]([items_type],
[items_serial]) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CopyLog] ADD
CONSTRAINT [DF_CopyLog_copy_date]
DEFAULT (getdate()) FOR [copy_date]
GO

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
aperte F5
issu bloqueara os duppers.

Criando Launcher

1° Faço download do Mu Laucher Builder encontrado em utilitários.
 

2° Caso você queira que abra um site no meio do laucher selecione Enable Browser, e digita o site em Browser URL
 

3° Selecione "Enable Options", Show Server status, para ter a opção de video e som, e para aparecer o status do server
 

4° No Name of TheServer coloque o nome do server, em Server Page coloca a URL do site, em Server Hostname/IP coloque o ip do servidor, e em Server post coloca o port "44405"

 
5º Clica em Build
 

6º Pronto seu Launcher está criado com sucesso, esse é o launcher mais simples.