move redeem vip code into its own module
This commit is contained in:
parent
cdbf5ae2b2
commit
2f793c7a89
@ -89,27 +89,6 @@ CMD:updatepool( playerid, params[ ] )
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
CMD:updatedonortd( playerid, params[ ] )
|
|
||||||
{
|
|
||||||
new
|
|
||||||
targetid, Float: amount, reset;
|
|
||||||
|
|
||||||
if ( !IsPlayerAdmin( playerid ) ) return 0;
|
|
||||||
else if ( sscanf( params, "D(0)D(65535)F(0.0)", reset, targetid, amount ) ) return SendUsage( playerid, "/updatedonortd [RESET] [PLAYER_ID] [AMOUNT]" );
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Reset the top donor
|
|
||||||
if ( reset ) {
|
|
||||||
TextDrawSetString( g_TopDonorTD, "Nobody Donated :(" );
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update it incase
|
|
||||||
UpdateGlobalDonated( targetid, amount );
|
|
||||||
SendServerMessage( playerid, "Updating latest donor now (player id %d, amount %f)", targetid, amount );
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
CMD:destroygang( playerid, params[ ] )
|
CMD:destroygang( playerid, params[ ] )
|
||||||
{
|
{
|
||||||
new
|
new
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
|
|
||||||
/* ** Variables ** */
|
/* ** Variables ** */
|
||||||
new
|
new
|
||||||
g_redeemVipWait = 0,
|
|
||||||
g_TrolleyVehicles [ 5 ],
|
g_TrolleyVehicles [ 5 ],
|
||||||
engine, lights, doors, bonnet, boot, objective, alarm, panels, tires,
|
engine, lights, doors, bonnet, boot, objective, alarm, panels, tires,
|
||||||
g_RestoreRobberiesBribes = 0,
|
g_RestoreRobberiesBribes = 0,
|
||||||
@ -39,7 +38,6 @@ new
|
|||||||
g_iTime = 0,
|
g_iTime = 0,
|
||||||
g_VehicleLastAttacker [ MAX_VEHICLES ] = { INVALID_PLAYER_ID, ... },
|
g_VehicleLastAttacker [ MAX_VEHICLES ] = { INVALID_PLAYER_ID, ... },
|
||||||
g_VehicleLastAttacked [ MAX_VEHICLES ],
|
g_VehicleLastAttacked [ MAX_VEHICLES ],
|
||||||
g_TopDonorWall = INVALID_OBJECT_ID,
|
|
||||||
g_AlcatrazArea = -1
|
g_AlcatrazArea = -1
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -23,7 +23,6 @@ new
|
|||||||
Text: g_currentXPTD = Text: INVALID_TEXT_DRAW,
|
Text: g_currentXPTD = Text: INVALID_TEXT_DRAW,
|
||||||
Text: g_CurrentRankTD = Text: INVALID_TEXT_DRAW,
|
Text: g_CurrentRankTD = Text: INVALID_TEXT_DRAW,
|
||||||
Text: g_CurrentCoinsTD = Text: INVALID_TEXT_DRAW,
|
Text: g_CurrentCoinsTD = Text: INVALID_TEXT_DRAW,
|
||||||
Text: g_TopDonorTD = Text: INVALID_TEXT_DRAW,
|
|
||||||
Text: g_NotManyPlayersTD = Text: INVALID_TEXT_DRAW,
|
Text: g_NotManyPlayersTD = Text: INVALID_TEXT_DRAW,
|
||||||
|
|
||||||
// Player Textdraws
|
// Player Textdraws
|
||||||
@ -56,15 +55,6 @@ hook OnScriptInit( )
|
|||||||
TextDrawSetOutline(g_NotManyPlayersTD, 1);
|
TextDrawSetOutline(g_NotManyPlayersTD, 1);
|
||||||
TextDrawSetProportional(g_NotManyPlayersTD, 1);
|
TextDrawSetProportional(g_NotManyPlayersTD, 1);
|
||||||
|
|
||||||
g_TopDonorTD = TextDrawCreate(320.000000, 2.000000, "Top Donor Lorenc - $0.00, ~w~~h~~h~Latest Donor Lorenc - $0.00");
|
|
||||||
TextDrawAlignment(g_TopDonorTD, 2);
|
|
||||||
TextDrawBackgroundColor(g_TopDonorTD, 0);
|
|
||||||
TextDrawFont(g_TopDonorTD, 1);
|
|
||||||
TextDrawLetterSize(g_TopDonorTD, 0.139999, 0.799999);
|
|
||||||
TextDrawColor(g_TopDonorTD, -2347265);
|
|
||||||
TextDrawSetOutline(g_TopDonorTD, 1);
|
|
||||||
TextDrawSetProportional(g_TopDonorTD, 1);
|
|
||||||
|
|
||||||
g_currentXPTD = TextDrawCreate(529.000000, 405.000000, "Current XP");
|
g_currentXPTD = TextDrawCreate(529.000000, 405.000000, "Current XP");
|
||||||
TextDrawBackgroundColor(g_currentXPTD, 255);
|
TextDrawBackgroundColor(g_currentXPTD, 255);
|
||||||
TextDrawFont(g_currentXPTD, 3);
|
TextDrawFont(g_currentXPTD, 3);
|
||||||
|
@ -7,4 +7,5 @@
|
|||||||
|
|
||||||
/* ** Includes ** */
|
/* ** Includes ** */
|
||||||
#include "irresistible\cnr\vip\vip.pwn"
|
#include "irresistible\cnr\vip\vip.pwn"
|
||||||
|
#include "irresistible\cnr\vip\redeem_code.pwn"
|
||||||
#include "irresistible\cnr\vip\player_market.pwn"
|
#include "irresistible\cnr\vip\player_market.pwn"
|
||||||
|
315
gamemodes/irresistible/cnr/vip/redeem_code.pwn
Normal file
315
gamemodes/irresistible/cnr/vip/redeem_code.pwn
Normal file
@ -0,0 +1,315 @@
|
|||||||
|
/*
|
||||||
|
* Irresistible Gaming (c) 2018
|
||||||
|
* Developed by Lorenc
|
||||||
|
* Module: cnr\vip\redeem_code.pwn
|
||||||
|
* Purpose: code redemption system for newly donating donors
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* ** Includes ** */
|
||||||
|
#include < YSI\y_hooks >
|
||||||
|
|
||||||
|
/* ** Definitions ** */
|
||||||
|
#define szRedemptionSalt "7resta#ecacakumedeM=yespawr!d@et"
|
||||||
|
|
||||||
|
/* ** Variables ** */
|
||||||
|
enum E_DONATION_DATA
|
||||||
|
{
|
||||||
|
E_TRANSACTION_ID[ 17 ],
|
||||||
|
E_NAME[ 24 ],
|
||||||
|
E_AMOUNT[ 11 ],
|
||||||
|
E_PURPOSE[ 64 ],
|
||||||
|
E_DATE
|
||||||
|
};
|
||||||
|
|
||||||
|
static stock g_redeemVipWait = 0;
|
||||||
|
static stock g_TopDonorWall = INVALID_OBJECT_ID;
|
||||||
|
stock Text: g_TopDonorTD = Text: INVALID_TEXT_DRAW;
|
||||||
|
|
||||||
|
/* ** Forwards ** */
|
||||||
|
forward OnDonationRedemptionResponse( index, response_code, data[ ] );
|
||||||
|
|
||||||
|
/* ** Hooks ** */
|
||||||
|
hook OnScriptInit( )
|
||||||
|
{
|
||||||
|
// Wall of Donors
|
||||||
|
SetDynamicObjectMaterialText( CreateDynamicObject( 3074, -1574.3559, 885.1296, 28.4690, 0.0000, 0.0000, -0.0156 ), 0, "Thx Monthly Donors", 130, "Times New Roman", 64, 1, -65536, 0, 1 );
|
||||||
|
SetDynamicObjectMaterialText( ( g_TopDonorWall = CreateDynamicObject( 3074, -1574.3559, 885.1296, 14.0153, 0.0000, 0.0000, -0.0156 ) ), 0, "Nobody donated :(", 130, "Arial", 48, 0, -65536, 0, 1 );
|
||||||
|
|
||||||
|
// Latest Donor TD
|
||||||
|
g_TopDonorTD = TextDrawCreate(320.000000, 2.000000, "Top Donor Lorenc - $0.00, ~w~~h~~h~Latest Donor Lorenc - $0.00");
|
||||||
|
TextDrawAlignment(g_TopDonorTD, 2);
|
||||||
|
TextDrawBackgroundColor(g_TopDonorTD, 0);
|
||||||
|
TextDrawFont(g_TopDonorTD, 1);
|
||||||
|
TextDrawLetterSize(g_TopDonorTD, 0.139999, 0.799999);
|
||||||
|
TextDrawColor(g_TopDonorTD, -2347265);
|
||||||
|
TextDrawSetOutline(g_TopDonorTD, 1);
|
||||||
|
TextDrawSetProportional(g_TopDonorTD, 1);
|
||||||
|
|
||||||
|
/* ** Update Donation TD ** */
|
||||||
|
UpdateGlobalDonated( );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
hook OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
|
||||||
|
{
|
||||||
|
if ( dialogid == DIALOG_VIP && response )
|
||||||
|
{
|
||||||
|
if ( strlen( inputtext ) != 16 )
|
||||||
|
{
|
||||||
|
cmd_donated( playerid, "" );
|
||||||
|
return SendError( playerid, "The transaction ID you entered is invalid." );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( g_redeemVipWait > g_iTime )
|
||||||
|
{
|
||||||
|
cmd_donated( playerid, "" );
|
||||||
|
return SendServerMessage( playerid, "Our anti-exploit system requires you to wait another %d seconds before redeeming.", g_redeemVipWait - g_iTime );
|
||||||
|
}
|
||||||
|
|
||||||
|
HTTP( playerid, HTTP_GET, sprintf( "donate.sfcnr.com/validate_code/%s", inputtext ), "", "OnDonationRedemptionResponse" );
|
||||||
|
SendServerMessage( playerid, "We're now looking up this transaction. Please wait." );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else if ( dialogid == DIALOG_DONATED )
|
||||||
|
{
|
||||||
|
szLargeString[ 0 ] = '\0';
|
||||||
|
strcat( szLargeString, ""COL_WHITE"Thank you a lot for donating! :D In return for your dignity, you have received Irresistible Coins.\n\n"\
|
||||||
|
""COL_GREY" * What do I do with Irresistible Coins?"COL_WHITE" You can claim the V.I.P of your choice via "COL_GREY"/irresistiblecoins market"COL_WHITE".\n" );
|
||||||
|
strcat( szLargeString, ""COL_GREY" * How many do I have?"COL_WHITE" You can see how many Irresistible Coins you have via "COL_GREY"/irresistiblecoins"COL_WHITE".\n" \
|
||||||
|
""COL_GREY" * I'm unsure, help?"COL_WHITE" If you have any questions, please /ask otherwise enquire Lorenc via the forums!\n\nThank you once again for your contribution to our community! :P" );
|
||||||
|
return ShowPlayerDialog( playerid, DIALOG_FINISHED_DONATING, DIALOG_STYLE_MSGBOX, ""COL_GOLD"SF-CNR Donation", szLargeString, "Got it!", "" );
|
||||||
|
}
|
||||||
|
else if ( dialogid == DIALOG_FINISHED_DONATING )
|
||||||
|
{
|
||||||
|
return ShowPlayerDialog( playerid, DIALOG_LATEST_DONOR, DIALOG_STYLE_MSGBOX, ""COL_GOLD"SF-CNR Donation", ""COL_WHITE"Would you like to be shown as the latest donor?", "Yes", "No" );
|
||||||
|
}
|
||||||
|
else if ( dialogid == DIALOG_LATEST_DONOR )
|
||||||
|
{
|
||||||
|
if ( GetPVarType( playerid, "just_donated" ) != PLAYER_VARTYPE_FLOAT )
|
||||||
|
return SendError( playerid, "Seems to be an issue where we couldn't find how much you donated. Report to Lorenc." );
|
||||||
|
|
||||||
|
new
|
||||||
|
Float: fAmount = GetPVarFloat( playerid, "just_donated" );
|
||||||
|
|
||||||
|
DeletePVar( playerid, "just_donated" );
|
||||||
|
return UpdateGlobalDonated( playerid, fAmount, !response );
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ** Callbacks ** */
|
||||||
|
public OnDonationRedemptionResponse( index, response_code, data[ ] )
|
||||||
|
{
|
||||||
|
if ( response_code == 200 )
|
||||||
|
{
|
||||||
|
if ( strmatch( data, "{FFFFFF}Unable to identify transaction." ) ) ShowPlayerDialog( index, DIALOG_NULL, DIALOG_STYLE_MSGBOX, ""COL_GOLD"SF-CNR Donation", data, "Okay", "" );
|
||||||
|
else
|
||||||
|
{
|
||||||
|
static aDonation[ E_DONATION_DATA ];
|
||||||
|
sscanf( data, "p<|>e<s[17]s[24]s[11]s[64]d>", aDonation );
|
||||||
|
|
||||||
|
// printf("donation {id:%s, name:%s, amount:%s, purpose:%s, date:%d}", aDonation[ E_TRANSACTION_ID ],aDonation[ E_NAME ],aDonation[ E_AMOUNT ],aDonation[ E_PURPOSE ],aDonation[ E_DATE ]);
|
||||||
|
if ( strfind( aDonation[ E_PURPOSE ], "San Fierro: Cops And Robbers" ) == -1 ) {
|
||||||
|
ShowPlayerDialog( index, DIALOG_NULL, DIALOG_STYLE_MSGBOX, ""COL_GOLD"SF-CNR Donation", ""COL_WHITE"This donation is not specifically for this server thus you are unable to retrieve anything.", "Okay", "" );
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// SELECT * FROM `REDEEMED` WHERE `ID` = MD5('%s7resta#ecacakumedeM=yespawr!d@et') LIMIT 0,1
|
||||||
|
mysql_format( dbHandle, szNormalString, sizeof( szNormalString ), "SELECT * FROM `REDEEMED` WHERE `ID` = MD5('%e%s') LIMIT 0,1", aDonation[ E_TRANSACTION_ID ], szRedemptionSalt );
|
||||||
|
mysql_tquery( dbHandle, szNormalString, "OnCheckForRedeemedVIP", "is", index, data );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return ShowPlayerDialog( index, DIALOG_NULL, DIALOG_STYLE_MSGBOX, ""COL_GOLD"SF-CNR Donation", ""COL_WHITE"Unable to connect to the donation database. Please try again later.", "Okay", "" );
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ** SQL Threads ** */
|
||||||
|
thread OnCheckForRedeemedVIP( playerid, data[ ] )
|
||||||
|
{
|
||||||
|
static
|
||||||
|
aDonation[ E_DONATION_DATA ],
|
||||||
|
rows, fields
|
||||||
|
;
|
||||||
|
cache_get_data( rows, fields );
|
||||||
|
|
||||||
|
if ( rows )
|
||||||
|
{
|
||||||
|
static
|
||||||
|
szName[ MAX_PLAYER_NAME ];
|
||||||
|
|
||||||
|
cache_get_field_content( 0, "REDEEMER", szName );
|
||||||
|
ShowPlayerDialog( playerid, DIALOG_NULL, DIALOG_STYLE_MSGBOX, ""COL_GOLD"SF-CNR Donation", sprintf( ""COL_WHITE"Sorry this transaction ID has already been redeemed by %s.", szName ), "Okay", "" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_redeemVipWait = g_iTime + 10;
|
||||||
|
|
||||||
|
sscanf( data, "p<|>e<s[17]s[24]s[11]s[64]d>", aDonation );
|
||||||
|
|
||||||
|
mysql_format( dbHandle, szNormalString, sizeof( szNormalString ), "INSERT INTO `REDEEMED`(`ID`, `REDEEMER`) VALUES (MD5('%e%s'), '%e')", aDonation[ E_TRANSACTION_ID ], szRedemptionSalt, ReturnPlayerName( playerid ) );
|
||||||
|
mysql_single_query( szNormalString );
|
||||||
|
|
||||||
|
//printf( "%s\n%s | %s | %f | %s | %d", data, aDonation[ E_TRANSACTION_ID ], aDonation[ E_EMAIL ], floatstr( aDonation[ E_AMOUNT ] ), aDonation[ E_PURPOSE ], aDonation[ E_DATE ]);
|
||||||
|
|
||||||
|
new
|
||||||
|
Float: fAmount = floatstr( aDonation[ E_AMOUNT ] ),
|
||||||
|
Float: iCoins = fAmount * ( 1 + GetGVarFloat( "vip_bonus" ) ) * 100.0
|
||||||
|
;
|
||||||
|
|
||||||
|
if ( p_Uptime[ playerid ] > 604800 )
|
||||||
|
{
|
||||||
|
if ( fAmount < 1.99999 )
|
||||||
|
return SendError( playerid, "Thanks for donating! As this donation was under $2.00 USD, no coin has been issued." );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( fAmount < 4.99999 )
|
||||||
|
return SendError( playerid, "Thanks for donating! As this donation was under $5.00 USD, no coins have been issued." );
|
||||||
|
}
|
||||||
|
|
||||||
|
p_IrresistibleCoins[ playerid ] += iCoins;
|
||||||
|
SetPVarFloat( playerid, "just_donated", fAmount );
|
||||||
|
|
||||||
|
SendClientMessageFormatted( playerid, -1, ""COL_GOLD"[VIP PACKAGE]"COL_WHITE" You have received %0.0f Irresistible Coins! Thanks for donating %s!!! :D", iCoins, ReturnPlayerName( playerid ) );
|
||||||
|
|
||||||
|
format( szBigString, 256, ""COL_GREY"Transaction ID:\t"COL_WHITE"%s\n"COL_GREY"Donor Name:\t"COL_WHITE"%s\n"COL_GREY"Amount:\t"COL_WHITE"$%0.2f\n"COL_GREY"Total Coins:\t"COL_WHITE"%0.0f\n"COL_GREY"Time Ago:\t"COL_WHITE"%s",
|
||||||
|
aDonation[ E_TRANSACTION_ID ], aDonation[ E_NAME ], floatstr( aDonation[ E_AMOUNT ] ), iCoins, secondstotime( g_iTime - aDonation[ E_DATE ] ) );
|
||||||
|
|
||||||
|
ShowPlayerDialog( playerid, DIALOG_DONATED, DIALOG_STYLE_MSGBOX, ""COL_GOLD"SF-CNR Donation", szBigString, "Continue", "" );
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
thread OnGrabLatestDonor( hidden )
|
||||||
|
{
|
||||||
|
new
|
||||||
|
rows;
|
||||||
|
|
||||||
|
cache_get_data( rows, tmpVariable );
|
||||||
|
|
||||||
|
if ( rows )
|
||||||
|
{
|
||||||
|
static
|
||||||
|
szName[ MAX_PLAYER_NAME ],
|
||||||
|
Float: fAmount;
|
||||||
|
|
||||||
|
|
||||||
|
cache_get_field_content( 0, "NAME", szName );
|
||||||
|
fAmount = cache_get_field_content_float( 0, "LAST_AMOUNT", dbHandle );
|
||||||
|
|
||||||
|
// Play song!
|
||||||
|
GameTextForAll( sprintf( "~y~~h~~h~New Donor!~n~~w~%s", szName ), 6000, 3 );
|
||||||
|
|
||||||
|
// Play sound
|
||||||
|
foreach(new p : Player) if ( !IsPlayerUsingRadio( p ) ) {
|
||||||
|
PlayAudioStreamForPlayer( p, "http://files.sfcnr.com/game_sounds/donated.mp3" );
|
||||||
|
}
|
||||||
|
|
||||||
|
TextDrawSetString( g_TopDonorTD, sprintf( "Le Latest Donor %s - $%0.2f", szName, fAmount ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TextDrawSetString( g_TopDonorTD, "Nobody Donated :(" );
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
thread OnUpdateWallOfDonors( )
|
||||||
|
{
|
||||||
|
new
|
||||||
|
rows;
|
||||||
|
|
||||||
|
cache_get_data( rows, tmpVariable );
|
||||||
|
|
||||||
|
if( rows )
|
||||||
|
{
|
||||||
|
new
|
||||||
|
szString[ 600 ],
|
||||||
|
iLine = 1,
|
||||||
|
iPosition = 0;
|
||||||
|
|
||||||
|
for( new row = 0; row < rows; row++ )
|
||||||
|
{
|
||||||
|
new
|
||||||
|
szName[ MAX_PLAYER_NAME ];
|
||||||
|
|
||||||
|
cache_get_field_content( row, "NAME", szName );
|
||||||
|
|
||||||
|
new
|
||||||
|
iOldLength = strlen( szString ) + 4; // 4 is an offset
|
||||||
|
|
||||||
|
if( iOldLength - iPosition > 24 ) {
|
||||||
|
iPosition = iOldLength;
|
||||||
|
strcat( szString, "\n" ), iLine ++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The wall of donors
|
||||||
|
format( szString, sizeof( szString ), "%s%s, ", szString, szName );
|
||||||
|
}
|
||||||
|
|
||||||
|
// The wall of donors formatting
|
||||||
|
new
|
||||||
|
iLength = strlen( szString );
|
||||||
|
|
||||||
|
strdel( szString, iLength - 2, iLength );
|
||||||
|
|
||||||
|
// Develop a size and format
|
||||||
|
SetDynamicObjectMaterialText( g_TopDonorWall, 0, szString, 130, "Arial", floatround( 48.0 * floatpower( 0.925, iLine - 1 ), floatround_ceil ), 0, -65536, 0, 1 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SetDynamicObjectMaterialText( g_TopDonorWall, 0, "Nobody Donated :(", 130, "Arial", 48, 0, -65536, 0, 1 );
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ** Commands ** */
|
||||||
|
CMD:redeemvip( playerid, params[ ] ) return cmd_donated( playerid, params );
|
||||||
|
CMD:donated( playerid, params[ ] )
|
||||||
|
{
|
||||||
|
ShowPlayerDialog( playerid, DIALOG_VIP, DIALOG_STYLE_INPUT, ""COL_GOLD"SF-CNR Donation", ""COL_WHITE"Enter the transaction ID of your donation below.\n\n"COL_GREY"See http://forum.sfcnr.com/showthread.php?10125 for details.", "Redeem", "Close" );
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ** RCON Commands ** */
|
||||||
|
CMD:updatedonortd( playerid, params[ ] )
|
||||||
|
{
|
||||||
|
new
|
||||||
|
targetid, Float: amount, reset;
|
||||||
|
|
||||||
|
if ( ! IsPlayerAdmin( playerid ) ) return 0;
|
||||||
|
else if ( sscanf( params, "D(0)D(65535)F(0.0)", reset, targetid, amount ) ) return SendUsage( playerid, "/updatedonortd [RESET] [PLAYER_ID] [AMOUNT]" );
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Reset the top donor
|
||||||
|
if ( reset ) {
|
||||||
|
TextDrawSetString( g_TopDonorTD, "Nobody Donated :(" );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update it incase
|
||||||
|
UpdateGlobalDonated( targetid, amount );
|
||||||
|
SendServerMessage( playerid, "Updating latest donor now (player id %d, amount %f)", targetid, amount );
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ** Functions ** */
|
||||||
|
static stock UpdateGlobalDonated( playerid = INVALID_PLAYER_ID, Float: amount = 0.0, hidden = 0 )
|
||||||
|
{
|
||||||
|
if ( playerid != INVALID_PLAYER_ID && amount > 0.0 ) {
|
||||||
|
format( szBigString, sizeof( szBigString ), "INSERT INTO `TOP_DONOR` (`USER_ID`,`AMOUNT`,`LAST_AMOUNT`,`TIME`,`HIDE`) VALUES(%d,%f,%f,%d,%d) ON DUPLICATE KEY UPDATE `AMOUNT`=`AMOUNT`+%f,`LAST_AMOUNT`=%f,`TIME`=%d,`HIDE`=%d;", p_AccountID[ playerid ], amount, amount, g_iTime, hidden, amount, amount, g_iTime, hidden );
|
||||||
|
mysql_single_query( szBigString );
|
||||||
|
}
|
||||||
|
|
||||||
|
// top donor
|
||||||
|
if ( ! hidden ) {
|
||||||
|
mysql_tquery( dbHandle, "SELECT `NAME`,`LAST_AMOUNT` FROM `TOP_DONOR` INNER JOIN `USERS` ON `TOP_DONOR`.`USER_ID`=`USERS`.`ID` WHERE `LAST_AMOUNT` > 0 AND `HIDE` < 1 ORDER BY `TIME` DESC LIMIT 1", "OnGrabLatestDonor", "" );
|
||||||
|
}
|
||||||
|
|
||||||
|
// wall of donors
|
||||||
|
mysql_tquery( dbHandle, "SELECT `USERS`.`NAME` FROM `TOP_DONOR` INNER JOIN `USERS` ON `TOP_DONOR`.`USER_ID`=`USERS`.`ID` WHERE `HIDE` < 1 ORDER BY `AMOUNT` DESC, `TIME` DESC", "OnUpdateWallOfDonors", "" );
|
||||||
|
return 1;
|
||||||
|
}
|
@ -83,17 +83,6 @@ new bool: False = false;
|
|||||||
|
|
||||||
#define VW_SHAMAL 220
|
#define VW_SHAMAL 220
|
||||||
|
|
||||||
/* ** Donation System ** */
|
|
||||||
#define szRedemptionSalt "7resta#ecacakumedeM=yespawr!d@et"
|
|
||||||
enum E_DONATION_DATA
|
|
||||||
{
|
|
||||||
E_TRANSACTION_ID[ 17 ],
|
|
||||||
E_NAME[ 24 ],
|
|
||||||
E_AMOUNT[ 11 ],
|
|
||||||
E_PURPOSE[ 64 ],
|
|
||||||
E_DATE
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ** Discord ** */
|
/* ** Discord ** */
|
||||||
//#include <discord-connector>
|
//#include <discord-connector>
|
||||||
#define ENABLE_DISCORD false
|
#define ENABLE_DISCORD false
|
||||||
@ -232,7 +221,6 @@ public OnServerSecondTick( );
|
|||||||
public OnHelpHTTPResponse( index, response_code, data[ ] );
|
public OnHelpHTTPResponse( index, response_code, data[ ] );
|
||||||
public OnRulesHTTPResponse( index, response_code, data[ ] );
|
public OnRulesHTTPResponse( index, response_code, data[ ] );
|
||||||
public OnTwitterHTTPResponse( index, response_code, data[ ] );
|
public OnTwitterHTTPResponse( index, response_code, data[ ] );
|
||||||
public OnDonationRedemptionResponse( index, response_code, data[ ] );
|
|
||||||
public OnPlayerArrested( playerid, victimid, totalarrests, totalpeople );
|
public OnPlayerArrested( playerid, victimid, totalarrests, totalpeople );
|
||||||
public OnPlayerUnjailed( playerid, reasonid );
|
public OnPlayerUnjailed( playerid, reasonid );
|
||||||
public OnPlayerAccessEntrance( playerid, entranceid, worldid, interiorid );
|
public OnPlayerAccessEntrance( playerid, entranceid, worldid, interiorid );
|
||||||
@ -309,12 +297,6 @@ public OnGameModeInit()
|
|||||||
g_bankvaultData[ VAULT_BOAT ] [ E_OBJECT ] = CreateDynamicObject( 19435, -2371.416992, 1552.027709, 1.907187, 0.000000, 0.000000, 28.0000, g_bankvaultData[ VAULT_BOAT ] [ E_WORLD ] );
|
g_bankvaultData[ VAULT_BOAT ] [ E_OBJECT ] = CreateDynamicObject( 19435, -2371.416992, 1552.027709, 1.907187, 0.000000, 0.000000, 28.0000, g_bankvaultData[ VAULT_BOAT ] [ E_WORLD ] );
|
||||||
SetDynamicObjectMaterial( g_bankvaultData[ VAULT_BOAT ] [ E_OBJECT ], 0, 18268, "mtbtrackcs_t", "mp_carter_cage", -1 );
|
SetDynamicObjectMaterial( g_bankvaultData[ VAULT_BOAT ] [ E_OBJECT ], 0, 18268, "mtbtrackcs_t", "mp_carter_cage", -1 );
|
||||||
|
|
||||||
// Wall of Donors
|
|
||||||
SetDynamicObjectMaterialText( CreateDynamicObject( 3074, -1574.3559, 885.1296, 28.4690, 0.0000, 0.0000, -0.0156 ), 0, "Thx Monthly Donors", 130, "Times New Roman", 64, 1, -65536, 0, 1 );
|
|
||||||
|
|
||||||
g_TopDonorWall = CreateDynamicObject( 3074, -1574.3559, 885.1296, 14.0153, 0.0000, 0.0000, -0.0156 );
|
|
||||||
SetDynamicObjectMaterialText( g_TopDonorWall, 0, "Nobody donated :(", 130, "Arial", 48, 0, -65536, 0, 1 );
|
|
||||||
|
|
||||||
// Alcatraz
|
// Alcatraz
|
||||||
g_AlcatrazArea = CreateDynamicRectangle( -1921.6816, 1661.7448, -2172.4653, 1876.0469 );
|
g_AlcatrazArea = CreateDynamicRectangle( -1921.6816, 1661.7448, -2172.4653, 1876.0469 );
|
||||||
|
|
||||||
@ -325,9 +307,6 @@ public OnGameModeInit()
|
|||||||
/* ** Set everyone offline ** */
|
/* ** Set everyone offline ** */
|
||||||
mysql_single_query( "UPDATE `USERS` SET `ONLINE` = 0" );
|
mysql_single_query( "UPDATE `USERS` SET `ONLINE` = 0" );
|
||||||
|
|
||||||
/* ** Update Donation TD ** */
|
|
||||||
UpdateGlobalDonated( );
|
|
||||||
|
|
||||||
/* ** Auto Inactive Deletion ** */
|
/* ** Auto Inactive Deletion ** */
|
||||||
#if !defined DEBUG_MODE
|
#if !defined DEBUG_MODE
|
||||||
|
|
||||||
@ -393,88 +372,6 @@ public OnGameModeInit()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public OnDonationRedemptionResponse( index, response_code, data[ ] )
|
|
||||||
{
|
|
||||||
if ( response_code == 200 )
|
|
||||||
{
|
|
||||||
if ( strmatch( data, "{FFFFFF}Unable to identify transaction." ) ) ShowPlayerDialog( index, DIALOG_NULL, DIALOG_STYLE_MSGBOX, ""COL_GOLD"SF-CNR Donation", data, "Okay", "" );
|
|
||||||
else
|
|
||||||
{
|
|
||||||
static aDonation[ E_DONATION_DATA ];
|
|
||||||
sscanf( data, "p<|>e<s[17]s[24]s[11]s[64]d>", aDonation );
|
|
||||||
|
|
||||||
// printf("donation {id:%s, name:%s, amount:%s, purpose:%s, date:%d}", aDonation[ E_TRANSACTION_ID ],aDonation[ E_NAME ],aDonation[ E_AMOUNT ],aDonation[ E_PURPOSE ],aDonation[ E_DATE ]);
|
|
||||||
if ( strfind( aDonation[ E_PURPOSE ], "San Fierro: Cops And Robbers" ) == -1 )
|
|
||||||
{
|
|
||||||
ShowPlayerDialog( index, DIALOG_NULL, DIALOG_STYLE_MSGBOX, ""COL_GOLD"SF-CNR Donation", ""COL_WHITE"This donation is not specifically for this server thus you are unable to retrieve anything.", "Okay", "" );
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// SELECT * FROM `REDEEMED` WHERE `ID` = MD5('%s7resta#ecacakumedeM=yespawr!d@et') LIMIT 0,1
|
|
||||||
format( szNormalString, sizeof( szNormalString ), "SELECT * FROM `REDEEMED` WHERE `ID` = MD5('%s%s') LIMIT 0,1", mysql_escape( aDonation[ E_TRANSACTION_ID ] ), szRedemptionSalt );
|
|
||||||
mysql_function_query( dbHandle, szNormalString, true, "OnCheckForRedeemedVIP", "is", index, data );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else ShowPlayerDialog( index, DIALOG_NULL, DIALOG_STYLE_MSGBOX, ""COL_GOLD"SF-CNR Donation", ""COL_WHITE"Unable to connect to the donation database. Please try again later.", "Okay", "" );
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
thread OnCheckForRedeemedVIP( playerid, data[ ] )
|
|
||||||
{
|
|
||||||
static
|
|
||||||
aDonation[ E_DONATION_DATA ],
|
|
||||||
rows, fields
|
|
||||||
;
|
|
||||||
cache_get_data( rows, fields );
|
|
||||||
|
|
||||||
if ( rows )
|
|
||||||
{
|
|
||||||
static
|
|
||||||
szName[ MAX_PLAYER_NAME ];
|
|
||||||
|
|
||||||
cache_get_field_content( 0, "REDEEMER", szName );
|
|
||||||
ShowPlayerDialog( playerid, DIALOG_NULL, DIALOG_STYLE_MSGBOX, ""COL_GOLD"SF-CNR Donation", sprintf( ""COL_WHITE"Sorry this transaction ID has already been redeemed by %s.", szName ), "Okay", "" );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
g_redeemVipWait = g_iTime + 10;
|
|
||||||
|
|
||||||
sscanf( data, "p<|>e<s[17]s[24]s[11]s[64]d>", aDonation );
|
|
||||||
|
|
||||||
format( szNormalString, sizeof( szNormalString ), "INSERT INTO `REDEEMED`(`ID`, `REDEEMER`) VALUES (MD5('%s%s'), '%s')", mysql_escape( aDonation[ E_TRANSACTION_ID ] ), szRedemptionSalt, ReturnPlayerName( playerid ) );
|
|
||||||
mysql_single_query( szNormalString );
|
|
||||||
|
|
||||||
//printf( "%s\n%s | %s | %f | %s | %d", data, aDonation[ E_TRANSACTION_ID ], aDonation[ E_EMAIL ], floatstr( aDonation[ E_AMOUNT ] ), aDonation[ E_PURPOSE ], aDonation[ E_DATE ]);
|
|
||||||
|
|
||||||
new
|
|
||||||
Float: fAmount = floatstr( aDonation[ E_AMOUNT ] ),
|
|
||||||
Float: iCoins = fAmount * ( 1 + GetGVarFloat( "vip_bonus" ) ) * 100.0
|
|
||||||
;
|
|
||||||
|
|
||||||
if ( p_Uptime[ playerid ] > 604800 )
|
|
||||||
{
|
|
||||||
if ( fAmount < 1.99999 )
|
|
||||||
return SendError( playerid, "Thanks for donating! As this donation was under $2.00 USD, no coin has been issued." );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if ( fAmount < 4.99999 )
|
|
||||||
return SendError( playerid, "Thanks for donating! As this donation was under $5.00 USD, no coins have been issued." );
|
|
||||||
}
|
|
||||||
|
|
||||||
p_IrresistibleCoins[ playerid ] += iCoins;
|
|
||||||
SetPVarFloat( playerid, "just_donated", fAmount );
|
|
||||||
|
|
||||||
SendClientMessageFormatted( playerid, -1, ""COL_GOLD"[VIP PACKAGE]"COL_WHITE" You have received %0.0f Irresistible Coins! Thanks for donating %s!!! :D", iCoins, ReturnPlayerName( playerid ) );
|
|
||||||
|
|
||||||
format( szBigString, 256, ""COL_GREY"Transaction ID:\t"COL_WHITE"%s\n"COL_GREY"Donor Name:\t"COL_WHITE"%s\n"COL_GREY"Amount:\t"COL_WHITE"$%0.2f\n"COL_GREY"Total Coins:\t"COL_WHITE"%0.0f\n"COL_GREY"Time Ago:\t"COL_WHITE"%s",
|
|
||||||
aDonation[ E_TRANSACTION_ID ], aDonation[ E_NAME ], floatstr( aDonation[ E_AMOUNT ] ), iCoins, secondstotime( g_iTime - aDonation[ E_DATE ] ) );
|
|
||||||
|
|
||||||
ShowPlayerDialog( playerid, DIALOG_DONATED, DIALOG_STYLE_MSGBOX, ""COL_GOLD"SF-CNR Donation", szBigString, "Continue", "" );
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
thread onRemoveInactiveRows( type )
|
thread onRemoveInactiveRows( type )
|
||||||
{
|
{
|
||||||
new
|
new
|
||||||
@ -3086,13 +2983,6 @@ CMD:idletime( playerid, params[ ] )
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
CMD:redeemvip( playerid, params[ ] ) return cmd_donated( playerid, params );
|
|
||||||
CMD:donated( playerid, params[ ] )
|
|
||||||
{
|
|
||||||
ShowPlayerDialog( playerid, DIALOG_VIP, DIALOG_STYLE_INPUT, ""COL_GOLD"SF-CNR Donation", ""COL_WHITE"Enter the transaction ID of your donation below.\n\n"COL_GREY"See http://forum.sfcnr.com/showthread.php?10125 for details.", "Redeem", "Close" );
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
CMD:robitems( playerid, params[ ] )
|
CMD:robitems( playerid, params[ ] )
|
||||||
{
|
{
|
||||||
/* ** ANTI ROB SPAM ** */
|
/* ** ANTI ROB SPAM ** */
|
||||||
@ -8750,45 +8640,6 @@ public OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
|
|||||||
}
|
}
|
||||||
if ( ( dialogid == DIALOG_HELP_BACK ) && !response ) return cmd_help( playerid, "" );
|
if ( ( dialogid == DIALOG_HELP_BACK ) && !response ) return cmd_help( playerid, "" );
|
||||||
|
|
||||||
if ( ( dialogid == DIALOG_VIP ) && response )
|
|
||||||
{
|
|
||||||
if ( strlen( inputtext ) != 16 )
|
|
||||||
{
|
|
||||||
cmd_donated( playerid, "" );
|
|
||||||
return SendError( playerid, "The transaction ID you entered is invalid." );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( g_redeemVipWait > g_iTime )
|
|
||||||
{
|
|
||||||
cmd_donated( playerid, "" );
|
|
||||||
return SendServerMessage( playerid, "Our anti-exploit system requires you to wait another %d seconds before redeeming.", g_redeemVipWait - g_iTime );
|
|
||||||
}
|
|
||||||
|
|
||||||
HTTP( playerid, HTTP_GET, sprintf( "donate.sfcnr.com/validate_code/%s", inputtext ), "", "OnDonationRedemptionResponse" );
|
|
||||||
SendServerMessage( playerid, "We're now looking up this transaction. Please wait." );
|
|
||||||
}
|
|
||||||
if ( dialogid == DIALOG_DONATED )
|
|
||||||
{
|
|
||||||
szLargeString[ 0 ] = '\0';
|
|
||||||
strcat( szLargeString, ""COL_WHITE"Thank you a lot for donating! :D In return for your dignity, you have received Irresistible Coins.\n\n"\
|
|
||||||
""COL_GREY" * What do I do with Irresistible Coins?"COL_WHITE" You can claim the V.I.P of your choice via "COL_GREY"/irresistiblecoins market"COL_WHITE".\n" );
|
|
||||||
strcat( szLargeString, ""COL_GREY" * How many do I have?"COL_WHITE" You can see how many Irresistible Coins you have via "COL_GREY"/irresistiblecoins"COL_WHITE".\n" \
|
|
||||||
""COL_GREY" * I'm unsure, help?"COL_WHITE" If you have any questions, please /ask otherwise enquire Lorenc via the forums!\n\nThank you once again for your contribution to our community! :P" );
|
|
||||||
return ShowPlayerDialog( playerid, DIALOG_FINISHED_DONATING, DIALOG_STYLE_MSGBOX, ""COL_GOLD"SF-CNR Donation", szLargeString, "Got it!", "" );
|
|
||||||
}
|
|
||||||
if ( dialogid == DIALOG_FINISHED_DONATING ) {
|
|
||||||
return ShowPlayerDialog( playerid, DIALOG_LATEST_DONOR, DIALOG_STYLE_MSGBOX, ""COL_GOLD"SF-CNR Donation", ""COL_WHITE"Would you like to be shown as the latest donor?", "Yes", "No" );
|
|
||||||
}
|
|
||||||
if ( dialogid == DIALOG_LATEST_DONOR ) {
|
|
||||||
if ( GetPVarType( playerid, "just_donated" ) != PLAYER_VARTYPE_FLOAT )
|
|
||||||
return SendError( playerid, "Seems to be an issue where we couldn't find how much you donated. Report to Lorenc." );
|
|
||||||
|
|
||||||
new
|
|
||||||
Float: fAmount = GetPVarFloat( playerid, "just_donated" );
|
|
||||||
|
|
||||||
DeletePVar( playerid, "just_donated" );
|
|
||||||
return UpdateGlobalDonated( playerid, fAmount, !response );
|
|
||||||
}
|
|
||||||
if ( ( dialogid == DIALOG_UNBAN_CLASS ) && response )
|
if ( ( dialogid == DIALOG_UNBAN_CLASS ) && response )
|
||||||
{
|
{
|
||||||
cmd_unbanme( playerid, "" );
|
cmd_unbanme( playerid, "" );
|
||||||
@ -11753,106 +11604,6 @@ stock GivePlayerLeoWeapons( playerid ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stock UpdateGlobalDonated( playerid = INVALID_PLAYER_ID, Float: amount = 0.0, hidden = 0 )
|
|
||||||
{
|
|
||||||
if ( playerid != INVALID_PLAYER_ID && amount > 0.0 ) {
|
|
||||||
format( szBigString, sizeof( szBigString ), "INSERT INTO `TOP_DONOR` (`USER_ID`,`AMOUNT`,`LAST_AMOUNT`,`TIME`,`HIDE`) VALUES(%d,%f,%f,%d,%d) ON DUPLICATE KEY UPDATE `AMOUNT`=`AMOUNT`+%f,`LAST_AMOUNT`=%f,`TIME`=%d,`HIDE`=%d;", p_AccountID[ playerid ], amount, amount, g_iTime, hidden, amount, amount, g_iTime, hidden );
|
|
||||||
mysql_single_query( szBigString );
|
|
||||||
}
|
|
||||||
|
|
||||||
// top donor
|
|
||||||
if ( ! hidden ) {
|
|
||||||
mysql_function_query( dbHandle, "SELECT `NAME`,`LAST_AMOUNT` FROM `TOP_DONOR` INNER JOIN `USERS` ON `TOP_DONOR`.`USER_ID`=`USERS`.`ID` WHERE `LAST_AMOUNT` > 0 AND `HIDE` < 1 ORDER BY `TIME` DESC LIMIT 1", true, "OnGrabLatestDonor", "" );
|
|
||||||
}
|
|
||||||
|
|
||||||
// wall of donors
|
|
||||||
mysql_function_query( dbHandle, "SELECT `USERS`.`NAME` FROM `TOP_DONOR` INNER JOIN `USERS` ON `TOP_DONOR`.`USER_ID`=`USERS`.`ID` WHERE `HIDE` < 1 ORDER BY `AMOUNT` DESC, `TIME` DESC", true, "OnUpdateWallOfDonors", "" );
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
thread OnGrabLatestDonor( hidden )
|
|
||||||
{
|
|
||||||
new
|
|
||||||
rows;
|
|
||||||
|
|
||||||
cache_get_data( rows, tmpVariable );
|
|
||||||
|
|
||||||
if ( rows )
|
|
||||||
{
|
|
||||||
static
|
|
||||||
szName[ MAX_PLAYER_NAME ],
|
|
||||||
Float: fAmount;
|
|
||||||
|
|
||||||
|
|
||||||
cache_get_field_content( 0, "NAME", szName );
|
|
||||||
fAmount = cache_get_field_content_float( 0, "LAST_AMOUNT", dbHandle );
|
|
||||||
|
|
||||||
// Play song!
|
|
||||||
GameTextForAll( sprintf( "~y~~h~~h~New Donor!~n~~w~%s", szName ), 6000, 3 );
|
|
||||||
|
|
||||||
// Play sound
|
|
||||||
foreach(new p : Player) if ( !IsPlayerUsingRadio( p ) ) {
|
|
||||||
PlayAudioStreamForPlayer( p, "http://files.sfcnr.com/game_sounds/donated.mp3" );
|
|
||||||
}
|
|
||||||
|
|
||||||
TextDrawSetString( g_TopDonorTD, sprintf( "Le Latest Donor %s - $%0.2f", szName, fAmount ) );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TextDrawSetString( g_TopDonorTD, "Nobody Donated :(" );
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
thread OnUpdateWallOfDonors( )
|
|
||||||
{
|
|
||||||
new
|
|
||||||
rows;
|
|
||||||
|
|
||||||
cache_get_data( rows, tmpVariable );
|
|
||||||
|
|
||||||
if( rows )
|
|
||||||
{
|
|
||||||
new
|
|
||||||
szString[ 600 ],
|
|
||||||
iLine = 1,
|
|
||||||
iPosition = 0;
|
|
||||||
|
|
||||||
for( new row = 0; row < rows; row++ )
|
|
||||||
{
|
|
||||||
new
|
|
||||||
szName[ MAX_PLAYER_NAME ];
|
|
||||||
|
|
||||||
cache_get_field_content( row, "NAME", szName );
|
|
||||||
|
|
||||||
new
|
|
||||||
iOldLength = strlen( szString ) + 4; // 4 is an offset
|
|
||||||
|
|
||||||
if( iOldLength - iPosition > 24 ) {
|
|
||||||
iPosition = iOldLength;
|
|
||||||
strcat( szString, "\n" ), iLine ++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// The wall of donors
|
|
||||||
format( szString, sizeof( szString ), "%s%s, ", szString, szName );
|
|
||||||
}
|
|
||||||
|
|
||||||
// The wall of donors formatting
|
|
||||||
new
|
|
||||||
iLength = strlen( szString );
|
|
||||||
|
|
||||||
strdel( szString, iLength - 2, iLength );
|
|
||||||
|
|
||||||
// Develop a size and format
|
|
||||||
SetDynamicObjectMaterialText( g_TopDonorWall, 0, szString, 130, "Arial", floatround( 48.0 * floatpower( 0.925, iLine - 1 ), floatround_ceil ), 0, -65536, 0, 1 );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
SetDynamicObjectMaterialText( g_TopDonorWall, 0, "Nobody Donated :(", 130, "Arial", 48, 0, -65536, 0, 1 );
|
|
||||||
}
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
stock IsSafeGameText(string[])
|
stock IsSafeGameText(string[])
|
||||||
{
|
{
|
||||||
new count;
|
new count;
|
||||||
|
Loading…
Reference in New Issue
Block a user