[Ajuda] Sistema de Casas
#1

Esse й meu cуdigo:

Код:
ComprarCasa(playerid)
{
    new id=0;
    for(new i;i<MAX_CASAS;i++) if(sCasas[i][ID]!=0) return (id = i);
    if(id==0) return SendClientMessage(playerid,COR_AVISO,"Vocк nгo estб em nenhuma propriedade!");
    if(!strcmp(sCasas[id][Prop],"Ninguйm")) {
        if(Player[playerid][Dinheiro]<sCasas[id][Preco]) return SendClientMessage(playerid,COR_AVISO,"Vocк nгo tem dinheiro para comprar esta casa!");
        new str[64];
        GivePlayerMoney(playerid,-sCasas[id][Preco]);
        format(str,sizeof(str),"Vocк comprou a casa ID: {FFFFFF}%d",id);
        SendClientMessage(playerid,COR_AAZUL,str);
        SendClientMessage(playerid,COR_AAZUL,"Digite {FFFFFF}/ajudacasa {3F7DC7}para ver os comandos!");
        Player[playerid][Casa] = id;
        DestroyPickup(id);
        CreatePickup(1272,1,DOF2_GetFloat(GetNameCasa(id),"X"),DOF2_GetFloat(GetNameCasa(id),"Y"),DOF2_GetFloat(GetNameCasa(id),"Z"),0);
        format(str,sizeof(str),"Proprietбrio: %s\nValor: %d",GetPlayerNameEx(playerid),sCasas[id][Preco]);
        Update3DTextLabelText(Text3D:id,COR_LARANJA,str);
        DOF2_CreateFile(GetNameCasa(id));
        DOF2_SetString(GetNameCasa(id),"Proprietario",GetPlayerNameEx(playerid));
        DOF2_SaveFile();
        SavePlayer(playerid);
    }
    return 1;
}
Код:
public OnPlayerPickUpPickup(playerid, pickupid)
{
    for(new i;i<MAX_CASAS;i++) {
        if(pickupid==i) {
            DOF2_GetInt(GetNameCasa(i),"Valor",sCasas[i][Preco]);
            DOF2_GetString(GetNameCasa(i),"Proprietбrio",sCasas[i][Prop]);
            sCasas[i][ID] = i;
        }
    }
	return 1;
}
O problema й o seguinte, quando eu estou dentro da propriedade, no caso, em cima do Pickup, ele identifica a propriedade, mas a funзгo para comprar a casa nгo estб funcionando, no caso eu nгo to recebendo nem um retorno de nenhuma "SendClient"
Reply
#2

Vocк nгo esta recebendo nenhuma mensagem pois ele esta retornando nesta parte:

PHP код:
for(new i;i<MAX_CASAS;i++) 
    if(
sCasas[i][ID] != 0) return (id i); 
Se o ID nгo for igual a 0, a variбvel id recebe o valor de i que й retornado.

E logo abaixo:

PHP код:
if(id==0) return SendClientMessage(playerid,COR_AVISO,"Vocк nгo estб em nenhuma propriedade!"); 
Se id for igual a 0 ele retorna uma mensagem, entгo pelo que parece vocк nгo deve usar um retorno dentro do loop.

Basta usar o break

PHP код:
//Caso o нndice 0 for utilizado use o -1 caso contrario utilize 0
new id = -1;
for(new 
iMAX_CASASi++){
    if(
sCasas[i][ID] != 0){
        
id i;
        break;
    }
}
//Caso o нndice 0 for utilizado use o -1 caso contrario utilize 0
if(id == -1) return SendClientMessage(playerid,COR_AVISO,"Vocк nгo estб em nenhuma propriedade!"); 
Reply
#3

Quote:
Originally Posted by MultiKill
Посмотреть сообщение
Vocк nгo esta recebendo nenhuma mensagem pois ele esta retornando nesta parte:

PHP код:
for(new i;i<MAX_CASAS;i++) 
    if(
sCasas[i][ID] != 0) return (id i); 
Se o ID nгo for igual a 0, a variбvel id recebe o valor de i que й retornado.

E logo abaixo:

PHP код:
if(id==0) return SendClientMessage(playerid,COR_AVISO,"Vocк nгo estб em nenhuma propriedade!"); 
Se id for igual a 0 ele retorna uma mensagem, entгo pelo que parece vocк nгo deve usar um retorno dentro do loop.

Basta usar o break

PHP код:
//Caso o нndice 0 for utilizado use o -1 caso contrario utilize 0
new id = -1;
for(new 
iMAX_CASASi++){
    if(
sCasas[i][ID] != 0){
        
id i;
        break;
    }
}
//Caso o нndice 0 for utilizado use o -1 caso contrario utilize 0
if(id == -1) return SendClientMessage(playerid,COR_AVISO,"Vocк nгo estб em nenhuma propriedade!"); 
Cara, muito obrigado, vocк conseguiu resolver meu problema!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)