Member
|
10-18-2021
, 09:36
Re: hello, this hat system gives coins at a certain time, but when the map changes, t
|
#20
|
Quote:
Originally Posted by Natsheh
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <reapi>
#include <nvault>
#define TASK_FREE_COINS 779933
#define Kac_Dakikada_Bir 5
#if AMXX_VERSION_NUM > 182
#define client_disconnect client_disconnected
#endif
new const g_szTAG[] = "GitHub";
enum ENUM_HATS_DATA(+=1)
{
HAT_NAME[32],
HAT_MODEL[64],
HAT_PRICE
}
new const g_aHATS_DATA[][ENUM_HATS_DATA] = {
{ "Dede Sapkasi", "models/hat/dede.mdl", 100 },
{ "Suratsiz Sapkasi", "models/hat/suratsiz.mdl", 100 },
{ "Inek Sapkasi", "models/hat/inek.mdl", 200 },
{ "Palyaco Sapkasi", "models/hat/palyaco.mdl", 300 },
{ "Kedi Sapkasi", "models/hat/kedi.mdl", 400 },
{ "Korku Sapkasi", "models/hat/korku.mdl", 700 }
};
new g_pHats_Model_index[sizeof g_aHATS_DATA],
g_bHatAlreadyBeenBought[MAX_PLAYERS+1][sizeof g_aHATS_DATA],
g_iHat_Ent[MAX_PLAYERS+1],
g_iCoin[MAX_PLAYERS+1],
g_bUserConnected[MAX_PLAYERS+1],
g_Coins_nVault = INVALID_HANDLE;
public plugin_precache()
{
for(new i, maxloop = sizeof g_aHATS_DATA; i < maxloop; i++)
{
g_pHats_Model_index[i] = precache_model( g_aHATS_DATA[i][HAT_MODEL] );
}
}
public plugin_natives()
{
register_native("nGetUserCoin", "NTV_CN");
}
public NTV_CN(plugin, argc)
{
new iPlayer = get_param(1);
if(!is_user_connected(iPlayer))
{
log_error(AMX_ERR_GENERAL, "Player #%d is not connected!", iPlayer);
return 0;
}
return g_iCoin[iPlayer];
}
public plugin_init()
{
register_plugin("Sapka Menü", "1.0", "Natsheh");
register_clcmd("say /sapka", "OpenHatMenu");
register_clcmd("say_team /sapka", "OpenHatMenu");
register_clcmd("say /hat", "OpenHatMenu");
register_clcmd("say_team /hat", "OpenHatMenu");
register_clcmd("say /hats", "OpenHatMenu");
register_clcmd("say_team /hats", "OpenHatMenu");
register_cvar("Hats_Menu_By_Natsheh", "v1.0", FCVAR_SERVER|FCVAR_SPONLY);
register_concmd("amx_give_coins", "concmd_give_coins", ADMIN_KICK, "<name> < +|- value>")
}
public concmd_give_coins(id, level, cid)
{
if(!cmd_access(id, level, cid, 2))
{
return 1;
}
new szTarget[32], szValue[12];
read_argv(1, szTarget, charsmax(szTarget));
read_argv(2, szValue, charsmax(szValue));
remove_quotes(szTarget);
remove_quotes(szValue);
new player = cmd_target(id, szTarget, CMDTARGET_ALLOW_SELF);
if(!player) return 1;
if(!strlen(szValue) || str_to_num(szValue) == 0)
{
console_print(id, "^n* amx_give_coins < name > < amount >");
console_print(id, "* The 2nd argument ( amount ) is missing!^n");
return 1;
}
if(!is_str_num(szValue))
{
console_print(id, "^n* amx_give_coins < name > < amount >");
console_print(id, "* The 2nd argument ( amount ) must be numbers only!^n");
return 1;
}
g_iCoin[ player ] += str_to_num(szValue);
return 1;
}
public client_putinserver(iPlayer)
{
g_iCoin[ iPlayer ] = 0;
g_bUserConnected[ iPlayer ] = true;
if(is_user_bot(iPlayer) || is_user_hltv(iPlayer)) return;
if(g_Coins_nVault == INVALID_HANDLE)
{
g_Coins_nVault = nvault_open("hats_players_coins");
}
if(g_Coins_nVault != INVALID_HANDLE)
{
new szAuthID[32];
get_user_authid(iPlayer, szAuthID, charsmax(szAuthID));
g_iCoin[ iPlayer ] = nvault_get(g_Coins_nVault, szAuthID);
nvault_close(g_Coins_nVault);
}
set_task( 60.0 * Kac_Dakikada_Bir, "GiveCoin", iPlayer+TASK_FREE_COINS);
}
public client_disconnect(iPlayer)
{
if(!g_bUserConnected[ iPlayer ]) return;
SetUserHat(iPlayer,-1);
g_bUserConnected[ iPlayer ] = false;
arrayset( g_bHatAlreadyBeenBought[ iPlayer ], false, sizeof g_bHatAlreadyBeenBought[] );
if(is_user_bot(iPlayer) || is_user_hltv(iPlayer)) return;
if(g_Coins_nVault == INVALID_HANDLE)
{
g_Coins_nVault = nvault_open("hats_players_coins");
}
if(g_Coins_nVault != INVALID_HANDLE)
{
new szAuthID[32], szValue[12];
get_user_authid(iPlayer, szAuthID, charsmax(szAuthID));
num_to_str(g_iCoin[ iPlayer ], szValue, charsmax(szValue));
nvault_set(g_Coins_nVault, szAuthID, szValue);
nvault_close(g_Coins_nVault);
}
}
public GiveCoin(const iTaskID)
{
new iPlayer = iTaskID-TASK_FREE_COINS;
if(is_user_connected(iPlayer))
{
g_iCoin[iPlayer] += 10;
set_task( 60.0 * Kac_Dakikada_Bir, "GiveCoin", iPlayer + TASK_FREE_COINS);
client_print_color(iPlayer, iPlayer, "^1[ ^3- ^4%s ^3- ^1] ^1Sunucuda %i dakika durdugunuz icin 10 Coin kazandiniz.", g_szTAG, floatround(60.0*Kac_Dakikada_Bir))
}
}
public TakeDamage(const pVictim, const pInflictor, const pAttacker, Float:flDamage, bitsDamageType)
{
if(!is_user_connected(pAttacker) || !rg_is_player_can_takedamage(pVictim, pAttacker) || pVictim == pAttacker) return;
g_iCoin[pAttacker] += random_num(1,5);
}
public OpenHatMenu(const iPlayer)
{
if(!is_user_alive(iPlayer))
{
client_print_color(iPlayer, iPlayer, "^1[ ^3- ^4%s ^3- ^1] ^1You must be alive in order to open the hats menu", g_szTAG);
return;
}
new Menu = menu_create(fmt("\d( \r%s \d) \y~> Sapka Menüsü \y~> \wSizdeki Coin: \r%i", g_szTAG, g_iCoin[iPlayer]), "OpenHatMenu_");
menu_additem(Menu,fmt("\r[\y%s\r] \d~> \wSapkayi \rCikar^n", g_szTAG),"333");
static maxloop = 0; if(!maxloop) maxloop = sizeof g_aHATS_DATA;
for(new iMenuItem; iMenuItem < maxloop ; iMenuItem++)
{
if(g_bHatAlreadyBeenBought[iPlayer][iMenuItem])
menu_additem(Menu, fmt("\r[\y%s\r] \d~> \w%s", g_szTAG, g_aHATS_DATA[iMenuItem][HAT_NAME]), fmt("%i",iMenuItem));
else
menu_additem(Menu, fmt("\r[\y%s\r] \d~> \w%s \d[\w%d \yCoin\d]", g_szTAG, g_aHATS_DATA[iMenuItem][HAT_NAME], g_aHATS_DATA[iMenuItem][HAT_PRICE]), fmt("%i",iMenuItem));
}
menu_setprop(Menu, MPROP_BACKNAME,"Önceki Sayfa");
menu_setprop(Menu, MPROP_NEXTNAME,"Sonraki Sayfa");
menu_setprop(Menu, MPROP_EXITNAME,"\wKapat");
menu_display(iPlayer, Menu);
}
public OpenHatMenu_(const iPlayer,const iMenu, const iItem)
{
if(iItem == MENU_EXIT)
{
menu_destroy(iMenu);
return PLUGIN_HANDLED;
}
if(!is_user_alive(iPlayer))
{
client_print_color(iPlayer, iPlayer, "^1[ ^3- ^4%s ^3- ^1] ^1You must be alive in order to use the hats menu", g_szTAG);
menu_destroy(iMenu);
return PLUGIN_HANDLED;
}
new iData[6], iKey;
menu_item_getinfo(iMenu, iItem, _, iData, charsmax(iData));
iKey = str_to_num(iData);
if(iKey == 333)
{
SetUserHat(iPlayer,-1);
menu_destroy(iMenu);
return PLUGIN_HANDLED;
}
if(g_bHatAlreadyBeenBought[iPlayer][iKey])
{
SetUserHat(iPlayer,-1);
SetUserHat(iPlayer,iKey);
}
else if(g_iCoin[iPlayer] >= g_aHATS_DATA[iKey][HAT_PRICE])
{
g_iCoin[iPlayer] -= g_aHATS_DATA[iKey][HAT_PRICE];
g_bHatAlreadyBeenBought[iPlayer][iKey] = true;
SetUserHat(iPlayer,-1);
SetUserHat(iPlayer,iKey);
}
else
{
client_print_color(iPlayer, iPlayer, "^1[ ^3- ^4%s ^3- ^1] ^1Yeterli paraniz bulunmuyor! Gereken: ^3%i ^4Coin", g_szTAG, g_aHATS_DATA[iKey][HAT_PRICE] - g_iCoin[iPlayer]);
OpenHatMenu(iPlayer);
}
menu_destroy(iMenu);
return PLUGIN_HANDLED;
}
public SetUserHat(const iPlayer, const iHatNum)
{
switch(iHatNum)
{
case -1:
{
if(g_iHat_Ent[iPlayer] > 0) rg_remove_entity( g_iHat_Ent[iPlayer] );
g_iHat_Ent[iPlayer] = 0;
}
default:
{
g_iHat_Ent[iPlayer] = rg_create_entity("info_target");
set_entvar(g_iHat_Ent[iPlayer], var_movetype, MOVETYPE_FOLLOW);
set_entvar(g_iHat_Ent[iPlayer], var_aiment, iPlayer);
set_entvar(g_iHat_Ent[iPlayer], var_rendermode, kRenderNormal);
set_entvar(g_iHat_Ent[iPlayer], var_modelindex, iHatModels[iHatNum]);
}
}
}
rg_remove_entity(const iEnt)
{
if(is_entity(iEnt))
{
set_entvar(iEnt,var_flags,FL_KILLME);
}
}
Here you go...
|
eternal gratitude sir
|
|