· 6 years ago · Nov 19, 2019, 04:14 AM
1#include <YSI\y_hooks>
2
3// Defines
4#define TABELA_CENTRAIS "bases"
5
6// Arrays & Enums
7enum Enum_InfoCentrals
8{
9 ID,
10 ClaID,
11 Float:bPos[3],
12 Float:IntPos[3],
13 PickupModel,
14 MapIconModel,
15 PrecoMoney,
16 PrecoMoedas,
17 Mundo[2],
18 Interior[2],
19 MapIcon,
20 Pickup[2],
21 Text3D:TextoBase[2],
22}
23
24new InfoCentral[MAX_BASES][Enum_InfoCentrals];
25
26// --------------------------------------------------------------------------
27
28hook OnGameModeInit()
29{
30 mysql_query(IDConexao, "CREATE TABLE IF NOT EXISTS `"TABELA_CENTRAIS"`(\
31 `ID` INT AUTO_INCREMENT PRIMARY KEY,\
32 `Clã ID` INT NOT NULL DEFAULT '"#INVALID_CLA_ID"',\
33 `PosX` FLOAT NOT NULL,\
34 `PosY` FLOAT NOT NULL,\
35 `PosZ` FLOAT NOT NULL,\
36 `InteriorX` FLOAT NOT NULL,\
37 `InteriorY` FLOAT NOT NULL,\
38 `InteriorZ` FLOAT NOT NULL,\
39 `Modelo Pickup` INT NOT NULL,\
40 `Modelo MapIcon` INT NOT NULL,\
41 `Preço Money` INT NOT NULL,\
42 `Preço Moedas` INT NOT NULL,\
43 `Mundo` INT NOT NULL,\
44 `Interior` INT NOT NULL)");
45
46 LoadCentral();
47 return 1;
48}
49
50// --------------------------------------------------------------------------
51
52LoadCentral()
53{
54 new Cache:LoadCentrais = mysql_query(IDConexao, "SELECT * FROM `"TABELA_CENTRAIS"`", true);
55 new rows;
56
57 cache_get_row_count(rows);
58
59 if(rows > 0)
60 {
61 Loop(i, rows)
62 {
63 new ce = Iter_Free(Centrais);
64
65 cache_get_value_name_int(i, "ID", InfoCentral[ce][ID]);
66 cache_get_value_name_int(i, "Clã ID", InfoCentral[ce][ClaID]);
67 cache_get_value_name_float(i, "PosX", InfoCentral[ce][bPos][0]);
68 cache_get_value_name_float(i, "PosY", InfoCentral[ce][bPos][1]);
69 cache_get_value_name_float(i, "PosZ", InfoCentral[ce][bPos][2]);
70 cache_get_value_name_float(i, "InteriorX", InfoCentral[ce][IntPos][0]);
71 cache_get_value_name_float(i, "InteriorY", InfoCentral[ce][IntPos][1]);
72 cache_get_value_name_float(i, "InteriorZ", InfoCentral[ce][IntPos][2]);
73 cache_get_value_name_int(i, "Modelo Pickup", InfoCentral[ce][PickupModel]);
74 cache_get_value_name_int(i, "Modelo MapIcon", InfoCentral[ce][MapIconModel]);
75 cache_get_value_name_int(i, "Preço Money", InfoCentral[ce][PrecoMoney]);
76 cache_get_value_name_int(i, "Preço Moedas", InfoCentral[ce][PrecoMoedas]);
77 cache_get_value_name_int(i, "Mundo", InfoCentral[ce][Mundo]);
78 cache_get_value_name_int(i, "Interior", InfoCentral[ce][Interior]);
79
80 UpdateCentral(ce);
81 Iter_Add(Centrais, ce);
82 }
83 }
84
85 printf("* %i bases carregadas no servidor.", rows);
86 print("\n-----------------------------------------------------------\n");
87 cache_delete(LoadCentrais);
88}
89
90// --------------------------------------------------------------------------
91
92UpdateCentral(central)
93{
94 if(IsValidDynamicMapIcon(InfoCentral[central][MapIcon]))
95 DestroyDynamicMapIcon(InfoCentral[central][MapIcon]);
96
97 Loop(i, 2)
98 {
99 if(IsValidDynamicPickup(InfoCentral[central][Pickup][i]))
100 DestroyDynamicPickup(InfoCentral[central][Pickup][i]);
101
102 if(IsValidDynamic3DTextLabel(InfoCentral[central][TextoBase][i]))
103 DestroyDynamic3DTextLabel(InfoCentral[central][TextoBase][i]);
104 }
105
106 // -------------------- //
107
108 new bClaID = INVALID_CLA_ID;
109 if(InfoCentral[central][ClaID] != INVALID_CLA_ID) bClaID = MysqlClaIDToIterator(InfoCentral[central][ClaID]);
110
111 new cInfoLabel[180];
112
113 if(bClaID <= INVALID_CLA_ID) format(cInfoLabel, sizeof(cInfoLabel), "{FFFFFF}Clã Dono: {11B1FF}Nenhum\n------------------\n{FFFFFF}Preço: {00AA55}%s\n------------------\n{FFFFFF}Preço moedas: "C_YELLOW"%s", FormatarNumero(InfoCentral[central][PrecoMoney]), FormatarNumero(InfoCentral[central][PrecoMoedas]));
114 else format(cInfoLabel, sizeof(cInfoLabel), "{FFFFFF}{%s}%s\n------------------\n{FFFFFF}Preço: {00AA55}%s\n------------------\n{FFFFFF}Preço moedas: "C_YELLOW"%s", InfoCla[bClaID][CorCla], InfoCla[bClaID][NomeCla], FormatarNumero(InfoCentral[central][PrecoMoney]), FormatarNumero(InfoCentral[central][PrecoMoedas]));
115
116 // -------------------- //
117
118 InfoCentral[central][Pickup][0] = CreateDynamicPickup(InfoCentral[central][PickupModel], 23, InfoCentral[central][bPos][0], InfoCentral[central][bPos][1], InfoCentral[central][bPos][2], InfoCentral[central][Mundo][0], InfoCentral[central][Interior][0]);
119 InfoCentral[central][Pickup][1] = CreateDynamicPickup(InfoCentral[central][PickupModel], 23, InfoCentral[central][IntPos][0], InfoCentral[central][IntPos][1], InfoCentral[central][IntPos][2], InfoCentral[central][Mundo][1], InfoCentral[central][Interior][1]);
120 InfoCentral[central][MapIcon] = CreateDynamicMapIcon(InfoCentral[central][bPos][0], InfoCentral[central][bPos][1], InfoCentral[central][bPos][2], 50, -1, InfoCentral[central][Mundo][0], InfoCentral[central][Interior][0]);
121 InfoCentral[central][TextoBase][0] = CreateDynamic3DTextLabel(cInfoLabel, -1, InfoCentral[central][bPos][0], InfoCentral[central][bPos][1], InfoCentral[central][bPos][2], DRAW_DISTANCE_LABEL_CENTRAL, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, InfoCentral[central][Mundo][0], InfoCentral[central][Interior][0]);
122 InfoCentral[central][TextoBase][1] = CreateDynamic3DTextLabel(cInfoLabel, -1, InfoCentral[central][IntPos][0], InfoCentral[central][IntPos][1], InfoCentral[central][IntPos][2], DRAW_DISTANCE_LABEL_CENTRAL, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, InfoCentral[central][Mundo][1], InfoCentral[central][Interior][1]);
123}
124
125// --------------------------------------------------------------------------