[Ajuda] Sistema de Propriedades - como faзo isso?
#1

Olб galerinha do Fуrum SAMP, venho pedir uma ajudinha aqui. Estou criando meu sistema de propriedades, onde existe as funзхes Criar_Propriedade, Deletar_Propriedade e CarregarProp. Estгo logo abaixo:

PHP код:
stock Criar_Propriedade(PropID_pNome[], _pDono[], Float:_pXFloat:_pYFloat:_pZbool:_pComprada_pValor_pGanhando=-1)
{
    if(
DOF2_FileExists(pProp(PropID))) return 0;
    
DOF2_CreateFile(pProp(PropID));
    
DOF2_SetInt(pProp(PropID), "Prop_ID"PropID);
    
DOF2_SetString(pProp(PropID), "Prop_Nome"_pNome); //Nome da Propriedade
    
DOF2_SetString(pProp(PropID), "Prop_Dono"_pDono); //Dono da Propriedade
    
DOF2_SetFloat(pProp(PropID), "Prop_X"_pX); //Posiзгo X da Propriedade
    
DOF2_SetFloat(pProp(PropID), "Prop_Y"_pY); //Posiзгo Y da Propriedade
    
DOF2_SetFloat(pProp(PropID), "Prop_Z"_pZ); //Posiзгo Z da Propriedade
    
DOF2_SetBool(pProp(PropID), "Prop_Comprada"_pComprada); //Se a Propriedade estб comprada, ou nгo.
    
DOF2_SetInt(pProp(PropID), "Prop_Valor"_pValor);
    
    
//Caso isto seja escolhido, irб auto-calcular o valor de ganho da propriedade, ou seja, 10% do valor original.
    
if(_pGanhando == -1DOF2_SetInt(pProp(PropID), "Prop_Ganhando"_pValor 10);
    else 
DOF2_SetInt(pProp(PropID), "Prop_Ganhando"_pGanhando);
    return 
1;
}
stock Deletar_Propriedade(PropID)
{
    if(!
DOF2_FileExists(pProp(PropID))) return 0;
    
    
DestroyDynamicPickup(PropInfo[PropID][Prop_Pickup]);
    
DestroyDynamicMapIcon(PropInfo[PropID][Prop_MapIcon]);
    
    
DOF2_RemoveFile(pProp(PropID));
    
    
Propriedades_Criadas--;
    return 
1;
}
stock CarregarProp(PropID)
{
    
PropInfo[PropID][Prop_ID] = DOF2_GetInt(pProp(PropID), "Prop_ID"); //ID da Propriedade!
    
format(PropInfo[PropID][Prop_Nome], 64"%s"DOF2_GetString(pProp(PropID), "Prop_Nome")); //Nome da Propriedade
    
format(PropInfo[PropID][Prop_Dono], MAX_PLAYER_NAME"%s"DOF2_GetString(pProp(PropID), "Prop_Dono")); //Dono da Propriedade
    
PropInfo[PropID][Prop_X] = DOF2_GetFloat(pProp(PropID), "Prop_X"); //Posiзгo X da Propriedade
    
PropInfo[PropID][Prop_Y] = DOF2_GetFloat(pProp(PropID), "Prop_Y"); //Posiзгo Y da Propriedade
    
PropInfo[PropID][Prop_Z] = DOF2_GetFloat(pProp(PropID), "Prop_Z"); //Posiзгo Z da Propriedade
    
PropInfo[PropID][Prop_Comprada] = DOF2_GetBool(pProp(PropID), "Prop_Comprada"); //Se a Propriedade estб comprada, ou nгo.
    
PropInfo[PropID][Prop_Valor]     = DOF2_GetInt(pProp(PropID), "Prop_Valor"); //Valor da Propriedade (Dinheiro preciso para comprб-la)
    
PropInfo[PropID][Prop_Ganhando] = DOF2_GetInt(pProp(PropID), "Prop_Ganhando"); //10% do Valor acima - isso seria quanto o jogador irб ganhar a cada 30 minutos.
    
if(PropInfo[PropID][Prop_Comprada]) //Se a propriedade for comprada...
    
{
        
PropInfo[PropID][Prop_Pickup] = CreateDynamicPickup(PICKUP_PROP_COMPRADA1PropInfo[PropID][Prop_X], PropInfo[PropID][Prop_Y], PropInfo[PropID][Prop_Z]);
        
PropInfo[PropID][Prop_MapIcon] = CreateDynamicMapIcon(PropInfo[PropID][Prop_X], PropInfo[PropID][Prop_Y], PropInfo[PropID][Prop_Z], ICONE_PROP_COMPRADA, -1);
    }
    else 
//Se a propriedade nгo estiver comprada...
    
{
        
PropInfo[PropID][Prop_Pickup] = CreateDynamicPickup(PICKUP_PROP_NORMAL1PropInfo[PropID][Prop_X], PropInfo[PropID][Prop_Y], PropInfo[PropID][Prop_Z]);
        
PropInfo[PropID][Prop_MapIcon] = CreateDynamicMapIcon(PropInfo[PropID][Prop_X], PropInfo[PropID][Prop_Y], PropInfo[PropID][Prop_Z], ICONE_PROP_NORMAL, -1);
    }
    return 
1;
}
stock Contar_Propriedades()
{
    
Propriedades_Criadas 0;
    for(new 
0MAX_PROPRIEDADES_SERVIDOR; ++i)
    {
        if(
DOF2_FileExists(pProp(i)))
        {
            
Propriedades_Criadas++;
        }
    }
    return 
1;
}
stock pProp(PropID)
{
    new 
Prop_String[30];
    
format(Prop_Stringsizeof(Prop_String), FOLDER_PROPRIEDADESPropID);
    return 
Prop_String;

E entгo as propriedades sгo salvas nesta pasta:


Mas se por exemplo, eu usar a funзгo Deletar_Propriedade, funcionarб perfeitamente, mas o problema й que quero que quando eu for criar outra, fique no lugar da que removi. Mas como fazer? '-' Quero apenas essa ajudinha, agradeзo desde jб!

Reply
#2

Crie um loop e use break pra pausar quando ele encontrar o ID.
Reply
#3

Quote:
Originally Posted by Luan Argolo
Посмотреть сообщение
Crie um loop e use break pra pausar quando ele encontrar o ID.
Funcionou, obrigado!

Estou criando um Filterscript para depois adaptar ao meu Gamemode.
Esse cуdigo serб muito otimizado, por enquanto estou fazendo meus testes.


PHP код:
CMD:criarprop(playeridparams[])
{
    
Contar_Propriedades();
    new 
oNomeProp[64], oValorPropFloat:oPosicao[3], AlgumaRemovida = -666;
    if(
sscanf(params"s[64]d"oNomePropoValorProp)) return SendClientMessage(playerid0xFF0000FF"[ERRO] Modo de uso correto: /criarprop [NOME] [PREЗO]");
    for(new 
0Propriedades_Criadas; ++i)
    {
        if(!
DOF2_FileExists(pProp(i)))
        {
            
AlgumaRemovida i;
            break;
        }
    }
    if(
AlgumaRemovida == -666AlgumaRemovida Propriedades_Criadas;
    
    
GetPlayerPos(playeridoPosicao[0], oPosicao[1], oPosicao[2]);
    
Criar_Propriedade(AlgumaRemovidaoNomeProp"Ninguйm"oPosicao[0], oPosicao[1], oPosicao[2], falseoValorProp);
    
CarregarProp(AlgumaRemovida);
     
    if(
AlgumaRemovida == Propriedades_CriadasPropriedades_Criadas++;
    return 
1;

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)