Код:
#include < amxmodx >
#include < amxmisc >
#include < nvault >
#include < hamsandwich >
#include < fakemeta_util >
#define PLUGIN "player_boost"
#define VERSION "2.0"
#define AUTHOR "RoCk-MaN"
new szModel[32], szBuy[32], szKach[32][4], szCach[32], Float: szTime[32], szVault, informerSyncObj;
new iKey = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MEN
U_KEY_8|MENU_KEY_9|MENU_KEY_0;
#define TIMERG 86444
native cs_reset_user_model(index);
native cs_set_user_model(index, const model[]);
native cs_get_user_money(index);
native cs_set_user_money(index, money, flash = 1);
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_event("ResetHUD", "set_players_models", "be");
RegisterHam( Ham_Spawn , "player" , "HamSpawnPlayer" , 1 );
szVault = nvault_open("model_ka4");
informerSyncObj = CreateHudSyncObj();
register_clcmd("say /models", "menu_player");
register_clcmd("say /test", "test");
register_menu("Models", iKey, "func_menu");
}
public test(id) {
szCach[id] += 400;
}
public HamSpawnPlayer(id) {
if( !is_user_alive(id) )
return;
switch(szKach[id][0]) {
case 1: {
fm_set_user_health(id, get_user_health(id) + 5);
}
case 2: {
fm_set_user_health(id, get_user_health(id) + 10);
}
case 3: {
fm_set_user_health(id, get_user_health(id) + 15);
}
}
switch(szKach[id][1]) {
case 1: {
fm_set_user_armor(id, get_user_armor(id) + 10);
}
case 2: {
fm_set_user_armor(id, get_user_armor(id) + 20);
}
case 3: {
fm_set_user_armor(id, get_user_armor(id) + 30);
}
}
switch(szKach[id][2]) {
case 1: {
cs_set_user_money(id, cs_get_user_money(id) + 500);
client_print(id, print_center, "Доход + 500$");
}
case 2: {
cs_set_user_money(id, cs_get_user_money(id) + 1000);
client_print(id, print_center, "Доход + 1000$");
}
case 3: {
cs_set_user_money(id, cs_get_user_money(id) + 1500);
client_print(id, print_center, "Доход + 1500$");
}
}
switch(szKach[id][3]) {
case 1: {
set_pev(id, pev_gravity, 0.5);
}
case 2: {
set_pev(id, pev_gravity, 0.4);
}
case 3: {
set_pev(id, pev_gravity, 0.3);
}
}
return;
}
public plugin_precache() {
precache_model("models/player/henry/henry.mdl");
}
public menu_player(id) {
static menu[ 512 ] , iLen;
iLen = 0;
static const _info[ 4 ][ ] = { "Нету", "Генри", "Доминик", "Зим" };
iLen = formatex( menu[ iLen ] , charsmax( menu ) - iLen , "\r[\yМеню прокачки\r]^n\wБонус деньги: \y%d^nВаша модель: %s^n^n", szCach[id], _info[szModel[id]]);
iLen += formatex( menu[ iLen ] , charsmax( menu ) - iLen , "\r1. %sКупить модель \r[\y200\r]^n", szCach[id] >= 200 && szBuy[id] < 3 ? "\w" : "\d" );
iLen += formatex( menu[ iLen ] , charsmax( menu ) - iLen , "\r2. %sМодель: %s %s^n", szBuy[id] >= 1 ? "\w" : "\d", _info[1], szModel[id] == 1 ? "\d[\yВКЛ\d]" : "\d[\rВыкл\d]");
iLen += formatex( menu[ iLen ] , charsmax( menu ) - iLen , "\r3. %sПрокачать хп \r[\w50\r] \r[\y%d\r]^n", szCach[id] >= 50 && szKach[id][0] < 3 ? "\w" : "\d", szKach[id][0] );
iLen += formatex( menu[ iLen ] , charsmax( menu ) - iLen , "\r4. %sПрокачать бронь \r[\w50\r] \r[\y%d\r]^n", szCach[id] >= 50 && szKach[id][1] < 3 ? "\w" : "\d", szKach[id][1] );
iLen += formatex( menu[ iLen ] , charsmax( menu ) - iLen , "\r5. %sПрокачать доход \r[\w70\r] \r[\y%d\r]^n", szCach[id] >= 80 && szKach[id][2] < 3 ? "\w" : "\d", szKach[id][2] );
iLen += formatex( menu[ iLen ] , charsmax( menu ) - iLen , "\r6. %sПрокачать гравитацию \r[\w80\r] \r[\y%d\r]^n", szCach[id] >= 80 && szKach[id][3] < 3 ? "\w" : "\d", szKach[id][3] );
iLen += formatex( menu[ iLen ] , charsmax( menu ) - iLen , "^n\r0. \wВыход" );
szCach[id] >= 200 && szBuy[id] < 3 ? ( iKey |= MENU_KEY_1 ) : ( iKey &= ~MENU_KEY_1 );
szBuy[id] >= 1 ? ( iKey |= MENU_KEY_2 ) : ( iKey &= ~MENU_KEY_2 );
szCach[id] >= 50 && szKach[id][0] < 3 ? ( iKey |= MENU_KEY_3 ) : ( iKey &= ~MENU_KEY_3 );
szCach[id] >= 50 && szKach[id][1] < 3 ? ( iKey |= MENU_KEY_4) : ( iKey &= ~MENU_KEY_4 );
szCach[id] >= 70 && szKach[id][2] < 3 ? ( iKey |= MENU_KEY_5 ) : ( iKey &= ~MENU_KEY_5 );
szCach[id] >= 80 && szKach[id][3] < 3 ? ( iKey |= MENU_KEY_6 ) : ( iKey &= ~MENU_KEY_6 );
( iKey &= ~MENU_KEY_8 );( iKey &= ~MENU_KEY_9 );
show_menu( id , iKey , menu , -1 , "Models" );
return PLUGIN_CONTINUE;
}
public func_menu(id, key)
{
switch(key) {
case 0: {
szCach[id] -= 200;
szBuy[id]++;
menu_player(id);
}
case 1: {
szModel[id] = szModel[id] ? 0 : 1;
set_players_models(id);
menu_player(id);
}
case 2: {
szCach[id] -= 50;
szKach[id][0]++;
menu_player(id);
}
case 3: {
szCach[id] -= 50;
szKach[id][1]++;
menu_player(id);
}
case 4: {
szCach[id] -= 70;
szKach[id][2]++;
menu_player(id);
}
case 5: {
szCach[id] -= 80;
szKach[id][3]++;
menu_player(id);
}
}
}
public set_players_models(id) {
if(!is_user_connected(id))
return PLUGIN_CONTINUE;
switch( szModel[id] ) {
case 0: cs_reset_user_model(id);
case 1: cs_set_user_model(id, "henry");
}
return PLUGIN_CONTINUE;
}
public client_putinserver(id) {
szModel[id] = 0;
szBuy[id] = 0;
szKach[id][0] = 0;
szKach[id][1] = 0;
szKach[id][2] = 0;
szKach[id][3] = 0;
LoadData(id);
if( !is_user_hltv(id) && !is_user_bot(id) ) {
set_task(1.0, "timer", TIMERG + id, _, _, "b");
szTime[id] = get_gametime();
}
}
public client_disconnect(id) {
SaveData(id)
szTime[id] = 0.0;
szModel[id] = 0;
szBuy[id] = 0;
szKach[id][0] = 0;
szKach[id][1] = 0;
szKach[id][2] = 0;
szKach[id][3] = 0;
remove_task(TIMERG+id);
}
public give_cach(id) {
szTime[id] = get_gametime();
new kach = random_num( 1, 10 );
szCach[id] += kach;
client_print(id, print_center, "Бонус деньги: %d", kach);
}
public timer( taskid ) {
new id = taskid - TIMERG;
new watchId = id;
new isAlive = is_user_alive(id);
new hudMessage[128];
if(!is_user_connected(id)){
remove_task(taskid);
return;
}
new players
players = get_playersnum
if (players() >=3)
{
if( ( get_gametime() - szTime[id]) >= 3.0 ) {
give_cach(id);
}
}
if(!isAlive) {
watchId = pev(id,pev_iuser2);
if(!watchId)
return;
}
if(watchId != id) {
new watchName[32];
get_user_name(watchId,watchName,31);
formatex(hudMessage,charsmax(hudMessage),"[ Имя: %s ]^n[ Бонус деньги: %d ]^n",watchName, szCach[watchId]);
}
else {
formatex(hudMessage,charsmax(hudMessage),"[ Бонус деньги: %d ]^n", szCach[id]);
}
set_hudmessage(170, 170, 170, -1.0, 0.80, 0, 0.0, 1.5, 0.1, 0.2, 2)
ShowSyncHudMsg( id, informerSyncObj, hudMessage);
}
public plugin_end() {
for(new i = 0; i < get_maxplayers(); i++) {
SaveData(i);
}
nvault_close(szVault);
}
public SaveData(id) {
if(is_user_bot(id))
return PLUGIN_HANDLED;
new AuthID[35];
get_user_authid(id,AuthID,35);
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s-Mod",AuthID);
format(vaultdata,255,"%i#%i#%i#%i#%i#", szCach[id], szBuy[id], szKach[id][0], szKach[id][1], szKach[id][2], szKach[id][3]);
nvault_set(szVault,vaultkey,vaultdata);
return PLUGIN_CONTINUE;
}
public LoadData(id) {
new AuthID[35];
get_user_authid(id,AuthID,35);
new vaultkey[64],vaultdata[256];
format(vaultkey,63,"%s-Mod",AuthID);
format(vaultdata,255,"%i#%i#%i#%i#%i#", szCach[id], szBuy[id], szKach[id][0], szKach[id][1], szKach[id][2], szKach[id][3]);
nvault_get(szVault,vaultkey,vaultdata,255);
replace_all(vaultdata, 255, "#", " ");
new playercach[32], playerbuy[32], playerkach[32], playerkach1[32], playerkach2[32], playerkach3[32];
parse(vaultdata, playercach, 31, playerbuy, 31, playerkach, 31, playerkach1, 31, playerkach2, 31, playerkach3, 31);
szCach[id] = str_to_num(playercach);
szBuy[id] = str_to_num(playerbuy);
szKach[id][0] = str_to_num(playerkach);
szKach[id][1] = str_to_num(playerkach1);
szKach[id][2] = str_to_num(playerkach2);
szKach[id][3] = str_to_num(playerkach3);
return PLUGIN_CONTINUE;
}