[Include] Properties System [MySQL]
#1

Properties System v1.5 (FINAL) [MySQL R39-4]
O cуdigo foi TOTALMENTE modificado em comparaзгo ao anterior.
* Removido todas as consultas desnecessбrias diretas ao banco de dados.
* As verificaзхes ocorrem agora atravйs do ID e nгo mais pelo Nome (Apenas o nome da propriedade й verificado pela funзгo bool:PropNameExists(Nome_Prop[])).
* Adicionado sistema de Lucro por Propriedade.

*DEBUG On/Off:
Код:
#define DEBUG_PROP true
*MБXIMO DE PROPRIEDADES:
Код:
#define MAX_PROPS 100
*TEMPO PARA CADA PROPRIEDADE GERAR LUCRO (MINUTOS):
Код:
#define TEMPO_LUCRO 10
*Funзхes:
*Fazer a conexгo do Banco de Dados.
*Parвmetros: Host, User, Database, Password.
*Deve ser introduzido dentro de: OnGameModeInit ou OnFilterScriptInit ou main
*Retorna: 1.
Код:
mysql_prop_connect(const Server_Host[], const Server_User[], const Server_Database[], const Server_Password[])
*Criar uma propriedade.
*Parвmetros: Nome da Propriedade, Preзo de Compra, Preзo de Venda, Lucro Gerado, Nome do Dono da Propriedade, Posiзгo X, Posiзгo Y, Posiзгo Z.
*Retorna: 1.
Код:
CreateProp(Name_Prop[], Price_Buy_Prop, Price_Sell_Prop, Lucre_Prop, Owner_Prop[], Float:PosX_Prop, Float:PosY_Prop, Float:PosZ_Prop)
*Deletar uma propriedade.
*Parвmetros: ID da Propriedade.
*Retorna: 1.
Код:
DeleteProp(ID_Prop)
*Comprar uma Propriedade.
*Parвmetros: Nome do Dono da Propriedade, ID da Propriedade.
*Retorna: 1.
Код:
BuyProp(Owner_Prop[], ID_Prop)
*Vender uma Propriedade.
*Parвmetros: ID da Propriedade.
*Retorna: 1.
Код:
SellProp(ID_Prop)
*Geta o Preзo de Compra da Propriedade.
*Parвmetros: ID da Propriedade.
*Retorna: Preзo de Compra da Propriedade.
Код:
GetPropBuyVal(ID_Prop)
*Geta o Preзo de Venda de uma Propriedade.
*Parвmetros: ID da Propriedade.
*Retorna: Preзo de Venda da Propriedade.
Код:
GetPropSellVal(ID_Prop)
*Geta o Lucro de uma Propriedade.
*Parвmetros: ID da Propriedade.
*Retorna: Lucro da Propriedade.
Код:
GetPropLucreVal(ID_Prop)
*Geta todas as Propriedades de determinado Jogador.
*Parвmetros: ID do player que executou a funзгo, Nome do Dono.
*Retorna: 1 (As propriedades sгo mostradas na tela do playerid que executou a funзгo).
Код:
GetPlayerProps(playerid, Owner_Prop[])
*Verifica se o Jogador estб Prуximo de uma Propriedade.
*Parвmetros: ID do Jogador, ID da Propriedade.
*Retorna: true = Jogador estб prуximo da Propriedade | false = Jogador estб longe da Propriedade.
Код:
bool:IsPlayerInRangeOfProp(playerid, ID_Prop)
*Verifica se o Jogador й o Dono de Determinada Propriedade.
*Parвmetros: Nome do Dono da Propriedade, ID da Propriedade.
*Retorna: true = Jogador й dono da Propriedade | false = Jogador nгo й o dono da Propriedade.
Код:
bool:IsPlayerOwnerProp(Owner_Prop[], ID_Prop)
*Verifica se uma Propriedade Existe (Nome).
*Parвmetros: Nome da Propriedade.
*Retorna: true = Propriedade existe | false = Propriedade nгo existe.
Код:
bool:PropNameExists(Name_Prop[])
*Verifica se uma Propriedade Existe (ID).
*Parвmetros: ID da Propriedade.
*Retorna: true = Propriedade existe | false = Propriedade nгo existe.
Код:
bool:PropIdExists(ID_Prop)
*Verifica se a Propriedade tem um Dono ou Nгo.
*Parвmetros: ID da Propriedade.
*Retorna: true = Tem dono | false = Nгo tem dono.
Quote:
bool:IsEmptyProp(ID_Prop)

*Carrega as Propriedades.
*Parвmetros: Nгo hб.
*Retorna: 1;
Код:
LoadProps()
*Comandos:
Код:
CMD:pcriar(playerid, params[])
{
	new PropNome[20], PropCusto, PropVenda, PropLucro, PropDono[MAX_PLAYER_NAME], Float:PosX_Prop, Float:PosY_Prop, Float:PosZ_Prop;

	if(sscanf(params, "iiis[24]s[20]", PropCusto, PropVenda, PropLucro, PropDono, PropNome)) return SendClientMessage(playerid, -1, "/PCRIAR [&CUSTO] [&VENDA] [&LUCRO] [&DONO (PADRГO: 'N/A')] [&NOME]");

	if(PropNameExists(PropNome) == true) return SendClientMessage(playerid, -1, "O nome desta propriedade jб existe.");
	
	if(PropCusto < 100 || PropCusto > 99999999) return SendClientMessage(playerid, -1, "O custo da propriedade deve ser entre 100-99999999");
	if(PropVenda < 100 || PropVenda > PropCusto) return SendClientMessage(playerid, -1, "O valor de venda da propriedade deve ser no mнnimo 100 e nгo pode passar do valor de custo.");

	GetPlayerPos(playerid, PosX_Prop, PosY_Prop, PosZ_Prop);

	CreateProp(PropNome, PropCusto, PropVenda, PropLucro, PropDono, PosX_Prop, PosY_Prop, PosZ_Prop);

	return 1;
}

CMD:pdeletar(playerid, params[])
{
	if(isnull(params)) return SendClientMessage(playerid, -1, "/PDELETAR [&ID]");

	if(PropIdExists(strval(params)) == false) return SendClientMessage(playerid, -1, "Esta Propriedade nгo existe!");

	DeleteProp(strval(params));
	SendClientMessage(playerid, -1, "Propriedade excluнda com sucesso!");

	return 1;
}

CMD:pcomprar(playerid, params[])
{
	new Nome[MAX_PLAYER_NAME];

	if(isnull(params)) return SendClientMessage(playerid, -1, "/PCOMPRAR [&ID]");

	if(PropIdExists(strval(params)) == false) return SendClientMessage(playerid, -1, "Esta propriedade nгo existe!");
	
	if(IsEmptyProp(strval(params)) == false) return SendClientMessage(playerid, -1, "Esta propriedade nгo pertence a vocк!");

	GetPlayerName(playerid, Nome, sizeof Nome);

	if(IsPlayerOwnerProp(Nome, strval(params)) == true) return SendClientMessage(playerid, -1, "Esta propriedade jб pertence a vocк!");

	if(IsPlayerInRangeOfProp(playerid, strval(params)) == false) return SendClientMessage(playerid, -1, "Vocк precisa estar prуximo da propriedade!");

	if(GetPlayerMoney(playerid) < GetPropBuyVal(strval(params))) return SendClientMessage(playerid, -1, "Vocк nгo tem dinheiro pra comprar esta propriedade!");

	GivePlayerMoney(playerid, -GetPropBuyVal(strval(params)));

	GetPlayerName(playerid, Nome, sizeof Nome);

	BuyProp(Nome, strval(params));

	SendClientMessage(playerid, -1, "Propriedade comprada com sucesso!");

	return 1;
}

CMD:pvender(playerid, params[])
{
	new Nome[MAX_PLAYER_NAME];

	if(isnull(params)) return SendClientMessage(playerid, -1, "/PVENDER [&ID]");
	
	if(PropIdExists(strval(params)) == false) return SendClientMessage(playerid, -1, "Esta propriedade nгo existe.");

	if(IsEmptyProp(strval(params)) == true) return SendClientMessage(playerid, -1, "Esta propriedade nгo pertence a ninguйm!");

	GetPlayerName(playerid, Nome, sizeof Nome);

	if(IsPlayerOwnerProp(Nome, strval(params)) == false) return SendClientMessage(playerid, -1, "Esta propriedade nгo pertence a vocк!");

	SellProp(strval(params));

	GivePlayerMoney(playerid, GetPropSellVal(strval(params)) + GetPropLucreVal(strval(params)));

	SendClientMessage(playerid, -1, "Propriedade vendida com sucesso!");
	
	return 1;
}

CMD:verprops(playerid, params[])
{
	if(isnull(params)) return SendClientMessage(playerid, -1, "/VERPROPS [&DONO]");

	GetPlayerProps(playerid, params);

	return 1;
}

CMD:pegarlucro(playerid, params[])
{
	new Name[MAX_PLAYER_NAME];
	
	if(isnull(params)) return SendClientMessage(playerid, -1, "/PEGARLUCRO [&ID]");

	if(PropIdExists(strval(params)) == false) return SendClientMessage(playerid, -1, "Esta propriedade nгo existe.");

	if(IsEmptyProp(strval(params)) == true) return SendClientMessage(playerid, -1, "Esta propriedade nгo pertence a ninguйm!");

	GetPlayerName(playerid, Name, sizeof Name);
	
	if(IsPlayerOwnerProp(Name, strval(params)) == false) return SendClientMessage(playerid, -1, "Esta propriedade nгo pertence a vocк!");

	if(IsPlayerInRangeOfProp(playerid, strval(params)) == false) return SendClientMessage(playerid, -1, "Vocк precisa estar prуximo da propriedade!");

	GivePlayerMoney(playerid, GetPropLucreVal(strval(params)));

	SendClientMessage(playerid, -1, "Vocк pegou todo o lucro gerado pela Propriedade.");

	return 1;
}
*Download:
Pastebin

*Crйditos:
#include a_samp // By SAMP Team
#include zcmd // By Zeex
#include sscanf2 // By Emmet_
#include a_mysql // By BlueG
zPain pela dica de inserзгo de ID.
zSuYaNw pela lуgica no sistema de Lucros.
Script by F1N4L
Reply
#2

Parabйns pela include cara

Vai ter algumas funзхes mais para frente ou versгo etc?
Reply
#3

Quote:
Originally Posted by ZEDD666
Посмотреть сообщение
Parabйns pela include cara

Vai ter algumas funзхes mais para frente ou versгo etc?
Obrigado, ZEDD666!
Sim, claro, terб novas funзхes.
Estas sгo apenas as primeiras funзхes da include, como comentado no post e estб funcionando perfeitamente, pretendo adicionar mais algumas funзхes.
Reply
#4

Bom trabalho!
Reply
#5

Quote:
Originally Posted by zSuYaNw
Посмотреть сообщение
Bom trabalho!
Thx, gato!
Reply
#6

cada vez mais a Board PT/BR sendo inovada, parabйns !
Reply
#7

Quote:
Originally Posted by Coringa_Vilao
Посмотреть сообщение
cada vez mais a Board PT/BR sendo inovada, parabйns !
Vlw, Coringa_Vilao!
Reply
#8

Muito bom! Vou sу dar uma dica: os nomes das funзхes estгo um bocado mal feitos.

Por exemplo, CheckPropExists fica melhor sу PropExists, porque, se formos a traduzir if(CheckPropExists(blabla)) й "Se VerificarPropriedadeExiste". Jб se for If(PropExists(blabla)) traduzindo jб fica com sentido "Se PropriedadeExiste".

Outro, CheckPlayerIsOwnerProp para IsPlayerPropOwner.

CheckEmptyProp para IsEmptyProp


Sу umas dicas :P
Reply
#9

Quote:
Originally Posted by bruxo00
Посмотреть сообщение
Muito bom! Vou sу dar uma dica: os nomes das funзхes estгo um bocado mal feitos.

Por exemplo, CheckPropExists fica melhor sу PropExists, porque, se formos a traduzir if(CheckPropExists(blabla)) й "Se VerificarPropriedadeExiste". Jб se for If(PropExists(blabla)) traduzindo jб fica com sentido "Se PropriedadeExiste".

Outro, CheckPlayerIsOwnerProp para IsPlayerPropOwner.

CheckEmptyProp para IsEmptyProp


Sу umas dicas :P
Eu havia colocado Check (verificar) para funзхes booleanas, pois vai retornar true/false, porйm, o que vc falou faz sentido.
Thx, bruxo00!
Reply
#10

Quote:
Originally Posted by F1N4L
Посмотреть сообщение
Eu havia colocado Check (verificar) para funзхes booleanas, pois vai retornar true/false, porйm, o que vc falou faz sentido.
Thx, bruxo00!
Se for a ver, o prуprio SAMP utiliza o nome das funзхes como eu falei: IsPlayerAdmin IsPlayerInVehicle IsPlayerConnected, etc.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)