Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <a_locs>
- forward public ChangeStage();
- #define ALLOW_COMMANDS ( true )
- #define PICKUP_MODEL_ID ( 1550 )
- #define STAGE_SPAWNED ( 0 )
- #define STAGE_REVEAL_LOC ( 1 )
- #define STAGE_REVEAL_CLP ( 2 )
- #define STAGE_REVEAL_DIS ( 3 )
- #define STAGE_INVALID ( -1 )
- #define TIMER_UPDATE_MINS ( 1 )
- #define NEW_MONEYBAG_DELAY ( 5 )
- #define PRIZE_LOWER_LIMIT ( 22500 )
- #define PRIZE_UPPER_LIMIT ( 43000 )
- #define IsPlayerAllowed(%0) ( IsPlayerAdmin(%0) )
- #if ALLOW_COMMANDS == true
- #include <zcmd>
- #endif
- #include <moneybag_locations>
- static gMoneyBag = INVALID_OBJECT_ID,
- gCurrStage = STAGE_INVALID,
- Float: g_fCurrPos[3] = { 0.0, 0.0, 0.0 },
- gTimer = -1,
- gCurrPrize = 0;
- public OnFilterScriptInit()
- {
- ChangeStage();
- gTimer = SetTimer("ChangeStage", ( TIMER_UPDATE_MINS * 60 * 1000 ), 1);
- return 1;
- }
- public ChangeStage()
- {
- switch( gCurrStage )
- {
- case STAGE_INVALID:
- {
- new _rand = random(sizeof(g_MoneyBagSpawns)), _string[128];
- gMoneyBag = CreatePickup(PICKUP_MODEL_ID, 2, g_MoneyBagSpawns[_rand][0], g_MoneyBagSpawns[_rand][1], g_MoneyBagSpawns[_rand][2], 0);
- gCurrPrize = ( random( (PRIZE_UPPER_LIMIT - PRIZE_LOWER_LIMIT) ) + PRIZE_LOWER_LIMIT );
- for(new i = 0; i < 3; i++)
- {
- g_fCurrPos[i] = g_MoneyBagSpawns[_rand][i];
- }
- format(_string, sizeof(_string), "{4AE8E8}INFO: {FFFFFF}A moneybag (worth $%s) has been spawned!", AddCharComma(gCurrPrize));
- SendClientMessageToAll(-1, _string);
- gCurrStage = STAGE_SPAWNED ;
- }
- case STAGE_SPAWNED:
- {
- new _string[128], _loc[30];
- Get2DZone(g_fCurrPos[0], g_fCurrPos[1], _loc, sizeof(_loc));
- format(_string, sizeof(_string), "{4AE8E8}INFO: {FFFFFF}The money bag is in '%s'.", _loc);
- SendClientMessageToAll(-1, _string);
- gCurrStage = STAGE_REVEAL_LOC ;
- }
- case STAGE_REVEAL_LOC:
- {
- new cPlayer = GetClosestTo(g_fCurrPos[0], g_fCurrPos[1], g_fCurrPos[2]),
- _string[128];
- if( cPlayer != INVALID_PLAYER_ID )
- {
- new _name[ MAX_PLAYER_NAME ];
- GetPlayerName(cPlayer, _name, MAX_PLAYER_NAME);
- format(_string, sizeof(_string), "{4AE8E8}INFO: {4AE8E8}%s (%d){FFFFFF} is closest to the money bag!", _name, cPlayer);
- }
- else format(_string, sizeof(_string), "{4AE8E8}INFO: {FFFFFF}There is no one close to the money bag, yet.");
- SendClientMessageToAll(-1, _string);
- gCurrStage = STAGE_REVEAL_CLP;
- }
- case STAGE_REVEAL_CLP:
- {
- new clPlayer = GetClosestTo(g_fCurrPos[0], g_fCurrPos[1], g_fCurrPos[2]),
- Float: fDist,
- _string[128];
- if( clPlayer != INVALID_PLAYER_ID)
- {
- new _name[MAX_PLAYER_NAME];
- fDist = GetPlayerDistanceFromPoint(clPlayer, g_fCurrPos[0], g_fCurrPos[1], g_fCurrPos[2]);
- GetPlayerName(clPlayer, _name, MAX_PLAYER_NAME);
- format(_string, sizeof(_string), "{4AE8E8}INFO: {FFFFFF}The distance of the closest player - {4AE8E8}%s (%d) - {FFFFFF}from the money bag is %d metres.", _name, clPlayer, floatround(fDist));
- }
- else
- format(_string, sizeof(_string), "{4AE8E8}INFO: {FFFFFF}There is no one yet close the the money bag!");
- SendClientMessageToAll(-1, _string);
- gCurrStage = STAGE_REVEAL_DIS;
- }
- case STAGE_REVEAL_DIS:
- {
- SendClientMessageToAll(-1, "{4AE8E8}INFO: {FFFFFF}No one could find the money bag, and it has been reset!");
- DestroyPickup(gMoneyBag);
- gMoneyBag = -1;
- KillTimer(gTimer);
- SetTimer("ChangeStage", (NEW_MONEYBAG_DELAY * 60 * 1000), 1);
- gCurrStage = STAGE_INVALID;
- }
- }
- return 1;
- }
- GetClosestTo( Float: x, Float: y, Float: z )
- {
- new Float: _temp_closest = ((6000 * 1.41)), Float: _dist = 0.0,
- _temp_player = -1;
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- if(IsPlayerConnected(i))
- {
- _dist = GetPlayerDistanceFromPoint(i, x, y, z);
- if( _dist < _temp_closest )
- {
- _temp_closest = _dist;
- _temp_player = i ;
- }
- }
- }
- return ( ( _temp_player == -1 ) ? ( INVALID_PLAYER_ID ) : _temp_player );
- }
- AddCharComma(number)
- {
- new _temp[24], _counter = -1;
- valstr(_temp, number);
- for(new i = strlen(_temp) ;i > 0; i--)
- {
- _counter++;
- if(_counter == 3)
- {
- strins( _temp, ",", i );
- _counter = 0;
- }
- }
- return _temp;
- }
- public OnPlayerPickUpPickup(playerid, pickupid)
- {
- if(pickupid == gMoneyBag)
- {
- gCurrStage = STAGE_INVALID;
- DestroyPickup(gMoneyBag);
- gMoneyBag = INVALID_OBJECT_ID;
- new _name[MAX_PLAYER_NAME], _string[128] ;
- GetPlayerName(playerid, _name, MAX_PLAYER_NAME);
- format(_string, sizeof(_string), "{4AE8E8}INFO: {FFFFFF}%s (%d) has found the money bag, and won $%s!", _name, playerid, AddCharComma(gCurrPrize) );
- SendClientMessageToAll(-1, _string);
- GivePlayerMoney(playerid, gCurrPrize);
- SendClientMessageToAll(-1, "{4AE8E8}INFO: {FFFFFF}The money bag will be started in a few minutes!");
- KillTimer(gTimer);
- SetTimer("ChangeStage", (NEW_MONEYBAG_DELAY * 60 * 1000), 1);
- gCurrStage = STAGE_INVALID;
- }
- return 1;
- }
- #if ALLOW_COMMANDS == true
- COMMAND:startmoneybag(playerid)
- {
- if(IsPlayerAllowed(playerid))
- {
- gCurrStage = STAGE_INVALID;
- ChangeStage();
- gTimer = SetTimer("ChangeStage", ( TIMER_UPDATE_MINS * 60 * 1000 ), 1);
- return SendClientMessage(playerid, -1, "{4AE8E8}INFO: {FFFFFF}Started money bag successfully!");
- }
- return 0;
- }
- COMMAND:startmb(playerid)
- {
- return cmd_startmoneybag(playerid);
- }
- COMMAND:gotomoneybag(playerid)
- {
- if(IsPlayerAllowed(playerid))
- {
- new Float: x, Float: y, Float: angle;
- GetPlayerFacingAngle(playerid, angle);
- x = g_fCurrPos[0];
- y = g_fCurrPos[1];
- x -= ( 4 * floatcos( (angle), degrees ) );
- y -= ( 4 * floatsin( (angle), degrees ) );
- SetPlayerPos(playerid, x, y, g_fCurrPos[2]);
- return SendClientMessage(playerid, -1, "{4AE8E8}INFO: {FFFFFF}Teleported to the moneybag successfully!");
- }
- return 0;
- }
- COMMAND:gotomb(playerid)
- {
- return cmd_gotomoneybag(playerid);
- }
- COMMAND:resetmoneybag(playerid)
- {
- if(IsPlayerAllowed(playerid))
- {
- SendClientMessageToAll(-1, "{4AE8E8}INFO:{FFFFFF} The money bag has been reset.");
- DestroyPickup(gMoneyBag);
- gMoneyBag = -1;
- KillTimer(gTimer);
- SetTimer("ChangeStage", (NEW_MONEYBAG_DELAY * 60 * 1000), 1);
- gCurrStage = STAGE_INVALID;
- return SendClientMessage(playerid, -1, "{4AE8E8}INFO: {FFFFFF}You have reset the money bag!");
- }
- return 0;
- }
- COMMAND:resetmb(playerid)
- {
- return cmd_resetmoneybag(playerid);
- }
- COMMAND:stopmoneybag(playerid)
- {
- if(IsPlayerAllowed(playerid))
- {
- SendClientMessageToAll(-1, "{4AE8E8}INFO: {FFFFFF}The money bag has been stopped.");
- DestroyPickup(gMoneyBag);
- gMoneyBag = -1;
- KillTimer(gTimer);
- gCurrStage = STAGE_INVALID;
- return SendClientMessage(playerid, -1, "{4AE8E8}INFO: {FFFFFF}You have stopped the money bag!");
- }
- return 0;
- }
- COMMAND:stopmb(playerid)
- {
- return cmd_stopmoneybag(playerid);
- }
- #endif
Add Comment
Please, Sign In to add comment