#define MAX_CAIXAS 50
#define objcaixa 964
#define BalasInfinitas 999999
#define AllCelulas 450
/*
[FilterScript] Sistema de drop de caixas
> Ultimo projeto/sistema feito.
by: @Riichard
*/
// Includes
#include <a_samp>
#include <zcmd>
// Defines
#define MAX_CAIXAS 50
#define NaoDropar 1
#define DroparCaixa 2
#define objcaixa 964
#define dialogMyCaixas 234
#define dialogConcord 235
#define dialogPremio 236
#define BalasInfinitas 999999
#define AllCelulas 450 // Alta por causa das dialogs.
// Variaveis
new
idcaixa[MAX_PLAYERS],
n_caixa[MAX_CAIXAS],
player_caixas[MAX_PLAYERS],
bool:_Aguarde[MAX_PLAYERS],
bool:caixa_number[MAX_CAIXAS],
number_caixas,
Float:pos_X, Float:pos_Y, Float:pos_Z
;
// -----------------------------------------------------------------------
public OnFilterScriptInit() return print("[Sistema de drop de caixa] Carregado com sucesso."), number_caixas = 0;
public OnFilterScriptExit()
{
for(new ncaixas = 1; ncaixas<MAX_CAIXAS+1; ncaixas++)
{
DestroyPickup(n_caixa[ncaixas]);
caixa_number[ncaixas] = false;
}
number_caixas = 0;
print("[Sistema de drop de caixa] Descarregado com sucesso.");
return 1;
}
public OnPlayerConnect(playerid) return idcaixa[playerid] = 0, player_caixas[playerid] = 0, 0;
public OnPlayerDisconnect(playerid, reason) return _Aguarde[playerid] = false, 0;
public OnPlayerDeath(playerid, killerid, reason)
{
new checkcaixa = RandomEx(NaoDropar, DroparCaixa);
if(checkcaixa == DroparCaixa)
{
if(number_caixas == MAX_CAIXAS) return 1;
GetPlayerPos(playerid, pos_X, pos_Y, pos_Z);
number_caixas += 1;
n_caixa[number_caixas] = CreatePickup(objcaixa, 1, pos_X, pos_Y, pos_Z);
caixa_number[number_caixas] = true;
SendClientMessageToAll(0xA9A9A9FF, "Uma caixa {FF0000}Army{A9A9A9} foi derrubada.");
for(new playersx = 0; playersx<MAX_PLAYERS; playersx++)
if(IsPlayerConnected(playersx))
PlayerPlaySound(playersx, 1149, 0.0, 0.0, 0.0);
if(player_caixas[playerid] > 0) player_caixas[playerid] -= 1;
}
return 0;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
new mycel[110], myname[MAX_PLAYER_NAME];
GetPlayerName(playerid, myname, sizeof(myname));
for(new ncaixas = 1; ncaixas<MAX_CAIXAS+1; ncaixas++)
{
if(pickupid == n_caixa[ncaixas])
{
idcaixa[playerid] = ncaixas;
goto Final;
}
}
Final:
if(idcaixa[playerid] == 0) return 1;
DestroyPickup(n_caixa[idcaixa[playerid]]);
number_caixas -= 1;
caixa_number[idcaixa[playerid]] = false;
format(mycel, sizeof(mycel), "{FF0000}%s{A9A9A9} obteve uma caixa {FF0000}Army{A9A9A9}.", myname);
SendClientMessageToAll(0xA9A9A9FF, mycel);
idcaixa[playerid] = 0;
player_caixas[playerid] += 1;
PlayerPlaySound(playerid, 1150, 0.0, 0.0, 0.0);
return 0;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
new _StringMsg[AllCelulas], _StringMsg1[AllCelulas];
if(dialogid == dialogMyCaixas)
{
if(response)
{
if(_Aguarde[playerid] == true) return SendClientMessage(playerid, -1, "Vocк deve esperar o item da primeira caixa expirar.");
format(_StringMsg, sizeof(_StringMsg), "{DCDCDC}Vocк quer mesmo abrir a caixa {FF0000}Army(%d){DCDCDC}?", listitem+1);
ShowPlayerDialog(playerid, dialogConcord, DIALOG_STYLE_MSGBOX, "Caixa Army", _StringMsg, "Sim", "Nгo");
}
}
if(dialogid == dialogConcord)
{
if(response)
{
player_caixas[playerid] -= 1;
// ================================================================
new PremioID = RandomEx(1, 34); // Soco inglкs atй Sniper.
if(PremioID == 19 || PremioID == 20 || PremioID == 21) PremioID = 43; // Cвmera
// ================================================================
new MinutosID = RandomEx(10, 100); // Entre 10 e 99 minutos.
if(MinutosID == 100) MinutosID = 0; // 100 minutos = Permanente
// ================================================================
new nomepremio[30];
GetWeaponName(PremioID, nomepremio, sizeof(nomepremio));
// ================================================================
if(PremioID == 18) nomepremio = "Molotov Cocktail";
else if(PremioID == 43) nomepremio = "Cвmera";
// ================================================================
if(MinutosID == 0)
{
new _pNome[MAX_PLAYER_NAME];
GetPlayerName(playerid, _pNome, sizeof(_pNome));
strcat(_StringMsg, "\n{DCDCDC}- Vocк abriu uma caixa Army e obteve:\n");
format(_StringMsg1, sizeof(_StringMsg1), "\n\t {FFFFFF}%s\n", nomepremio);
strcat(_StringMsg, _StringMsg1);
strcat(_StringMsg, "\n\t {FF0000}PERMANENTE\n\n");
ShowPlayerDialog(playerid, dialogPremio, DIALOG_STYLE_MSGBOX, "Parabйns", _StringMsg, "Fechar", "");
format(_StringMsg, sizeof(_StringMsg), "{FFFFFF}%s{A9A9A9} abriu uma caixa {FFFFFF}Army{A9A9A9} e obteve o item {FF0000}%s{A9A9A9}.",_pNome, nomepremio);
SendClientMessageToAll(0xA9A9A9FF, _StringMsg);
}else{
format(_StringMsg, sizeof(_StringMsg), "\n{DCDCDC}- Vocк obteve %s por {FF0000}%d{DCDCDC} minutos.\n\n", nomepremio, MinutosID);
ShowPlayerDialog(playerid, dialogPremio, DIALOG_STYLE_MSGBOX, "Informaзгo", _StringMsg, "Fechar", "");
}
// ================================================================
GivePlayerWeapon(playerid, PremioID, BalasInfinitas);
PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
if(MinutosID > 0)
_Aguarde[playerid] = true, SetTimerEx("ResetItem", MinutosID*60000, false, "dd", playerid, PremioID);
}
}
return 1;
}
CMD:minhascaixas(playerid)
{
if(player_caixas[playerid] == 0)
return SendClientMessage(playerid, -1, "Vocк nгo possui nenhuma caixa.");
new _String1[AllCelulas], _String2[AllCelulas];
for(new tantacaixa = 1; tantacaixa<player_caixas[playerid]+1; tantacaixa++)
{
format(_String1, sizeof(_String1), "> Caixa {A9A9A9}Army{FFFFFF} - %d\n", tantacaixa);
strcat(_String2, _String1);
}
return ShowPlayerDialog(playerid, dialogMyCaixas, DIALOG_STYLE_LIST, "Minhas caixas", _String2, "Abrir", "Cancelar");
}
// - Comando usado para testes sozinho.
/*
CMD:hue(playerid)
{
if(number_caixas == MAX_CAIXAS) return 1;
GetPlayerPos(playerid, pos_X, pos_Y, pos_Z);
number_caixas += 1;
n_caixa[number_caixas] = CreatePickup(objcaixa, 1, pos_X, pos_Y, pos_Z-0.5);
caixa_number[number_caixas] = true;
SetPlayerPos(playerid, pos_X+2, pos_Y+1, pos_Z+1);
SendClientMessageToAll(0xA9A9A9FF, "Uma caixa {FF0000}Army{A9A9A9} foi derrubada.");
for(new playersx = 0; playersx<MAX_PLAYERS; playersx++)
if(IsPlayerConnected(playersx))
PlayerPlaySound(playersx, 1149, 0.0, 0.0, 0.0);
return 1;
}
*/
// ================================================================================
forward ResetItem(playerid, idreset);
public ResetItem(playerid, idreset)
{
_Aguarde[playerid] = false;
ResetWeaponPlayer(playerid, idreset);
SendClientMessage(playerid, 0xFF0000FF, "Seu tempo esgotou, seu item expirou.");
return 1;
}
// Thanks, nгosei.
forward ResetWeaponPlayer(playerid, weaponid);
public ResetWeaponPlayer(playerid, weaponid)
{
new plyWeapons[12] = 0;
new plyAmmo[12] = 0;
for(new slot = 0; slot != 12; slot++)
{
new wep, ammo;
GetPlayerWeaponData(playerid, slot, wep, ammo);
if(wep != weaponid && ammo != 0)
GetPlayerWeaponData(playerid, slot, plyWeapons[slot], plyAmmo[slot]);
}
ResetPlayerWeapons(playerid);
for(new slot = 0; slot != 12; slot++)
if(plyAmmo[slot] != 0)
GivePlayerWeapon(playerid, plyWeapons[slot], plyAmmo[slot]);
return true;
}
// Thanks, ******
stock RandomEx(minnum = cellmin, maxnum = cellmax)
return random(maxnum - minnum + 1) + minnum;
Nгo irei mais jogar SA:MP, mas, como "despedida minha", irei postar este ъltimo sistema . |
Originally Posted by @Riichard
Nгo irei mais jogar SA:MP, mas, como "despedida minha", irei postar este ъltimo sistema .
|
QUE LIXO MANO, NOSSA QUE LIXO DE SISTEMA, ME DECEPCIONOU, TEM QUE PARAR DE JOGAR MESMO, NГO PRESTA PRA NADA!
zuera mano, й isso aн ta ligado que й nui, quando se voltar vo ta aq de portas abertas pra tu, sistema foda, sу falto meus credito arrombado, flw vlw .... |
A ideia ficou bem legal, mбs й uma pena que um grande membro como vocк esteja saindo do forum... mas serб por pouco tempo pq isso aqui й que nem droga, tб ligado? XD
Caramba, vocк й engraзado mesmo hein! |