View difference between Paste ID: ASrXSfwb and 7vCphh2w
SHOW: | | - or go back to the newest paste.
1
//============ Sistema Criar Casa ======================||
2
#define MAX_CASAS 600
3
4
enum Casas
5
{
6
	Float:X,
7
	Float:Y,
8
	Float:Z,
9
	Float:Xp,
10
	Float:Yp,
11
	Float:Zp,
12
	Pickup,
13
	Text3D:TextLabel,
14
	pInterior
15
};
16
new pCasa[MAX_PLAYERS][Casas];
17
18
enum Inters
19
{
20
	Float:XI,
21
	Float:YI,
22
	Float:ZI,
23
	Float:AI,
24
	pID
25
};
26
new Interiores[][Inters] =
27
{
28
    {2196.84, -1204.36, 1049.02, 94.0010, 6},
29
    {2259.38, -1135.89, 1050.64, 275.3992, 10},
30
    {2282.99, -1140.28, 1050.89, 358.4660, 11},
31
    {2233.69, -1115.26, 1050.88, 358.4660, 5},
32
    {2218.39, -1076.21, 1050.48, 95.2635, 1},
33
    {2496.00, -1692.08, 1014.74, 177.8159, 3},
34
    {2365.25, -1135.58, 1050.88, 359.0367, 8},
35
    {2317.77, -1026.76, 1050.21, 359.0367, 9},
36
    {2324.41, -1149.54, 1050.71, 359.0367, 12},
37
    {1260.6603, -785.4005, 1091.9063, 270.9891, 5},
38
    {140.28, 1365.92, 1083.85, 9.6901, 5}
39
};
40
41
new CasaDentro[MAX_PLAYERS];
42
43
public OnGameModeInit()
44
{
45
	for(new i = 0; i < MAX_CASAS; i++) CarregarCasa(i);
46
	return 1;
47
}
48
49
CMD:criarcasa(playerid, params[])
50
{
51
	new idcasa, str[120], valor, interior, Float:Pos[3], strmsg[150];
52
	if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, Vermelho, "Voce nao tem permissao");
53
	if(sscanf(params, "ddd", idcasa, valor, interior)) return SendClientMessage(playerid, Vermelho, "/criarcasa [Numero] [Valor] [Interior]");
54
	format(str, 120, "Casas/%d.ini", idcasa);
55
	if(dini_Exists(str)) return SendClientMessage(playerid, Vermelho, "Esta casa ja existe");
56
	pCasa[idcasa][pInterior] = interior;
57
	GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
58
	pCasa[idcasa][X] = Pos[0];
59
	pCasa[idcasa][Y] = Pos[1];
60
	pCasa[idcasa][Z] = Pos[2];
61
	pCasa[idcasa][Xp] = Interiores[interior][XI];
62
	pCasa[idcasa][Yp] = Interiores[interior][YI];
63
	pCasa[idcasa][Zp] = Interiores[interior][ZI];
64
	dini_Create(str);
65
	dini_IntSet(str, "DonoCasa", 0);
66
	dini_IntSet(str, "CasaTrancada", 0);
67
	dini_IntSet(str, "Valor", valor);
68
	dini_IntSet(str, "Interior", Interiores[interior][pID]);
69
	dini_IntSet(str, "MundoVirtual", idcasa);
70
	dini_FloatSet(str, "CasaX", Pos[0]);
71
	dini_FloatSet(str, "CasaY", Pos[1]);
72
	dini_FloatSet(str, "CasaZ", Pos[2]);
73
	dini_FloatSet(str, "InterX", pCasa[idcasa][Xp]);
74
	dini_FloatSet(str, "InterY", pCasa[idcasa][Yp]);
75
	dini_FloatSet(str, "InterZ", pCasa[idcasa][Zp]);
76
	format(strmsg, 150, "Voce criou a casa %d pelo valor de %d com o interior %d", idcasa, valor, interior);
77
	SendClientMessage(playerid, -1, strmsg);
78
	CarregarCasa(idcasa);
79
	return 1;
80
}
81
CMD:apagarcasa(playerid, params[])
82
{
83
	new string[120], idcasa;
84
	if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, Vermelho, "Voce nao tem permissao");
85
	if(sscanf(params, "d", idcasa)) return SendClientMessage(playerid, Vermelho, "Use /apagarcasa [IdCasa]");
86
	format(string, 120, "Casas/%d.ini", idcasa);
87
	if(!dini_Exists(string)) return SendClientMessage(playerid, Vermelho, "Esta casa nao existe");
88
	dini_Remove(string);
89
	DestroyPickup(pCasa[idcasa][Pickup]);
90
	Delete3DTextLabel(pCasa[idcasa][TextLabel]);
91
	format(string, 120, "Voce deletou a casa %d", idcasa);
92
	SendClientMessage(playerid, -1, string);
93
	return 1;
94
}
95
CMD:comprarcasa(playerid)
96
{
97
	new string[125], string2[125];
98
	for(new c = 0; c < MAX_CASAS; c++)
99
	{
100
		format(string, 125, "Casas/%d.ini", c);
101
		if(dini_Exists(string))
102
		{
103
			new Float:Pos[3];
104
			Pos[0] = dini_Float(string, "CasaX");
105
			Pos[1] = dini_Float(string, "CasaY");
106
			Pos[2] = dini_Float(string, "CasaZ");
107
			if(IsPlayerInRangeOfPoint(playerid, 2.0, Pos[0], Pos[1], Pos[2]))
108
			{
109
				if(Player[playerid][pChave] > 0) return SendClientMessage(playerid, Vermelho, "Voce ja tem uma casa");
110
				if(dini_Int(string, "DonoCasa") == 1) return SendClientMessage(playerid, Vermelho, "Esta casa ja tem um dono");
111
				if(GetPlayerMoney(playerid) < dini_Int(string, "Valor")) return SendClientMessage(playerid, Vermelho, "Voce nao tem dinheiro suficiente");
112
				dini_IntSet(string, "DonoCasa", 1);
113
				dini_Set(string, "NomeProprietario", pName(playerid));
114
				Player[playerid][pChave] = c;
115
				GivePlayerMoney(playerid, -dini_Int(string, "Valor"));
116
				format(string2, 125, "Voce comprou a casa numero %d por R$ %d", c, dini_Int(string, "Valor"));
117
				SendClientMessage(playerid, -1, string2);
118
				DestroyPickup(pCasa[c][Pickup]);
119
				Delete3DTextLabel(pCasa[c][TextLabel]);
120
				CarregarCasa(c);
121
			}
122
		}
123
	}
124
	return 1;
125
}
126
CMD:vendercasa(playerid)
127
{
128
	new string[125];
129
	for(new c = 0; c < MAX_CASAS; c++)
130
	{
131
		format(string, 125, "Casas/%d.ini", c);
132
		if(dini_Exists(string))
133
		{
134
			new Float:Pos[3];
135
			Pos[0] = dini_Float(string, "CasaX");
136
			Pos[1] = dini_Float(string, "CasaY");
137
			Pos[2] = dini_Float(string, "CasaZ");
138
			if(IsPlayerInRangeOfPoint(playerid, 2.0, Pos[0], Pos[1], Pos[2]))
139
			{
140
				if(Player[playerid][pChave] == 0) return SendClientMessage(playerid, Vermelho, "Voce nao tem uma casa");
141
				if(Player[playerid][pChave] != c) return SendClientMessage(playerid, Vermelho, "Esta casa nao e sua");
142
				new casaid = Player[playerid][pChave];
143
				dini_IntSet(string, "DonoCasa", 0);
144
				GivePlayerMoney(playerid, dini_Int(string, "Valor") / 2);
145
				DestroyPickup(pCasa[casaid][Pickup]);
146
				Delete3DTextLabel(pCasa[casaid][TextLabel]);
147
				CarregarCasa(casaid);
148
				Player[playerid][pChave] = 0;
149
				SendClientMessage(playerid, -1, "Voce vendeu sua casa, e recebeu metade do valor");
150
			}
151
		}
152
	}
153
	return 1;
154
}
155
CMD:entrarcasa(playerid)
156
{
157
	new string[125];
158
	for(new c = 0; c < MAX_CASAS; c++)
159
	{
160
		format(string, 125, "Casas/%d.ini", c);
161
		if(dini_Exists(string))
162
		{
163
			new Float:Pos[3];
164
			Pos[0] = dini_Float(string, "CasaX");
165
			Pos[1] = dini_Float(string, "CasaY");
166
			Pos[2] = dini_Float(string, "CasaZ");
167
			if(IsPlayerInRangeOfPoint(playerid, 2.0, Pos[0], Pos[1], Pos[2]))
168
			{
169
				if(dini_Int(string, "CasaTrancada") == 1) return SendClientMessage(playerid, Vermelho, "Esta casa esta trancada");
170
				CasaDentro[playerid] = c;
171
				SetPlayerInterior(playerid, dini_Int(string, "Interior"));
172
				SetPlayerPos(playerid, dini_Float(string, "InterX"), dini_Float(string, "InterY"), dini_Float(string, "InterZ"));
173
				SetPlayerVirtualWorld(playerid, dini_Int(string, "MundoVirtual"));
174
			}
175
		}
176
	}
177
	return 1;
178
}
179
CMD:saircasa(playerid)
180
{
181
	new string[125];
182
	format(string, 125, "Casas/%d.ini", CasaDentro[playerid]);
183
	if(dini_Exists(string))
184
	{
185
		new Float:Pos[3];
186
		Pos[0] = dini_Float(string, "InterX");
187
		Pos[1] = dini_Float(string, "InterY");
188
		Pos[2] = dini_Float(string, "InterZ");
189
		if(IsPlayerInRangeOfPoint(playerid, 2.0, Pos[0], Pos[1], Pos[2]))
190
		{
191
			CasaDentro[playerid] = -1;
192
			SetPlayerInterior(playerid,0);
193
			SetPlayerPos(playerid, dini_Float(string, "CasaX"), dini_Float(string, "CasaY"), dini_Float(string, "CasaZ"));
194
			SetPlayerVirtualWorld(playerid, 0);
195
		}
196
	}
197
	return 1;
198
}
199
200
CMD:trancarcasa(playerid)
201
{
202
	new string[125];
203
	for(new c = 0; c < MAX_CASAS; c++)
204
	{
205
		format(string, 125, "Casas/%d.ini", c);
206
		if(dini_Exists(string))
207
		{
208
			new Float:Pos[3];
209
			Pos[0] = dini_Float(string, "CasaX");
210
			Pos[1] = dini_Float(string, "CasaY");
211
			Pos[2] = dini_Float(string, "CasaZ");
212
			if(IsPlayerInRangeOfPoint(playerid, 2.0, Pos[0], Pos[1], Pos[2]))
213
			{
214
				if(Player[playerid][pChave] == 0) return SendClientMessage(playerid, Vermelho, "Voce nao tem uma casa");
215
				if(Player[playerid][pChave] != c) return SendClientMessage(playerid, Vermelho, "Esta casa nao e sua");
216
				if(dini_Int(string, "CasaTrancada") == 1) return SendClientMessage(playerid, Vermelho, "Esta casa ja esta trancada");
217
				SendClientMessage(playerid, -1, "Voce trancou a sua casa");
218
				dini_IntSet(string, "CasaTrancada", 1);				
219
			}
220
		}
221
	}
222
	return 1;
223
}
224
225
CMD:destrancarcasa(playerid)
226
{
227
	new string[125];
228
	for(new c = 0; c < MAX_CASAS; c++)
229
	{
230
		format(string, 125, "Casas/%d.ini", c);
231
		if(dini_Exists(string))
232
		{
233
			new Float:Pos[3];
234
			Pos[0] = dini_Float(string, "CasaX");
235
			Pos[1] = dini_Float(string, "CasaY");
236
			Pos[2] = dini_Float(string, "CasaZ");
237
			if(IsPlayerInRangeOfPoint(playerid, 2.0, Pos[0], Pos[1], Pos[2]))
238
			{
239
				if(Player[playerid][pChave] == 0) return SendClientMessage(playerid, Vermelho, "Voce nao tem uma casa");
240
				if(Player[playerid][pChave] != c) return SendClientMessage(playerid, Vermelho, "Esta casa nao e sua");
241
				if(dini_Int(string, "CasaTrancada") == 0) return SendClientMessage(playerid, Vermelho, "Esta casa ja esta destrancada");
242
				SendClientMessage(playerid, -1, "Voce destrancou a sua casa");
243
				dini_IntSet(string, "CasaTrancada", 0);				
244
			}
245
		}
246
	}
247
	return 1;
248
}
249
250
stock CarregarCasa(casaid)
251
{
252
	new str[250], strpasta[50];
253
	format(strpasta, 50, "Casas/%d.ini", casaid);
254
	if(dini_Exists(strpasta))
255
	{
256
		if(dini_Int(strpasta, "DonoCasa") == 0)
257
		{
258
			format(str, 250, "Numero: %d\nValor: %d\nUse /comprarcasa", casaid, dini_Int(strpasta, "Valor"));
259
			pCasa[casaid][TextLabel] = Create3DTextLabel(str, -1, dini_Float(strpasta, "CasaX"), dini_Float(strpasta, "CasaY"), dini_Float(strpasta, "CasaZ"), 20.0, 0);
260
			pCasa[casaid][Pickup] = CreatePickup(1273, 1, dini_Float(strpasta, "CasaX"), dini_Float(strpasta, "CasaY"), dini_Float(strpasta, "CasaZ"));
261
		}
262
		if(dini_Int(strpasta, "DonoCasa") == 1)
263
		{
264
			format(str, 250, "Numero: %d\nProprietario: %s\nUse /entrarcasa", casaid, dini_Get(strpasta, "NomeProprietario"));
265
			pCasa[casaid][TextLabel] = Create3DTextLabel(str, -1, dini_Float(strpasta, "CasaX"), dini_Float(strpasta, "CasaY"), dini_Float(strpasta, "CasaZ"), 20.0, 0);
266
			pCasa[casaid][Pickup] = CreatePickup(19522, 1, dini_Float(strpasta, "CasaX"), dini_Float(strpasta, "CasaY"), dini_Float(strpasta, "CasaZ"));
267
		}
268
	}
269
	return 1;
270
}