[FilterScript] Sistema de Casas * C-Casas * 2018
#1

• Introduзгo

Criei esse Filterscript especialmente aqui para o fуrum SAMP.
Para uso dos membros e para incentivar o uso do salvamento SQLite, e do plugin Pawn.CMD.
Entre outros motivos. Lembrando que o cуdigo й liberado para uso e ediзгo mantendo os crйditos do criador.

Nгo hб muito oque falar do FS.
Й como qualquer outro sistema de casas,
porйm atualizado otimizado e usando releases atuais.



• Comandos

♦ Administrador

/criarcasa
/deletarcasa
/editarcasa
/ircasa

♦ Players

/comprarcasa
/vendercasa
/trancar


• • Imagens
Album



• • Cуdigo
Se estiver difнcil para ler por favor me avisem que upo no pastebin.

PHP Code:
/*
    FilterScript Sistema de casas C-Casas.
    Criado por Cleyson Stein - StNN
    Nгo retire os crйditos.
    Todos os direitos reservados. 02/05/2018*
    
*/
#include <a_samp>
#include <pawn.cmd>
#include <sscanf2>
#include <streamer>
enum
{
    
MAX_CASAS = 100, // Maximo de casas
    
VERMELHO = 0xFF000FFF,
    
CINZA = 0xCECECEFF,
    
LARANJA = 0xF97804FF
};
enum pInfo
{
    
Nome[24],
    
TemCasa,
    
EntrouCasa
};
new 
p[MAX_PLAYERS][pInfo];
enum cInfo
{
    
cDono[24],
    
Float:cX,
    
Float:cY,
    
Float:cZ,
    
cTemDono,
    
cTrancada,
    
cIcone,
    
cPickup,
    
cInt,
    
Text3D:cText,
    
cPreco
};
new 
c[MAX_CASAS][cInfo], TOTALCASA;
// interiores casas
enum inter
{
    
Float:iX,
    
Float:iY,
    
Float:iZ,
    
Float:iA,
    
iID
}
new 
interior[][inter] =
{
    {
2196.84, -1204.36, 1049.02, 94.0010, 6},
    {
2259.38, -1135.89, 1050.64, 275.3992, 10},
    {
2282.99, -1140.28, 1050.89, 358.4660, 11},
    {
2233.69, -1115.26, 1050.88, 358.4660, 5},
    {
2218.39, -1076.21, 1050.48, 95.2635, 1},
    {
2496.00, -1692.08, 1014.74, 177.8159, 3},
    {
2365.25, -1135.58, 1050.88, 359.0367, 8},
    {
2317.77, -1026.76, 1050.21, 359.0367, 9},
    {
2324.41, -1149.54, 1050.71, 359.0367, 12},
    {
1260.6603, -785.4005, 1091.9063, 270.9891, 5},
    {
140.28, 1365.92, 1083.85, 9.6901, 5}
};
// sqlite
new DB:Database;
public 
OnFilterScriptInit()
{
    print(
"\n-------------------------------------");
    print(
"Sistema C-casas carregado com sucesso.");
    print(
"   Criado por Cleyson Stein - StNN.");
    print(
"    Todos os direitos reservados.");
    print(
"-------------------------------------\n");
    
ConectarDB();
    
CarregarCasas();
     
EnableStuntBonusForAll(0);
     
DisableInteriorEnterExits();
    return 
1;
}
public 
OnFilterScriptExit()
{
    
db_close(Database);
    for(new 
i = 0; i < MAX_CASAS; ++i)
    {
        
DestroyDynamicPickup(c[i][cPickup]);
        
DestroyDynamicMapIcon(c[i][cIcone]);
        
DestroyDynamic3DTextLabel(c[i][cText]);
    }    
    return 
1;
}
public 
OnPlayerConnect(playerid)
{
    
GetPlayerName(playerid, p[playerid][Nome], 24);
    
CarregarDadosPlayer(playerid);
    return 
1;
}
public 
OnPlayerDisconnect(playerid, reason)
{
    if(
p[playerid][TemCasa] > 0) SalvarDadosPlayer(playerid);
    return 
1;
}
// ============= COMMANDS ADMIN
CMD:acasa(playerid)
{
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "Comando restrito a administradores.");
    new 
String_COMANDOS[220]; //
    
format(String_COMANDOS, sizeof String_COMANDOS, "");
    
    
strcat(String_COMANDOS, "{009900}ADMIN C-CASAS\n\n"); 
    
strcat(String_COMANDOS, "{CECECE}/criarcasa {FFFFFF}- Criar uma casa.\n");
    
strcat(String_COMANDOS, "{CECECE}/editarcasa {FFFFFF}- Editar uma casa.\n");
    
strcat(String_COMANDOS, "{CECECE}/deletarcasa {FFFFFF}- Deletar casa.\n");
    
strcat(String_COMANDOS, "{CECECE}/ircasa {FFFFFF}- Ir a uma casa.\n");
    
ShowPlayerDialog(playerid, 9545, DIALOG_STYLE_MSGBOX, "Comandos Admin C-Casas", String_COMANDOS, "Ok", "");
    return 
1;
}
CMD:criarcasa(playerid, params[])
{
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "Comando restrito a administradores.");
    if(
sscanf(params, "ii", params[0], params[1])) return SendClientMessage(playerid, CINZA, "Use /criarcasa [preco] [int 0a10]");
    
Criar_Casa(playerid, TOTALCASA+1, params[0], params[1]);
    return 
1;
}
CMD:ircasa(playerid, params[])
{
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "Comando restrito a administradores.");
    if(
sscanf(params, "i", params[0])) return SendClientMessage(playerid, CINZA, "Use /ircasa [id]");
    
Ir_Casa(playerid, params[0]);
    return 
1;
}
CMD:editarcasa(playerid, params[])
{
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "Comando restrito a administradores.");
    if(
sscanf(params, "iii", params[0], params[1], params[2])) return SendClientMessage(playerid, CINZA, "Use /editarcasa [id] [preco] [int 0a10]");
    
Editar_Casa(playerid, params[0], params[1], params[2]);
    return 
1;
}
CMD:deletarcasa(playerid, params[])
{
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "Comando restrito a administradores.");
    if(
sscanf(params, "i", params[0])) return SendClientMessage(playerid, CINZA, "Use /deletarcasa [id]");
    
Deletar_Casa(playerid, params[0]);
    return 
1;
}
// ================= COMMANDS PLAYERS
/*CMD:dinheiro(playerid)
{
    GivePlayerMoney(playerid, 500000);
    return 1;
}
*/
CMD:comprarcasa(playerid)
{
    for(new 
i = 0; i < MAX_CASAS; i++)
    {
        if(
IsPlayerInRangeOfPoint(playerid, 1, c[i][cX], c[i][cY], c[i][cZ]))
        {
            if(
p[playerid][TemCasa] > 0) return SendClientMessage(playerid, VERMELHO, "Vocк ja possue uma casa.");
            if(
c[i][cTemDono] == 1) return SendClientMessage(playerid, VERMELHO, "Essa casa ja possue dono.");
            if(
GetPlayerMoney(playerid) < c[i][cPreco]) return SendClientMessage(playerid, VERMELHO, "Dinheiro insuficiente.");
            
format(c[i][cDono], 24, p[playerid][Nome]);
            
c[i][cTemDono] = 1;
            
p[playerid][TemCasa] = i;
            
SendClientMessage(playerid, LARANJA, "Casa adiquirida com sucesso.");
            
GivePlayerMoney(playerid, -c[i][cPreco]);
            
DestroyDynamicPickup(c[i][cPickup]);
            
DestroyDynamicMapIcon(c[i][cIcone]);
            
DestroyDynamic3DTextLabel(c[i][cText]);
            new 
texto[200];
            
c[i][cIcone] = CreateDynamicMapIcon(c[i][cX], c[i][cY], c[i][cZ], 32, -1);
            
c[i][cPickup] = CreateDynamicPickup(19522, 21, c[i][cX], c[i][cY], c[i][cZ]);//1272
            
            
format(texto, sizeof(texto), "{B22222}CASA ID: {FFFFFF}%d\n{CD5C5C}Dono: {FFFFFF}%s\n{CD5C5C}Preзo: {FFFFFF}$ %d{CD5C5C}\n/ajudacasa", i, c[i][cDono], c[i][cPreco]);
            
c[i][cText] = CreateDynamic3DTextLabel(texto, 0xFFFFFFAA, c[i][cX], c[i][cY], c[i][cZ]+1, 20);
            new 
Query[80];
            
format(Query, sizeof(Query), "UPDATE CASAS SET DONO ='%s', TEMDONO = 1 WHERE ID =%d", c[i][cDono], i);
            
db_query(Database, Query);
            break;
        }
    }
    return 
1;
}
CMD:vendercasa(playerid)
{
    for(new 
i = 0; i < MAX_CASAS; i++)
    {
        if(
IsPlayerInRangeOfPoint(playerid, 1, c[i][cX], c[i][cY], c[i][cZ]))
        {
            if(
p[playerid][TemCasa] == 0) return SendClientMessage(playerid, VERMELHO, "Vocк nгo possue uma casa.");
            if(
c[i][cTemDono] == 0) return SendClientMessage(playerid, VERMELHO, "Essa casa nгo possue dono.");
            if(
p[playerid][TemCasa] == i)
            {
                
SendClientMessage(playerid, LARANJA, "Casa vendida com sucesso.");
                
GivePlayerMoney(playerid, c[i][cPreco]/2);
                
format(c[i][cDono], 24, "Nenhum");
                
c[i][cTemDono] = 0;
                
p[playerid][TemCasa] = 0;
                
DestroyDynamicPickup(c[i][cPickup]);
                
DestroyDynamicMapIcon(c[i][cIcone]);
                
DestroyDynamic3DTextLabel(c[i][cText]);
                new 
texto[200];
                
c[i][cIcone] = CreateDynamicMapIcon(c[i][cX], c[i][cY], c[i][cZ], 31, -1);
                
c[i][cPickup] = CreateDynamicPickup(1273, 21, c[i][cX], c[i][cY], c[i][cZ]);
                
format(texto, sizeof(texto), "{2E8B57}CASA ID: {FFFFFF}%d\n{3CB371}Dono: {FFFFFF}%s\n{3CB371}Preзo: {FFFFFF}$ %d\n{3CB371}Aperte 'F' para entrar\n/ajudacasa", i, c[i][cDono], c[i][cPreco]);
                
c[i][cText] = CreateDynamic3DTextLabel(texto, 0xFFFFFFAA, c[i][cX], c[i][cY], c[i][cZ]+1, 20);
                new 
Query[80];
                
format(Query, sizeof(Query), "UPDATE CASAS SET DONO ='%s', TEMDONO = 0 WHERE ID =%d", c[i][cDono], i);
                
db_query(Database, Query);
                break;
                } else {
                
SendClientMessage(playerid, VERMELHO, "Essa casa nгo й sua.");
                return 
1;
               }
        }
    }
    return 
1;
}
CMD:trancar(playerid)
{
    for(new 
i = 0; i < MAX_CASAS; i++)
    {
        if(
IsPlayerInRangeOfPoint(playerid, 1, c[i][cX], c[i][cY], c[i][cZ]))
        {
            if(
p[playerid][TemCasa] == 0) return SendClientMessage(playerid, VERMELHO, "Vocк nгo possue uma casa.");
            if(
c[i][cTemDono] == 0) return SendClientMessage(playerid, VERMELHO, "Essa casa nгo possue dono.");
            if(
p[playerid][TemCasa] == i)
            {
                new 
Query[80];
                if(
c[i][cTrancada] == 0)
                {
                    
SendClientMessage(playerid, LARANJA, "Casa trancada.");
                    
c[i][cTrancada] = 1;
                    
                    
format(Query, sizeof(Query), "UPDATE CASAS SET TRANCADA = 1 WHERE ID =%d", i);
                    
db_query(Database, Query);
                    break;
                    
                    } else {
                    
                    
SendClientMessage(playerid, LARANJA, "Casa destrancada.");
                    
c[i][cTrancada] = 0;
                    
                    
format(Query, sizeof(Query), "UPDATE CASAS SET TRANCADA = 0 WHERE ID =%d", i);
                    
db_query(Database, Query);
                    break;
                }
                } else {
                
SendClientMessage(playerid, VERMELHO, "Essa casa nгo й sua.");
                return 
1;
               }
        }
    }
    return 
1;
}
CMD:ajudacasa(playerid)
{
    
ShowPlayerDialog(playerid, 9595, DIALOG_STYLE_MSGBOX, "Ajuda C-Casas","{009900}CASAS\n\n{CECECE}/comprarcasa {FFFFFF}- Comprar uma casa.\n{CECECE}/vendercasa {FFFFFF}- Vender sua casa.\n{CECECE}/trancar {FFFFFF}- trancar | destrancar casa.\n", "Ok", "");
    return 
1;
}
public 
OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(
newkeys == KEY_SECONDARY_ATTACK) // TECLA F
    
{
        for(new 
x = 0; x < MAX_CASAS; x++)
        {
            if(
IsPlayerInRangeOfPoint(playerid, 1, c[x][cX], c[x][cY], c[x][cZ]))
            {
                if(
c[x][cTemDono] == 0)
                {
                    
SetPlayerPos(playerid, interior[c[x][cInt]][iX], interior[c[x][cInt]][iY], interior[c[x][cInt]][iZ]);
                    
SetPlayerFacingAngle(playerid, interior[c[x][cInt]][iA]);
                    
SetPlayerInterior(playerid, interior[c[x][cInt]][iID]);
                    
p[playerid][EntrouCasa] = x;
                    
                    
SendClientMessage(playerid, LARANJA, "Casa a venda! Para comprar use /comprarcasa no pickup de fora. Use 'N' para sair.");
                    break;
                    
                }  
                if(
c[x][cTemDono] == 1)
                {
                    if(
c[x][cTrancada] == 1 && p[playerid][TemCasa] != x) return SendClientMessage(playerid, VERMELHO, "Casa trancada.");
                    
                    if(
p[playerid][TemCasa] == x)
                    {
                        
SetPlayerPos(playerid, interior[c[x][cInt]][iX], interior[c[x][cInt]][iY], interior[c[x][cInt]][iZ]);
                        
SetPlayerFacingAngle(playerid, interior[c[x][cInt]][iA]);
                        
SetPlayerInterior(playerid, interior[c[x][cInt]][iID]);
                        
p[playerid][EntrouCasa] = x;
                        
                        
SendClientMessage(playerid, LARANJA, "Bem vindo a sua casa. Use 'N' para sair.");
                        break;
                        
                        } else {
                        
SendClientMessage(playerid, VERMELHO, "Essa casa nгo й sua.");
                        return 
1;
                    }
                }
            }
        }
    }
    if(
newkeys == 131072) // TECLA N
    
{
        if(
p[playerid][EntrouCasa] > 0)
        {
            
SetPlayerPos(playerid, c[p[playerid][EntrouCasa]][cX], c[p[playerid][EntrouCasa]][cY], c[p[playerid][EntrouCasa]][cZ]);
            
SetPlayerInterior(playerid, 0);
            
p[playerid][EntrouCasa] = 0;
        }
    }
    return 
1;
}
// ============== DATA
ConectarDB()
{
    if((
Database = db_open("C-Casas.db")) == DB:0)
    {
        
SendRconCommand("exit");
        print(
"Falha ao se conectar a DataBase SQlite"); // DEBUG
        
        
} else {
        
        print(
"Conectado com sucesso a DataBase SQlite."); // DEBUG
    
}
    
//criar a db esta em db.txt
    
new Query[280];
    
format(Query, sizeof(Query), "CREATE TABLE IF NOT EXISTS CASAS(ID INTEGER PRIMARY KEY AUTOINCREMENT,\
    DONO TEXT DEFAULT '',\
    X FLOAT DEFAULT 0.0,\
    Y FLOAT DEFAULT 0.0,\
    Z FLOAT DEFAULT 0.0,\
    INTERIOR INTEGER DEFAULT 0,\
    TRANCADA INTEGER DEFAULT 0,\
    TEMDONO INTEGER DEFAULT 0,\
    PRECO INTEGER DEFAULT 0)"
);    
    
db_query(Database, Query);
    
format(Query, sizeof(Query), "CREATE TABLE IF NOT EXISTS DONOS(ID INTEGER PRIMARY KEY AUTOINCREMENT, NOME TEXT DEFAULT '', CASAID INTEGER DEFAULT 0)");    
    
db_query(Database, Query);
    return 
1;
}
CarregarDadosPlayer(playerid)
{
    new 
DBResult:Result, Query[65];
    
format(Query, sizeof(Query), "SELECT * FROM DONOS WHERE NOME = '%s'", p[playerid][Nome]);
    
Result = db_query(Database, Query);
    if(
db_num_rows(Result))
    {
        
p[playerid][TemCasa] = db_get_field_assoc_int(Result, "CASAID");
        } else {
        new 
Query2[75];
        
format(Query2, sizeof(Query2), "INSERT INTO DONOS (NOME, CASAID) VALUES ('%s', 0)", p[playerid][Nome]);
        
db_query(Database, Query2);
        
p[playerid][TemCasa] = 0;
    }
    
db_free_result(Result);
    return 
1;
}
SalvarDadosPlayer(playerid)
{
    new 
Query[75];
    
format(Query, sizeof(Query), "UPDATE DONOS SET CASAID =%d WHERE NOME ='%s'", p[playerid][TemCasa], p[playerid][Nome]);
    
db_query(Database, Query); 
    return 
1;
}
// ============== INIT
CarregarCasas()
{
    new 
DBResult:Result, Query[50];
    for(new 
i = 0; i < MAX_CASAS; i++)
    {
        
format(Query, sizeof(Query), "SELECT * FROM CASAS WHERE ID = %d", i);
        
Result = db_query(Database, Query);
        if(
db_num_rows(Result))
        {
            
db_get_field_assoc(Result, "DONO", c[i][cDono], 24);
            
c[i][cX] = db_get_field_assoc_float(Result, "X");
            
c[i][cY] = db_get_field_assoc_float(Result, "Y");
            
c[i][cZ] = db_get_field_assoc_float(Result, "Z");
            
c[i][cTemDono] = db_get_field_assoc_int(Result, "TEMDONO");
            
c[i][cPreco] = db_get_field_assoc_int(Result, "PRECO");
            
c[i][cInt] = db_get_field_assoc_int(Result, "INTERIOR");
            
c[i][cTrancada] = db_get_field_assoc_int(Result, "TRANCADA");
            
TOTALCASA ++;
            
CriarCasa(i);
        }
        
db_free_result(Result);
    }
    
printf("\nCasas carregadas: %d", TOTALCASA);
    return 
1;
}
CriarCasa(i)
{
    new 
texto[200];
    if(
c[i][cTemDono] == 0)
    {
        
c[i][cIcone] = CreateDynamicMapIcon(c[i][cX], c[i][cY], c[i][cZ], 31, -1);
        
c[i][cPickup] = CreateDynamicPickup(1273, 21, c[i][cX], c[i][cY], c[i][cZ]);
        
format(texto, sizeof(texto), "{2E8B57}CASA ID: {FFFFFF}%d\n{3CB371}Dono: {FFFFFF}%s\n{3CB371}Preзo: {FFFFFF}$ %d\n{3CB371}Aperte 'F' para entrar\n/ajudacasa", i, c[i][cDono], c[i][cPreco]);
        
c[i][cText] = CreateDynamic3DTextLabel(texto, 0xFFFFFFAA, c[i][cX], c[i][cY], c[i][cZ]+1, 20);
    }
    else if(
c[i][cTemDono] == 1)
    {
        
c[i][cIcone] = CreateDynamicMapIcon(c[i][cX], c[i][cY], c[i][cZ], 32, -1);
        
c[i][cPickup] = CreateDynamicPickup(19522, 21, c[i][cX], c[i][cY], c[i][cZ]);//1272
        
format(texto, sizeof(texto), "{B22222}CASA ID: {FFFFFF}%d\n{CD5C5C}Dono: {FFFFFF}%s\n{CD5C5C}Preзo: {FFFFFF}$ %d{CD5C5C}\n/ajudacasa", i, c[i][cDono], c[i][cPreco]);
        
c[i][cText] = CreateDynamic3DTextLabel(texto, 0xFFFFFFAA, c[i][cX], c[i][cY], c[i][cZ]+1, 20);
    }
    return 
1;
}
// ============== ADMIN
Criar_Casa(playerid, id, preco, inte)
{
    new 
DBResult:Result, Query[160];
    
format(Query, sizeof(Query), "SELECT * FROM CASAS WHERE ID = %d", id);
    
Result = db_query(Database, Query);
    if(
db_num_rows(Result))
    {
        
SendClientMessage(playerid, VERMELHO, "Ocorreu um erro. Esse ID esta em uso.");
        } else {
        new 
Float:Pos[3];
        
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
        
format(c[id][cDono], 24, "Nenhum");
        
c[id][cX] = Pos[0];
        
c[id][cY] = Pos[1];
        
c[id][cZ] = Pos[2];
        
c[id][cTemDono] = 0;
        
c[id][cPreco] = preco;
        
c[id][cInt] = inte;
        
SendClientMessage(playerid, LARANJA, "Casa criada com sucesso.");
        
CriarCasa(id);
        
format(Query, sizeof(Query), "INSERT INTO CASAS(DONO, X, Y, Z, PRECO, INTERIOR) VALUES ('%s', %f, %f, %f, %d, %d)", c[id][cDono], c[id][cX], c[id][cY], c[id][cZ], c[id][cPreco], c[id][cInt]);
        
db_query(Database, Query);
        
TOTALCASA ++;
    }
    
db_free_result(Result);
    return 
1;
}
Editar_Casa(playerid, id, preco, interi)
{
    new 
DBResult:Result, Query[50];
    
format(Query, sizeof(Query), "SELECT * FROM CASAS WHERE ID = %d", id);
    
Result = db_query(Database, Query);
    if(
db_num_rows(Result))
    {
        new 
string[60];
        
format(string, sizeof(string), "Vocк editou a casa id %d com sucesso!", id);
        
SendClientMessage(playerid, LARANJA, string);    
        
c[id][cPreco] = preco;
        
c[id][cInt] = interi;
        
DestroyDynamicPickup(c[id][cPickup]);
        
DestroyDynamicMapIcon(c[id][cIcone]);
        
DestroyDynamic3DTextLabel(c[id][cText]);
        
CriarCasa(id);
        } else {
        
SendClientMessage(playerid, VERMELHO, "Ocorreu um erro. Esse ID nгo existe.");
    }
    
db_free_result(Result);
    return 
1;
}
Ir_Casa(playerid, id)
{
    new 
DBResult:Result, Query[50];
    
format(Query, sizeof(Query), "SELECT * FROM CASAS WHERE ID = %d", id);
    
Result = db_query(Database, Query);
    if(
db_num_rows(Result))
    {
        new 
string[60];
        
format(string, sizeof(string), "Vocк foi a casa id %d.", id);
        
SendClientMessage(playerid, LARANJA, string);    
        
SetPlayerPos(playerid, c[id][cX], c[id][cY], c[id][cZ]);
        
SetPlayerInterior(playerid, 0);
        } else {
        
SendClientMessage(playerid, VERMELHO, "Ocorreu um erro. Esse ID nгo existe.");
    }
    
db_free_result(Result);
    return 
1;
}
Deletar_Casa(playerid, id)
{
    new 
DBResult:Result, Query[50];
    
format(Query, sizeof(Query), "SELECT * FROM CASAS WHERE ID = %d", id);
    
Result = db_query(Database, Query);
    if(
db_num_rows(Result))
    {
        
format(Query, sizeof(Query), "DELETE FROM CASAS WHERE ID = %d", id);
        
db_query(Database, Query);
        new 
string[60];
        
format(string, sizeof(string), "Vocк excluiu a casa id %d com sucesso!", id);
        
SendClientMessage(playerid, LARANJA, string);    
        
format(c[id][cDono], 24, "Nenhum");
        
c[id][cX] = -1;
        
c[id][cY] = -1;
        
c[id][cZ] = -1;
        
c[id][cTemDono] = -1;
        
c[id][cPreco] = -1;
        
c[id][cInt] = -1;
        
c[id][cTrancada] = -1;
        
DestroyDynamicPickup(c[id][cPickup]);
        
DestroyDynamicMapIcon(c[id][cIcone]);
        
DestroyDynamic3DTextLabel(c[id][cText]);
        
TOTALCASA --;
        } else {
        
SendClientMessage(playerid, VERMELHO, "Ocorreu um erro. Esse ID nгo existe.");
    }
    
db_free_result(Result);
    return 
1;
} 

• Crйditos

Aos criadores das includes.
Cleyson por total criaзгo do cуdigo
Reply
#2

Bom sistema! Qual seria melhor? MySQL ou SQLite?
Reply
#3

Quote:
Originally Posted by SpikeCompiler
View Post
Bom sistema! Qual seria melhor? MySQL ou SQLite?
Essa pergunta foi respondida mais de 1000x. A questгo nгo й melhor e nem pior, mas sim necessidade...
*O servidor terб um site?
*Vai implementar dados do servidor no site?
*Nгo quer depender de plugins para salvamento?
*Nгo quer depender de programas externos para funcionamento da BD (local)?
...

@TOPIC

Parabйns pelo FS.
Reply
#4

MT BOM!

#OFF, alguem pd me criar o cmd /criarcasa da gm werp rpg? '-' n sei n '-' kk
Reply
#5

@Topico

Parabйns pelo sistema.

@OFF

Quote:
Originally Posted by HelderPT
View Post
#OFF, alguem pd me criar o cmd /criarcasa da gm werp rpg? '-' n sei n '-' kk
Clique AQUI
Reply
#6

Ao invйs de deletar pickups, mapicons e labels, vocк pode atualiza-los com funзхes do streamer (SetIntData e UpdateDynanicTextLabel)

Й um bom sistema, parabйns.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)