Bug online (39Dll)

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Bug online (39Dll)

Mensagem por Witen em Sex 22 Jun 2012, 19:32

As partes que realmente interessa é as de negrito
Spoiler:
_name = readstring() //O nome usado para login
_pass = readstring() //A senha usada para entrar
_accpth = working_directory+'\Accounts\[Player]'+string_lower(_name)+'.ini' //O caminho do arquivo de conta Jogadores

//Fevificar se o usuario esta banido
if (file_exists(working_directory+'\Accounts\Ban\[Ban]'+string_lower(_name)+'.ini'))
{//se a INI existir deve mandar a mensagem de usuario banido para o client
clearbuffer()
writebyte(MSG_LOGIN)
writebyte(5) // id para uma instrução switch no cliente
send_client('self') //Envia a mensagem para o cliente
}
//Fevificar se o usuário é um moderador
if (file_exists(working_directory+'\Accounts\Moderation\[Player]'+string_lower(_name)+'.ini'))
{//se a INI existir deve mandar a mensagem
clearbuffer()
writebyte(MSG_MOB)
writebyte(1) // id para uma instrução switch no cliente
send_client('self') //Envia a mensagem para o cliente
}

//Verifique se o arquivo de conta existe
if (!file_exists(_accpth))
{
//O arquivo conta não existe, nós informamos o leitor ligado sobre este
clearbuffer()
writebyte(MSG_LOGIN)
writebyte(1) //id para uma instrução switch no cliente
send_client('self') //Envia a mensagem para o cliente
}
else //O arquivo conta existe
{
//Verifique se o jogador com o nome dado não é registrado no allready
if (ds_list_find_index(global._playernames,string_lower(_name)) != -1)
{
//Um jogador com o nome dado é allready logado
clearbuffer()
writebyte(MSG_LOGIN)
writebyte(4) //id para uma instrução switch no cliente
send_client('self')
exit; //Parar a execução do script
}
//Verifique se a senha fornecida está correta
else if (iniReadString(_accpth,'INFO','Password','') != _pass)
{
//A senha fornecida não corresponde
clearbuffer()
writebyte(MSG_LOGIN)
writebyte(2) //id para uma instrução switch no cliente
send_client('self') //Envia a mensagem para o cliente
}
else //O arquivo conta existe, o jogador não está logado allready ea senha está correta também, o jogador pode agora entrar
{
{cash=iniReadString(_accpth,'Status','Cash','')
clearbuffer()
writebyte(MSG_STATUS)
writebyte(1) // id para uma instrução switch no cliente
writestring(cash)
send_client('self')
}
{penny=iniReadString(_accpth,'Status','Penny','')
clearbuffer()
writebyte(MSG_STATUS)
writebyte(2) // id para uma instrução switch no cliente
writestring(penny)
send_client('self')
}
{expe=iniReadString(_accpth,'Status','exp','')
clearbuffer()
writebyte(MSG_STATUS)
writebyte(3) // id para uma instrução switch no cliente
writestring(expe)
send_client('self')
}
{nv=iniReadString(_accpth,'Status','nv','')
clearbuffer()
writebyte(MSG_STATUS)
writebyte(4) // id para uma instrução switch no cliente
writestring(nv)
send_client('self')
}
{cabeca=iniReadString(_accpth,'Perso','cabeca','')
clearbuffer()
writebyte(MSG_STATUS)
writebyte(5) // id para uma instrução switch no cliente
writestring(cabeca)
send_client('self')
}
{corpo=iniReadString(_accpth,'Perso','corpo','')
clearbuffer()
writebyte(MSG_STATUS)
writebyte(6) // id para uma instrução switch no cliente
writestring(corpo)
send_client('self')
}
{perna=iniReadString(_accpth,'Perso','perna','')
clearbuffer()
writebyte(MSG_STATUS)
writebyte(7) // id para uma instrução switch no cliente
writestring(perna)
send_client('self')
}

clearbuffer()
writebyte(MSG_LOGIN)
writebyte(3) // id para uma instrução switch no cliente
send_client('self') //Envia a mensagem para o cliente
}
}

Script do client:
Spoiler:
switch_id = readbyte() //Check what case to execute

switch(switch_id)
{
case 1: //Nuero de notas
global.cash=readstring()
break;
case 2: //Numero de moedas
global.peny=readstring()
break;
case 3: //Experiemcia
global.expe=readstring()
case 4: //nivel
global.nv=readstring()
break;
case 5: //Definir veste: cabeca
global.cabeca=readstring()
break;
case 6: //Definir veste: corpo
global.corpo=readstring()
break;
case 7: //Definir veste: perna
global.perna=readstring()
break;

}
As constantes existem é esta declarado caso o cliente receba a mensagem:
Spoiler:
messageid = readbyte(); //Recieve the id of the incoming message

switch(messageid) //Here we switch to the script that fits the message Id we just received
{
case MSG_ENTER: //Player entered the game room
case_msg_enter()
break;

case MSG_REQUEST_POS: //A Player wants to know our position
case_msg_request_pos()
break;

case MSG_SEND_COORDINATES: //A Player moves
case_msg_send_coordinates()
break;

case MSG_LEAVE: //A Player leaves
case_msg_leave()
break;

case MSG_NEW_CONTACT: //A Player sets a new contact point
case_msg_new_contact()
break;

case MSG_WARP: //A Player changed the map
case_msg_warp()
break;

case MSG_BAN: //A Player changed the map
case_msg_ban()
break;

case MSG_ADM: //A Player changed the map
case_msg_adm()
break;

case MSG_MOB: //A Player changed the map
case_msg_adm()
break;

case MSG_STATUS: //A Player changed the map
case_msg_status()
break;

}
Bom não sei o que acontece, mas era para modificar os valores do cliente mas nada ocorre...

Witen

Ranking : Sem avaliações
Número de Mensagens : 515
Idade : 17
Data de inscrição : 23/05/2012
Reputação : 36
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.wibix.webs.com

Voltar ao Topo Ir em baixo

Re: Bug online (39Dll)

Mensagem por Pit Bull em Sex 22 Jun 2012, 20:04

primeiro, não adianta colocar os arquivos ini's em outras pastas tem que ser onde o cliente ou o server está para que possa ser feita a leitura.

iniReadString << isso ser algum tipo de script? o certo não seria ini_write_string()?

Pit Bull

Número de Mensagens : 630
Idade : 21
Data de inscrição : 31/08/2010
Reputação : 15
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://leninja.com.br

Voltar ao Topo Ir em baixo

Re: Bug online (39Dll)

Mensagem por Witen em Sex 22 Jun 2012, 20:12

primeiro, não adianta colocar os arquivos ini's em outras pastas tem que ser onde o cliente ou o server está para que possa ser feita a leitura.
Basta adicionar o endereço do arquivo que funciona(pastaX\arquivoX.ini)...

iniReadString << isso ser algum tipo de script? o certo não seria ini_write_string()?

Isso é uma das funções da Dll MyIni, veja mais:Ini funções!

Witen

Ranking : Sem avaliações
Número de Mensagens : 515
Idade : 17
Data de inscrição : 23/05/2012
Reputação : 36
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.wibix.webs.com

Voltar ao Topo Ir em baixo

Re: Bug online (39Dll)

Mensagem por Pit Bull em Sab 23 Jun 2012, 00:51

nesse link que você me passou só mostra os comandos do game maker e não da dll.

esse erro ja aconteceu cmg de não estar lendo as msg's, basta colocar a que não está lendo em cima das outras(funcionou cmg).

uma dica: em vez de mandar varias msg com o msm id, manda tudo logo em uma msg só para que o server não fique enviando muitas mensagens, imagine se 30 pessoas estiverem conectando na mesma hora?

Pit Bull

Número de Mensagens : 630
Idade : 21
Data de inscrição : 31/08/2010
Reputação : 15
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://leninja.com.br

Voltar ao Topo Ir em baixo

Re: Bug online (39Dll)

Mensagem por Super Maker em Sab 23 Jun 2012, 07:28

Não sei com a 39dll, mas o Game Maker só lê arquivos ini do mesmo diretório.
Exemplo em erro: INI files must be located in the same directory as the program
Pra você fazer o Game Maker ler ou escrever em um arquivo ini, deve indicar a sessão e chave nele contidos.
Eu sei que é pra ler strings mas te pergunto...
Onde é que você ta tentando usar esse readstring()?.
Tira o lower da leitura do string_lower(_name) e deixa só string(_name). O lower só serve pra deixar tudo em caixa baixa.

Super Maker

Número de Mensagens : 646
Idade : 33
Data de inscrição : 09/07/2011
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Bug online (39Dll)

Mensagem por Witen em Sab 23 Jun 2012, 10:14

Não sei com a 39dll, mas o Game Maker só lê arquivos ini do mesmo diretório.

Aqui esta funcionando perfeitamente o sistema de cadastro login é banimento agora para enviar dados de globais para o cliente não. Atenção! como eu já disse o erro não esta no acesso do serve com os arquivos INI é sim na hora do cliente receber a mensagem...
Pra você fazer o Game Maker ler ou escrever em um arquivo ini, deve indicar a sessão e chave nele contidos.
Eu sei que é pra ler strings mas te pergunto...
rsrsrs... é eu especifiquei :
iniReadString(_accpth,'Status','Cash','')
iniReadString(Endereço,Sessão,Chave,'')
Onde é que você ta tentando usar esse readstring()?.
Serve para receber a string que o player mandou.
Tira o lower da leitura do string_lower(_name) e deixa só string(_name). O lower só serve pra deixar tudo em caixa baixa.
Um, é mesmo...

Witen

Ranking : Sem avaliações
Número de Mensagens : 515
Idade : 17
Data de inscrição : 23/05/2012
Reputação : 36
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.wibix.webs.com

Voltar ao Topo Ir em baixo

Re: Bug online (39Dll)

Mensagem por Conteúdo patrocinado Hoje à(s) 19:52


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum