[Pedido] Sistema de Propriedades.
#1

Estava um tempo parado com o SAMP em geral, porйm voltei, decidi que queria comeзar a trabalhar com propriedades, e a primeira delas que veio em minha mente й um sistema de casa em MySQL.
Como nunca tentei fazer algo do tipo, nгo sei muito bem como funciona, entгo pensei em apenas armazenar simples informaзхes, como o id da casa , o dono e sua posiзгo, depois penso em , sistema de nнvel, sistema de alugar a casa pra outras pessoas, vender e comprar casa entre jogadores, etc....
Se alguйm puder me ajudar com isso agradeзo muito, porque vai servir como porta de entrada para outros tipos desse sistema.






Agradeзo dкs de jб
Reply
#2

Use o sistema do Cleyson para estudares.

Reply
#3

Nгo sou mto bom em criar, mas ta ai.
Imagem

db = http://www.mediafire.com/file/fj560ckta3ma1zs/casas.sql
virus scan = https://www.virustotal.com/pt/url/29...is/1529843796/

PHP код:
//======================================[ INCLUDES ]====================================||
#include     a_samp
#include    zcmd
#include     sscanf
#include     a_mysql
//======================================[ Defines ]====================================||
#define     MAX_CASAS                    (100)
#define HOST      "localhost" 
#define USUARIO   "root" 
#define DATABASE  "casas" 
#define SENHA     ""
//======================================[ INICIO ]======================================||
main(){}
enum cInfo
{
    
CasaID,
    
Proprietario[MAX_PLAYER_NAME],
    
Preco,
    
Float:Entrada_x,
    
Float:Entrada_y,
    
Float:Entrada_z,
    
Float:Saida_x,
    
Float:Saida_y,
    
Float:Saida_z,
    
Interior,
    
Comprada
}
new 
Casa[MAX_CASAS][cInfo];
new 
MySQL:ConexaoIDText3Dcasatext[MAX_CASAS], Text3Dcasatext2[MAX_CASAS];
//=====================================[ CALLBACKS ]====================================||
public OnGameModeInit()
{
    
ConexaoID mysql_connect(HOSTUSUARIOSENHADATABASE);  
    if(
mysql_errno(ConexaoID) != 0)  
    { 
        print(
"Falha na conexгo ao banco de dados Mysql"); 
        } else { 
        print(
"Conexгo ao banco de dado Mysql efetuada com sucesso"); 
    } 
    
CarregarCasas();
    
SetGameModeText("Modo livre");
    
UsePlayerPedAnims();                                                                
    return  
true;
}
public 
OnGameModeExit()
{
    return 
true;
}
forward CarregarCasas();
public 
CarregarCasas()
{
    new 
Cache:cache mysql_query(ConexaoID"SELECT * FROM `Casas`"true);
    
    if(
cache_num_rows())
    {
        for(new 
i=0rows cache_num_rows(); rowsi++)
        {
            
cache_get_value_name_int(i"id"Casa[i][CasaID]);
            
cache_get_value_name(i"Proprietario"Casa[i][Proprietario], MAX_PLAYER_NAME);
            
cache_get_value_name_float(i"entrada_x"Casa[i][Entrada_x]);
            
cache_get_value_name_float(i"entrada_y"Casa[i][Entrada_y]);
            
cache_get_value_name_float(i"entrada_z"Casa[i][Entrada_z]);
            
cache_get_value_name_float(i"saida_x"Casa[i][Saida_x]);
            
cache_get_value_name_float(i"saida_y"Casa[i][Saida_y]);
            
cache_get_value_name_float(i"saida_z"Casa[i][Saida_z]);
            
cache_get_value_name_int(i"interior"Casa[i][Interior]);
            
cache_get_value_name_int(i"comprada"Casa[i][Comprada]);
            
cache_get_value_name_int(i"preco"Casa[i][Preco]);
            
TextLabel(i);
            
i++;
            
printf("[MYSQL]: [%d] Casas foram carregadas com sucesso\n"i);
        }
    }
    
cache_delete(cache);
    return 
true;
}
//=====================================================================================||
stock UpdateCasaInfo(casaid)
{
    new 
string[256];
    switch(
Casa[casaid][Comprada])
    {
        case 
0:
        {
            
format(stringsizeof(string), "ID: {FFFF33}%d{FFFFFF}\n\nProprietario: {FFFF33}Ninguem.{FFFFFF}\nValor: {FFFF33}%dR${FFFFFF}.\nUsa {FFFF33}/comprarcasa {FFFFFF}para comprar o {FFFF33}/entrar {FFFFFF}para entrar e visualizar."Casa[casaid][CasaID], Casa[casaid][Preco]);
            
Update3DTextLabelText(casatext[casaid], -1string);
        }
        case 
1:
        {
            
format(stringsizeof(string), "Propietario: {FFFF33}%s.\n{FFFFFF}Usa {FFFF33}/entrar {FFFFFF}para entrar."Casa[casaid][Proprietario]);
            
Update3DTextLabelText(casatext[casaid], -1string);
        }
    }
    return 
true;
}
stock TextLabel(casaid)
{
    new 
string[256];
    switch(
Casa[casaid][Comprada])
    {
        case 
0:
        {
            
format(stringsizeof(string), "ID: {FFFF33}%d{FFFFFF}\n\nProprietario: {FFFF33}Ninguem.{FFFFFF}\nValor: {FFFF33}%dR${FFFFFF}.\nUsa {FFFF33}/comprarcasa {FFFFFF}para comprar o {FFFF33}/entrar {FFFFFF}para entrar e visualizar."Casa[casaid][CasaID], Casa[casaid][Preco]);
            
casatext[casaid] = Create3DTextLabel(string, -1Casa[casaid][Entrada_x], Casa[casaid][Entrada_y], Casa[casaid][Entrada_z], 40.001);
        }
        case 
1:
        {
            
format(stringsizeof(string), "Propietario: {FFFF33}%s.\n{FFFFFF}Usa {FFFF33}/entrar {FFFFFF}para entrar."Casa[casaid][Proprietario]);
            
casatext[casaid] = Create3DTextLabel(string, -1Casa[casaid][Entrada_x], Casa[casaid][Entrada_y], Casa[casaid][Entrada_z], 40.001);
        }
    }
    
format(stringsizeof(string), "Use: /sair para sair."Casa[casaid][Proprietario]);
    
casatext2[casaid] = Create3DTextLabel(string, -1Casa[casaid][Saida_x], Casa[casaid][Saida_y], Casa[casaid][Saida_z], 40.001);
    return 
true;
}
stock CriarCasa(casaidinteriorFloatentradaxFloatentradayFloatentradazpreco)
{
    new 
query[256];
    
mysql_format(ConexaoIDquerysizeof(query), "INSERT INTO `casas`(`id`, `Proprietario`, `Preco`, `Entrada_x`, `Entrada_y`, `Entrada_z`, `Saida_x`, `Saida_y`, `Saida_z`, `Interior`, `Comprada`) VALUES \
     ('%d','Ninguem','%d','%f','%f','%f','0','0','0','%d','0');"
casaidprecoentradaxentradayentradazinterior);
    
mysql_query(ConexaoIDquery);
    
CarregarCasas();
    return 
true;
}
CMD:criarcasa(playeridparams[])
{
    new 
casaidinteriorFloatentradas[3], preco;
    if ( 
sscanf(params"idi"casaidinteriorpreco))
        return 
SendClientMessage(playerid, -1"/criarcasa [casaid] [interiorid] [valor]");
    
GetPlayerPos(playeridentradas[0], entradas[1], entradas[2]);
    
CriarCasa(casaidinteriorentradas[0], entradas[1], entradas[2], preco);
    return 
true;

Reply
#4

Muito obrigado DelK

Essa base que vocк fez estб realmente muito bom , porйm observei algumas coisas nelas que me incomodaram um pouco que talvez possam dar conflitos. A que mais me chamou a atenзгo foi o sistema de ID, ele funciona perfeitamente, porйm quem cria o id й vocк, isso pode desencadear vбrios conflitos se vocк criar uma casa com o mesmo id.
Vou tentar criar o ID como primary key e sempre quando criar uma casa dar cache_insert_id, caso der tudo certo eu volto aqui


De novo, muito obrigado.


EDIT 1

Descobri outro bug, eu criei 4 casas , porйm apenas 2 aparecem realmente no mapa. Esse nгo й um nъmero exato, porйm й algo que acontece.


https://imgur.com/a/OzNckAy
Reply
#5

Quote:
Originally Posted by Cauezin
Посмотреть сообщение
Muito obrigado DelK

Essa base que vocк fez estб realmente muito bom , porйm observei algumas coisas nelas que me incomodaram um pouco que talvez possam dar conflitos. A que mais me chamou a atenзгo foi o sistema de ID, ele funciona perfeitamente, porйm quem cria o id й vocк, isso pode desencadear vбrios conflitos se vocк criar uma casa com o mesmo id.
Vou tentar criar o ID como primary key e sempre quando criar uma casa dar cache_insert_id, caso der tudo certo eu volto aqui


De novo, muito obrigado.


EDIT 1

Descobri outro bug, eu criei 4 casas , porйm apenas 2 aparecem realmente no mapa. Esse nгo й um nъmero exato, porйm й algo que acontece.


https://imgur.com/a/OzNckAy
Mostre como estб feita suas alteraзхes, se nгo quiser postar aqui, poste no pv.
Reply
#6

Quote:
Originally Posted by DelK
Посмотреть сообщение
Mostre como estб feita suas alteraзхes, se nгo quiser postar aqui, poste no pv.
Estava tentando fazer, porйm nгo deu muito certo, agora estou criando um do zero com a ajuda de um amigo usando o seu como base.
Reply
#7

Quote:
Originally Posted by Cauezin
Посмотреть сообщение
Estava tentando fazer, porйm nгo deu muito certo, agora estou criando um do zero com a ajuda de um amigo usando o seu como base.
Blz mn, qualquer coisa sу mandar pv
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)