Originally Posted by Bruno13
Nгo me referi a vocк Rolex, nem a ninguйm desse post. Foi somente um alerta do que ele deve ser como programador e o que pode chegar a ser.
Nгo, ainda estб incorreto. Pontos:
- Vocк precisa indexar a variбvel Hydra com MAX_PLAYERS, se nгo serб impossнvel ter um controle, uma vez que todos jogadores estarгo dependentes dessa variбvel. Assim que outro jogador usar o comando, o Hydra do primeiro nгo serб deletado e assim sucessivamente.
- Porque formatou a variбvel HydraExit? Variбveis definidas com limite MAX_PLAYERS sгo destinadas a armazenar valores de jogadores usando o нndice dela como o id do jogador. Nгo tem sentido o que vocк fez, pois vocк formatou uma variбvel que em uma estrutura lуgica nгo estб declarada como string.
- Nгo й mais fбcil usar apenas uma variбvel para definir o id do Hydra e ao mesmo tempo verificar se o jogador jб criou um? Isso й lуgica de programaзгo que estou lhe aconselhando a estudar. Segue um exemplo:
PHP код:
/*
* Variбvel que armazenarб o id do Hydra que o jogador criar.
* INVALID_VEHICLE_ID caso tenha sido deletado ou nгo criado.
*/
new playerHydra[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
/*
* Reseta a variбvel de controle do Hydra.
*/
playerHydra[playerid] = INVALID_VEHICLE_ID;
return 1;
}
CMD:hydra(playerid)
{
/*
* Verifica se a variбvel nгo estб com valor padrгo de INVALID_VEHICLE_ID.
* Isso significa que o jogador criou algum Hydra.
*/
if(playerHydra[playerid] != INVALID_VEHICLE_ID)
return SendClientMessage(playerid, Vermelho, "[]Vocк jб spawnou a hydra!");
new Float:POS[4];
GetPlayerPos(playerid, POS[0], POS[1], POS[2]);
/*
* Armazena o id do Hydra que foi criado.
*/
playerHydra[playerid] = CreateVehicle(520, POS[0], POS[1], POS[2], POS[3], -1, -1, 60);
SendClientMessage(playerid, Verde, "[]Vocк spawnou a hydra!");
PutPlayerInVehicle(playerid, Hydra, 0);
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
/*
* Chama a funзгo para deletar o Hydra do jogador.
*/
DestroyPlayerHydra(playerid);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
/*
* Chama a funзгo para deletar o Hydra do jogador.
*/
DestroyPlayerHydra(playerid);
return 1;
}
/*
* Crie funзхes para cуdigos que irб utilizar mais que uma vez.
* Este й um princнpio DRY, aconselho que veja este link sobre:
* https://pt.wikipedia.org/wiki/Don%27t_re...1.36039537 */
static DestroyPlayerHydra(playerid)
{
if(playerHydra[playerid] != INVALID_VEHICLE_ID)
{
DestroyVehicle(playerHydra[playerid]);
playerHydra[playerid] = INVALID_VEHICLE_ID;
}
}
|