[Ajuda] Comando /casa comprar
#1

Bom galera a minha dъvida й a seguinte, Eu tenho um Comando apenas que pode servir para vбrias coisas.
O comando /casa [comprar, vender, moradia, veiculo]. A base /casa moradia aceitar/recusar estб funcionando.
Porem agora que vem minha dъvida eu tenho dois parвmetros definidos, funзгo e opзгo.
Porem eu quero usar o comando desta maneira /casa comprar/vender.
Minha dъvida й nisso, pois ele nгo passa para as ifs abaixo se nгo tiver o comando /casa funзгo opзгo.

PHP код:
CMD:casa(playeridparams[])
{
    new 
aname[MAX_PLAYER_NAME], string[124], string1[155], file[255], opcao[50], funcao[50], msg[155];
    
GetPlayerName(playeridanamesizeof(aname));
    if(
sscanf(params"s[50]s[50]"funcaoopcao)) return SendClientMessage(playerid, -1"[ ERRO ] {FF0000}use: /casa [comprar, vender, moradia, veiculo]");
    if(!
IsPlayerConnected(playerid)) return SendClientMessage(playerid, -1"[ ERRO ] {FF0000}Vocк nгo estб conectado no servidor!");
    
format(filesizeof(file), PASTA_CONTASaname);
    if(
strfind(funcao"comprar"true) != -1)
    {
        if(
LiberadoCC playerid ] != 1) return SendClientMessage(playerid, -1,"[x] {FF0000}Vocк nгo estб liberado para comprar uma casa, peзa a um(a) administrador(a) a permissгo.");
        for( new 
0MAX_CASASc++ )
        {
            
formatstringsizeof( string ) , "/Casas/casa%d.ini") ;
            if(
dini_Exists( string ) )
            {
                if(
== MAX_CASAS) return SendClientMessage(playerid, -1"[INFO] {FF0000}Vocк nгo estб em uma casa!");
                if(
IsPlayerInRangeOfPointplayerid2.0dini_Floatstring"PosX" ) , dini_Floatstring"PosY" ) , dini_Floatstring"PosZ" )))
                {
                    if(
dini_Intstring"TDono" ) != ) return SendClientMessageplayerid, -1"[ x ] {FF0000}Estб casa nгo estб a venda." ) ;
                    if(
GetPlayerMoneyplayerid )  < dini_Intstring"Preco" ) ) return SendClientMessageplayerid, -1"[ x ] {FF0000}Vocк nгo tem dinheiro suficiente." ) ;
                    if(
GetCasasplayerid )  != ) return SendClientMessageplayerid, -1"[ x ] {FF0000}Vocк sу pode possuir uma casa." ) ;
                    for( new 
0<GetMaxPlayers( ) ; i++ ) { RemovePlayerMapIcon(imapiconcasaid ] ); }
                    
dini_IntSetstring"TDono") ;
                    
dini_Setstring"Dono"aname ) ;
                    
GivePlayerMoneyplayerid, -dini_Intstring"Preco" ) ) ;
                    
DestroyPickupdini_Intstring"Id" ) ) ;
                    
pickupcasaid ] = CreatePickup12721dini_Floatstring"PosX" ) , dini_Floatstring"PosY" ) , dini_Floatstring"PosZ" ) , -) ;
                    
dini_IntSetstring"Id"pickupcasaid ] ) ;
                    new 
Float:XFloat:YFloat:Z;
                    
GetPlayerPosplayeridXY) ;
                    
dini_FloatSetfile,"CasaX",Float:) ;
                    
dini_FloatSetfile,"CasaY",Float:) ;
                    
dini_FloatSetfile,"CasaZ",Float:) ;
                    
dini_IntSetfile"TemCasa",) ;
                    
LiberadoCC playerid ] = 0;
                    
Delete3DTextLabel(labelcasaid ] );
                    
formatstring1sizeofstring1 ) ," {FFFFFF}[ Casa ID: %d - {FF0000}Possui dono(a) {FFFFFF}]\n{FF4500}Dono: {FFFFFF}%s\n{FF4500}Morador: {FFFFFF}%s\n{FF4500}Preзo: {FFFFFF}%d\n{FFFF00}use: {FFFFFF}/entrarcasa",c,dini_Getstring"Dono" ), dini_Getstring"Morador" ),dini_Intstring"Preco" ) ) ;
                    
labelcasaid ] = Create3DTextLabelstring10x008080FFdini_Floatstring"PosX" ) , dini_Floatstring"PosY" ) , dini_Floatstring"PosZ" ), 40.00) ;
                    
mapiconcasaid ] = CreateDynamicMapIcon(dini_Floatstring"PosX" ) , dini_Floatstring"PosY" ) , dini_Floatstring"PosZ" ), 32, -1, -1, -1, -160.0);
                    new 
text 255 ];
                    
formattextsizeoftext ) ,"{00FF7F}•{FFFFFF}» {00FF7F}O( a )  player {FFFFFF}%s {00FF7F}comprou a casa ID {FFFFFF}%d {00FF7F}localizada em: {FFFFFF}%s",anamecGetPlayerAreaplayerid ) ) ;
                    
SendClientMessageToAll( -1,text ) ;
                    return 
1;
                }
            }
        }
    }
    if(
strfind(funcao"moradia"true) != -1)
    {
        if(
strfind(opcao"aceitar"true) != -1)
        {
            for( new 
0MAX_CASASc++ )
            {
                
formatstringsizeof( string ) , "/Casas/casa%d.ini") ;
                if( 
dini_Intstring"TMorador" )  == )
                {
                    if( 
strcmpdini_Getstring"Morador" ) , anametrue )  == )
                    {
                        
dini_IntSetstring"TMorador");
                        
dini_Setstring"Morador""Ninguem" );
                        
format(msgsizeof(msg), "[CASA] Vocк nгo mora mais na sua antiga casa ID: %d !"c);
                        
SendClientMessage(playerid0xFFFF00AAmsg);
                    }
                }
            }
            
formatstringsizeof( string ) , "/Casas/casa%d.ini"moradia playerid ] ) ;
            if(!
dini_Exists( string ) ) return SendClientMessage(playerid0xFF0000AA"[CASA] A casa que vocк foi convidado(a) para morar nгo existe!");
            if( 
morar playerid ] != ) return SendClientMessageplayerid, -1"[ x ] {FF0000}Vocк nгo foi convidado( a )  para morar em uma casa." ) ;
            
dini_IntSetstring"TMorador") ;
            
dini_Setstring"Morador"aname ) ;
            
dini_FloatSetfile,"CasaX"dini_Floatstring"PosX" ) ) ;
            
dini_FloatSetfile,"CasaY"dini_Floatstring"PosY" ) ) ;
            
dini_FloatSetfile,"CasaZ"dini_Floatstring"PosZ" ) ) ;
            
SetSpawnInfoplayerid1dini_Intfile"Skin" ) , dini_Intfile"CasaX" ) , dini_Intfile"CasaY" ) , dini_Intfile"CasaZ" ) , 354.165700000) ;
            
format(msgsizeof(msg),"[CASA] Vocк aceitou morar na nova casa ID: %d!"moradia[playerid]) ;
            
SendClientMessage(playerid0xFFFF00AAmsg);
            
SendClientMessageconvitede playerid ], -1"{00FF7F}•{FFFFFF}» {00FF7F}O jogador aceitou morar em sua casa." ) ;
            
morar playerid ] = 0;
            
moradia playerid ] = 0;
            
convitede playerid ] = 0;
        }
        else if(
strfind(opcao"recusar"true) != -1)
        {
            if(
morar[playerid] != 1) return SendClientMessageplayerid, -1"[ x ] {FF0000}Vocк nгo foi convidado para morar em uma casa." ) ;
            
SendClientMessageplayerid, -1"•» {FFFF00}Vocк recusou o convite de moradia." ) ;
            
format(msgsizeof(msg), "[CASA] O(A) player %s recusou o convite de moradia enviado por vocк!"aname);
            
SendClientMessageconvitede playerid ], 0xFFFF00AAmsg) ;
            
morar playerid ] = 0;
            
moradia playerid ] = 0;
            
convitede playerid ] = 0;
            return 
1;
        }
    }
    return 
1;

Reply
#2

substitui:
Код:
if(sscanf(params, "s[50]s[50]", funcao, opcao)) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}use: /casa [comprar, vender, moradia, veiculo]");
por:
Код:
if(sscanf(params, "s[50]", funcao)) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}use: /casa [comprar, vender, moradia, veiculo]");
depois na parte de moradia vocк adiciona:
Код:
if(sscanf(params, "s[50]", funcao, opcao)) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}use: /casa moradia [aceitar/recusar]");
ficando
Код:
CMD:casa(playerid, params[])
{
    new aname[MAX_PLAYER_NAME], string[124], string1[155], file[255], opcao[50], funcao[50], msg[155];
    GetPlayerName(playerid, aname, sizeof(aname));
    if(sscanf(params, "s[50]", funcao)) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}use: /casa [comprar, vender, moradia, veiculo]");
    if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}Vocк nгo estб conectado no servidor!");
    format(file, sizeof(file), PASTA_CONTAS, aname);
    if(strfind(funcao, "comprar", true) != -1)
    {
        if(LiberadoCC [ playerid ] != 1) return SendClientMessage(playerid, -1,"[x] {FF0000}Vocк nгo estб liberado para comprar uma casa, peзa a um(a) administrador(a) a permissгo.");
        for( new c = 0; c < MAX_CASAS; c++ )
        {
            format( string, sizeof( string ) , "/Casas/casa%d.ini", c ) ;
            if(dini_Exists( string ) )
            {
                if(c == MAX_CASAS) return SendClientMessage(playerid, -1, "[INFO] {FF0000}Vocк nгo estб em uma casa!");
                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, -1, "[ x ] {FF0000}Estб casa nгo estб a venda." ) ;
                    if(GetPlayerMoney( playerid )  < dini_Int( string, "Preco" ) ) return SendClientMessage( playerid, -1, "[ x ] {FF0000}Vocк nгo tem dinheiro suficiente." ) ;
                    if(GetCasas( playerid )  != 0 ) return SendClientMessage( playerid, -1, "[ x ] {FF0000}Vocк sу pode possuir uma casa." ) ;
                    for( new i = 0; i <GetMaxPlayers( ) ; i++ ) { RemovePlayerMapIcon(i, mapiconcasaid [ c ] ); }
                    dini_IntSet( string, "TDono", 1 ) ;
                    dini_Set( string, "Dono", aname ) ;
                    GivePlayerMoney( playerid, -dini_Int( string, "Preco" ) ) ;
                    DestroyPickup( dini_Int( string, "Id" ) ) ;
                    pickupcasaid [ c ] = CreatePickup( 1272, 1, dini_Float( string, "PosX" ) , dini_Float( string, "PosY" ) , dini_Float( string, "PosZ" ) , -1 ) ;
                    dini_IntSet( string, "Id", pickupcasaid [ c ] ) ;
                    new Float:X, Float:Y, Float:Z;
                    GetPlayerPos( playerid, X, Y, Z ) ;
                    dini_FloatSet( file,"CasaX",Float:X ) ;
                    dini_FloatSet( file,"CasaY",Float:Y ) ;
                    dini_FloatSet( file,"CasaZ",Float:Z ) ;
                    dini_IntSet( file, "TemCasa",1 ) ;
                    LiberadoCC [ playerid ] = 0;
                    Delete3DTextLabel(labelcasaid [ c ] );
                    format( string1, sizeof( string1 ) ," {FFFFFF}[ Casa ID: %d - {FF0000}Possui dono(a) {FFFFFF}]\n{FF4500}Dono: {FFFFFF}%s\n{FF4500}Morador: {FFFFFF}%s\n{FF4500}Preзo: {FFFFFF}%d\n{FFFF00}use: {FFFFFF}/entrarcasa",c,dini_Get( string, "Dono" ), dini_Get( string, "Morador" ),dini_Int( string, "Preco" ) ) ;
                    labelcasaid [ c ] = Create3DTextLabel( string1, 0x008080FF, dini_Float( string, "PosX" ) , dini_Float( string, "PosY" ) , dini_Float( string, "PosZ" ), 40.0, 0, 0 ) ;
                    mapiconcasaid [ c ] = CreateDynamicMapIcon(dini_Float( string, "PosX" ) , dini_Float( string, "PosY" ) , dini_Float( string, "PosZ" ), 32, -1, -1, -1, -1, 60.0);
                    new text [ 255 ];
                    format( text, sizeof( text ) ,"{00FF7F}•{FFFFFF}» {00FF7F}O( a )  player {FFFFFF}%s {00FF7F}comprou a casa ID {FFFFFF}%d {00FF7F}localizada em: {FFFFFF}%s",aname, c, GetPlayerArea( playerid ) ) ;
                    SendClientMessageToAll( -1,text ) ;
                    return 1;
                }
            }
        }
    }
    if(strfind(funcao, "moradia", true) != -1)
    {
        if(sscanf(params, "s[50]s[50]", funcao, opcao)) return SendClientMessage(playerid, -1, "[ ERRO ] {FF0000}use: /casa moradia [aceitar/recusar]");
        if(strfind(opcao, "aceitar", true) != -1)
        {
            for( new c = 0; c < MAX_CASAS; c++ )
            {
                format( string, sizeof( string ) , "/Casas/casa%d.ini", c ) ;
                if( dini_Int( string, "TMorador" )  == 1 )
                {
                    if( strcmp( dini_Get( string, "Morador" ) , aname, true )  == 0 )
                    {
                        dini_IntSet( string, "TMorador", 0 );
                        dini_Set( string, "Morador", "Ninguem" );
                        format(msg, sizeof(msg), "[CASA] Vocк nгo mora mais na sua antiga casa ID: %d !", c);
                        SendClientMessage(playerid, 0xFFFF00AA, msg);
                    }
                }
            }
            format( string, sizeof( string ) , "/Casas/casa%d.ini", moradia [ playerid ] ) ;
            if(!dini_Exists( string ) ) return SendClientMessage(playerid, 0xFF0000AA, "[CASA] A casa que vocк foi convidado(a) para morar nгo existe!");
            if( morar [ playerid ] != 1 ) return SendClientMessage( playerid, -1, "[ x ] {FF0000}Vocк nгo foi convidado( a )  para morar em uma casa." ) ;
            dini_IntSet( string, "TMorador", 1 ) ;
            dini_Set( string, "Morador", aname ) ;
            dini_FloatSet( file,"CasaX", dini_Float( string, "PosX" ) ) ;
            dini_FloatSet( file,"CasaY", dini_Float( string, "PosY" ) ) ;
            dini_FloatSet( file,"CasaZ", dini_Float( string, "PosZ" ) ) ;
            SetSpawnInfo( playerid, 1, dini_Int( file, "Skin" ) , dini_Int( file, "CasaX" ) , dini_Int( file, "CasaY" ) , dini_Int( file, "CasaZ" ) , 354.1657, 0, 0, 0, 0, 0, 0 ) ;
            format(msg, sizeof(msg),"[CASA] Vocк aceitou morar na nova casa ID: %d!", moradia[playerid]) ;
            SendClientMessage(playerid, 0xFFFF00AA, msg);
            SendClientMessage( convitede [ playerid ], -1, "{00FF7F}•{FFFFFF}» {00FF7F}O jogador aceitou morar em sua casa." ) ;
            morar [ playerid ] = 0;
            moradia [ playerid ] = 0;
            convitede [ playerid ] = 0;
        }
        else if(strfind(opcao, "recusar", true) != -1)
        {
            if(morar[playerid] != 1) return SendClientMessage( playerid, -1, "[ x ] {FF0000}Vocк nгo foi convidado para morar em uma casa." ) ;
            SendClientMessage( playerid, -1, "•» {FFFF00}Vocк recusou o convite de moradia." ) ;
            format(msg, sizeof(msg), "[CASA] O(A) player %s recusou o convite de moradia enviado por vocк!", aname);
            SendClientMessage( convitede [ playerid ], 0xFFFF00AA, msg) ;
            morar [ playerid ] = 0;
            moradia [ playerid ] = 0;
            convitede [ playerid ] = 0;
            return 1;
        }
    }
    return 1;
}
Obs: nгo testei.
Reply
#3

pawn Код:
if(sscanf(params, "s[50]S[50]", funcao, opcao))
O S maiusculo indica que a string й uma string opcional. Porйm convem inicializar a variavel opзгo com um valor qualquer para prevenir erros. Outra soluзгo й fazer como foi dito pelo gabriel em cima, mas no segundo sscanf faltalhe um s[50] xD

P.S.: Nao testei, apenas me basiei no topico do sscanf, supostamente isso deve ser suficiente.
Reply
#4

Quote:
Originally Posted by Kimossab
Посмотреть сообщение
pawn Код:
if(sscanf(params, "s[50]S[50]", funcao, opcao))
O S maiusculo indica que a string й uma string opcional. Porйm convem inicializar a variavel opзгo com um valor qualquer para prevenir erros. Outra soluзгo й fazer como foi dito pelo gabriel em cima, mas no segundo sscanf faltalhe um s[50] xD

P.S.: Nao testei, apenas me basiei no topico do sscanf, supostamente isso deve ser suficiente.
Tambйm tem essa da string opcional, nem tinha me ligado e obrigado pela correзгo.
Reply


Forum Jump:


Users browsing this thread: