CMD:anunciar(playerid, params[]) {
new Anuncio[124], formato[124];
if(sscanf(params, "str[124]", Anuncio)) return SendClientMessage(playerid, -1, "| ERRO | Digite: /Anunciar [Seu Anuncio]");
format(formato, sizeof(formato), "Anuncio %s", Anuncio);
SendClientMessageToAll(-1, formato);
return 1;
}
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(35) : error 021: symbol already defined: "mysql_query"
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(49) : warning 213: tag mismatch
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(50) : warning 213: tag mismatch
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(52) : warning 213: tag mismatch
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(67) : warning 213: tag mismatch
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(84) : warning 213: tag mismatch
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(85) : warning 213: tag mismatch
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(89) : error 010: invalid function or declaration
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(96) : error 017: undefined symbol "cache_get_field_content"
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(288 -- 289) : error 029: invalid expression, assumed zero
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(295) : error 035: argument type mismatch (argument 3)
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(298) : warning 213: tag mismatch
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(299) : warning 213: tag mismatch
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(299) : error 035: argument type mismatch (argument 3)
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(307) : error 035: argument type mismatch (argument 3)
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(310 -- 311) : error 029: invalid expression, assumed zero
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(316) : warning 213: tag mismatch
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(317) : warning 213: tag mismatch
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(320) : error 035: argument type mismatch (argument 3)
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(338) : error 017: undefined symbol "cache_get_field_content_int"
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(339) : error 017: undefined symbol "cache_get_field_content_int"
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(340) : error 017: undefined symbol "cache_get_field_content_int"
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(341) : error 017: undefined symbol "cache_get_field_content_int"
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(342) : error 017: undefined symbol "cache_get_field_content_int"
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(343) : error 017: undefined symbol "cache_get_field_content_int"
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(344) : error 017: undefined symbol "cache_get_field_content_int"
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(376) : warning 213: tag mismatch
C:\Users\dade\Desktop\Gamemode levado a sйrio\gamemodes\GTANOVAVIDA.pwn(384) : warning 213: tag mismatch
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
16 Errors.
CMD:anunciar(playerid, params[])
{
new anuncio[124], str[124];
if(sscanf(params, "s", anuncio))
return SendClientMessage(playerid, -1, "| ERRO | Digite: /Anunciar [Seu Anuncio]");
format(str, sizeof(str), "Anuncio - %s", anuncio);
SendClientMessageToAll(-1, str);
return 1;
}
Entгo coloca assim:
PHP код:
|
@ignorem essa parte em vermelho
Criei esse comando de /anunciar [Anuncio], sу que quando eu digito "/anunciar joaozinho" ao inves de aparecer o texto aparece a mensagem de erro " | ERRO | Digite: /Anunciar [Seu Anuncio]" pawn Код:
@EDIT Pra nгo criar vбrios tуpicos estou reativando esse. Vi o tutorial de MYSQL do brodi @Cleyson, e tive alguns, vбrios... na verdade foi erro pra cacete e eu sу consegui consertar alguns entгo se alguйm puder me ajudar agradeзo. coloquei os cуdigos no pastebin por ser um pouquinho extenso, me desculpem por escrever um livro mas eu sу tenho vocкs pra me ajudar. as linhas dos erros estгo comentadas pawn Код:
|
#include <a_samp>
#include <a_mysql>
#define DIALOG_REGISTRO 1
#define DIALOG_LOGIN 2
new IDConexao; // Variavel responsavel pela ID da conexгo com o host
enum pInfo // enumerador com variaveis necessarias para nosso salvamento.
{
pID,
pNome[24],
pIP[26],
pSenha[20],
pLevel,
pDinheiro,
pSkin,
pMatou,
pMorreu,
pAdmin,
bool:pLogado
};
new PlayerInfo[MAX_PLAYERS][pInfo];
#define HOST "localhost" // IP de acesso ao phpmyadmin no caso se voce estiver hospedando no pc deixei localhost
#define USUARIO "root" // Usuario por padrгo й root
#define DATABASE "samp" // nome da database que voce criou.. como explicao no video acima
#define SENHA "" // nгo possue senha caso tenha usado o wamp
main()
{
print("\n----------------------------------");
print(" Gamemode carregado 100%");
print("----------------------------------\n");
}
public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Blank Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
IDConexao = mysql_connect(HOST, USUARIO, DATABASE, SENHA); // faremos a conexгo ao host com as informaзхes definidas acima
mysql_query(IDConexao, "CREATE TABLE IF NOT EXISTS `Contas`(`ID`int AUTO_INCREMENT PRIMARY KEY, `Nome`varchar(24) NOT NULL,`Senha` varchar(20) NOT NULL,`Level` int(20) NOT NULL,`Matou` int(10) NOT NULL,`Morreu` int(10) NOT NULL)");
if(mysql_errno(IDConexao) != 0) // Ultilizo essa maneira para saber se a conexгo foi bem sucedida ou nгo
{
print("Falha na conexгo ao banco de dados Mysql");
} else {
print("Conexгo ao banco de dado Mysql efetuada com sucesso");
}
return 1;
}
public OnGameModeExit()
{
for(new i = 0; i < MAX_PLAYERS; i++) SalvarDados(i); // Realizamos um loop na funзгo Funзгo SalvarDados para q salve todas as contas numa posivel queda do servidor
mysql_close(IDConexao); // Aqui fechamos a conexгo com o host
return 1;
}
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid, PlayerInfo[playerid][pNome], 24); // Pegamos o nome do player somente uma vez quando se conectar e formatamos na variavel.
GetPlayerIp(playerid, PlayerInfo[playerid][pIP], 26); // Mesma coisa no IP
new Query[80]; // criamos uma variavel com 80 celulas
mysql_format(IDConexao, Query, sizeof(Query), "SELECT `Senha`, `ID` FROM `Contas` WHERE `Nome`='%s'", PlayerInfo[playerid][pNome]); // formatamos a Query selecionando SENHA e ID referente a tabela Contas Linha (NOME)
mysql_tquery(IDConexao, Query, "VerificarContas", "i", playerid); // Faremos a consulta se a linha "Nome" existe sim ou nгo
// Usaremos mysql_tquery para realizar a consulta na tabela e enviar o resultado para a callback.
// o resultado sera enviado para callback VerificarContas
return 1;
}
forward VerificarContas(playerid);
public VerificarContas(playerid)
{
new Dialog[240]; // Variavel para as dialogs com 240 celulas necessarias
if(cache_get_row_count(IDConexao) == 1) // aqui o resultado da consulta da OnPlayerConnect
{ // /\ Se a linha existir ira chamar a dialog de login
new tmp[20];
// criamos para pegar a senha e formatala na variavel pSenha, que sera necessaria para o login
cache_get_field_content(0, "Senha", tmp); format(PlayerInfo[playerid][pSenha], 20, "%s", tmp);
format(Dialog, sizeof(Dialog),"{F8F8FF}Bem Vindo(a) Ao Servidor {058AFF}%s{F8F8FF}\n\nVocк ja tem uma Conta registrada\n\nDigite sua senha para Logar\n\nStatus: {1E90FF}Registrado{F8F8FF}\n\nIP: {058AFF}%s", PlayerInfo[playerid][pNome], PlayerInfo[playerid][pIP]);
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Registro", Dialog, "Logar", "Cancelar");
} else { // ou nгo
// sera chamada a dialog de registro
format(Dialog, sizeof(Dialog),"{F8F8FF}Bem Vindo(a) Ao Servidor {058AFF}%s{F8F8FF}\n\nVocк nгo tem uma Conta registrada\n\nDigite uma senha para Registrar\n\nStatus: {058AFF}N/A Registrado{F8F8FF}\n\nIP: {058AFF}%s", PlayerInfo[playerid][pNome], PlayerInfo[playerid][pIP]);
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", Dialog, "Registrar", "Cancelar");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
SalvarDados(playerid); // Chamamos a funзгo para salvar a conta do player que desconectar
PlayerInfo[playerid][pLevel] = 0; // resetamos as variaveis.
PlayerInfo[playerid][pAdmin] = 0;
PlayerInfo[playerid][pMatou] = 0;
PlayerInfo[playerid][pMorreu] = 0;
PlayerInfo[playerid][pDinheiro] = 0;
PlayerInfo[playerid][pLogado] = false;
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
PlayerInfo[playerid][pMorreu]++; // se o player morrer ira acrescentar +1 na variavel de morte
PlayerInfo[killerid][pMatou]++; // se o player matar ira acrescentar +1 ...
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid) // usaremos um switch para as dialogs
{
case DIALOG_REGISTRO:
{
if(!response) return Kick(playerid); // se clicar em cancelar na dialog registro ira kickar o jogador
if(strlen(inputtext) < 4 || strlen(inputtext) > 20) // se a senha tiver menos de 4 ou mais de 20 caracteres ira retornar a dialog
{
new Dialog[240]; // variavel da dialog registro
format(Dialog, sizeof(Dialog),"{F8F8FF}Bem Vindo(a) Ao Servidor {058AFF}%s{F8F8FF}\n\nVocк nгo tem uma Conta registrada\n\nDigite uma senha para Registrar\n\nStatus: {058AFF}N/A Registrado{F8F8FF}\n\nIP: {058AFF}%s", PlayerInfo[playerid][pNome], PlayerInfo[playerid][pIP]);
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", Dialog, "Registrar", "Cancelar");
new Query[100]; // variavel com 100 celulas para inserir as informaзхes de registro na tabela
mysql_format(IDConexao, Query, sizeof(Query), "INSERT INTO `Contas`(`Nome`, `Senha`) VALUES ('%s', '%s')", PlayerInfo[playerid][pNome], inputtext); // formatamos a query para inserir na tabela do banco de dados
mysql_tquery(IDConexao, Query, "DadosRegistrados", "i", playerid); // fazemos a consulta e enviamos o resultado para a callback DadosRegistrados
// enviamos para a callback DadosRegistrados para fazer uma especia de DEBUG, e tambem para darmos uma ID para a conta no banco de dados
RegistrarDados(playerid); // chamamos a funзгo RegistrarDados para adicionar os valores nas variaveis do player
} else { // se nгo conter entre 4 e 20 caracteres ira retornar ao registro
SendClientMessage(playerid, -1, "ERRO:{FFFFFF} A senha deve conter de 4 a 20 caracteres!");
new Dialog[240]; // variavel da dialog registro
format(Dialog, sizeof(Dialog),"{F8F8FF}Bem Vindo(a) Ao Servidor {058AFF}%s{F8F8FF}\n\nVocк nгo tem uma Conta registrada\n\nDigite uma senha para Registrar\n\nStatus: {058AFF}N/A Registrado{F8F8FF}\n\nIP: {058AFF}%s", PlayerInfo[playerid][pNome], PlayerInfo[playerid][pIP]);
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", Dialog, "Registrar", "Cancelar");
}
}
case DIALOG_LOGIN:
{
if(!response) return Kick(playerid); // se clicar em cancelar na dialog login ira kickar o jogador
if(!strcmp(PlayerInfo[playerid][pSenha], inputtext, true, 20)) //comparamos a variavel coma senha do player com a senha digitada
{ // se a comparaзгo for correta vamos realizar a consulta para adicionar os valores contidos na tabela para as variaveis do player.
new Query[70];
mysql_format(IDConexao, Query, sizeof(Query), "SELECT * FROM `Contas` WHERE Nome='%s'", PlayerInfo[playerid][pNome]);
mysql_tquery(IDConexao, Query, "CarregarContas", "d", playerid);
// Formatamos a Query realizamos a consulta e enviamos o resultado para a callback CarregarContas
} else {
// comparaзгo sem sucesso ::
SendClientMessage(playerid, -1, "ERRO:{FFFFFF} Senha incorreta !");
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Digite sua senha:", "Digite sua senha abaixo para logar-se", "Logar", "Voltar");
}
}
}
return 1;
}
forward DadosRegistrados(playerid);
public DadosRegistrados(playerid)
{
PlayerInfo[playerid][pID] = cache_insert_id(); // Adicionamos o ID da conta do player
printf("-> Nova conta registrada ID: %d", PlayerInfo[playerid][pID]); // Printf no samp server para informar que a conta foi registrada com sucesso
return 1;
}
forward CarregarContas(playerid);
public CarregarContas(playerid)
{ // Resultado da consulta do login, adicionamos os valores contidos na tabela para as variaveis do player
PlayerInfo[playerid][pID] = cache_get_field_content_int(0, "ID");
PlayerInfo[playerid][pAdmin] = cache_get_field_content_int(0, "Admin");
PlayerInfo[playerid][pLevel] = cache_get_field_content_int(0, "Level");
PlayerInfo[playerid][pMatou] = cache_get_field_content_int(0, "Matou");
PlayerInfo[playerid][pMorreu] = cache_get_field_content_int(0, "Morreu");
PlayerInfo[playerid][pSkin] = cache_get_field_content_int(0, "Skin");
PlayerInfo[playerid][pDinheiro] = cache_get_field_content_int(0, "Dinheiro");
CarregarDados(playerid); // chamamos a funзгo CarregarDados
return 1;
}
stock RegistrarDados(playerid)
{ //Aqui adicionaremos os valores das variaveis que o player ira inicio no servidor
PlayerInfo[playerid][pDinheiro] = 5000; // ou seja comeзara com 5000 reais
PlayerInfo[playerid][pAdmin] = 0; // sem nivel de admin
PlayerInfo[playerid][pLevel] = 1; // 1 level
PlayerInfo[playerid][pSkin] = 299; // skin 299
PlayerInfo[playerid][pMorreu] = 0; // ....
PlayerInfo[playerid][pMatou] = 0; // ....
CarregarDados(playerid); //chamamos a funзгo CarregarDados
return 1;
}
stock CarregarDados(playerid)
{ // aqui carregaremos os ultimos dados das variaveis
PlayerInfo[playerid][pLogado] = true;
SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]); // setamos o level
GivePlayerMoney(playerid, PlayerInfo[playerid][pDinheiro]); // o dinheiro
SetSpawnInfo(playerid, 0, PlayerInfo[playerid][pSkin], 1958.33, 1343.12, 15.36, 269.15, 0, 0, 0, 0, 0, 0 );
SpawnPlayer(playerid); // forзamos o player a spawnar nas cordenas acima com as infos setadas nas variaveis
return 1;
}
stock SalvarDados(playerid)
{
if(PlayerInfo[playerid][pLogado] == false) return 1; // se o player nao estiver logado nгo ira salvar nada
PlayerInfo[playerid][pDinheiro] = GetPlayerMoney(playerid);
new Query[300]; // variavel com 300 celulas para salvamento
mysql_format(IDConexao, Query, sizeof(Query), "UPDATE `Contas` SET `Nome`='%s', `Level`=%d, `Admin`=%d, `Skin`=%d, `Matou`=%d, `Morreu`=%d, `Dinheiro`=%d WHERE `ID`=%d",
PlayerInfo[playerid][pNome],
PlayerInfo[playerid][pLevel],
PlayerInfo[playerid][pAdmin],
PlayerInfo[playerid][pSkin],
PlayerInfo[playerid][pMatou],
PlayerInfo[playerid][pMorreu],
PlayerInfo[playerid][pDinheiro],
PlayerInfo[playerid][pID]);
// formatamos a Query referente a ID da conta (WHERE `ID`=%d) e realizaremos a consulta para atualizar os dados no banco de dados
mysql_tquery(IDConexao, Query,"DadosSalvos","d", playerid); // consulta, e enviamos o resultado para a callback DadosSalvos para um DEBUG
return 1;
}
forward DadosSalvos(playerid);
public DadosSalvos(playerid) return printf("-> Conta salva ID: %d", PlayerInfo[playerid][pID]);
Erros Resolvidos, mas Quando eu logo no jogo e coloco uma senha acima de 4 caracteres volta pra dialog de registro, e se eu digito menos ele spawna mas a dialog de registro continua aberta
|
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid) // usaremos um switch para as dialogs
{
case DIALOG_REGISTRO:
{
if(!response) return Kick(playerid); // se clicar em cancelar na dialog registro ira kickar o jogador
if(strlen(inputtext) < 4 || strlen(inputtext) > 20) // se a senha tiver menos de 4 ou mais de 20 caracteres ira retornar a dialog
{
SendClientMessage(playerid, -1, "ERRO:{FFFFFF} A senha deve conter de 4 a 20 caracteres!");
new Dialog[240]; // variavel da dialog registro
format(Dialog, sizeof(Dialog),"{F8F8FF}Bem Vindo(a) Ao Servidor {058AFF}%s{F8F8FF}\n\nVocк nгo tem uma Conta registrada\n\nDigite uma senha para Registrar\n\nStatus: {058AFF}N/A Registrado{F8F8FF}\n\nIP: {058AFF}%s", PlayerInfo[playerid][pNome], PlayerInfo[playerid][pIP]);
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", Dialog, "Registrar", "Cancelar");
} else { // se nгo, ira registrar
new Query[100]; // variavel com 100 celulas para inserir as informaзхes de registro na tabela
mysql_format(IDConexao, Query, sizeof(Query), "INSERT INTO `Contas`(`Nome`, `Senha`) VALUES ('%s', '%s')", PlayerInfo[playerid][pNome], inputtext); // formatamos a query para inserir na tabela do banco de dados
mysql_tquery(IDConexao, Query, "DadosRegistrados", "i", playerid); // fazemos a consulta e enviamos o resultado para a callback DadosRegistrados
// enviamos para a callback DadosRegistrados para fazer uma especia de DEBUG, e tambem para darmos uma ID para a conta no banco de dados
RegistrarDados(playerid); // chamamos a funзгo RegistrarDados para adicionar os valores nas variaveis do player
}
}
case DIALOG_LOGIN:
{
if(!response) return Kick(playerid); // se clicar em cancelar na dialog login ira kickar o jogador
if(!strcmp(PlayerInfo[playerid][pSenha], inputtext, true, 20)) //comparamos a variavel coma senha do player com a senha digitada
{ // se a comparaзгo for correta vamos realizar a consulta para adicionar os valores contidos na tabela para as variaveis do player.
new Query[70];
mysql_format(IDConexao, Query, sizeof(Query), "SELECT * FROM `Contas` WHERE Nome='%s'", PlayerInfo[playerid][pNome]);
mysql_tquery(IDConexao, Query, "CarregarContas", "d", playerid);
// Formatamos a Query realizamos a consulta e enviamos o resultado para a callback CarregarContas
} else {
// comparaзгo sem sucesso ::
SendClientMessage(playerid, -1, "ERRO:{FFFFFF} Senha incorreta !");
ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Digite sua senha:", "Digite sua senha abaixo para logar-se", "Logar", "Voltar");
}
}
}
return 1;
}