08.09.2012, 21:07
Isso vai ser mais uma liзгo de moral para todos os scripters de gamemodes aqui do que um tutorial.
Eu espero abrir os olhos de muitas pessoas (atй de editores de GF) e retransmitir a minha 'filosofia' de programaзгo, que nгo й minha, mas faz parte de um conjunto de regras que definem 'etiquetas de programaзгo'.
Se vocк olhar de longe, isso simplesmente vai soar como uma complicaзгo e enrolaзгo e batidas de teclas disperdiзadas, mas se vocк jб tб fudido, nгo custa nada ler um pouco.
Enquanto muitas pessoas se preoucupam em como colocar dialogs coloridos, ou textdraws gigantes (que eu, particularmente, acho ridнculas) na tela de login, algumas se preoucupam mais em fazer sistemas, criar mйtodos e estruturas para gerenciar os dados para um certo objeivo, fazendo o cуdigo mais legнvel e mais fбcil a implementaзгo de derivativos/extensхes.
Mas que porra й programaзгo genйrica?
Templates no C++ nгo й questгo agora. Usem essa mentalidade como um template para o que eu vou descrever agora.
Neste caso, programaзгo genйrica se baseia em eliminar dados constantes e criar um sistema e uma fonte desses dados para facilitar a entrada de novos dados no futuro.
Como assim?
Dando um exemplo bбsico, que irrita a todos e que й um pй no saco e que todo mundo, todo dia me enche o saco por causa desse caralho voante. Os sistemas de veнculos.
Eu nгo tenho certeza se todos os scripters desta board sгo burros, mas nгo й um pouco role ter que reescrever IsACopCar, IsASexCar a todo veнculo novo que vocк for adicionar?
Vocк nunca pensou que vocк poderia fazer a merda de um enum e criar a porra de uma funзгo prуpria para criar os veнculos?
Ao invйs de fazer a checagem de veнculos por ids e ter 200 carros bugados, por que nгo fazer isso?
Й уbvio que isto й sу um exemplo, mas isso nгo parece muito menos sujeito a falhas?
E ainda dб pra fazer melhor, como carregar tudo de um banco de dados. Jб pensou em adicionar veiculos de org apenas inserindo uma linha em uma tabela? Agora vocк estб em dia com a evoluзгo mental!
Й claro que dб pra fazer muito mais com isso com apenas alguns pensamentos:
Senгo, foda-se.
:3
Eu espero abrir os olhos de muitas pessoas (atй de editores de GF) e retransmitir a minha 'filosofia' de programaзгo, que nгo й minha, mas faz parte de um conjunto de regras que definem 'etiquetas de programaзгo'.
Se vocк olhar de longe, isso simplesmente vai soar como uma complicaзгo e enrolaзгo e batidas de teclas disperdiзadas, mas se vocк jб tб fudido, nгo custa nada ler um pouco.
Enquanto muitas pessoas se preoucupam em como colocar dialogs coloridos, ou textdraws gigantes (que eu, particularmente, acho ridнculas) na tela de login, algumas se preoucupam mais em fazer sistemas, criar mйtodos e estruturas para gerenciar os dados para um certo objeivo, fazendo o cуdigo mais legнvel e mais fбcil a implementaзгo de derivativos/extensхes.
Mas que porra й programaзгo genйrica?
Templates no C++ nгo й questгo agora. Usem essa mentalidade como um template para o que eu vou descrever agora.
Neste caso, programaзгo genйrica se baseia em eliminar dados constantes e criar um sistema e uma fonte desses dados para facilitar a entrada de novos dados no futuro.
Como assim?
Dando um exemplo bбsico, que irrita a todos e que й um pй no saco e que todo mundo, todo dia me enche o saco por causa desse caralho voante. Os sistemas de veнculos.
Eu nгo tenho certeza se todos os scripters desta board sгo burros, mas nгo й um pouco role ter que reescrever IsACopCar, IsASexCar a todo veнculo novo que vocк for adicionar?
Vocк nunca pensou que vocк poderia fazer a merda de um enum e criar a porra de uma funзгo prуpria para criar os veнculos?
Ao invйs de fazer a checagem de veнculos por ids e ter 200 carros bugados, por que nгo fazer isso?
pawn Код:
enum VEHICLE_INFO
{
vehicle_Tipo,
vehicle_Dono,
vehicle_Org,
vehicle_CargoMinimo
}
new gVehicleInfo[MAX_VEHICLES][VEHICLE_INFO];
enum
{
TIPO_VEICULO_PLAYER,
TIPO_VEICULO_ORG
}
Veiculo_IsSpawned(vid)
{
return GetVehicleModel(vid) > 0;
}
Veiculo_Criar(modelo, x, y, z, tipo, dono)
{
// encher variaveis
// criar carro
// retornar id
}
OnGameModeInit()
{
Veiculo_Criar(CARRO_POLICIA, x, y, z, TIPO_VEICULO_ORG, GANG_LSPD);
Veiculo_Criar(CARRO_POLICIA, x, y, z, TIPO_VEICULO_ORG, GANG_LSPD);
Veiculo_Criar(CARRO_POLICIA, x, y, z, TIPO_VEICULO_ORG, GANG_LSPD);
Veiculo_Criar(CARRO_POLICIA, x, y, z, TIPO_VEICULO_ORG, GANG_LSPD);
...
}
OnPlayerEnterVehicle(veiculo)
{
if(gVehicleInfo[veiculo][vehicle_Tipo] == TIPO_VEICULO_ORG)
{
if(PlayerInfo[playerid][Player_Org] != gVehicleInfo[veiculo][vehicle_Org])
return Retirar_Player_Do_Veiculo();
if(PlayerInfo[playerid][Player_CargoOrg] < gVehicleInfo[veiculo][vehicle_CargoMinimo])
return Retirar_blablbalba();
}
}
E ainda dб pra fazer melhor, como carregar tudo de um banco de dados. Jб pensou em adicionar veiculos de org apenas inserindo uma linha em uma tabela? Agora vocк estб em dia com a evoluзгo mental!
Й claro que dб pra fazer muito mais com isso com apenas alguns pensamentos:
- Onde vocк pode usar dados diretos, pense como ficaria isso em um sistema.
- Tente manter um padrгo em cada sistema que vocк escreve, fazendo com que o codigo pareзa bunito.
- Muitas condicionais geralmente podem ser reduzidas a apenas um tratamento melhor dos dados, evite as gambiarras!
Senгo, foda-se.
:3