14.02.2014, 23:18
Seguinte manos, eu consegui colocar pra ficar:
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б:
Ai quando alguйm compra tambйm й sincronizado, fica:
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:
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
/comprarcasa
/vendercasa
/liberarcasa
/deletarcasa
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."
Quote:
Dono: Preзo: |
Quando eu crio uma casa, fica de boa lб:
Quote:
Dono: Ninguem Preзo: preзodacasa |
Quote:
Dono: donodacasa Preзo: preзodacasa |
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 |
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; } |
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; } |
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; } |
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; } |
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; } |