Cara nгo й algo simples pra quem й novato.
Da uma lida nesse tutorial, tenta entender matrizes, funзхes e loops:
https://sampforum.blast.hk/showthread.php?tid=388940
https://sampforum.blast.hk/showthread.php?tid=341545
https://sampforum.blast.hk/showthread.php?tid=290735
Se vocк entender isso, vocк tб feito. Basta criar uma matriz para salvar todos os dados dos cofres das organizaзхes. Nesses dados, vocк salvarб o dinheiro, a qual organizaзгo pertence e etc. Tambйm salvarб o id do objeto cofre que foi criado, assim vocк consegue a partir de um loop verificar a qual cofre o jogador que estб tentando roubar estб prуximo. As funзхes vocк utilizarб para fazer toda a aзгo de criar cofres, roubar e etc.
Segue um exemplo:
PHP код:
#define MAX_GANGS 100//essa seria a definiзгo do mбximo de gangs do seu GM
enum E_GANG_SAFE_BOX
{
E_GANG_MONEY,//o dinheiro da gang
E_GANG_SAFE_BOX_ID//o objeto do cofre da gang
}
new gangSafeBox[MAX_GANS][E_GANG_SAFE_BOX],
playerGang[MAX_PLAYERS];//variбvel fictнcia para indicar qual o id da minha gang
public OnGameModeInit()
{
LoadGangsSafeBox();//essa seria uma funзгo para carregar os cofres das gangs
return 1;
}
public OnPlayerConnect(playerid)
{
playerGang[playerid] = 0;//seto a minha gang como id 0
return 1;
}
LoadGangsSafeBox()
{
for(new i; i < MAX_GANGS; i++)
{
gangSafeBox[i][E_GANG_MONEY] = 1000;
//seto o valor do dinheiro da gang que estб rodando no loop, no caso o нndice 'i'.
gangSafeBox[i][E_GANG_SAFE_BOX_ID] = CreateObject(2332, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
//crio e salvo o id do objeto cofre da gang que estб rodando no loop
//OBS: Й claro que isso й apenas um exemplo, vocк deveria criar uma matriz com todas as posiзхes dos cofres e a partir de um loop criar todos objetos com as informaзхes da posiзгo desse cofre que a matriz contйm
}
}
StealGangSafeBox(playerid)
{
new gangFound = -1, Float:pos[3], i;
//gangFound armazenarб o id da gang do cofre que o jogador estiver prуximo
//pos armazenarб a posiзгo do cofre de cada gang que rodar no loop
for(i = 0; i < MAX_GANGS; i++)
{
//aqui armazeno na variбvel pos a posiзгo X Y e Z do objeto cofre da gang que estб rodando no loop
//valido se o jogador estб prуximo a essa posiзгo, se estiver, armazeno em gangFound o нndice da gang que foi encontrada e paro o loop
GetObjectPos(gangSafeBox[i][E_GANG_SAFE_BOX_ID], pos[0], pos[1], pos[2]);
if(IsPlayerInRangeOfPoint(playerid, 2.0, pos[0], pos[1], pos[2]))
{
gangFound = i;
break;
}
}
if(gangFound == -1)//caso nada for encontrado, e no caso a gangFound estiver com o valor que foi setado a ela na sua declaraзгo, entгo manda mensagem e retorna o cуdigo aqui
{
SendClientMessage(playerid, -1, "Vocк nгo estб prуximo de nenhum cofre de uma gang!");
return;
}
//caso a gang do jogador seja a mesma que o loop encontrou mando a mensagem e aviso e retorno o cуdigo aqui
if(gangFound == playerGang[playerid])
{
SendClientMessage(playerid, -1, "Vocк nгo pode roubar o cofre da prуpria gang porra!");
return;
}
//Caso contrбrio dб o dinheiro ao jogador que contйm no cofre, dinheiro esse armazenado pela matriz gangSafeBox
//Observe que estou informando que o нndice da gang й gangFound, o qual foi setado quando o loop encontrou que eu estava prуximo de algum cofre
GivePlayerMoney(playerid, gangSafeBox[gangFound][E_GANG_MONEY]);
//reseto o valor que armazena a quantidade de dinheiro no cofre da gang
gangSafeBox[gangFound][E_GANG_MONEY] = 0;
SendClientMessage(playerid, -1, "Cofre roubado com sucesso!");
}
CMD:roubar(playerid)
{
StealGangSafeBox(playerid);//chamo a funзгo acima para o jogador
return 1;
}
Essa й uma base para se ter ideia do que seria necessбrio, se vocк nгo estudar e se puxar por si, creio que o tempo gasto foi em vгo.