Quantcast
Channel: SA-MP Forums
Viewing all articles
Browse latest Browse all 18226

[Ajuda] Sistema de casa

$
0
0
Olá, peguei esse sistema de casas aqui no forum e ele ta com um bugzin simples mas eu não consigo resolver.. Eu não tentei criar o meu próprio pois não sei nem o basico de DOF2 ou Dini, tô tentando aprender. O bug é o seguinte, quando eu crio uma casa e dps alguem compra ela, ela fica dizendo que ainda ta a venda e o pickup n destroi, alguem ajuda aí


Code:

#include a_samp
#include ZCMD
#include DOF2
#define MAX_CASAS 20

#define DIALOG_CASA1 50
#define DIALOG_CASA2 51
#define DIALOG_CASA3 52
#define DIALOG_INTERIOR_CASA 53

enum CasaSamp
{
    cComprada,
    Float:PosXF,
    Float:PosYF,
    Float:PosZF,
    InteriorCasa
};

new
    InfoCasa [ MAX_CASAS ] [ CasaSamp ],
    StringCasa [ 60 ],
    StringCasa2 [ 60 ],
    Float:Pos [ 3 ][ MAX_PLAYERS ],
    InteriorPos [ MAX_PLAYERS ] ,
    PrecoCasa [ MAX_PLAYERS ],
    CasaCriada [ MAX_PLAYERS ] = 0,
    ProximaCasa = 0
    ;

new Text3D:HouseLabel[MAX_CASAS];

public OnFilterScriptInit()
{
    for(new i = 0; i < MAX_CASAS; i++)
    {
        format ( StringCasa , sizeof ( StringCasa ) ,"Casas/Casa/%i.ini", i ) ;
        InfoCasa[i][PosXF] = DOF2_GetFloat ( StringCasa, "PosXF" );
        InfoCasa[i][PosYF] = DOF2_GetFloat ( StringCasa, "PosYF" );
        InfoCasa[i][PosZF] = DOF2_GetFloat ( StringCasa, "PosZF" );

        if(InfoCasa[i][cComprada] == 1)
        {
        format(StringCasa, sizeof(StringCasa), "{80FF00}| CASA |\n{80FF00}Dono {FFFFFF}%s\n{FFFFFF}Digite: /entrar para Entrar.", DOF2_GetString ( StringCasa, "Dono" ));
        HouseLabel[i] = Create3DTextLabel(StringCasa,0x006400FF,InfoCasa[i][PosXF],InfoCasa[i][PosYF],InfoCasa[i][PosZF],60,0,1);
        AddStaticPickup(1272, 0,InfoCasa[i][PosXF],InfoCasa[i][PosYF],InfoCasa[i][PosZF],0);
        }
    }
    return true;
}

public  OnPlayerSpawn ( playerid )
{
    for(new i = 0; i < MAX_CASAS; i++)
    {
    if(InfoCasa[ i ][cComprada] == 1)
    {
    new pname[24];
    GetPlayerName(playerid,pname,sizeof(pname));
    format(StringCasa, 60, "Casas/CasaDono/%s.ini", pname ) ;
    format(StringCasa2, 60, "Casas/Casa/%i.ini", DOF2_GetInt ( StringCasa, "NumeroCasa") ) ;
    SetPlayerPos ( playerid, DOF2_GetFloat ( StringCasa2, "PosXF" ),DOF2_GetFloat ( StringCasa2, "PosYF" ),DOF2_GetFloat ( StringCasa2, "PosZF" )) ;
    SetPlayerInterior ( playerid, DOF2_GetInt ( StringCasa2, "Interior" ));
    }
    }
    return true;
}

stock CriarCasa ( Preco, Float:XCasa, Float:YCasa, Float:ZCasa, Float:Xd, Float:Yd, Float:Zd, Interior, WorldID )
{
    format(StringCasa, 60, "Casas/Casa/%i.ini", ProximaCasa ) ;
    if(!DOF2_FileExists(StringCasa)) DOF2_CreateFile(StringCasa);

    DOF2_SetString(StringCasa, "Dono","Nenhum");
    DOF2_SetFloat(StringCasa, "PosXF", XCasa);
    DOF2_SetFloat(StringCasa, "PosYF", YCasa);
    DOF2_SetFloat(StringCasa, "PosZF", ZCasa);
    DOF2_SetFloat(StringCasa, "PosXD", Xd);
    DOF2_SetFloat(StringCasa, "PosYD", Yd);
    DOF2_SetFloat(StringCasa, "PosZD", Zd);
    DOF2_SetInt(StringCasa, "Interior", Interior);
    DOF2_SetInt(StringCasa, "WorldID", WorldID);
    DOF2_SetInt(StringCasa, "Preco", Preco);
    DOF2_SaveFile();
    InfoCasa[ProximaCasa][cComprada] = 0;
    for(new i = 0; i < MAX_CASAS; i++)
    {
    new Casa[128];
    format(Casa, sizeof(Casa), "{80FF00}A Venda {FFFFFF}Sim\n{80FF00}Valor {FFFFFF}%d\n{FFFFFF}Use: /comprarcasa para comprar esta propriedade.",DOF2_GetInt(StringCasa, "Preco"));
    HouseLabel[i] = Create3DTextLabel(Casa,0x006400FF,XCasa,YCasa,ZCasa,60,0,1);
    AddStaticPickup(1239, 0, XCasa,YCasa,ZCasa);
    }
    return true;
}


CMD:criarcasa ( playerid )
{
    ShowPlayerDialog(playerid,DIALOG_CASA1,DIALOG_STYLE_MSGBOX,"Casa","Você deseja criar uma casa neste local?","Sim","Não");
    GetPlayerPos ( playerid, Pos [ 0 ] [ playerid ] , Pos [ 1 ][ playerid ] , Pos [ 2 ] [ playerid ] ) ;
    InteriorPos [ playerid ] = GetPlayerInterior( playerid );
    return true;
}

CMD:comprarcasa ( playerid )
{
    for(new i = 0; i < MAX_CASAS; i++)
            {
                format ( StringCasa , sizeof ( StringCasa ) ,"Casas/Casa/%i.ini", i ) ;
                InfoCasa[i][PosXF] = DOF2_GetFloat ( StringCasa, "PosXF" );
                InfoCasa[i][PosYF] = DOF2_GetFloat ( StringCasa, "PosYF" );
                InfoCasa[i][PosZF] = DOF2_GetFloat ( StringCasa, "PosZF" );
                if(IsPlayerInRangeOfPoint(playerid,8.0,InfoCasa[i][PosXF],InfoCasa[i][PosYF],InfoCasa[i][PosZF]))
                {
                    new pname [ 24 ] ;
                    GetPlayerName(playerid,pname,sizeof(pname));
                    format ( StringCasa2 , sizeof ( StringCasa2 ) ,"Casas/CasaDono/%s.ini", pname ) ;
                    if(DOF2_FileExists(StringCasa2))
                        return SendClientMessage ( playerid , 0xAA3333AA, "Você já possui uma casa!" ) ;
                    if(GetPlayerMoney(playerid) < DOF2_GetInt ( StringCasa, "Preco" ))
                        return SendClientMessage(playerid,0xAA3333AA,"Você não tem dinheiro suficiente");
                    if ( strcmp ( DOF2_GetString ( StringCasa, "Dono" ), "Nenhum", false ) )
                        return SendClientMessage(playerid,0xAA3333AA,"Esta casa já tem dono.");
                    if(DOF2_FileExists(StringCasa))
                    {
                        DOF2_SetString(StringCasa, "Dono", pname );
                        DOF2_SaveFile();
                    }
                    Delete3DTextLabel(HouseLabel[i]);
                    format(StringCasa, sizeof(StringCasa), "{80FF00}| CASA |\n{80FF00}Dono {FFFFFF}%s\n{FFFFFF}Digite: /entrar para Entrar.", DOF2_GetString ( StringCasa, "Dono" ));
                    HouseLabel[i] = Create3DTextLabel(StringCasa,0x006400FF,InfoCasa[i][PosXF],InfoCasa[i][PosYF],InfoCasa[i][PosZF],60,0,1);
                    GivePlayerMoney(playerid,-DOF2_GetInt(StringCasa, "Preco" ));
                    AddStaticPickup(1272, 0,InfoCasa[i][PosXF],InfoCasa[i][PosYF],InfoCasa[i][PosZF]);
                    InfoCasa[ i ][cComprada] = 1;
                    if(!DOF2_FileExists(StringCasa2))
                    {
                        DOF2_CreateFile ( StringCasa2 ) ;
                        DOF2_SetInt ( StringCasa2, "NumeroCasa", i );
                        DOF2_SaveFile();
                    }
                }
            }
    return true;
}

CMD:vendercasa ( playerid )
{
    new pname[24];
    GetPlayerName(playerid,pname,sizeof(pname));
    format(StringCasa, 60, "Casas/CasaDono/%s.ini", pname ) ;
    format(StringCasa2, 60, "Casas/Casa/%i.ini", DOF2_GetInt ( StringCasa, "NumeroCasa") ) ;
    if(!DOF2_FileExists(StringCasa))
            return SendClientMessage ( playerid , 0xAA3333AA, "Você não possui uma casa!" ) ;
    if(IsPlayerInRangeOfPoint(playerid,8.0,DOF2_GetFloat ( StringCasa2, "PosXF" ),DOF2_GetFloat ( StringCasa2, "PosYF" ),DOF2_GetFloat ( StringCasa2, "PosZF" )))
    {
        DOF2_SetString ( StringCasa2, "Dono", "Nenhum" );
        DOF2_SaveFile();
        new Casa2 [ 60 ];
        Delete3DTextLabel(HouseLabel[DOF2_GetInt ( StringCasa, "NumeroCasa")]);
        format(Casa2, sizeof(Casa2), "{80FF00}A Venda {FFFFFF}Sim\n{80FF00}Valor {FFFFFF}%d\n{FFFFFF}Use: /comprarcasa para comprar esta propriedade.",DOF2_GetInt(StringCasa2, "Preco"));
        HouseLabel[DOF2_GetInt ( StringCasa, "NumeroCasa")] = Create3DTextLabel(Casa2,0x006400FF,DOF2_GetFloat ( StringCasa2, "PosXF" ),DOF2_GetFloat ( StringCasa2, "PosYF" ),DOF2_GetFloat ( StringCasa2, "PosZF" ),60,0,1);
        AddStaticPickup(1239, 2,DOF2_GetFloat ( StringCasa2, "PosXF" ),DOF2_GetFloat ( StringCasa2, "PosYF" ),DOF2_GetFloat ( StringCasa2, "PosZF" ));
        InfoCasa[ DOF2_GetInt ( StringCasa, "NumeroCasa") ][cComprada] = 0;
        DOF2_RemoveFile(StringCasa);
    }
    else SendClientMessage ( playerid , 0xAA3333AA, "Você não está perto de sua casa!" ) ;
    return true;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_CASA1)
    {
        if(response)
        {
            ShowPlayerDialog(playerid,DIALOG_CASA2,DIALOG_STYLE_INPUT,"Casa","Digite o Preço da casa:","Ok","Cancelar");
        }
        else if(!response)
            return SendClientMessage ( playerid, -1 , "Você desistiu de fazer uma casa.");
    }

    if(dialogid == DIALOG_CASA2 )
    {
        if(response)
        {
            if ( strval ( inputtext ) > 999999 || strval ( inputtext ) < 10 )
                return  SendClientMessage(playerid,0xB22222AA,"[ERRO] Valor Invalido!") , ShowPlayerDialog(playerid,DIALOG_CASA2,DIALOG_STYLE_INPUT,"Casa","Digite o Preço da casa ( Valor entre 10 e 999999):","Ok","Cancelar");
            PrecoCasa [ playerid ] = strval ( inputtext ) ;
            ShowPlayerDialog(playerid,DIALOG_CASA3,DIALOG_STYLE_LIST,"Casa","{FF0000}Grande/{FFE4C4}2 salas/{00FFFF}3 banheiros\n{FF0000}Médio/{FFE4C4}1 sala/{00FFFF}1 banheiro\n{FF0000}Médio/{FFE4C4}1 sala/{00FFFF}1 banheiro\n{FF0000}Muito Grande/{FFE4C4}2 salas/{00FFFF}4 banheiros\n{FF0000}Médio/{FFE4C4}1 sala/{00FFFF}2 banheiros","Ok","Cancelar");
        }
        else if(!response)
            return SendClientMessage ( playerid, -1 , "Você desistiu de fazer uma casa.");
    }

    if(dialogid == DIALOG_CASA3)
    {
        if( response )
        {
            switch(listitem)
            {
                case 0:
                {
                    SetPlayerPos ( playerid , 235.508994,1189.169897,1080.339966 );
                    SetPlayerInterior( playerid , 3 ) ;
                    SetPlayerCameraPos ( playerid, 233.694824, 1167.237426, 1088.257812 ) ; // CASA1
                    SetPlayerCameraLookAt ( playerid, 234.220092, 1199.120361, 1080.257812 ) ; // CASA1
                    CasaCriada [ playerid ] = 1;
                    ShowPlayerDialog(playerid,DIALOG_INTERIOR_CASA,DIALOG_STYLE_MSGBOX,"Casa","Você deseja este interior?","Casa Pronta","Não");
                }
                case 1:
                {
                    SetPlayerPos ( playerid ,225.756989,1240.000000,1082.149902 ) ;
                    SetPlayerInterior ( playerid ,2 ) ;
                    SetPlayerCameraPos ( playerid, 225.744766, 1222.306518, 1091.550048 ) ;  //CASA2
                    SetPlayerCameraLookAt ( playerid, 227.270034, 1250.176391, 1082.140625 ) ; //CASA2
                    CasaCriada [ playerid ] = 2;
                    ShowPlayerDialog(playerid,DIALOG_INTERIOR_CASA,DIALOG_STYLE_MSGBOX,"Casa","Você deseja este interior?","Casa Pronta","Não");
                }
                case 2:
                {
                    SetPlayerCameraPos ( playerid,223.043991, 1272.915039, 1085.391206 ) ; //CASA3
                    SetPlayerCameraLookAt ( playerid,224.569259, 1299.142822, 1082.199951 ) ; //CASA3
                    SetPlayerInterior ( playerid ,1);
                    CasaCriada [ playerid ] = 3;
                    ShowPlayerDialog(playerid,DIALOG_INTERIOR_CASA,DIALOG_STYLE_MSGBOX,"Casa","Você deseja este interior?","Casa Pronta","Não");
                }
                case 3:
                {
                    SetPlayerCameraPos ( playerid,-66.415954, 1017.126892, 1092.946044 ) ; //CASA4
                    SetPlayerCameraLookAt ( playerid,227.156265, 1032.362915, 1084.014648 ) ; //CASA4
                    SetPlayerInterior ( playerid ,7);
                    CasaCriada [ playerid ] = 4;
                    ShowPlayerDialog(playerid,DIALOG_INTERIOR_CASA,DIALOG_STYLE_MSGBOX,"Casa","Você deseja este interior?","Casa Pronta","Não");
                }
                case 4:
                {
                    SetPlayerCameraPos ( playerid,295.138977, 1458.740356, 1092.885498 ) ; //CASA5
                    SetPlayerCameraLookAt ( playerid,296.664245, 1484.352905, 1080.519897 ) ; //CASA5
                    SetPlayerInterior ( playerid ,15);
                    CasaCriada [ playerid ] = 5;
                    ShowPlayerDialog(playerid,DIALOG_INTERIOR_CASA,DIALOG_STYLE_MSGBOX,"Casa","Você deseja este interior?","Casa Pronta","Não");
                }
            }
        }
        else if(!response)
        {
            SendClientMessage ( playerid, -1 , "Você desistiu de fazer uma casa.");
            CasaCriada [ playerid ] = 0;
            SetPlayerPos ( playerid,  Pos [ 0 ] [ playerid ] , Pos [ 1 ][ playerid ] , Pos [ 2 ] [ playerid ] );
            SetPlayerInterior ( playerid, InteriorPos [ playerid ] ) ;
        }
    }

    if(dialogid == DIALOG_INTERIOR_CASA)
    {
        if(response)
        {
            switch(CasaCriada [ playerid ])
            {
                case 1:
                {
                    ProximaCasa++;
                    CriarCasa ( PrecoCasa [ playerid ] ,  Pos [ 0 ] [ playerid ] , Pos [ 1 ][ playerid ] , Pos [ 2 ] [ playerid ] , 235.508994,1189.169897,1080.339966, 3,ProximaCasa ) ;
                    SendClientMessage ( playerid , 0xFF69B4, "Casa criada com sucesso!" ) ;
                    SetPlayerPos ( playerid,  Pos [ 0 ] [ playerid ] , Pos [ 1 ][ playerid ] , Pos [ 2 ] [ playerid ] );
                    SetPlayerInterior ( playerid, InteriorPos [ playerid ] ) ;
                    CasaCriada [ playerid ] = 0;
                }
                case 2:
                {
                    ProximaCasa++;
                    CriarCasa ( PrecoCasa [ playerid ] ,  Pos [ 0 ] [ playerid ] , Pos [ 1 ][ playerid ] , Pos [ 2 ] [ playerid ] , 225.756989,1240.000000,1082.149902, 2,ProximaCasa ) ;
                    SendClientMessage ( playerid , 0xFF69B4, "Casa criada com sucesso!" ) ;
                    SetPlayerPos ( playerid,  Pos [ 0 ] [ playerid ] , Pos [ 1 ][ playerid ] , Pos [ 2 ] [ playerid ] );
                    SetPlayerInterior ( playerid, InteriorPos [ playerid ] ) ;
                    CasaCriada [ playerid ] = 0;
                }
                case 3:
                {
                    ProximaCasa++;
                    CriarCasa ( PrecoCasa [ playerid ] ,  Pos [ 0 ] [ playerid ] , Pos [ 1 ][ playerid ] , Pos [ 2 ] [ playerid ] , 223.043991, 1272.915039, 1085.391206, 1,ProximaCasa ) ;
                    SendClientMessage ( playerid , 0xFF69B4, "Casa criada com sucesso!" ) ;
                    SetPlayerPos ( playerid,  Pos [ 0 ] [ playerid ] , Pos [ 1 ][ playerid ] , Pos [ 2 ] [ playerid ] );
                    SetPlayerInterior ( playerid, InteriorPos [ playerid ] ) ;
                    CasaCriada [ playerid ] = 0;
                }
                case 4:
                {
                    ProximaCasa++;
                    CriarCasa ( PrecoCasa [ playerid ] ,  Pos [ 0 ] [ playerid ] , Pos [ 1 ][ playerid ] , Pos [ 2 ] [ playerid ] , -66.415954, 1017.126892, 1092.946044, 7,ProximaCasa ) ;
                    SendClientMessage ( playerid , 0xFF69B4, "Casa criada com sucesso!" ) ;
                    SetPlayerPos ( playerid,  Pos [ 0 ] [ playerid ] , Pos [ 1 ][ playerid ] , Pos [ 2 ] [ playerid ] );
                    SetPlayerInterior ( playerid, InteriorPos [ playerid ] ) ;
                    CasaCriada [ playerid ] = 0;
                }
                case 5:
                {
                    ProximaCasa++;
                    CriarCasa ( PrecoCasa [ playerid ] ,  Pos [ 0 ] [ playerid ] , Pos [ 1 ][ playerid ] , Pos [ 2 ] [ playerid ] , 295.138977, 1458.740356, 1092.885498, 15,ProximaCasa ) ;
                    SendClientMessage ( playerid , 0xFF69B4, "Casa criada com sucesso!" ) ;
                    SetPlayerPos ( playerid,  Pos [ 0 ] [ playerid ] , Pos [ 1 ][ playerid ] , Pos [ 2 ] [ playerid ] );
                    SetPlayerInterior ( playerid, InteriorPos [ playerid ] ) ;
                    CasaCriada [ playerid ] = 0;
                }
            }
        }
        else if(!response)
        {
            SendClientMessage ( playerid, -1 , "Você desistiu de fazer uma casa.");
            SetPlayerPos ( playerid,  Pos [ 0 ] [ playerid ] , Pos [ 1 ][ playerid ] , Pos [ 2 ] [ playerid ] );
            SetPlayerInterior ( playerid, InteriorPos [ playerid ] ) ;
            CasaCriada [ playerid ] = 0;
        }
    }
    return true;
}
CMD:entrar(playerid)
{
    for(new i = 0; i < MAX_CASAS; i++)
    {
            format(StringCasa2, 60, "Casas/Casa/%i.ini", i ) ;
            if(IsPlayerInRangeOfPoint(playerid,5.0,DOF2_GetFloat ( StringCasa2, "PosXF" ),DOF2_GetFloat ( StringCasa2, "PosYF" ),DOF2_GetFloat ( StringCasa2, "PosZF" )))
            {
                SetPlayerPos ( playerid , DOF2_GetFloat ( StringCasa2, "PosXD" ),DOF2_GetFloat ( StringCasa2, "PosYD" ),DOF2_GetFloat ( StringCasa2, "PosZD" ) ) ;
                SetPlayerInterior ( playerid , DOF2_GetInt ( StringCasa2, "Interior" ) ) ;
                SetPlayerVirtualWorld( playerid , DOF2_GetInt ( StringCasa2, "WorldID" ) ) ;
                format(StringCasa, sizeof(StringCasa), "Você entrou na casa de id: %d", i);
                SendClientMessage(playerid, 0x38FF06FF, StringCasa);
            }
    }
    return 1;
}
CMD:sair(playerid)
{
    for(new i = 0; i < MAX_CASAS; i++)
    {
            format(StringCasa2, 60, "Casas/Casa/%i.ini", i ) ;
            if(IsPlayerInRangeOfPoint(playerid,5.0,DOF2_GetFloat ( StringCasa2, "PosXD" ),DOF2_GetFloat ( StringCasa2, "PosYD" ),DOF2_GetFloat ( StringCasa2, "PosZD" )))
            {
                SetPlayerPos ( playerid , DOF2_GetFloat ( StringCasa2, "PosXF" ),DOF2_GetFloat ( StringCasa2, "PosYF" ),DOF2_GetFloat ( StringCasa2, "PosZF" ) ) ;
                SetPlayerInterior ( playerid , 0 ) ;
                SetPlayerVirtualWorld( playerid , 0 ) ;
                format(StringCasa, sizeof(StringCasa), "Você saiu da casa de id: %d", i);
                SendClientMessage(playerid, 0x38FF06FF, StringCasa);
            }
    }
    return 1;
}


Viewing all articles
Browse latest Browse all 18226

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>