[Ajuda] Salvamento Dini.
#1

Presencie um BUG e nгo consegui consertar, nгo vo usar o GameMode pra nada, estou apйnas usando para estudo "Dini". Seguinte, quando eu executo o comando /comprarcasa o servidor automaticamente desliga. Comando funciona normal, aparece no chat ainda. Exemplo: "[CASAS] O Jogador FULANO comprou a casa do id 999. e logo em baixo. "Server Uknown Command" e em seguida o servidor desliga. Pensava que era falta de ScriptFiles mais nгo й pois verificei todas as pastas e arquivos que o comando usa e as mesmas estгo presente, postarei o comando e algumas funзхes logo a abaixo e como o GM esta postado na NET nгo terei problemas em postar aqui, caso precise! Lembrando que nгo usarei o GM estou apйnas me aprimorando em pawn, e creio que nenhum de vocкs aprendeu a codar sozinho, enfim... Ajuda e opiniгo de quem for sera fundamental, e ficarei muito grato. Darei +REP pra quem conseguir me ajudar a resolver. Agradeзo desde jб.

Nome do GameMode: New Virtual City.
Criador: Desconhecido.

Comando /comprarcasa
Код:
	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);
    dini_IntSet(string, "Id", pickupid);
    OnPlayerCommandText(playerid, "/nascercasa");
    new string2[256];
	format(string2, sizeof(string2), "(CASA) O jogador %s, comprou a casa nъmero '%d'.", pname,c);
	SendClientMessageToAll(0xFFFFFFAA,string2);
    } 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 {
    //SendClientMessage(playerid, Vermelho, "Vocк nгo estб em uma propriedade.");
    }
    }
    }
    return 1;
    }
Code esta uma nojeira de mal identado, nгo fui eu que criei. Mas Enfim...

Como tenho certeza que precisaram mais do que 1 comando para verificar onde se encontra o tal BUG, postarei o GameMode.

http://www.4shared.com/rar/9_SReyyT/NVC.html
Reply
#2

Faзa um 'debug' para descobrir onde estб o problema ...
Reply
#3

Jб tentei fazer, e nгo descubri ainda. Acontece o mesmo com /criarprop DD:
Reply
#4

Alguйm ? '-'
Reply
#5

Pelo amor de Deus, primeiro vamos arrumar esse cуdigo que fica melhor para resolver o problema.
Код:
if(strcmp(cmdtext, "/comprarcasa", true) == 0)
{
	new bool: tem = false;
	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) return SendClientMessage(playerid, Vermelho, "(ERRO) Esta casa nгo estб a venda!");
				if(GetPlayerGrana(playerid) < dini_Int(string, "Preco")) return SendClientMessage(playerid, Vermelho, "(ERRO) Vocк nгo tem dinheiro!");
				if(GetCasas(playerid) >= 1) return SendClientMessage(playerid, Vermelho, "(ERRO) Vocк sу pode ter uma casa!");
				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);
				dini_IntSet(string, "Id", pickupid);
				OnPlayerCommandText(playerid, "/nascercasa");
				new string2[256];
				format(string2, sizeof(string2), "(CASA) O jogador %s, comprou a casa nъmero '%d'.", pname,c);
				SendClientMessageToAll(0xFFFFFFAA,string2);
				tem = true;
			}
		}
	}
	if(tem == false) return	SendClientMessage(playerid, Vermelho, "Vocк nгo estб em uma propriedade.");
    return 1;
}
Vai comentando pedaзo por pedaзo e aн vocк descobre onde estб o problema, jб que com o debug nгo conseguiu...

Mas tente novamente com o debug.. espalha print debaixo de cada linha que vocк descobre. Se quiser use:
Код:
if(strcmp(cmdtext, "/comprarcasa", true) == 0)
{
	new bool: tem = false;
	print("criamos a bool xD");
	for(new c = 0; c < MAX_CASAS; c++)
	{
		format(string, sizeof(string), "Casas/casa%d.ini", c);
		print("formatamos a string");
		if(dini_Exists(string))
		{
			print("verificamos se existe o arquivo");
			if(IsPlayerInRangeOfPoint(playerid, 2.0, dini_Float(string, "PosX"), dini_Float(string, "PosY"), dini_Float(string, "PosZ")))
			{
				print("verificamos se esta em uma casa");
				if(dini_Int(string, "TDono") != 0) return SendClientMessage(playerid, Vermelho, "(ERRO) Esta casa nгo estб a venda!");
				if(GetPlayerGrana(playerid) < dini_Int(string, "Preco")) return SendClientMessage(playerid, Vermelho, "(ERRO) Vocк nгo tem dinheiro!");
				if(GetCasas(playerid) >= 1) return SendClientMessage(playerid, Vermelho, "(ERRO) Vocк sу pode ter uma casa!");
				new pname[MAX_PLAYER_NAME];
				print("new pname");
			    GetPlayerName(playerid, pname, sizeof(pname));
			    print("pegamos o nome");
			    dini_IntSet(string, "TDono", 1);
				print("setamos '1' na tag TDono do arquivo");
			    dini_Set(string, "Dono", pname);
			    print("setamos o nome do jogador na tag Dono do arquivo");
			    GivePlayerGrana(playerid, -dini_Int(string, "Preco"));
			    print("tiramos a grana");
			    new pickupid;
				DestroyPickup(dini_Int(string, "Id"));
				print("destruindo a pickup");
				pickupid = CreatePickup(1272, 1, dini_Float(string, "PosX"), dini_Float(string, "PosY"), dini_Float(string, "PosZ"), -1);
				print("criou pickup");
				dini_IntSet(string, "Id", pickupid);
				print("setamos o id da pickup na tag Id do arquivo");
				OnPlayerCommandText(playerid, "/nascercasa");
				print("Forзar o player a usar /nascercasa");
				new string2[256];
				print("new string2");
				format(string2, sizeof(string2), "(CASA) O jogador %s, comprou a casa nъmero '%d'.", pname,c);
				print("formatamos a string2");
				SendClientMessageToAll(0xFFFFFFAA,string2);
				print("mensagem para todos !");
				tem = true;
				print("tem = true");
			}
		}
	}
	if(tem == false) return	SendClientMessage(playerid, Vermelho, "Vocк nгo estб em uma propriedade.");
    return 1;
}
Deverб aparecer todas mensagens do print, caso nгo apareзa, poste a ъltima mensagem imprimida.


OBS: O cуdigo estб mal organizado, mas й sу no fуrum.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)