[Ajuda] Sistema de Casas
#1

E aк galera, tudo bem?
Estou precisando da ajuda de vocкs "mais uma vez".

Seguinte, no server, tem um sistema de casas. Vocк cria a casa e tal, fica o pickup la dizendo que й uma casa a venda...

Mas tipo, eu gostaria que quando tivesse uma casa a venda, em cima do pickup por exemplo, ficasse mais ou menos isso:
Quote:

Casa a venda
Dono:
Morador:
Preзo:
/comprarcasa

E quando a casa fosse de um player ficasse mais ou menos assim:
Quote:

Dono:
Morador:
Preзo:

Tambйm gostaria que quando tivesse casa a venda aparece o нcone da casinha verde no mapa, e quando jб estivesse comprada aquele нcone da casinha vermelha.

Serб que isso й possнvel? Se sim, onde devo mexer?
Por acaso seria nessa parte aqui abaixo? Por favor me ajudem!

Quote:

if(strcmp(cmd, "/criarcasa", true) == 0)
{
new pname[MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, sizeof(pname));
if(pAdmin[playerid] == 5 || IsPlayerAdmin(playerid))
{
new tmp[256];
new preco, int;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, Vermelho, "/criarcasa [preзo] [interiorID]");
return 1;
}
preco = strval(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, Vermelho, "/criarcasa [preзo] [interiorID]");
return 1;
}
int = strval(tmp);
format(string, sizeof(string), "/Casas/casa%d.ini", proximacasa);
if(!dini_Exists(string))
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
dini_Create(string);
dini_FloatSet(string, "PosX", X);
dini_FloatSet(string, "PosY", Y);
dini_FloatSet(string, "PosZ", Z);
dini_IntSet(string, "Int", int);
dini_IntSet(string, "Mundo", proximacasa);
dini_IntSet(string, "TDono", 0);
dini_Set(string, "Dono", "Ninguem");
dini_IntSet(string, "Preco", preco);
dini_IntSet(string, "Trancada", 0);
dini_IntSet(string, "TMorador", 0);
dini_Set(string, "Morador", "Ninguem");
new pickupid;
pickupid = CreatePickup(1273, 1, dini_Float(string, "PosX"), dini_Float(string, "PosY"), dini_Float(string, "PosZ"), -1);
dini_IntSet(string, "Id", pickupid);
proximacasa++;
}
}
return 1;
}

Reply
#2

Antes de tudo tira o CMD /criarcasa do center e coloca tudo dentro do [code][/code*] sem o *
Reply
#3

estuda um pouco isto

https://sampwiki.blast.hk/wiki/Create3DTextLabel
Reply
#4

Quote:
Originally Posted by GuilhermeH
Посмотреть сообщение
Antes de tudo tira o CMD /criarcasa do center e coloca tudo dentro do [code][/code*] sem o *
Beleza mano.


Quote:
Originally Posted by PT
Посмотреть сообщение
Rapaz, sobre isto tб de boa. Eu atй consegui botar agora pra aparecer em cima do pickup da casa, o problema exibe um texto que eu coloco la, mas nгo exibe do modo sincronizado. Tipo, em vez de ficar:
Dono: ~~player

Fica tipo:
Dono: ninguйm

Resumindo: nгo fica sincronizado de acordo com o dono da casa.
Reply
#5

talvez tenha faltado um loop nao?

nao vi seu code nao posso ajudar.
Reply
#6

Posta o cуdigo que carrega as casas, talvez eu possa lhe ajudar.
Reply
#7

Seguinte manos, eu consegui colocar pra ficar:
Quote:

Dono:
Preзo:

Tudo sincronizado. E tambйm consegui botar o icone de casa a venda e casa comprada.

Quando eu crio uma casa, fica de boa lб:
Quote:

Dono: Ninguem
Preзo: preзodacasa

Ai quando alguйm compra tambйm й sincronizado, fica:
Quote:

Dono: donodacasa
Preзo: preзodacasa

O problema й, eu preciso fazer com que cada comando seguinte que apague o que o outro fez, por exemplo:
Eu crio a casa e fica lб tudo certinho. Daн eu compro ela e fica certinho tambйm.
Porйm, fica os dois 3DTextLabel ao mesmo tempo. Tipo o de quando cria e o de quando compra, vende ou libera uma casa, ficam um em cima do outro. Tambйm quando eu deleto uma casa, fica lб ainda:
Quote:

Dono: Ninguem
Preзo: preзo da casa

Mas sem o нcone, fica sem a casa, mas fica com o 3DTextLabel que programei quando eu crio uma casa, entendem?

Eu preciso deixar sincronizado pra um comando deletar o que o outro fez, pra nгo ficar todos os 3DTextLabel juntos. Vejam a foto:


Vou deixar todos os comandos relacionados a casa jб programados para criarem a 3DTextLabel adequado e sincronizada, porйm, eles nгo tгo programados para deletarem o 3DTextLabel que o outro comando relacionado fez. O que deve ser feito:
- O /comprarcasa precisa ter uma funзгo que exclua o 3DTextLabel do /criarcasa, /vendercasa ou /liberarcasa.
- O /liberarcasa e o /vendercasa precisam excluir o 3DTextLabel feito pelo /comprarcasa.
- O /deletarcasa precisa excluir o 3DTextLabel do /criarcasa e do /comprarcasa.

Й isso aн, sу que, eu nгo sei como! Por favor alguйm que manje me ajuda ae! Tф desesperado!

Segue como estгo os comandos na GM:
/criarcasa
Quote:

if(strcmp(cmd, "/criarcasa", true) == 0)
{
new pname[MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, sizeof(pname));
if(IsPlayerAdmin(playerid))
{
new tmp[256];
new preco, int;
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, Vermelho, "/criarcasa [preзo] [interiorID]");
return 1;
}
preco = strval(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, Vermelho, "/criarcasa [preзo] [interiorID]");
return 1;
}
int = strval(tmp);
format(string, sizeof(string), "/Casas/casa%d.ini", proximacasa);
if(!dini_Exists(string))
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
dini_Create(string);
dini_FloatSet(string, "PosX", X);
dini_FloatSet(string, "PosY", Y);
dini_FloatSet(string, "PosZ", Z);
dini_IntSet(string, "Int", int);
dini_IntSet(string, "Mundo", proximacasa);
dini_IntSet(string, "TDono", 0);
dini_Set(string, "Dono", "Ninguem");
dini_IntSet(string, "Preco", preco);
dini_IntSet(string, "Trancada", 0);
dini_IntSet(string, "TMorador", 0);
dini_Set(string, "Morador", "Ninguem");
new pickupid;
pickupid = CreatePickup(1273, 1, dini_Float(string, "PosX"), dini_Float(string, "PosY"), dini_Float(string, "PosZ"), -1);
CreateDynamicMapIcon(dini_Float(string, "PosX"), dini_Float(string, "PosY"), dini_Float(string, "PosZ"), 31, -1, -1, 0, -1, 100.0);
format(STRX, sizeof(STRX), "Dono: %s\n Preзo: R$%d\n", dini_Get(string, "Dono"), dini_Int(string, "Preco"));
Create3DTextLabel(STRX, Amarelo, dini_Float(string, "PosX"), dini_Float(string, "PosY"), dini_Float(string, "PosZ"), 60.0,0);
dini_IntSet(string, "Id", pickupid);
proximacasa++;
}
}
return 1;
}

/comprarcasa
Quote:

if(strcmp(cmdtext, "/comprarcasa", true) == 0)
{
for(new c = 0; c < MAX_CASAS; c++)
{
format(string, sizeof(string), "/Casas/casa%d.ini", c);
if(dini_Exists(string))
{
if(IsPlayerInRangeOfPoint(playerid, 2.0, dini_Float(string, "PosX"), dini_Float(string, "PosY"), dini_Float(string, "PosZ")))
{
if(dini_Int(string, "TDono") == 0)
{
if(GetPlayerGrana(playerid) >= dini_Int(string, "Preco"))
{
if(GetCasas(playerid) < 1)
{
new pname[MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, sizeof(pname));
dini_IntSet(string, "TDono", 1);
dini_Set(string, "Dono", pname);
GivePlayerGrana(playerid, -dini_Int(string, "Preco"));
new pickupid;
DestroyPickup(dini_Int(string, "Id"));
pickupid = CreatePickup(1272, 1, dini_Float(string, "PosX"), dini_Float(string, "PosY"), dini_Float(string, "PosZ"), -1);
CreateDynamicMapIcon(dini_Float(string, "PosX"), dini_Float(string, "PosY"), dini_Float(string, "PosZ"), 32, -1, -1, 0, -1, 100.0);
format(STRX, sizeof(STRX), "Dono: %s\n Preзo: R$%d", dini_Get(string, "Dono"), dini_Int(string, "Preco"));
Create3DTextLabel(STRX, Amarelo, dini_Float(string, "PosX"), dini_Float(string, "PosY"), dini_Float(string, "PosZ"), 60.0,0);
dini_IntSet(string, "Id", pickupid);
OnPlayerCommandText(playerid, "/nascercasa");
}
else
{
SendClientMessage(playerid, Vermelho, "[ERRO] Vocк sу pode ter uma casa!");
}
}
else
{
SendClientMessage(playerid, Vermelho, "[ERRO] Vocк nгo tem dinheiro!");
}
}
else
{
SendClientMessage(playerid, Vermelho, "[ERRO] Esta casa nгo estб a venda!");
}
}
else
{
}
}
}
return 1;
}

/vendercasa
Quote:

if(strcmp(cmdtext, "/vendercasa", true) == 0)
{
new pname[MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, sizeof(pname));
format(file, sizeof(file), PASTA_CONTAS, pname);
for(new c = 0; c < MAX_CASAS; c++)
{
format(string, sizeof(string), "/Casas/casa%d.ini", c);
if(dini_Exists(string))
{
if(IsPlayerInRangeOfPoint(playerid, 2.0, dini_Float(string, "PosX"), dini_Float(string, "PosY"), dini_Float(string, "PosZ")))
{
if(dini_Int(string, "TDono") == 1)
{
if(strcmp(dini_Get(string, "Dono"), pname, true) == 0 || pAdmin[playerid] == 5 || IsPlayerAdmin(playerid))
{
if(strcmp(dini_Get(string, "Dono"), pname, true) == 0)
{
dini_FloatSet(file,"CasaX",Float:1410.5046);
dini_FloatSet(file,"CasaY",Float:-1789.7197);
dini_FloatSet(file,"CasaZ",Float:13.8285);
}
dini_IntSet(string, "TDono", 0);
dini_Set(string, "Dono", "Ninguem");
GivePlayerGrana(playerid, dini_Int(string, "Preco"));
new pickupid;
DestroyPickup(dini_Int(string, "Id"));
pickupid = CreatePickup(1273, 1, dini_Float(string, "PosX"), dini_Float(string, "PosY"), dini_Float(string, "PosZ"), -1);
CreateDynamicMapIcon(dini_Float(string, "PosX"), dini_Float(string, "PosY"), dini_Float(string, "PosZ"), 31, -1, -1, 0, -1, 100.0);
format(STRX, sizeof(STRX), "Dono: %s\n Preзo: R$%d", dini_Get(string, "Dono"), dini_Int(string, "Preco"));
Create3DTextLabel(STRX, Amarelo, dini_Float(string, "PosX"), dini_Float(string, "PosY"), dini_Float(string, "PosZ"), 60.0,0);
dini_IntSet(string, "Id", pickupid);
}
else
{
SendClientMessage(playerid, Vermelho, "[ERRO] Esta casa nгo й sua.");
}
}
else
{
SendClientMessage(playerid, Vermelho, "[ERRO] Esta casa jб estб a venda !");
}
}
else
{
SendClientMessage(playerid, Vermelho, "Vocк nгo estб em uma propriedade.");
}
}
}
return 1;
}

/liberarcasa
Quote:

if(strcmp(cmd, "/liberarcasa", true) == 0)
{
new preco;
new tmp[256];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, Vermelho, "/liberarcasa [casaID]");
return 1;
}
preco = strval(tmp);
format(string, sizeof(string), "/Casas/casa%d.ini", preco);
if(dini_Exists(string))
{
if(pAdmin[playerid] >= 5)
{
format(file, sizeof(file), PASTA_CONTAS, dini_Get(string, "Dono"));
dini_FloatSet(file,"CasaX",Float:1410.5046);
dini_FloatSet(file,"CasaY",Float:-1789.7197);
dini_FloatSet(file,"CasaZ",Float:13.8285);
new pname[MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, sizeof(pname));
dini_IntSet(string, "TDono", 0);
dini_Set(string, "Dono", "Nenhum");
new pickupid;
DestroyPickup(dini_Int(string, "Id"));
pickupid = CreatePickup(1273, 1, dini_Float(string, "PosX"), dini_Float(string, "PosY"), dini_Float(string, "PosZ"), -1);
CreateDynamicMapIcon(dini_Float(string, "PosX"), dini_Float(string, "PosY"), dini_Float(string, "PosZ"), 31, -1, -1, 0, -1, 100.0);
format(STRX, sizeof(STRX), "Dono: %s\n Preзo: R$%d", dini_Get(string, "Dono"), dini_Int(string, "Preco"));
Create3DTextLabel(STRX, Amarelo, dini_Float(string, "PosX"), dini_Float(string, "PosY"), dini_Float(string, "PosZ"), 60.0,0);
dini_IntSet(string, "Id", pickupid);
format(string, sizeof(string), "[NH] O administrador %s liberou a casa %d", pname,preco);
SendClientMessageToAll(tcadm, string);
return 1;
}
else
{
SendClientMessage(playerid, Vermelho, "[ERRO] Vocк nгo tem permissгo.");
}
}
return 1;
}

/deletarcasa
Quote:

if(strcmp(cmd, "/deletarcasa", true) == 0)
{
new preco;
new tmp[256];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, Vermelho, "/deletarcasa [casaID]");
return 1;
}
preco = strval(tmp);
format(string, sizeof(string), "/Casas/casa%d.ini", preco);
if(dini_Exists(string))
{
if(pAdmin[playerid] >= 5)
{
new pname[MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, sizeof(pname));
DestroyPickup(dini_Int(string, "Id"));
dini_IntSet(string, "TDono", 3);
dini_Set(string, "Dono", "Nenhum");
dini_IntSet(string, "Id", 999);
return 1;
}
else
{
SendClientMessage(playerid, Vermelho, "[ERRO]Vocк nгo tem permissгo.");
}
}
return 1;
}
if(strcmp(cmd, "/deletarprop", true) == 0)
{
new preco;
new tmp[256];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, Vermelho, "/deletarroprop [propID]");
return 1;
}
preco = strval(tmp);
format(string, sizeof(string), "/Prop/prop%d.ini", preco);
if(dini_Exists(string))
{
if(pAdmin[playerid] >= 5)
{
new pname[MAX_PLAYER_NAME];
GetPlayerName(playerid, pname, sizeof(pname));
DestroyPickup(dini_Int(string, "Id"));
dini_IntSet(string, "TDono", 3);
dini_Set(string, "Dono", "Nenhum");
dini_IntSet(string, "Id", 999);
return 1;
}
else
{
SendClientMessage(playerid, Vermelho, "[ERRO]Vocк nгo tem permissгo.");
}
}
return 1;
}

OBS: Ao compilar nгo dб nenhum erro do jeito que tб ai, apenas й o que eu falei, os 3DTextLabel tгo ficando, eram pra ser deletados dependendo do estado da casa."
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)