add perks based off total level and make it expensive ...
dm experience now varies between the weapon
This commit is contained in:
parent
e94b7d8772
commit
c4e50c8bfc
@ -30,10 +30,10 @@
|
||||
#define DIALOG_VEHICLE_SPAWN 1018
|
||||
#define DIALOG_ARENAS 1019
|
||||
#define DIALOG_BOUGHT_VEH 1020
|
||||
//#define DIALOG_PERKS 1021
|
||||
//#define DIALOG_PERKS_P 1022
|
||||
#define DIALOG_VIP 1023
|
||||
//#define DIALOG_PERKS_V 1024
|
||||
#define DIALOG_PERKS 1021
|
||||
#define DIALOG_PERKS_P 1022
|
||||
#define DIALOG_PERKS_V 1023
|
||||
#define DIALOG_VIP 1024
|
||||
#define DIALOG_DONATED 1025
|
||||
#define DIALOG_VEHICLE_LOCATE 1026
|
||||
#define DIALOG_GANG_COLOR 1027
|
||||
|
@ -258,12 +258,12 @@ function Experience_HideIncrementTD( playerid )
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*stock GetPlayerTotalLevel( playerid, &level = 0 ) {
|
||||
stock GetPlayerTotalLevel( playerid, &level = 0 ) {
|
||||
for ( new l = 0; l < sizeof ( g_levelData ); l ++ ) {
|
||||
level += floatround( GetPlayerLevel( playerid, E_LEVELS: l ), floatround_floor );
|
||||
}
|
||||
return level;
|
||||
}*/
|
||||
}
|
||||
|
||||
/* ** Migrations ** */
|
||||
/*
|
||||
|
@ -28,6 +28,7 @@
|
||||
#include "irresistible\cnr\features\gps.pwn"
|
||||
#include "irresistible\cnr\features\animations.pwn"
|
||||
#include "irresistible\cnr\features\spikestrips.pwn"
|
||||
#include "irresistible\cnr\features\perks.pwn"
|
||||
// #include "irresistible\cnr\features\pilot.pwn"
|
||||
// #include "irresistible\cnr\features\fishing.pwn"
|
||||
// #include "irresistible\cnr\features\vote.pwn"
|
||||
|
151
gamemodes/irresistible/cnr/features/perks.pwn
Normal file
151
gamemodes/irresistible/cnr/features/perks.pwn
Normal file
@ -0,0 +1,151 @@
|
||||
/*
|
||||
* Irresistible Gaming (c) 2018
|
||||
* Developed by Lorenc Pekaj
|
||||
* Module: cnr\features\perks.pwn
|
||||
* Purpose: perks system
|
||||
*/
|
||||
|
||||
/* ** Includes ** */
|
||||
#include < YSI\y_hooks >
|
||||
|
||||
/* ** Hooks ** */
|
||||
hook OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
|
||||
{
|
||||
if ( dialogid == DIALOG_PERKS && response )
|
||||
{
|
||||
switch( listitem )
|
||||
{
|
||||
case 0: ShowPlayerDialog( playerid, DIALOG_PERKS_P, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Game Perks", ""COL_WHITE"Item Name\t"COL_WHITE"Total Level Req.\t"COL_WHITE"Cost ($)\nUnlimited Ammunition\t"COL_GOLD"50\t"COL_GREEN"$9,900", "Select", "Back" );
|
||||
case 1: ShowPlayerDialog( playerid, DIALOG_PERKS_V, DIALOG_STYLE_TABLIST_HEADERS, "{FFFFFF}Game Perks", ""COL_WHITE"Item Name\t"COL_WHITE"Total Level Req.\t"COL_WHITE"Cost ($)\nFix & Flip vehicle\t"COL_GOLD"75\t"COL_GREEN"$9,900\nRepair Vehicle\t"COL_GOLD"75\t"COL_GREEN"$7,500\nAdd NOS\t"COL_GOLD"50\t"COL_GREEN"$3,000\nFlip vehicle\t"COL_GOLD"40\t"COL_GREEN"$2,500", "Select", "Back" );
|
||||
}
|
||||
}
|
||||
else if ( dialogid == DIALOG_PERKS_P )
|
||||
{
|
||||
if ( !response )
|
||||
return ShowPlayerDialog( playerid, DIALOG_PERKS, DIALOG_STYLE_LIST, "{FFFFFF}Game Perks", "Player Perks\nVehicle Perks", "Select", "Cancel" );
|
||||
|
||||
new
|
||||
total_level = GetPlayerTotalLevel( playerid );
|
||||
|
||||
switch( listitem )
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
if ( total_level < 50 ) {
|
||||
return SendError( playerid, "Your total level must be at least 50 to use this (/level)." );
|
||||
}
|
||||
|
||||
if ( GetPlayerCash( playerid ) < 9900 ) {
|
||||
return SendError( playerid, "You do not have enough money for this item ($9,900)" );
|
||||
}
|
||||
|
||||
for ( new i = 0; i < MAX_WEAPONS; i++ )
|
||||
{
|
||||
if ( IsWeaponInAnySlot( playerid, i ) && i != 0 && !( 16 <= i <= 18 ) && i != 35 && i != 47 && i != WEAPON_BOMB )
|
||||
{
|
||||
GivePlayerWeapon( playerid, i, 15000 );
|
||||
}
|
||||
}
|
||||
|
||||
GivePlayerCash( playerid, -9900 );
|
||||
SendServerMessage( playerid, "You have bought unlimited ammunition for $9,900." );
|
||||
SetPlayerArmedWeapon( playerid, 0 );
|
||||
Beep( playerid );
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ( dialogid == DIALOG_PERKS_V )
|
||||
{
|
||||
if ( !response )
|
||||
return ShowPlayerDialog( playerid, DIALOG_PERKS, DIALOG_STYLE_LIST, "{FFFFFF}Game Perks", "Player Perks\nVehicle Perks", "Select", "Cancel" );
|
||||
|
||||
if ( !IsPlayerInAnyVehicle( playerid ) || GetPlayerState( playerid ) != PLAYER_STATE_DRIVER )
|
||||
return SendError( playerid, "You are not in any vehicle as a driver." );
|
||||
|
||||
new
|
||||
total_level = GetPlayerTotalLevel( playerid );
|
||||
|
||||
|
||||
switch( listitem )
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
if ( total_level < 75 ) {
|
||||
return SendError( playerid, "Your total level must be at least 75 to use this (/level)." );
|
||||
}
|
||||
|
||||
if ( GetPlayerCash( playerid ) < 9900 ) {
|
||||
return SendError( playerid, "You do not have enough money for this item ($9,900)" );
|
||||
}
|
||||
|
||||
new Float: vZ, vehicleid = GetPlayerVehicleID( playerid );
|
||||
GetVehicleZAngle( vehicleid, vZ ), SetVehicleZAngle( vehicleid, vZ );
|
||||
p_DamageSpamCount{ playerid } = 0;
|
||||
RepairVehicle( vehicleid );
|
||||
GivePlayerCash( playerid, -9900 );
|
||||
SendServerMessage( playerid, "You have fixed and flipped your vehicle for $9,900." );
|
||||
PlayerPlaySound( playerid, 1133, 0.0, 0.0, 5.0 );
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
if ( total_level < 75 ) {
|
||||
return SendError( playerid, "Your total level must be at least 75 to use this (/level)." );
|
||||
}
|
||||
|
||||
if ( GetPlayerCash( playerid ) < 7500 ) {
|
||||
return SendError( playerid, "You do not have enough money for this item ($7,500)" );
|
||||
}
|
||||
|
||||
new vehicleid = GetPlayerVehicleID( playerid );
|
||||
PlayerPlaySound( playerid, 1133, 0.0, 0.0, 5.0 );
|
||||
p_DamageSpamCount{ playerid } = 0;
|
||||
RepairVehicle( vehicleid );
|
||||
GivePlayerCash( playerid, -7500 );
|
||||
SendServerMessage( playerid, "You have repaired your car for $7,500." );
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
if ( total_level < 50 ) {
|
||||
return SendError( playerid, "Your total level must be at least 50 to use this (/level)." );
|
||||
}
|
||||
|
||||
if ( GetPlayerCash( playerid ) < 3000 ) {
|
||||
return SendError( playerid, "You do not have enough money for this item ($3,000)" );
|
||||
}
|
||||
|
||||
AddVehicleComponent( GetPlayerVehicleID( playerid ), 1010 );
|
||||
GivePlayerCash( playerid, -3000 );
|
||||
SendServerMessage( playerid, "You have installed nitro on your car for $3,000." );
|
||||
PlayerPlaySound( playerid, 1133, 0.0, 0.0, 5.0 );
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
if ( total_level < 40 ) {
|
||||
return SendError( playerid, "Your total level must be at least 40 to use this (/level)." );
|
||||
}
|
||||
|
||||
if ( GetPlayerCash( playerid ) < 2500 ) {
|
||||
return SendError( playerid, "You do not have enough money for this item ($2,500)" );
|
||||
}
|
||||
|
||||
new Float: vZ, vehicleid = GetPlayerVehicleID( playerid );
|
||||
GetVehicleZAngle( vehicleid, vZ ), SetVehicleZAngle( vehicleid, vZ );
|
||||
GivePlayerCash( playerid, -2500 );
|
||||
SendServerMessage( playerid, "You have flipped your vehicle for $2,500." );
|
||||
PlayerPlaySound( playerid, 1133, 0.0, 0.0, 5.0 );
|
||||
}
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* ** Commands ** */
|
||||
CMD:perks( playerid, params[ ] )
|
||||
{
|
||||
if ( IsPlayerInEvent( playerid ) ) {
|
||||
return SendError( playerid, "You cannot use this command since you're in an event." );
|
||||
}
|
||||
return ShowPlayerDialog( playerid, DIALOG_PERKS, DIALOG_STYLE_LIST, "{FFFFFF}Game Perks", "Player Perks\nVehicle Perks", "Select", "Cancel" );
|
||||
}
|
||||
|
||||
/* ** Functions ** */
|
@ -16,7 +16,7 @@
|
||||
#pragma option -d3
|
||||
#pragma dynamic 7200000
|
||||
|
||||
//#define DEBUG_MODE
|
||||
#define DEBUG_MODE
|
||||
|
||||
#if defined DEBUG_MODE
|
||||
#pragma option -d3
|
||||
@ -4801,10 +4801,21 @@ public OnPlayerDeath( playerid, killerid, reason )
|
||||
}
|
||||
}
|
||||
|
||||
if ( p_Class[ killerid ] != CLASS_POLICE ) {
|
||||
if ( p_Class[ killerid ] != CLASS_POLICE )
|
||||
{
|
||||
GivePlayerWantedLevel( killerid, 12 );
|
||||
GivePlayerScore( killerid, 1, .multiplier = 0.2 );
|
||||
GivePlayerExperience( killerid, E_DEATHMATCH );
|
||||
|
||||
new
|
||||
Float: default_experience = 1.0;
|
||||
|
||||
switch ( reason ) {
|
||||
case 23: default_experience = 1.5;
|
||||
case 25: default_experience = 1.25;
|
||||
case 26: default_experience = 0.8;
|
||||
case 34: default_experience = 1.75;
|
||||
}
|
||||
GivePlayerExperience( killerid, E_DEATHMATCH, default_experience );
|
||||
}
|
||||
}
|
||||
else if ( IsPlayerNPC( killerid ) ) SendDeathMessage( killerid, playerid, reason );
|
||||
@ -7421,7 +7432,7 @@ CMD:mech( playerid, params[ ] )
|
||||
p_DamageSpamCount{ playerid } = 0;
|
||||
RepairVehicle( iVehicle );
|
||||
SendServerMessage( playerid, "You have repaired this vehicle." );
|
||||
p_AntiMechFixSpam[ playerid ] = g_iTime + 5;
|
||||
p_AntiMechFixSpam[ playerid ] = g_iTime + 10;
|
||||
GivePlayerCash( playerid, -cost );
|
||||
}
|
||||
else if ( strmatch( params, "nos" ) )
|
||||
@ -7482,7 +7493,7 @@ CMD:mech( playerid, params[ ] )
|
||||
RepairVehicle( iVehicle );
|
||||
GetVehicleZAngle( iVehicle, vZ ), SetVehicleZAngle( iVehicle, vZ );
|
||||
SendServerMessage( playerid, "You have flipped and fixed this vehicle." );
|
||||
p_AntiMechFixSpam[ playerid ] = g_iTime + 5;
|
||||
p_AntiMechFixSpam[ playerid ] = g_iTime + 10;
|
||||
p_AntiMechFlipSpam[ playerid ] = g_iTime + 5;
|
||||
GivePlayerCash( playerid, -cost );
|
||||
}
|
||||
@ -7857,12 +7868,6 @@ thread OnPlayerWeeklyTime( playerid, irc, player[ ] )
|
||||
return 1;
|
||||
}
|
||||
|
||||
CMD:xpmarket( playerid, params[ ] ) return SendError( playerid, "You can no longer sell your experience anymore." );
|
||||
/*{
|
||||
ShowPlayerDialog( playerid, DIALOG_XPMARKET, DIALOG_STYLE_INPUT, "{FFFFFF}XP Market", sprintf( ""COL_WHITE"You have %s legacy XP. Current exchange rate is $10 per XP.\n\nHow many would you like to exchange?", number_format( p_XP[ playerid ] ) ), "Select", "Cancel");
|
||||
return 1;
|
||||
}*/
|
||||
|
||||
CMD:emp( playerid, params[ ] )
|
||||
{
|
||||
new
|
||||
@ -8178,13 +8183,6 @@ CMD:discordpm( playerid, params[ ] )
|
||||
}
|
||||
#endif
|
||||
|
||||
CMD:perks( playerid, params[ ] )
|
||||
{
|
||||
//if ( IsPlayerInEvent( playerid ) ) return SendError( playerid, "You cannot use this command since you're in an event." );
|
||||
//ShowPlayerDialog( playerid, DIALOG_PERKS, DIALOG_STYLE_LIST, "{FFFFFF}Game Perks", "Player Perks\nVehicle Perks", "Select", "Cancel" );
|
||||
return SendServerMessage( playerid, "/perks is unavailable, become a dirty mechanic instead." );
|
||||
}
|
||||
|
||||
CMD:viewguns( playerid, params[ ] )
|
||||
{
|
||||
/* ** COOL DOWN ** */
|
||||
@ -13542,103 +13540,6 @@ public OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
|
||||
);
|
||||
return 1;
|
||||
}
|
||||
/*if ( ( dialogid == DIALOG_PERKS ) && response )
|
||||
{
|
||||
switch( listitem )
|
||||
{
|
||||
case 0: ShowPlayerDialog( playerid, DIALOG_PERKS_P, DIALOG_STYLE_TABLIST, "{FFFFFF}Game Perks", "Unlimited Ammunition\t"COL_GOLD"100 XP", "Select", "Back" );
|
||||
case 1: ShowPlayerDialog( playerid, DIALOG_PERKS_V, DIALOG_STYLE_TABLIST, "{FFFFFF}Game Perks", "Fix & Flip vehicle\t"COL_GOLD"200 XP\nFlip vehicle\t"COL_GOLD"50 XP\n"COL_WHITE"Add NOS\t"COL_GOLD"80 XP\n"COL_WHITE"Repair Vehicle\t"COL_GOLD"120 XP", "Select", "Back" );
|
||||
}
|
||||
}
|
||||
if ( ( dialogid == DIALOG_PERKS_P ) )
|
||||
{
|
||||
if ( !response )
|
||||
return ShowPlayerDialog( playerid, DIALOG_PERKS, DIALOG_STYLE_LIST, "{FFFFFF}Game Perks", "Player Perks\nVehicle Perks", "Select", "Cancel" );
|
||||
|
||||
switch( listitem )
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
if ( p_XP[ playerid ] >= 100 )
|
||||
{
|
||||
GivePlayerXP_Legacy( playerid, -100 );
|
||||
for( new i; i < MAX_WEAPONS; i++ )
|
||||
{
|
||||
if ( IsWeaponInAnySlot( playerid, i ) && i != 0 && !( 16 <= i <= 18 ) && i != 35 && i != 47 && i != WEAPON_BOMB )
|
||||
{
|
||||
GivePlayerWeapon( playerid, i, 15000 );
|
||||
}
|
||||
}
|
||||
SendServerMessage( playerid, "You have bought unlimited ammunition for 100 XP." );
|
||||
SetPlayerArmedWeapon( playerid, 0 );
|
||||
Beep( playerid );
|
||||
}
|
||||
else return SendError( playerid, "You don't have enough XP for this." );
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( ( dialogid == DIALOG_PERKS_V ) )
|
||||
{
|
||||
if ( !response )
|
||||
return ShowPlayerDialog( playerid, DIALOG_PERKS, DIALOG_STYLE_LIST, "{FFFFFF}Game Perks", "Player Perks\nVehicle Perks", "Select", "Cancel" );
|
||||
|
||||
if ( !IsPlayerInAnyVehicle( playerid ) || GetPlayerState( playerid ) != PLAYER_STATE_DRIVER )
|
||||
return SendError( playerid, "You are not in any vehicle as a driver." );
|
||||
|
||||
switch( listitem )
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
if ( p_XP[ playerid ] >= 200 )
|
||||
{
|
||||
new Float: vZ, vehicleid = GetPlayerVehicleID( playerid );
|
||||
GetVehicleZAngle( vehicleid, vZ ), SetVehicleZAngle( vehicleid, vZ );
|
||||
p_DamageSpamCount{ playerid } = 0;
|
||||
RepairVehicle( vehicleid );
|
||||
GivePlayerXP_Legacy( playerid, -200 );
|
||||
SendServerMessage( playerid, "You have fixed and flipped your vehicle for 200 XP." );
|
||||
PlayerPlaySound( playerid, 1133, 0.0, 0.0, 5.0 );
|
||||
}
|
||||
else return SendError( playerid, "You don't have enough XP for this." );
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
if ( p_XP[ playerid ] >= 50 )
|
||||
{
|
||||
new Float: vZ, vehicleid = GetPlayerVehicleID( playerid );
|
||||
GetVehicleZAngle( vehicleid, vZ ), SetVehicleZAngle( vehicleid, vZ );
|
||||
GivePlayerXP_Legacy( playerid, -50 );
|
||||
SendServerMessage( playerid, "You have flipped your vehicle for 50 XP." );
|
||||
PlayerPlaySound( playerid, 1133, 0.0, 0.0, 5.0 );
|
||||
}
|
||||
else return SendError( playerid, "You don't have enough XP for this." );
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
if ( p_XP[ playerid ] >= 80 )
|
||||
{
|
||||
AddVehicleComponent( GetPlayerVehicleID( playerid ), 1010 );
|
||||
GivePlayerXP_Legacy( playerid, -80 );
|
||||
SendServerMessage( playerid, "You have installed nitro on your car for 80 XP." );
|
||||
PlayerPlaySound( playerid, 1133, 0.0, 0.0, 5.0 );
|
||||
}
|
||||
else return SendError( playerid, "You don't have enough XP for this." );
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
if ( p_XP[ playerid ] >= 120 )
|
||||
{
|
||||
new vehicleid = GetPlayerVehicleID( playerid );
|
||||
PlayerPlaySound( playerid, 1133, 0.0, 0.0, 5.0 );
|
||||
p_DamageSpamCount{ playerid } = 0;
|
||||
RepairVehicle( vehicleid );
|
||||
GivePlayerXP_Legacy( playerid, -120 );
|
||||
SendServerMessage( playerid, "You have repaired your car for 120 XP." );
|
||||
}
|
||||
else return SendError( playerid, "You don't have enough XP for this." );
|
||||
}
|
||||
}
|
||||
}*/
|
||||
if ( dialogid == DIALOG_CASINO_REWARDS && response )
|
||||
{
|
||||
if ( IsPlayerJailed( playerid ) ) return SendError( playerid, "You cannot use this while you're in jail." );
|
||||
@ -13829,19 +13730,6 @@ public OnDialogResponse( playerid, dialogid, response, listitem, inputtext[ ] )
|
||||
}
|
||||
else ShowPlayerShopMenu( playerid );
|
||||
}
|
||||
/*if ( ( dialogid == DIALOG_XPMARKET ) && response )
|
||||
{
|
||||
if ( !strlen( inputtext ) || !IsNumeric( inputtext ) )
|
||||
return SendError( playerid, "The input you have entered is invalid, must be a numeric with over 0 characters." ), cmd_xpmarket( playerid, "" ), 1;
|
||||
|
||||
if ( strval( inputtext ) < 0 || strval( inputtext ) > p_XP[ playerid ] || strval( inputtext ) > 99999999 )
|
||||
return SendError( playerid, "Invalid amount, must be from 0 to the amount of XP you have." ), cmd_xpmarket( playerid, "" ), 1;
|
||||
|
||||
GivePlayerXP_Legacy( playerid, -( strval( inputtext ) ) );
|
||||
GivePlayerCash( playerid, strval( inputtext ) * EXCHANGE_XPCASH );
|
||||
printf( "[xpmarket] %s -> %s", ReturnPlayerName( playerid ), cash_format( strval( inputtext ) * EXCHANGE_XPCASH ) ); // 8hska7082bmahu
|
||||
SendServerMessage( playerid, "You have successfully exchanged %d XP for %s dollars.", strval( inputtext ), cash_format( strval( inputtext ) * EXCHANGE_XPCASH ) );
|
||||
}*/
|
||||
if ( ( dialogid == DIALOG_VIP_LOCKER ) && response )
|
||||
{
|
||||
if ( IsPlayerJailed( playerid ) ) return SendError( playerid, "You cannot use this while you're in jail." );
|
||||
|
Loading…
Reference in New Issue
Block a user