01.08.2012, 08:45
♣ Sistema de Drogas ♣
Bom dia/tarde a todos os viciados samp. Bem, eu sempre joguei em servidores RP/G mas apenas em 2 servidores, ambos internacionais e um dos sistemas que mais gostei de ver lб era o de drogas, que й um pouco diferente dos brasileiros e portugueses.
Bem, irei entao postar um code de um sistema que usei desde uns 3 meses.
Faзo isto porque me foi pedido por um amigo.
♣ CODE ♣
Primeiro, vamos lб defenir tudinho
Vamos lб marcar os spots de drogas
Debaixo da public OnGameModeInit()
Pode de local trocando as coordenas e tambem pode trocar o tipo de pickup e objectos.
Vamos lб criar as forwads do tempo que a cannabis demora a crescer. (Precisamos de fazer isto porrque mais tarde no cmd /plantar iremos criar um timer.
Agora fazemos o mesmo, mas para a chegada da heroina ao local. (Exatamente igual apenas se troca tudo relacionado com cannabis para heroina
Uma vez com isto feito, iremos fazer o tempo de reset dos campos.
Comandos /plantar e /colher
Agora o comando /encomendar e /apanhar
♣ Observaзхes ♣
* O sistema deve ser incorporado no game mode, por isso, o salvamento pode ser feito а beira dos restantes itens do player
* Sei que o sistema pode ser um bocado noob, mas a minha intenзгo foi sу de ajudar aqueles que gostam deste tipo de sistemas
* Aberto a sugestхes e criticas.
* Crйditos a !Niiw e Hardware por me tirem tirado um dъvida а muito muito tempo atrбs
Bom dia/tarde a todos os viciados samp. Bem, eu sempre joguei em servidores RP/G mas apenas em 2 servidores, ambos internacionais e um dos sistemas que mais gostei de ver lб era o de drogas, que й um pouco diferente dos brasileiros e portugueses.
Bem, irei entao postar um code de um sistema que usei desde uns 3 meses.
Faзo isto porque me foi pedido por um amigo.
♣ CODE ♣
Primeiro, vamos lб defenir tudinho
pawn Code:
#define COLOR_GROVE 0x00FF00FF //um verdinho aqui
#define COLOR_RED 0xAA3333AA // um vermelhinho que serб para nos avisar das proibiзхes etc.
new Cannabisblip[MAX_PLAYERS]; // objecto de erva, irб facilitar a destruiзгo do objecto no /colher
new Cannabis[MAX_PLAYERS]; //
new FakeCannabis[MAX_PLAYERS]; // irб sernos dado uma vez que plantemos. Apenas com isto os jogadores podem apanhar, caso contrбrio nao consiguirгo. Ou seja, sу a pessoa que apanha irб poder apanhar a droga, a que ao meu ver baixa os niveis de DM uma vez que nao conseguem roubar as ervas uns dos outros
new Plantado; // irб servir para nos dizer se o campo de droga foi usado recentemente ou nгo
new Encomendado; // irб servir para nos dizer se o campo de droga foi usado recentemente ou nгo
new Heroinablip[MAX_PLAYERS]; // Praticamente igual ao de cima
new Heroina[MAX_PLAYERS]; // Praticamente igual ao de cima
new FakeHeroina[MAX_PLAYERS]; // Praticamente igual ao de cima
Debaixo da public OnGameModeInit()
pawn Code:
Create3DTextLabel("Para encomendar alguma heroina,\n Use /encomendar", COLOR_GROVE, 2460.1846,-2566.9104,13.6544,20,0,1); // serve para nos informar que estбmos pera um spot de droga e que podemos encomendar heroina nesse local
CreateDynamicPickup(1254, 1, 2460.1846,-2566.9104,13.6544,0); // isto criarб uma pickup para sinalizar o local como um spot de heroina.
CreateDynamicObject(3439, 2541.9606933594, -1587.4586181641, 20.970590591431, 0, 0, 0); // isto criarб um objecto que usei para sinalizar o local como um spot de cannabis.
Create3DTextLabel("Para plantar cannabis, use /plantar", COLOR_GROVE, 2541.960, -1587.458, 20.97059,20,0,1);// serve para nos informar que estбmos pera um spot de droga e que podemos plantar cannabis nesse local
Vamos lб criar as forwads do tempo que a cannabis demora a crescer. (Precisamos de fazer isto porrque mais tarde no cmd /plantar iremos criar um timer.
pawn Code:
forward CannabisGrow(playerid);
public CannabisGrow(playerid)
{
// Quando o tempo, aquele que irб colocar na timer, expirar, um objecto (algumas plantas) irгo aparecer ao redor do drug spot e o jogador que as plantou irб ser capaz de as colher.
FakeCannabis[playerid] = 1; // responsбvel pela utilizaзгo do cmd, sem isto o jogador poderia colher sempre, antes do tempo, e a timer apenas serviria para o objeto crescer.
SendClientMessage(playerid, COLOR_GROVE, "A sua planta de Cannabis jб pode ser colhida, use /colher para colhe-la."); //avisa o jogador que a sua planta jб estб pronta para ser colhida
weedblip[playerid] = CreateObject(3409, 2541.9606933594, -1587.4586181641, 20.970590591431-1, 0, 0, 0); // cria um objeto parecido com as ervas que vc teve que queimar nas missoes do single player para o Truth.
return 1;
}
pawn Code:
forward Chegadadaheroina(playerid);
public Chegadadaheroina(playerid)
{
FakeHeroina[playerid] = 1;
SendClientMessage(playerid, COLOR_GROVE, "O pacote de heroina jб chegou ao local, use /apanhar para o apanhar.");
heroinablip[playerid] = CreateObject(1279, 769.3109, -1086.5149, 24.0859-1, 0, 0, 0);
return 1;
}
pawn Code:
// basicamente irб liberar os campos depois de algum tempo (defenido por vc no comando /plantar) passar
forward resetcannabis();
public resetcannabis()
{
Plantado = 0;
return 1;
}
forward resetheroina();
public resetheroina()
{
Encomendado = 0;
return 1;
}
pawn Code:
if(strcmp("/plantar", cmd, true) == 0)
{
if (IsPlayerInRangeOfPoint(playerid, 5.0,2541.9606933594, -1587.4586181641, 20.970590591431)) // apenas as pessoas que estгo neste sitio poderгo digitar o cmd com que este funcione, caso contrбrio serгo avisadas que nao estao num devido campo
{
if(Plantado == 1) return SendClientMessage(playerid, COLOR_RED, "Parece que alguem usou este campo recentemente, espera mais um bocado."); // se o campo tiver sido usado recentemente, o jogador nгo poderб plantar nele, sу depois de este ser liberado/resetado.
{
SendClientMessage(playerid, COLOR_GROVE, "Plantou uma semente, espere um bocado por favor.");
Plantado = 1; // depois de ser usado toma o valor de 1 para nao poder ser usado e sу sera usado quando passar o tempo da timer que irб colocar daqui a mais um bocado
GivePlayerMoney(playerid, - 50); // fazemos isto para cobrar o custo da semente, poderб mudar caso queira.
SetTimerEx("CannabisGrow", 120000, 0, "i", playerid); // tempo que vocк poe para a planta crescer
SetTimerEx("resetcannabis",600000, 0, "i", playerid); // tempo que vocк coloca para o campo ser liberado
return 1;
}
}
return 1;
}
pawn Code:
if(strcmp("/colher", cmd, true) == 0)
{
if (IsPlayerInRangeOfPoint(playerid, 5.0,2541.9606933594, -1587.4586181641, 20.970590591431)) // a pessoa tem que estar no mesmo local onde plantou a erva
{
if(FakeCannabis[playerid] == 1) // Isto apenas й "ganho" pelo jogador que planta, por isso й que as pessoas que usam o campo sгo as unicas que podem plantar.
new gramas = random(19)+1; // isto farб com que o player nunca apanhe o mesmo nъmero de gramas numa colheita e que seja random
{
format(string, sizeof(string), "Vocк colheu %d gramas de cannabis.", gramas); //serve para avisar o jogador de quantas gramas ele colheu
SendClientMessage(playerid, COLOR_GROVE, string); // diz qual a cor da mensagem enviada em cima
FakeCannabis[playerid] = 0; // o valor volta para 0 para o jogador nao poder ficar continuando colhendo toda a hora
Cannabis[playerid] += gramas;
DestroyObject(cannabisblip[playerid]);
return 1;
}
}
return 1;
}
pawn Code:
if(strcmp("/encomendar", cmd, true) == 0)
{
if (IsPlayerInRangeOfPoint(playerid, 5.0,2460.1846,-2566.9104,13.6544)) // o Jogador precisa de estar neste local para encomendar
{
if(Encomendado == 1) return SendClientMessage(playerid, COLOR_RED, "Parece que alguem jб usou este campo recentemente, espere um bocado.");
{
Encomendado = 1; // o valor tende para 1 para o campo ficar sobre o efeito de usado, sу serб liberado quando a timer que irб colocar abaixo passar.
SendClientMessage(playerid, COLOR_GROVE, "Vocк encomendou alguma heroina."); // mensagem a dizer que jб foi encomendada
GivePlayerMoney(playerid, - 500); // dinheiro que й cobrado pela encomenda
SetTimerEx("chegadadaheroina", 120000, 0, "i", playerid); // tempo que a heroina demora a chegar ao logal
SetTimerEx("resetheroina", 600000, 0, "i", playerid); // tempo que o campo de heroina demora a ser liberado novamente
SetPlayerMapIcon( playerid, 1, 769.3109, -1086.5149, 24.0859, 23, 0, MAPICON_GLOBAL ); // quando digitar este cmd com sucesso, um icon irб aparecer no map com o local da entrega da heroina.
return 1;
}
}
return 1;
}
pawn Code:
if(strcmp("/apanhar", cmd, true) == 0)
{
if (IsPlayerInRangeOfPoint(playerid, 5.0,769.3109,-1086.5149,24.0859)) // o player precisa de estar no local onde plantou
{
if(FakeHeroin[playerid] == 1) // Isto apenas й "ganho" pelo jogador que encomenda, por isso й que as pessoas que usam o campo sгo as unicas que podem apanhar a encomenda.
{
SendClientMessage(playerid, COLOR_GROVE, "Apanhou 20 gramas de heroina."); // mensagem a dizer quanta heroina ele apanhou
FakeHeroina[playerid] = 0;// o valor volta para 0 para o jogador nao poder ficar continuando apanhando heroina toda a hora
Heroina[playerid] += 20; // serva para dar a heroina que o jogador apanhou
DestroyObject(heroinablip[playerid]); // destroi o objeto da heroina
RemovePlayerMapIcon( playerid, 1 );// remove o icon no mapa do jogador
return 1;
}
}
return 1;
}
* O sistema deve ser incorporado no game mode, por isso, o salvamento pode ser feito а beira dos restantes itens do player
* Sei que o sistema pode ser um bocado noob, mas a minha intenзгo foi sу de ajudar aqueles que gostam deste tipo de sistemas
* Aberto a sugestхes e criticas.
* Crйditos a !Niiw e Hardware por me tirem tirado um dъvida а muito muito tempo atrбs