Salvamento Dini. -
RedBulL_x - 10.10.2012
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
Re: Salvamento Dini. -
ViniBorn - 10.10.2012
Faзa um 'debug' para descobrir onde estб o problema ...
Respuesta: Salvamento Dini. -
RedBulL_x - 10.10.2012
Jб tentei fazer, e nгo descubri ainda. Acontece o mesmo com /criarprop DD:
Respuesta: Salvamento Dini. -
RedBulL_x - 11.10.2012
Alguйm ? '-'
Re: Salvamento Dini. -
humildadeforever - 11.10.2012
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.