[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_CASA100// 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.361049.0294.00106},
    {
2259.38, -1135.891050.64275.399210},
    {
2282.99, -1140.281050.89358.466011},
    {
2233.69, -1115.261050.88358.46605},
    {
2218.39, -1076.211050.4895.26351},
    {
2496.00, -1692.081014.74177.81593},
    {
2365.25, -1135.581050.88359.03678},
    {
2317.77, -1026.761050.21359.03679},
    {
2324.41, -1149.541050.71359.036712},
    {
1260.6603, -785.40051091.9063270.98915},
    {
140.281365.921083.859.69015}
};
// 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 
0MAX_CASAS; ++i)
    {
        
DestroyDynamicPickup(c[i][cPickup]);
        
DestroyDynamicMapIcon(c[i][cIcone]);
        
DestroyDynamic3DTextLabel(c[i][cText]);
    }    
    return 
1;
}
public 
OnPlayerConnect(playerid)
{
    
GetPlayerName(playeridp[playerid][Nome], 24);
    
CarregarDadosPlayer(playerid);
    return 
1;
}
public 
OnPlayerDisconnect(playeridreason)
{
    if(
p[playerid][TemCasa] > 0SalvarDadosPlayer(playerid);
    return 
1;
}
// ============= COMMANDS ADMIN
CMD:acasa(playerid)
{
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playeridVERMELHO"Comando restrito a administradores.");
    new 
String_COMANDOS[220]; //
    
format(String_COMANDOSsizeof 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(playerid9545DIALOG_STYLE_MSGBOX"Comandos Admin C-Casas"String_COMANDOS"Ok""");
    return 
1;
}
CMD:criarcasa(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playeridVERMELHO"Comando restrito a administradores.");
    if(
sscanf(params"ii"params[0], params[1])) return SendClientMessage(playeridCINZA"Use /criarcasa [preco] [int 0a10]");
    
Criar_Casa(playeridTOTALCASA+1params[0], params[1]);
    return 
1;
}
CMD:ircasa(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playeridVERMELHO"Comando restrito a administradores.");
    if(
sscanf(params"i"params[0])) return SendClientMessage(playeridCINZA"Use /ircasa [id]");
    
Ir_Casa(playeridparams[0]);
    return 
1;
}
CMD:editarcasa(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playeridVERMELHO"Comando restrito a administradores.");
    if(
sscanf(params"iii"params[0], params[1], params[2])) return SendClientMessage(playeridCINZA"Use /editarcasa [id] [preco] [int 0a10]");
    
Editar_Casa(playeridparams[0], params[1], params[2]);
    return 
1;
}
CMD:deletarcasa(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid)) return SendClientMessage(playeridVERMELHO"Comando restrito a administradores.");
    if(
sscanf(params"i"params[0])) return SendClientMessage(playeridCINZA"Use /deletarcasa [id]");
    
Deletar_Casa(playeridparams[0]);
    return 
1;
}
// ================= COMMANDS PLAYERS
/*CMD:dinheiro(playerid)
{
    GivePlayerMoney(playerid, 500000);
    return 1;
}
*/
CMD:comprarcasa(playerid)
{
    for(new 
0MAX_CASASi++)
    {
        if(
IsPlayerInRangeOfPoint(playerid1c[i][cX], c[i][cY], c[i][cZ]))
        {
            if(
p[playerid][TemCasa] > 0) return SendClientMessage(playeridVERMELHO"Vocк ja possue uma casa.");
            if(
c[i][cTemDono] == 1) return SendClientMessage(playeridVERMELHO"Essa casa ja possue dono.");
            if(
GetPlayerMoney(playerid) < c[i][cPreco]) return SendClientMessage(playeridVERMELHO"Dinheiro insuficiente.");
            
format(c[i][cDono], 24p[playerid][Nome]);
            
c[i][cTemDono] = 1;
            
p[playerid][TemCasa] = i;
            
SendClientMessage(playeridLARANJA"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(1952221c[i][cX], c[i][cY], c[i][cZ]);//1272
            
            
format(textosizeof(texto), "{B22222}CASA ID: {FFFFFF}%d\n{CD5C5C}Dono: {FFFFFF}%s\n{CD5C5C}Preзo: {FFFFFF}$ %d{CD5C5C}\n/ajudacasa"ic[i][cDono], c[i][cPreco]);
            
c[i][cText] = CreateDynamic3DTextLabel(texto0xFFFFFFAAc[i][cX], c[i][cY], c[i][cZ]+120);
            new 
Query[80];
            
format(Querysizeof(Query), "UPDATE CASAS SET DONO ='%s', TEMDONO = 1 WHERE ID =%d"c[i][cDono], i);
            
db_query(DatabaseQuery);
            break;
        }
    }
    return 
1;
}
CMD:vendercasa(playerid)
{
    for(new 
0MAX_CASASi++)
    {
        if(
IsPlayerInRangeOfPoint(playerid1c[i][cX], c[i][cY], c[i][cZ]))
        {
            if(
p[playerid][TemCasa] == 0) return SendClientMessage(playeridVERMELHO"Vocк nгo possue uma casa.");
            if(
c[i][cTemDono] == 0) return SendClientMessage(playeridVERMELHO"Essa casa nгo possue dono.");
            if(
p[playerid][TemCasa] == i)
            {
                
SendClientMessage(playeridLARANJA"Casa vendida com sucesso.");
                
GivePlayerMoney(playeridc[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(127321c[i][cX], c[i][cY], c[i][cZ]);
                
format(textosizeof(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"ic[i][cDono], c[i][cPreco]);
                
c[i][cText] = CreateDynamic3DTextLabel(texto0xFFFFFFAAc[i][cX], c[i][cY], c[i][cZ]+120);
                new 
Query[80];
                
format(Querysizeof(Query), "UPDATE CASAS SET DONO ='%s', TEMDONO = 0 WHERE ID =%d"c[i][cDono], i);
                
db_query(DatabaseQuery);
                break;
                } else {
                
SendClientMessage(playeridVERMELHO"Essa casa nгo й sua.");
                return 
1;
               }
        }
    }
    return 
1;
}
CMD:trancar(playerid)
{
    for(new 
0MAX_CASASi++)
    {
        if(
IsPlayerInRangeOfPoint(playerid1c[i][cX], c[i][cY], c[i][cZ]))
        {
            if(
p[playerid][TemCasa] == 0) return SendClientMessage(playeridVERMELHO"Vocк nгo possue uma casa.");
            if(
c[i][cTemDono] == 0) return SendClientMessage(playeridVERMELHO"Essa casa nгo possue dono.");
            if(
p[playerid][TemCasa] == i)
            {
                new 
Query[80];
                if(
c[i][cTrancada] == 0)
                {
                    
SendClientMessage(playeridLARANJA"Casa trancada.");
                    
c[i][cTrancada] = 1;
                    
                    
format(Querysizeof(Query), "UPDATE CASAS SET TRANCADA = 1 WHERE ID =%d"i);
                    
db_query(DatabaseQuery);
                    break;
                    
                    } else {
                    
                    
SendClientMessage(playeridLARANJA"Casa destrancada.");
                    
c[i][cTrancada] = 0;
                    
                    
format(Querysizeof(Query), "UPDATE CASAS SET TRANCADA = 0 WHERE ID =%d"i);
                    
db_query(DatabaseQuery);
                    break;
                }
                } else {
                
SendClientMessage(playeridVERMELHO"Essa casa nгo й sua.");
                return 
1;
               }
        }
    }
    return 
1;
}
CMD:ajudacasa(playerid)
{
    
ShowPlayerDialog(playerid9595DIALOG_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(playeridnewkeysoldkeys)
{
    if(
newkeys == KEY_SECONDARY_ATTACK// TECLA F
    
{
        for(new 
0MAX_CASASx++)
        {
            if(
IsPlayerInRangeOfPoint(playerid1c[x][cX], c[x][cY], c[x][cZ]))
            {
                if(
c[x][cTemDono] == 0)
                {
                    
SetPlayerPos(playeridinterior[c[x][cInt]][iX], interior[c[x][cInt]][iY], interior[c[x][cInt]][iZ]);
                    
SetPlayerFacingAngle(playeridinterior[c[x][cInt]][iA]);
                    
SetPlayerInterior(playeridinterior[c[x][cInt]][iID]);
                    
p[playerid][EntrouCasa] = x;
                    
                    
SendClientMessage(playeridLARANJA"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] == && p[playerid][TemCasa] != x) return SendClientMessage(playeridVERMELHO"Casa trancada.");
                    
                    if(
p[playerid][TemCasa] == x)
                    {
                        
SetPlayerPos(playeridinterior[c[x][cInt]][iX], interior[c[x][cInt]][iY], interior[c[x][cInt]][iZ]);
                        
SetPlayerFacingAngle(playeridinterior[c[x][cInt]][iA]);
                        
SetPlayerInterior(playeridinterior[c[x][cInt]][iID]);
                        
p[playerid][EntrouCasa] = x;
                        
                        
SendClientMessage(playeridLARANJA"Bem vindo a sua casa. Use 'N' para sair.");
                        break;
                        
                        } else {
                        
SendClientMessage(playeridVERMELHO"Essa casa nгo й sua.");
                        return 
1;
                    }
                }
            }
        }
    }
    if(
newkeys == 131072// TECLA N
    
{
        if(
p[playerid][EntrouCasa] > 0)
        {
            
SetPlayerPos(playeridc[p[playerid][EntrouCasa]][cX], c[p[playerid][EntrouCasa]][cY], c[p[playerid][EntrouCasa]][cZ]);
            
SetPlayerInterior(playerid0);
            
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(Querysizeof(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(DatabaseQuery);
    
format(Querysizeof(Query), "CREATE TABLE IF NOT EXISTS DONOS(ID INTEGER PRIMARY KEY AUTOINCREMENT, NOME TEXT DEFAULT '', CASAID INTEGER DEFAULT 0)");    
    
db_query(DatabaseQuery);
    return 
1;
}
CarregarDadosPlayer(playerid)
{
    new 
DBResult:ResultQuery[65];
    
format(Querysizeof(Query), "SELECT * FROM DONOS WHERE NOME = '%s'"p[playerid][Nome]);
    
Result db_query(DatabaseQuery);
    if(
db_num_rows(Result))
    {
        
p[playerid][TemCasa] = db_get_field_assoc_int(Result"CASAID");
        } else {
        new 
Query2[75];
        
format(Query2sizeof(Query2), "INSERT INTO DONOS (NOME, CASAID) VALUES ('%s', 0)"p[playerid][Nome]);
        
db_query(DatabaseQuery2);
        
p[playerid][TemCasa] = 0;
    }
    
db_free_result(Result);
    return 
1;
}
SalvarDadosPlayer(playerid)
{
    new 
Query[75];
    
format(Querysizeof(Query), "UPDATE DONOS SET CASAID =%d WHERE NOME ='%s'"p[playerid][TemCasa], p[playerid][Nome]);
    
db_query(DatabaseQuery); 
    return 
1;
}
// ============== INIT
CarregarCasas()
{
    new 
DBResult:ResultQuery[50];
    for(new 
0MAX_CASASi++)
    {
        
format(Querysizeof(Query), "SELECT * FROM CASAS WHERE ID = %d"i);
        
Result db_query(DatabaseQuery);
        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(127321c[i][cX], c[i][cY], c[i][cZ]);
        
format(textosizeof(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"ic[i][cDono], c[i][cPreco]);
        
c[i][cText] = CreateDynamic3DTextLabel(texto0xFFFFFFAAc[i][cX], c[i][cY], c[i][cZ]+120);
    }
    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(1952221c[i][cX], c[i][cY], c[i][cZ]);//1272
        
format(textosizeof(texto), "{B22222}CASA ID: {FFFFFF}%d\n{CD5C5C}Dono: {FFFFFF}%s\n{CD5C5C}Preзo: {FFFFFF}$ %d{CD5C5C}\n/ajudacasa"ic[i][cDono], c[i][cPreco]);
        
c[i][cText] = CreateDynamic3DTextLabel(texto0xFFFFFFAAc[i][cX], c[i][cY], c[i][cZ]+120);
    }
    return 
1;
}
// ============== ADMIN
Criar_Casa(playerididprecointe)
{
    new 
DBResult:ResultQuery[160];
    
format(Querysizeof(Query), "SELECT * FROM CASAS WHERE ID = %d"id);
    
Result db_query(DatabaseQuery);
    if(
db_num_rows(Result))
    {
        
SendClientMessage(playeridVERMELHO"Ocorreu um erro. Esse ID esta em uso.");
        } else {
        new 
Float:Pos[3];
        
GetPlayerPos(playeridPos[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(playeridLARANJA"Casa criada com sucesso.");
        
CriarCasa(id);
        
format(Querysizeof(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(DatabaseQuery);
        
TOTALCASA ++;
    }
    
db_free_result(Result);
    return 
1;
}
Editar_Casa(playerididprecointeri)
{
    new 
DBResult:ResultQuery[50];
    
format(Querysizeof(Query), "SELECT * FROM CASAS WHERE ID = %d"id);
    
Result db_query(DatabaseQuery);
    if(
db_num_rows(Result))
    {
        new 
string[60];
        
format(stringsizeof(string), "Vocк editou a casa id %d com sucesso!"id);
        
SendClientMessage(playeridLARANJAstring);    
        
c[id][cPreco] = preco;
        
c[id][cInt] = interi;
        
DestroyDynamicPickup(c[id][cPickup]);
        
DestroyDynamicMapIcon(c[id][cIcone]);
        
DestroyDynamic3DTextLabel(c[id][cText]);
        
CriarCasa(id);
        } else {
        
SendClientMessage(playeridVERMELHO"Ocorreu um erro. Esse ID nгo existe.");
    }
    
db_free_result(Result);
    return 
1;
}
Ir_Casa(playeridid)
{
    new 
DBResult:ResultQuery[50];
    
format(Querysizeof(Query), "SELECT * FROM CASAS WHERE ID = %d"id);
    
Result db_query(DatabaseQuery);
    if(
db_num_rows(Result))
    {
        new 
string[60];
        
format(stringsizeof(string), "Vocк foi a casa id %d."id);
        
SendClientMessage(playeridLARANJAstring);    
        
SetPlayerPos(playeridc[id][cX], c[id][cY], c[id][cZ]);
        
SetPlayerInterior(playerid0);
        } else {
        
SendClientMessage(playeridVERMELHO"Ocorreu um erro. Esse ID nгo existe.");
    }
    
db_free_result(Result);
    return 
1;
}
Deletar_Casa(playeridid)
{
    new 
DBResult:ResultQuery[50];
    
format(Querysizeof(Query), "SELECT * FROM CASAS WHERE ID = %d"id);
    
Result db_query(DatabaseQuery);
    if(
db_num_rows(Result))
    {
        
format(Querysizeof(Query), "DELETE FROM CASAS WHERE ID = %d"id);
        
db_query(DatabaseQuery);
        new 
string[60];
        
format(stringsizeof(string), "Vocк excluiu a casa id %d com sucesso!"id);
        
SendClientMessage(playeridLARANJAstring);    
        
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(playeridVERMELHO"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)