08.05.2015, 00:32
Boa noite galera, bom eu vim perguntar para vocкs se hб uma maneira de deixar este meu comando mais optimizado ou no que eu possa melhorar.
Aceito criticas construtivas.
Este comando й do meu Gamemode criado do zero, Porйm nele nгo contйm tudo pois ainda estou finalizando estб parte.
Desde jб agradeзo a colaboraзгo de todos!
Aceito criticas construtivas.
Este comando й do meu Gamemode criado do zero, Porйm nele nгo contйm tudo pois ainda estou finalizando estб parte.
Desde jб agradeзo a colaboraзгo de todos!
PHP код:
CMD:casa(playerid, params[])
{
new aname[MAX_PLAYER_NAME], string[4][300], file[255], opcao[50], funcao[50], Float:PosCasa[3];
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, "vender", true) != -1)
{
for( new c = 0; c < MAX_CASAS; c++ )
{
format( string[0], 300, string[0] , "/Casas/casa%d.ini", c ) ;
if( dini_Exists( string[0] ) )
{
if( IsPlayerInRangeOfPoint( playerid, 2.0, dini_Float( string[0], "PosX" ) , dini_Float( string[0], "PosY" ) , dini_Float( string[0], "PosZ" ) ) )
{
if( dini_Int( string[0], "TDono" ) != 1 ) return SendClientMessage( playerid, -1, "[ x ] {FF0000}Estб casa jб estб a venda." ) ;
if( strcmp( dini_Get( string[0], "Dono" ) , aname, false ) == 0) return SendClientMessage( playerid, -1, "[ x ] {FF0000}Vocк nгo й dono destб casa." ) ;
for( new i = 0; i < MAX_PLAYERS ; i++ ) { RemovePlayerMapIcon(i, mapiconcasaid [ c ] ); }
dini_IntSet( string[0], "TDono", 0 ) ;
dini_Set( string[0], "Dono", "Ninguem" ) ;
dini_IntSet( file, "TemCasa", 0 ) ;
GivePlayerMoney( playerid, dini_Int( string[0], "Preco" ) ) ;
DestroyPickup( dini_Int( string[0], "Id" ) ) ;
pickupcasaid [ c ] = CreatePickup( 1273, 1, dini_Float( string[0], "PosX" ) , dini_Float( string[0], "PosY" ) , dini_Float( string[0], "PosZ" ) , -1 ) ;
dini_IntSet( string[0], "Id", pickupcasaid [ c ] ) ;
Delete3DTextLabel( labelcasaid [ c ] );
format( string[1], 300, string[1] ," {FFFFFF}[ Casa ID: %d - {00FF00}Б Venda {FFFFFF}]\n{FF4500}Dono: {FFFFFF}Ninguйm\n{FF4500}Morador: {FFFFFF}Ninguйm\n{FF4500}Preзo: {FFFFFF}%d\n{FFFF00}use: {FFFFFF}/casa comprar", c, dini_Int( string[0], "Preco" ) ) ;
labelcasaid [ c ] = Create3DTextLabel( string[1], 0x008080FF, dini_Float( string[0], "PosX" ) , dini_Float( string[0], "PosY" ) , dini_Float( string[0], "PosZ" ), 40.0, 0, 0 ) ;
mapiconcasaid [ c ] = CreateDynamicMapIcon(dini_Float( string[0], "PosX" ) , dini_Float( string[0], "PosY" ) , dini_Float( string[0], "PosZ" ), 31, -1, -1, -1, -1, 60.0);
format( string[3], 300, string[3] ,"{FF4500}•{FFFFFF}» {FF4500}O( a ) player {FFFFFF}%s {FF4500}vendeu a casa ID {FFFFFF}%d {FF4500}localizada em: {FFFFFF}%s",aname, c, GetPlayerArea( playerid ) ) ;
SendClientMessageToAll( -1, string[3] ) ;
return 1;
}
if(c == MAX_CASAS) return SendClientMessage(playerid, -1, "[INFO] {FF0000}Vocк nгo estб em uma casa!");
}
}
}
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[0], 300, string[0] , "/Casas/casa%d.ini", c ) ;
if(dini_Exists( string[0] ) )
{
if(IsPlayerInRangeOfPoint( playerid, 2.0, dini_Float( string[0], "PosX" ) , dini_Float( string[0], "PosY" ) , dini_Float( string[0], "PosZ" )))
{
if(dini_Int( string[0], "TDono" ) != 0 ) return SendClientMessage( playerid, -1, "[ x ] {FF0000}Estб casa nгo estб a venda." ) ;
if(GetPlayerMoney( playerid ) < dini_Int( string[0], "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 <MAX_PLAYERS ; i++ ) { RemovePlayerMapIcon(i, mapiconcasaid [ c ] ); }
dini_IntSet( string[0], "TDono", 1 ) ;
dini_Set( string[0], "Dono", aname ) ;
GivePlayerMoney( playerid, -dini_Int( string[0], "Preco" ) ) ;
DestroyPickup( dini_Int( string[0], "Id" ) ) ;
pickupcasaid [ c ] = CreatePickup( 1272, 1, dini_Float( string[0], "PosX" ) , dini_Float( string[0], "PosY" ) , dini_Float( string[0], "PosZ" ) , -1 ) ;
dini_IntSet( string[0], "Id", pickupcasaid [ c ] ) ;
GetPlayerPos( playerid, PosCasa[0], PosCasa[1], PosCasa[2] ) ;
dini_FloatSet( file,"CasaX",Float:PosCasa[0] ) ;
dini_FloatSet( file,"CasaY",Float:PosCasa[1] ) ;
dini_FloatSet( file,"CasaZ",Float:PosCasa[2] ) ;
dini_IntSet( file, "TemCasa",1 ) ;
LiberadoCC [ playerid ] = 0;
Delete3DTextLabel(labelcasaid [ c ] );
format( string[1], 300, string[1] ," {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}aperte {FFFFFF}'F'{FFFF00} para entrar",c ,dini_Get( string[0], "Dono" ), dini_Get( string[0], "Morador" ),dini_Int( string[0], "Preco" ) ) ;
labelcasaid [ c ] = Create3DTextLabel( string[1], 0x008080FF, dini_Float( string[0], "PosX" ) , dini_Float( string[0], "PosY" ) , dini_Float( string[0], "PosZ" ), 40.0, 0, 0 ) ;
mapiconcasaid [ c ] = CreateDynamicMapIcon(dini_Float( string[0], "PosX" ) , dini_Float( string[0], "PosY" ) , dini_Float( string[0], "PosZ" ), 32, -1, -1, -1, -1, 60.0);
format( string[3], 300, string[3] ,"{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, string[3] ) ;
return 1;
}
if(c == MAX_CASAS) return SendClientMessage(playerid, -1, "[INFO] {FF0000}Vocк nгo estб em uma casa!");
}
}
}
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[0], 300, string[0] , "/Casas/casa%d.ini", c ) ;
if( dini_Int( string[0], "TMorador" ) == 1 )
{
if( strcmp( dini_Get( string[0], "Morador" ) , aname, true ) == 0 )
{
dini_IntSet( string[0], "TMorador", 0 );
dini_Set( string[0], "Morador", "Ninguem" );
format(string[2], 300, string[2] , "[CASA] Vocк nгo mora mais na sua antiga casa ID: %d !", c);
SendClientMessage(playerid, 0xFFFF00AA, string[2]);
}
}
}
format( string[0], 300, string[0] , "/Casas/casa%d.ini", moradia [ playerid ] ) ;
if(!dini_Exists( string[0] ) ) 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[0], "TMorador", 1 ) ;
dini_Set( string[0], "Morador", aname ) ;
dini_FloatSet( file,"CasaX", dini_Float( string[0], "PosX" ) ) ;
dini_FloatSet( file,"CasaY", dini_Float( string[0], "PosY" ) ) ;
dini_FloatSet( file,"CasaZ", dini_Float( string[0], "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(string[2], 300, string[2] ,"[CASA] Vocк aceitou morar na nova casa ID: %d!", moradia[playerid]) ;
SendClientMessage(playerid, 0xFFFF00AA, string[2]);
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( a ) para morar em uma casa." ) ;
SendClientMessage( playerid, -1, "•» {FFFF00}Vocк recusou o convite de moradia." ) ;
format(string[2], 300, string[2] , "[CASA] O(A) player %s recusou o convite de moradia enviado por vocк!", aname);
SendClientMessage( convitede [ playerid ], 0xFFFF00AA, string[2]) ;
morar [ playerid ] = 0, moradia [ playerid ] = 0, convitede [ playerid ] = 0;
return 1;
}
}
return 1;
}