[Ajuda] Criaзгo de Casa
#1

Bom, eu andei olhando um tutorial e fui tentando, fiz a conexгo e tudo com o Banco de Dados e as Tabelas foram criadas , estando tudo certo eu coloquei o Comando /criarcasa ai comeзou a aparecer os problemas .

o Tutorial foi esse ai : https://sampforum.blast.hk/showthread.php?tid=332900

Nesse tutorial eu cheguei a ver , que o autor deixou de declarar muitas variбveis onde aconteceu erros e eu conseguir resolver vou deixar o cуdigo abaixo do /criarcasa.



PHP код:
 dcmd_criarcasa(playerid,params[])
{
   if(
Player[playerid][pLogged] == false)
        return 
SendClientMessage(playeridCOR_ERRO"ERRO: Vocк nгo estб logado!");
        
    return 
SendClientMessage(playerid,-1,"USE: /criarcasa [ID da casa]");
    
CheckHouse(strval(params));
    return 
1;
}
forward CheckHouse(playerid,var);
public 
CheckHouse(playerid,var){
        
mysql_format(MysqlC,querysizeof(query),"SELECT * FROM `casas` WHERE id=%d",var);
    
mysql_function_query(MysqlC,query,true,"r@CheckHouse","ii",playerid,var);
    return 
1;
}
forward r@CheckHouse(playerid,var);
public 
r@CheckHouse(playerid,var){
    new 
rows,fields;
    
cache_get_data(rows,fields);
    if(
rows){
        
SendClientMessage(playerid,-1,"Jб existe uma casa com este id...");
    }
    else {
        new 
Float:hPos[3];
        new 
hid;
        
GetPlayerPos(playerid,hPos[0],hPos[1],hPos[2]);
        
HouseInfo[var][hEX] = hPos[0];
        
HouseInfo[var][hEY] = hPos[1];
        
HouseInfo[var][hEZ] = hPos[2];
        
mysql_format(MysqlC,querysizeof(query),"INSERT INTO `casas` (owner,EX,EY,EZ,mundo,interior,venda,preco) VALUES ('EM-VENDA',%f,%f,%f,1,1,1,1000);",HouseInfo[hid][hEX],HouseInfo[hid][hEY],HouseInfo[hid][hEZ]);
        
mysql_function_query(MysqlC,query,true,"r@CheckSave","i",playerid);
    }
}
forward r@CheckSave(playerid);
public 
r@CheckSave(playerid){
    
SendClientMessage(playerid,-1,"Casa Criada Com sucesso.");
    return 
1;

Print de como ficou no servidor : http://i.imgur.com/dVmqaeV.png

Resumindo nгo cria a Casa e por isso estб mim impedindo de ir para outros comandos .
Reply
#2

O problema estб aqui: return SendClientMessage(playerid,-1,"USE: /criarcasa [ID da casa]");

Vocк nгo estб verificando se o jogador digitou ou nгo algum nъmero. Vocк estб apenas retornando a mensagem quando ele digitar o comando impedindo de continuar o cуdigo.
Reply
#3

Quote:
Originally Posted by EditPawn
Посмотреть сообщение
O problema estб aqui: return SendClientMessage(playerid,-1,"USE: /criarcasa [ID da casa]");

Vocк nгo estб verificando se o jogador digitou ou nгo algum nъmero. Vocк estб apenas retornando a mensagem quando ele digitar o comando impedindo de continuar o cуdigo.
e como eu posso ta fazendo essa verificaзгo amigo ?
Reply
#4

Quote:
Originally Posted by JuninTJF
Посмотреть сообщение
e como eu posso ta fazendo essa verificaзгo amigo ?
Vocк pode utilizar: isnull ou sscanf

Exemplo:

PHP код:
if(isnull(params)) return SendClientMessage(playerid, -1"Parвmetro nulo, ou seja, vocк precisa digitar algo.");
new 
id;
if(
sscanf(params"i"id)) return SendClientMessage(playerid, -1"Parвmetro nulo, ou seja, vocк precisa digitar um id."); 
Obs: Esse cуdigo precisa estar dentro do comando, й claro.
Reply
#5

Atualizei e ainda continua a mesma coisa. cуdigo abaixo

PHP код:
dcmd_criarcasa(playerid,params[])
{
   if(
Player[playerid][pLogged] == false)
        return 
SendClientMessage(playeridCOR_ERRO"ERRO: Vocк nгo estб logado!");
        
    if(!
IsPlayerAdmin(playerid))
    {
        
SendClientMessage(playeridCOR_ERRO"* Sem autorizaзгo.");
        return 
1;
    }
    new 
id;
    if(
sscanf(params"i"id)) return SendClientMessage(playerid, -1"Uso: /criarcasa [id]");
        
      
CheckHouse(strval(params));
    return 
1;
}
forward CheckHouse(playerid,var);
public 
CheckHouse(playerid,var){
        
mysql_format(MysqlC,querysizeof(query),"SELECT * FROM `casas` WHERE id=%d",var);
    
mysql_function_query(MysqlC,query,true,"r@CheckHouse","ii",playerid,var);
    return 
1;
}
forward r@CheckHouse(playerid,var);
public 
r@CheckHouse(playerid,var){
    new 
rows,fields;
    
cache_get_data(rows,fields);
    if(
rows){
        
SendClientMessage(playerid,-1,"Jб existe uma casa com este id...");
    }
    else {
        new 
Float:hPos[3];
        new 
hid;
        
GetPlayerPos(playerid,hPos[0],hPos[1],hPos[2]);
        
HouseInfo[var][hEX] = hPos[0];
        
HouseInfo[var][hEY] = hPos[1];
        
HouseInfo[var][hEZ] = hPos[2];

        
mysql_format(MysqlC,querysizeof(query),"INSERT INTO `casas` (owner,EX,EY,EZ,mundo,interior,venda,preco) VALUES ('EM-VENDA',%f,%f,%f,1,1,1,1000);",HouseInfo[hid][hEX],HouseInfo[hid][hEY],HouseInfo[hid][hEZ]);
        
mysql_function_query(MysqlC,query,true,"r@CheckSave","i",playerid);
    }
}
forward r@CheckSave(playerid);
public 
r@CheckSave(playerid){
    
SendClientMessage(playerid,-1,"Casa Criada Com sucesso.");
    return 
1;

Reply
#6

Tente e repare nas correзхes que fiz do seu cуdigo para que entenda.

PHP код:
dcmd_criarcasa(playerid,params[])
{
   if(
Player[playerid][pLogged] == false)
        return 
SendClientMessage(playeridCOR_ERRO"ERRO: Vocк nгo estб logado!");
        
    if(!
IsPlayerAdmin(playerid))
        return 
SendClientMessage(playeridCOR_ERRO"* Sem autorizaзгo.");
    if(
isnull(strval(params))) 
        return 
SendClientMessage(playerid, -1"Uso: /criarcasa [id]");
        
    
CheckHouse(playeridstrval(params));
    return 
1;
}
forward CheckHouse(playerid, var);
public 
CheckHouse(playerid, var){
    
mysql_format(MysqlC,querysizeof(query),"SELECT * FROM `casas` WHERE id=%d",var);
    
mysql_function_query(MysqlC,query,true,"r@CheckHouse","ii",playerid,var);
    return 
1;
}
forward r@CheckHouse(playerid,var);
public 
r@CheckHouse(playerid,var){
    new 
rows,fields;
    
cache_get_data(rows,fields);
    if(
rowsSendClientMessage(playerid,-1,"Jб existe uma casa com este id...");
    else {
        new 
Float:hPos[3], hid;
        
GetPlayerPos(playerid,hPos[0],hPos[1],hPos[2]);
        
HouseInfo[var][hEX] = hPos[0];
        
HouseInfo[var][hEY] = hPos[1];
        
HouseInfo[var][hEZ] = hPos[2];
        
mysql_format(MysqlC,querysizeof(query),"INSERT INTO `casas` (owner,EX,EY,EZ,mundo,interior,venda,preco) VALUES ('EM-VENDA',%f,%f,%f,1,1,1,1000);",HouseInfo[hid][hEX],HouseInfo[hid][hEY],HouseInfo[hid][hEZ]);
        
mysql_function_query(MysqlC,query,true,"r@CheckSave","i",playerid);
    }
}
forward r@CheckSave(playerid);
public 
r@CheckSave(playerid){
    
SendClientMessage(playerid,-1,"Casa Criada Com sucesso.");
    return 
1;

Reply
#7

deu 1 erro : error 017: undefined symbol "isnull"
Reply
#8

Quote:
Originally Posted by JuninTJF
Посмотреть сообщение
deu 1 erro : error 017: undefined symbol "isnull"
Ah sim, isnull verifica apenas strings e nгo inteiros.

Troque para esse cуdigo.

PHP код:
dcmd_criarcasa(playerid,params[])
{
   if(
Player[playerid][pLogged] == false)
        return 
SendClientMessage(playeridCOR_ERRO"ERRO: Vocк nгo estб logado!");
        
    if(!
IsPlayerAdmin(playerid))
        return 
SendClientMessage(playeridCOR_ERRO"* Sem autorizaзгo.");
    if(
isnull(params)) 
        return 
SendClientMessage(playerid, -1"Uso: /criarcasa [id]");
        
    if(!
strval(params)) 
        return 
SendClientMessage(playerid, -1"Utilize apenas nъmeros.");
        
    
CheckHouse(playeridstrval(params));
    return 
1;
}
forward CheckHouse(playerid, var);
public 
CheckHouse(playerid, var){
    
mysql_format(MysqlC,querysizeof(query),"SELECT * FROM `casas` WHERE id=%d",var);
    
mysql_function_query(MysqlC,query,true,"r@CheckHouse","ii",playerid,var);
    return 
1;
}
forward r@CheckHouse(playerid,var);
public 
r@CheckHouse(playerid,var){
    new 
rows,fields;
    
cache_get_data(rows,fields);
    if(
rowsSendClientMessage(playerid,-1,"Jб existe uma casa com este id...");
    else {
        new 
Float:hPos[3], hid;
        
GetPlayerPos(playerid,hPos[0],hPos[1],hPos[2]);
        
HouseInfo[var][hEX] = hPos[0];
        
HouseInfo[var][hEY] = hPos[1];
        
HouseInfo[var][hEZ] = hPos[2];
        
mysql_format(MysqlC,querysizeof(query),"INSERT INTO `casas` (owner,EX,EY,EZ,mundo,interior,venda,preco) VALUES ('EM-VENDA',%f,%f,%f,1,1,1,1000);",HouseInfo[hid][hEX],HouseInfo[hid][hEY],HouseInfo[hid][hEZ]);
        
mysql_function_query(MysqlC,query,true,"r@CheckSave","i",playerid);
    }
}
forward r@CheckSave(playerid);
public 
r@CheckSave(playerid){
    
SendClientMessage(playerid,-1,"Casa Criada Com sucesso.");
    return 
1;

Creio que agora irб compilar
Reply
#9

Compilou de boa, mais ainda fica pedindo o ID eu coloco e ainda continua pedindo nгo sei mais oque fazer .
Reply
#10

Esse return SendClientMessage й pra explicar o modo de utilizaзгo, deve ser checado algo acima, na utilizaзгo dos parвmetros. No caso da minha gamemode ele utiliza no inicio do comando static que logo abaixo cita exatamente assim:

Код:
CMD:criarcasa(playerid, params[])
{
	static
	    id;

    if (PlayerData[playerid][pAdmin] < 5)
	    return SendErrorMessage(playerid, "Vocк nгo tem permissгo para usar este comando.");

	if (sscanf(params, "ds[32]",id))
	    return SendSyntaxMessage(playerid, "/criarcasa [id]");
Tente aplicar isso no comando:

Код:
 static
      id;

if (sscanf(params, "s[32]", id))
	    return SendSyntaxMessage(playerid, "/criarcasa [preco] [endereзo]");
Aplicando oque eu falei, ficaria basicamente assim:

Код:
dcmd_criarcasa(playerid,params[]) 
{ 
     static
          id;

     if (sscanf(params, "s[32]", id))
	    return SendClientMessage(playerid, -1,"/criarcasa [id]");

     if(Player[playerid][pLogged] == false) 
        return SendClientMessage(playerid, COR_ERRO, "ERRO: Vocк nгo estб logado!"); 
         
    if(!IsPlayerAdmin(playerid)) 
        return SendClientMessage(playerid, COR_ERRO, "* Sem autorizaзгo."); 
         
    if(!strval(params))  
        return SendClientMessage(playerid, -1, "Utilize apenas nъmeros."); 
         
    CheckHouse(playerid, strval(params)); 
    return 1; 
} 

forward CheckHouse(playerid, var); 
public CheckHouse(playerid, var){ 
    mysql_format(MysqlC,query, sizeof(query),"SELECT * FROM `casas` WHERE id=%d",var); 
    mysql_function_query(MysqlC,query,true,"r@CheckHouse","ii",playerid,var); 
    return 1; 
} 
forward r@CheckHouse(playerid,var); 
public r@CheckHouse(playerid,var){ 
    new rows,fields; 
    cache_get_data(rows,fields); 
    if(rows) SendClientMessage(playerid,-1,"Jб existe uma casa com este id..."); 
    else { 
        new Float:hPos[3], hid; 
        GetPlayerPos(playerid,hPos[0],hPos[1],hPos[2]); 
        HouseInfo[var][hEX] = hPos[0]; 
        HouseInfo[var][hEY] = hPos[1]; 
        HouseInfo[var][hEZ] = hPos[2]; 

        mysql_format(MysqlC,query, sizeof(query),"INSERT INTO `casas` (owner,EX,EY,EZ,mundo,interior,venda,preco) VALUES ('EM-VENDA',%f,%f,%f,1,1,1,1000);",HouseInfo[hid][hEX],HouseInfo[hid][hEY],HouseInfo[hid][hEZ]); 
        mysql_function_query(MysqlC,query,true,"r@CheckSave","i",playerid); 
    } 
} 
forward r@CheckSave(playerid); 
public r@CheckSave(playerid){ 
    SendClientMessage(playerid,-1,"Casa Criada Com sucesso."); 
    return 1; 
}
Acho que assim vai funcionar.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)