[Ajuda] Casa.
#1

Olб... Estou interesse de como criar uma casa samp.. Ex: /criarcasa... Alguem pode me passar so uma "base" ? Pois to pensando em criar um fs ...
Reply
#2

Fiz uma base aqui rapidinho, veja agora faзa o resto, qualquer coisa peзa ajuda.

pawn Код:
#include <  A_SAMP  >
#include <   ZCMD   >
#include <   DOF2   >
#include <  SSCANF2 >

#define maxCasas  (10) // Mбximo de Casas


public OnFilterScriptInit() {
    return true;
}

public OnFilterScriptInit() {
    DOF2::Exit();
    return true;
}

COMMAND:criarcasa(playerid, params[]) {
    new intCasa, valorCasa, Float:Position[4], Arquivo[64];
    if(sscanf(params, "ii", intCasa, valorCasa))
        return SendClientMessage(playerid, -1, "[ USE ]: /criarcasa [Interior ID] [Valor]");
    GetPlayerPos(playerid, Position[0], Position[1], Position[2]);
    GetPlayerFacingAngle(playerid, Position[3]);
    for(new x = 0; x < maxCasas; x++) {
        format(Arquivo, 64, "Casas/%i.ini", x);
        if(!DOF2::FileExists(Arquivo)) {
            DOF2::CreateFile(Arquivo);
            DOF2::SetFloat(Arquivo, "Cord X", Position[0]);
            DOF2::SetFloat(Arquivo, "Cord Y", Position[1]);
            DOF2::SetFloat(Arquivo, "Cord Z", Position[2]);
            DOF2::SetFloat(Arquivo, "Cord A", Position[3]);
            DOF2::SetInt(Arquivo, "Int ID", intCasa);
            DOF2::SetInt(Arquivo, "Valor", valorCasa);
            DOF2::SetString(Arquivo, "Dono", "Ninguem");
            DOF2::SaveFile();
            break;
        }
    }
    return true;
}
Reply
#3

Obrigado !
Reply
#4

pawn Код:
#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
};

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

public OnFilterScriptInit()
{
    for(new i = 0; i < MAX_CASAS; i++)
    {
        format ( StringCasa , sizeof ( StringCasa ) ,"Casas/%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] == 0)
        {
            format(StringCasa, sizeof(StringCasa), "[CASA A VENDA]\n|Preзo: %d|\n|Use /comprarcasa para comprar esta propriedade.|",DOF2_GetInt(StringCasa, "Preco"));
            HouseLabel[i] = Create3DTextLabel(StringCasa,0x006400FF,InfoCasa[i][PosXF],InfoCasa[i][PosYF],InfoCasa[i][PosZF],60,0,1);
            AddStaticPickup(1273, 2, InfoCasa[i][PosXF],InfoCasa[i][PosYF],InfoCasa[i][PosZF]);
        }
        if(InfoCasa[i][cComprada] == 1)
        {
            format(StringCasa, sizeof(StringCasa), "[CASA]\n|Dono: %s|\n|Aperte F para Entrar.|", DOF2_GetString ( StringCasa, "Dono" ));
            HouseLabel[i] = Create3DTextLabel(StringCasa,0x006400FF,InfoCasa[i][PosXF],InfoCasa[i][PosYF],InfoCasa[i][PosZF],60,0,1);
            AddStaticPickup(1318, 2,InfoCasa[i][PosXF],InfoCasa[i][PosYF],InfoCasa[i][PosZF]);
        }
    }
    return true;
}

stock CriarCasa ( Preco, Float:XCasa, Float:YCasa, Float:ZCasa, Float:Xd, Float:Yd, Float:Zd, Interior, WorldID )
{
    format(StringCasa, 60, "Casas/%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 h = 0; h < MAX_CASAS; h++)
    {
        if(InfoCasa[h][cComprada] == 0)
        {
            new Casa[128];
            format(Casa, sizeof(Casa), "[CASA A VENDA]\n|Preзo: %d|\n|Use /comprarcasa para comprar esta propriedade.|",DOF2_GetInt(StringCasa, "Preco"));
            HouseLabel[h] = Create3DTextLabel(Casa,0x006400FF,XCasa,YCasa,ZCasa,60,0,1);
            AddStaticPickup(1273, 2, 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/%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])) continue;
                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 ) == 0 )
                    return SendClientMessage(playerid,0xAA3333AA,"Esta casa jб tem dono.");
                new pname[24],Casa2 [ 60 ];
                GetPlayerName(playerid,pname,sizeof(pname));
                if(DOF2_FileExists(StringCasa))
                {
                    DOF2_SetString(StringCasa, "Dono", pname );
                    DOF2_SaveFile();
                }
                format(Casa2,sizeof(Casa2),"[CASA]\n|Dono: %s|\n|Aperte F para Entrar.|", DOF2_GetString ( StringCasa, "Dono" ));
                Update3DTextLabelText(HouseLabel[i],0xFF0000FF,Casa2);
                GivePlayerMoney(playerid,-DOF2_GetInt(StringCasa, "Preco" ));
                AddStaticPickup(1318, 2,InfoCasa[i][PosXF],InfoCasa[i][PosYF],InfoCasa[i][PosZF]);
                InfoCasa[ i ][cComprada] = 1;
            }
    return true;
}
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;
}
Acabei de fazer aqui, testa aн, se de algum problema me fale que eu tento resolver xD
PS:20m pra fazer essa bostinha euheuheuheuhe
Reply
#5

[FeK]Knife.. Pode me add skype ?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)