15/05/2023 14:19
(Esta mensagem foi modificada pela última vez a: 15/05/2023 14:21 por Dr Editor.)
Você pode simplesmente estudar um sistema existente do modo que deseja criar do zero, para estudá-lo e aprender como criar um do seu jeito.
Vou te dar um exemplo bem básico sobre TDM. Abaixo os passos utilizados e por fim o código.
1 - Criar um comandos do evento (criar, entrar, sair)
2 - No comando de entrar deve-se atribuir 3 coisas: balanceamento de equipe (no DM é só desconsiderar esta parte), armas e vida do jogador
4 - Ainda no comando você redireciona o jogador para outro mundo virtual e posição do local do evento
OBS.:
É um código extremamente simples, mas funcional. Há muitas coisas para adaptar e melhorar.
Vou te dar um exemplo bem básico sobre TDM. Abaixo os passos utilizados e por fim o código.
1 - Criar um comandos do evento (criar, entrar, sair)
2 - No comando de entrar deve-se atribuir 3 coisas: balanceamento de equipe (no DM é só desconsiderar esta parte), armas e vida do jogador
4 - Ainda no comando você redireciona o jogador para outro mundo virtual e posição do local do evento
Código:
static __playerTeam[MAX_PLAYERS];
static __teamBalance;
static bool:__activeEvent;
CMD:iniciarevento(playerid, params[])
{
if(__activeEvent)
return SendClientMessage(playerid, -1, "Este evento já está ativo.");
__activeEvent = true;
return 1;
}
CMD:pararevento(playerid, params[])
{
if(!__activeEvent)
return SendClientMessage(playerid, -1, "O evento não está ativo.");
__activeEvent = false;
__teamBalance = 0;
LeavePlayersEvent();
return 1;
}
CMD:irevento(playerid, params[])
{
if(!__activeEvent)
return SendClientMessage(playerid, -1, "O evento não está ativo.");
if(__playerTeam[playerid] > 0)
return SendClientMessage(playerid, -1, "Você já está no evento.");
JoinPlayerEvent(playerid);
return 1;
}
CMD:sairevento(playerid, params[])
{
if(!__activeEvent)
return SendClientMessage(playerid, -1, "O evento não está ativo.");
if(__playerTeam[playerid] == 0)
return SendClientMessage(playerid, -1, "Você não está no evento.");
LeavePlayerEvent(playerid);
return 1;
}
stock JoinPlayerEvent(playerid)
{
if((__teamBalance % 2) == 0)
{
__playerTeam[playerid] = 1;
SendClientMessage(playerid, -1, "Você pertence ao time 1.");
}
else
{
__playerTeam[playerid] = 2;
SendClientMessage(playerid, -1, "Você pertence ao time 2.");
}
SetPlayerHealth(playerid, 100.0); // Altera a vida em 100%
GivePlayerWeapon(playerid, 24, 50); // Dá uma Desert Eagle
SetPlayerVirtualWorld(playerid, 50); // Muda o mundo virtual
SetPlayerPos(playerid, 1.0, 2.0, 3.0); // Muda a posição do jogador
__teamBalance ++;
}
stock LeavePlayerEvent(playerid)
{
SendClientMessage(playerid, -1, "O evento terminou.");
SetPlayerHealth(playerid, 100.0); // Altera a vida em 100%
ResetPlayerWeapons(playerid); // Remove as armas do jogador
SetPlayerVirtualWorld(playerid, 0); // Muda o mundo virtual
SetPlayerPos(playerid, 1.0, 2.0, 3.0); // Muda a posição do jogador
__playerTeam[playerid] = 0;
__teamBalance --;
}
stock LeavePlayersEvent()
{
for(new i = 0; i < MAX_PLAYERS; i ++)
{
if(!IsPlayerConnected(i))
continue;
SendClientMessage(i, -1, "O evento terminou.");
SetPlayerHealth(i, 100.0); // Altera a vida em 100%
ResetPlayerWeapons(i); // Remove as armas do jogador
SetPlayerVirtualWorld(i, 0); // Muda o mundo virtual
SetPlayerPos(i, 1.0, 2.0, 3.0); // Muda a posição do jogador
__playerTeam[i] = 0;
}
}
OBS.:
É um código extremamente simples, mas funcional. Há muitas coisas para adaptar e melhorar.
SA:MP Dev Tools
Faça mais, ganhe mais e poupe tempo!
Viper Anti-Cheat
Torne seu servidor mais seguro!
________________________________________
Soluções personalizadas para SA:MP
Discord: .eduardoac | Eduardo AC#3140
Faça mais, ganhe mais e poupe tempo!
Viper Anti-Cheat
Torne seu servidor mais seguro!
________________________________________
Soluções personalizadas para SA:MP
Discord: .eduardoac | Eduardo AC#3140