- Код: Выделить всё
#include <amxmodx>
#include <engine>
#include <hamsandwich>
#define Mplayers 32 + 1
new bCountTokenCoins[Mplayers];
new gCvarPluginEnable;
new gCvarPluginCoinsType;
new gCvarPluginMaxCoinsForLife;
new gCvarPluginCoinsPerBody;
new gCvarPluginCoinsForDefuse;
new gCvarPluginCoinsForExplode;
new gHudSyncronizer;
new const gCoinModel[] = "models/MarioCoins/mario_coin.mdl";
new const gCoinGained[] = "MarioCoins/coingained.wav";
new const gLifeGained[] = "MarioCoins/lifegained.wav";
new const gRespawned[] = "MarioCoins/respawned.wav";
public plugin_init()
{
register_plugin("Mario Coins","2.1","EvilCoder/tuty");
register_dictionary("MarioCoins.txt");
gCvarPluginEnable = register_cvar("mc_enable","1");
if(get_pcvar_num(gCvarPluginEnable) != 1)
{
set_pcvar_num(gCvarPluginEnable,0);
return;
}
register_event("TextMsg","EVENT_TextMsg","a","2&#Game_C","2&#Game_w","2&#Game_will_restart_in");
register_logevent("LOG_RoundEnd",2,"1=Round_End");
register_touch("MarioCoin$","player","TouchCoin");
RegisterHam(Ham_Killed,"player","bacon_PlayerKilled",1);
RegisterHam(Ham_Player_PreThink,"player","bacon_PlayerPreThink");
gCvarPluginCoinsType = register_cvar("mc_coinstype","0");
if(get_pcvar_num(gCvarPluginCoinsType) != 1)
{
set_pcvar_num(gCvarPluginCoinsType,0);
}
gCvarPluginCoinsPerBody = register_cvar("mc_bodycoin","2");
gCvarPluginMaxCoinsForLife = register_cvar("mc_maxcoins","10");
gCvarPluginCoinsForDefuse = register_cvar("mc_defusecoins","2");
gCvarPluginCoinsForExplode = register_cvar("mc_explodecoins","2");
gHudSyncronizer = CreateHudSyncObj();
}
public plugin_precache()
{
precache_model(gCoinModel);
precache_sound(gCoinGained);
precache_sound(gLifeGained);
precache_sound(gRespawned);
}
public client_connect(iVictim)
{
bCountTokenCoins[iVictim] = 0;
}
public EVENT_TextMsg()
{
remove_entity_name("MarioCoin$");
}
public LOG_RoundEnd()
{
remove_entity_name("MarioCoin$");
}
public bomb_defused(defuser)
{
if(get_pcvar_num(gCvarPluginCoinsForDefuse) == 0)
{
return PLUGIN_CONTINUE;
}
bCountTokenCoins[defuser] += get_pcvar_num(gCvarPluginCoinsForDefuse);
new iMaxCoins = get_pcvar_num(gCvarPluginMaxCoinsForLife);
if(bCountTokenCoins[defuser] >= iMaxCoins)
{
emit_sound(defuser,CHAN_ITEM,gLifeGained,VOL_NORM,ATTN_NORM,0,PITCH_NORM);
bCountTokenCoins[defuser] = iMaxCoins;
return PLUGIN_CONTINUE;
}
emit_sound(defuser,CHAN_ITEM,gCoinGained,VOL_NORM,ATTN_NORM,0,PITCH_NORM);
remove_entity_name("MarioCoin$");
return PLUGIN_CONTINUE;
}
public bomb_explode(planter)
{
if(get_pcvar_num(gCvarPluginCoinsForExplode) == 0)
{
return PLUGIN_CONTINUE;
}
bCountTokenCoins[planter] += get_pcvar_num(gCvarPluginCoinsForExplode);
new iMaxCoins = get_pcvar_num(gCvarPluginMaxCoinsForLife);
if(bCountTokenCoins[planter] >= iMaxCoins)
{
emit_sound(planter,CHAN_ITEM,gLifeGained,VOL_NORM,ATTN_NORM,0,PITCH_NORM);
bCountTokenCoins[planter] = iMaxCoins;
return PLUGIN_CONTINUE;
}
emit_sound(planter,CHAN_ITEM,gCoinGained,VOL_NORM,ATTN_NORM,0,PITCH_NORM);
remove_entity_name("MarioCoin$");
return PLUGIN_CONTINUE;
}
public bacon_PlayerKilled()
{
new iKiller = read_data(1);
new iVictim = read_data(2);
if(iKiller == iVictim || get_user_team(iKiller) == get_user_team(iVictim))
{
return;
}
if(bCountTokenCoins[iVictim] >= get_pcvar_num(gCvarPluginMaxCoinsForLife))
{
if(!is_user_alive(iVictim))
{
set_task(0.1,"RegMenu",iVictim);
}
}
new Float:flPlayerOrigin[3];
entity_get_vector(iVictim,EV_VEC_origin,flPlayerOrigin);
flPlayerOrigin[2] -= 36;
new packedOrigin[3];
FVecIVec(flPlayerOrigin,packedOrigin);
set_task(0.1,"spawnCoins",4142,packedOrigin,3,"a",get_pcvar_num(gCvarPluginCoinsPerBody));
}
public RegMenu(iVictim)
{
new regmenu[512 char];
formatex(regmenu,charsmax(regmenu),"%L",iVictim,"DO_YOU_WANT_RESPAWN");
new menu = menu_create(regmenu,"ShowMenu");
formatex(regmenu,charsmax(regmenu),"%L",iVictim,"YES_I_WANT");
menu_additem(menu,regmenu,"1",0);
formatex(regmenu,charsmax(regmenu),"%L",iVictim,"NO_I_DO_NOT");
menu_additem(menu,regmenu,"2",0);
menu_setprop(menu,MPROP_EXIT,MEXIT_NEVER,-1);
menu_display(iVictim,menu,0);
return PLUGIN_CONTINUE;
}
public ShowMenu(iVictim,menu,item)
{
new data[6],iName[64],access,callback;
menu_item_getinfo(menu,item,access,data,charsmax(data),iName,charsmax(iName),callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
set_task(0.1,"RespawnPlayerAndResetCoins",iVictim);
menu_destroy(menu);
}
case 2:
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
}
return PLUGIN_HANDLED;
}
public spawnCoins(packedOrigin[3])
{
new Float:origin[3];
IVecFVec(packedOrigin,origin);
new iEntity = create_entity("info_target");
if(!is_valid_ent(iEntity))
{
return;
}
origin[2] += 65.0;
entity_set_origin(iEntity,origin);
new Float:velocity[3];
velocity[0] = (random_float(0.0,256.0) - 128.0);
velocity[1] = (random_float(0.0,256.0) - 128.0);
velocity[2] = (random_float(0.0,300.0) + 75.0);
entity_set_vector(iEntity,EV_VEC_velocity,velocity);
static modelName[64];
formatex(modelName,63,"models/MarioCoins/mario_coin.mdl");
entity_set_model(iEntity,modelName);
entity_set_string(iEntity,EV_SZ_classname,"MarioCoin$");
entity_set_int(iEntity,EV_INT_solid,SOLID_TRIGGER);
if(get_pcvar_num(gCvarPluginCoinsType) != 1)
{
entity_set_int(iEntity,EV_INT_movetype,MOVETYPE_TOSS);
}
else
{
entity_set_int(iEntity,EV_INT_movetype,MOVETYPE_BOUNCE);
}
drop_to_floor(iEntity);
set_rendering(iEntity,kRenderFxGlowShell,255,255,0,kRenderNormal,10);
}
public TouchCoin(iEntity,id)
{
if(is_valid_ent(iEntity))
{
new iMaxCoins = get_pcvar_num(gCvarPluginMaxCoinsForLife);
bCountTokenCoins[id]++;
if(bCountTokenCoins[id] >= iMaxCoins)
{
emit_sound(id,CHAN_ITEM,gLifeGained,VOL_NORM,ATTN_NORM,0,PITCH_NORM);
set_entity_flags(iEntity,FL_KILLME,1);
bCountTokenCoins[id] = iMaxCoins;
return PLUGIN_CONTINUE;
}
emit_sound(id,CHAN_ITEM,gCoinGained,VOL_NORM,ATTN_NORM,0,PITCH_NORM);
set_entity_flags(iEntity,FL_KILLME,1);
}
remove_entity(iEntity);
return PLUGIN_CONTINUE;
}
public bacon_PlayerPreThink(id)
{
if(is_user_alive(id) && !is_user_bot(id))
{
set_hudmessage(255,127,42,0.0,0.90,0,6.0);
new iMaxCoins = get_pcvar_num(gCvarPluginMaxCoinsForLife);
new szFormatHUDMessage[300];
if(bCountTokenCoins[id] == iMaxCoins)
{
formatex(szFormatHUDMessage,charsmax(szFormatHUDMessage),"%L",id,"CAN_RESPAWN");
}
else
{
formatex(szFormatHUDMessage,charsmax(szFormatHUDMessage),"%L: [%d/%d]",id,"COINS_COUNT",bCountTokenCoins[id],iMaxCoins);
}
ShowSyncHudMsg(id,gHudSyncronizer,szFormatHUDMessage);
}
}
public RespawnPlayerAndResetCoins(iVictim)
{
if(is_user_connected(iVictim) && !is_user_alive(iVictim) && get_user_team(iVictim) != 3)
{
ExecuteHamB(Ham_CS_RoundRespawn,iVictim);
emit_sound(iVictim,CHAN_ITEM,gRespawned,VOL_NORM,ATTN_NORM,0,PITCH_NORM);
bCountTokenCoins[iVictim] = 0;
}
}
Вот тот исходник как пример, про что писал выше.
- Код: Выделить всё
#include <amxmodx>
#include <fakemeta>
#include <reapi>
//#define SQL_SUPPORT // Раскомментируйте данный define ,если хотите сохранять в БД sqlite или mysql (по умолчанию, сохранение через nVault)
#define RANKS_SYSTEM 2
/* Тип интеграции со система ранга
1 - Army Ranks Ultimate
2 - Advanced Expirience System
3 - CMSStats Ranks*/
// ДАЛЬШЕ НАСТРОЕК НЕТ!!!
#define CONFIG_FILE "raise_the_coin.cfg"
#if defined SQL_SUPPORT
#include <sqlx>
#else
#include <nvault>
#endif
#if defined RANKS_SYSTEM
#if RANKS_SYSTEM == 1
native ar_set_user_addxp(id, addxp);
native ar_add_user_anew(admin, player, anew);
#elseif RANKS_SYSTEM == 2
#include <aes_v>
;
#elseif RANKS_SYSTEM == 3
native cmsranks_set_user_addxp(id, value);
native cmsranks_add_user_anew(id, value);
#endif
#endif
#pragma semicolon 1
enum _:cvars
{
ENT_LIFETIME,
GLOW,
RAISE_DEAD,
RAISE_ALL,
RAISE_EXP,
RAISE_MONEY,
RAISE_BONUS,
TIME_DELETE,
CVAR_MESSAGE,
CVAR_SQL_HOST,
CVAR_SQL_USER,
CVAR_SQL_PASS,
CVAR_SQL_DB,
CVAR_SQL_TYPLE
}
new cvar[cvars];
new g_iMaxPlayers;
new g_iCoin[33];
new const ENT_CLASSNAME[] = "raise_the_coin";
new const ENT_MODEL[] = "models/exp.mdl";
new const SND_PICKUP[] = "exp.wav";
#if defined SQL_SUPPORT
new Handle:sql_typle;
new g_Error[512];
#else
new g_Vault;
#endif
new PLUGIN_NAME[] = "raise_the_coin";
new PLUGIN_VERSION[] = "1.0.3";
new PLUGIN_AUTHOR[] = "Baton4ik48";
#if defined SQL_SUPPORT
new PLUGIN_PREFIX[] = "[COIN]";
#endif
public plugin_init ()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed_Post", true);
g_iMaxPlayers = get_maxplayers();
set_task(2.0, "Task_HudMsg", .flags = "b");
}
public plugin_cfg()
{
cvar[CVAR_SQL_HOST] = register_cvar("raise_sql_host", "");
cvar[CVAR_SQL_USER] = register_cvar("raise_sql_user", "");
cvar[CVAR_SQL_PASS] = register_cvar("raise_sql_pass", "");
cvar[CVAR_SQL_DB] = register_cvar("raise_sql_name", "");
cvar[CVAR_SQL_TYPLE] = register_cvar("raise_sql_typle", "");
cvar[GLOW] = register_cvar("raise_ent_glow", "1");
cvar[ENT_LIFETIME] = register_cvar("raise_ent_life", "7.0");
cvar[RAISE_DEAD] = register_cvar("raise_dead_exp", "1");
cvar[RAISE_ALL] = register_cvar("raise_all", "10");
cvar[RAISE_EXP] = register_cvar("raise_exp", "15");
cvar[RAISE_BONUS] = register_cvar("raise_bonus", "2");
cvar[RAISE_MONEY] = register_cvar("raise_money", "5000");
cvar[TIME_DELETE] = register_cvar("raise_deletetime", "5");
cvar[CVAR_MESSAGE] = register_cvar("raise_message", "!y[!gCOIN!y] Вы получили вознаграждение [!g[money] $!y] [!g[bonus] БОНУСОВ!y] [!g[exp] ОПЫТА!y]");
new szConfigFile[256];
get_localinfo("amxx_configsdir", szConfigFile, charsmax(szConfigFile));
formatex(szConfigFile, charsmax(szConfigFile), "%s/%s", szConfigFile, CONFIG_FILE);
server_cmd("exec ^"%s^"", szConfigFile);
#if defined SQL_SUPPORT
set_task(1.0, "mysql_start");
#else
g_Vault = nvault_open("raise_the_coin");
if (g_Vault == INVALID_HANDLE)
{
set_fail_state("Error nvault");
}
if (get_pcvar_num(cvar[TIME_DELETE]) > 0)
nvault_prune(g_Vault, 0, get_systime() - (86400 * get_pcvar_num(cvar[TIME_DELETE])));
#endif
}
public plugin_precache()
{
precache_model(ENT_MODEL);
precache_sound(SND_PICKUP);
}
public CBasePlayer_Killed_Post(pVictim, pAttacker, pGib)
{
new Float: vecOrigin[3];
new Float: vecVelocity[3];
get_entvar(pVictim, var_origin, vecOrigin);
new iEntity = rg_create_entity("info_target", false);
if (is_nullent(iEntity))
return;
#if RANKS_SYSTEM == 1
ar_set_user_addxp(pVictim, -get_pcvar_num(cvar[RAISE_DEAD]));
#elseif RANKS_SYSTEM == 2
aes_add_player_exp_f(pVictim, -get_pcvar_num(cvar[RAISE_DEAD]));
#elseif RANKS_SYSTEM == 3
cmsranks_set_user_addxp(pVictim, -get_pcvar_num(cvar[RAISE_DEAD]));
#endif
vecVelocity[0] = random_float(-200.0, 200.0);
vecVelocity[1] = random_float(-200.0, 200.0);
vecVelocity[2] = random_float(1.0, 200.0);
engfunc(EngFunc_SetModel, iEntity, ENT_MODEL);
engfunc(EngFunc_SetSize, iEntity, { -9.0, -7.0, -0.0 }, { 9.0, 7.0, 6.0 });
set_entvar(iEntity, var_framerate, 1.0);
set_entvar(iEntity, var_sequence, 2);
engfunc(EngFunc_AnimationAutomove, iEntity, 100.0);
set_entvar(iEntity, var_origin, vecOrigin);
set_entvar(iEntity, var_classname, ENT_CLASSNAME);
set_entvar(iEntity, var_movetype, MOVETYPE_TOSS);
set_entvar(iEntity, var_solid, SOLID_TRIGGER);
set_entvar(iEntity, var_velocity, vecVelocity);
set_entvar(iEntity, var_nextthink, get_gametime() + get_pcvar_float(cvar[ENT_LIFETIME]));
if (get_pcvar_num(cvar[GLOW]))
{
set_entvar(iEntity, var_rendermode, kRenderGlow);
set_entvar(iEntity, var_renderamt, 1.0);
set_entvar(iEntity, var_rendercolor, Float: { 0.0, 255.0, 0.0 });
set_entvar(iEntity, var_renderfx, kRenderFxGlowShell);
}
SetThink(iEntity, "Cashbrick_Think");
SetTouch(iEntity, "Cashbrick_Touch");
}
public Cashbrick_Think(pEntity)
{
if (!is_entity(pEntity))
return;
if (get_entvar(pEntity, var_iuser2))
{
new Float: fRenderAmt;
get_entvar(pEntity, var_renderamt, fRenderAmt);
if (fRenderAmt > 20.0)
{
set_entvar(pEntity, var_renderamt, fRenderAmt - 20.0);
set_entvar(pEntity, var_nextthink, get_gametime() + 0.1);
}
else
set_entvar(pEntity, var_flags, FL_KILLME);
}
else
{
set_entvar(pEntity, var_iuser2, 1);
set_entvar(pEntity, var_rendermode, kRenderTransTexture);
set_entvar(pEntity, var_renderamt, 255.0);
set_entvar(pEntity, var_nextthink, get_gametime() + 1.5);
}
}
public Cashbrick_Touch(pEntity, pToucher)
{
if (!is_entity(pEntity) || !is_user_connected(pToucher))
return;
g_iCoin[pToucher]++;
set_hudmessage(0, 255, 0, -1.0, 0.26, 0, 0.1, 2.0, 0.1, 0.1, 3);
show_hudmessage(pToucher, "+1 монета", g_iCoin);
rh_emit_sound2(pToucher, pToucher, CHAN_ITEM, SND_PICKUP, VOL_NORM, ATTN_NORM);
set_entvar(pEntity, var_flags, FL_KILLME);
if (g_iCoin[pToucher] == get_pcvar_num(cvar[RAISE_ALL]))
{
g_iCoin[pToucher] = 0;
new iBonus = get_pcvar_num(cvar[RAISE_BONUS]);
new iExp = get_pcvar_num(cvar[RAISE_EXP]);
new iMoney = get_pcvar_num(cvar[RAISE_MONEY]);
new szMessage[192], szBonus[16], szExp[16], szMoney[16];
get_pcvar_string(cvar[CVAR_MESSAGE], szMessage, charsmax(szMessage));
if (szMessage[0])
{
num_to_str(iBonus, szBonus, charsmax(szBonus));
num_to_str(iExp, szExp, charsmax(szExp));
num_to_str(iMoney, szMoney, charsmax(szMoney));
replace_all(szMessage, charsmax(szMessage), "[bonus]", szBonus);
replace_all(szMessage, charsmax(szMessage), "[exp]", szExp);
replace_all(szMessage, charsmax(szMessage), "[money]", szMoney);
UTIL_SayText(pToucher, szMessage);
}
rg_add_account(pToucher, get_pcvar_num(cvar[RAISE_MONEY]));
#if RANKS_SYSTEM == 1
ar_set_user_addxp(pToucher, get_pcvar_num(cvar[RAISE_EXP]));
ar_add_user_anew(-1, pToucher, get_pcvar_num(cvar[RAISE_BONUS]));
#elseif RANKS_SYSTEM == 2
aes_add_player_exp_f(pToucher, get_pcvar_num(cvar[RAISE_EXP]));
aes_add_player_bonus_f(pToucher, get_pcvar_num(cvar[RAISE_BONUS]));
#elseif RANKS_SYSTEM == 3
cmsranks_set_user_addxp(pToucher, get_pcvar_num(cvar[RAISE_EXP]));
cmsranks_add_user_anew(pToucher, get_pcvar_num(cvar[RAISE_BONUS]));
#endif
}
}
public Task_HudMsg()
{
set_hudmessage(200, 200, 200, 0.01, 0.90, 0, 0.1, 1.0, 0.1, 0.1, 4);
for (new id = 1; id < g_iMaxPlayers; id++)
{
if (!is_user_alive(id))
continue;
show_hudmessage(id, "Монет до вознаграждения: %i/%i", g_iCoin[id], get_pcvar_num(cvar[RAISE_ALL]));
}
}
public client_connect(id)
{
#if defined SQL_SUPPORT
Load_MySql(id);
#else
load_coins(id);
#endif
}
public client_disconnected(id)
{
#if defined SQL_SUPPORT
Save_MySql(id);
#else
save_coins(id);
#endif
}
public plugin_end()
{
#if defined SQL_SUPPORT
if (sql_typle)
SQL_FreeHandle(sql_typle);
// log_amx("sql_close");
#else
nvault_close(g_Vault);
// log_amx("nvault_close");
#endif
}
#if defined SQL_SUPPORT
public mysql_start()
{
new host[128], user[64], pass[64], db[64];
new get_type[13], set_type[12];
get_pcvar_string(cvar[CVAR_SQL_HOST], host, charsmax(host));
get_pcvar_string(cvar[CVAR_SQL_USER], user, charsmax(user));
get_pcvar_string(cvar[CVAR_SQL_PASS], pass, charsmax(pass));
get_pcvar_string(cvar[CVAR_SQL_DB], db, charsmax(db));
get_pcvar_string(cvar[CVAR_SQL_TYPLE], set_type, charsmax(set_type));
if(is_module_loaded(set_type) == -1) {
server_print("^r^n%s error: module '%s' not loaded.^r^n%s Add line %s to %s/modules.ini and restart server^r^n", PLUGIN_PREFIX, set_type, PLUGIN_PREFIX, set_type, CONFIG_FILE);
return ;
}
SQL_GetAffinity(get_type, 12);
if (!equali(get_type, set_type))
if (!SQL_SetAffinity(set_type))
log_amx("Failed to set affinity from %s. to %s.", get_type, set_type);
sql_typle = SQL_MakeDbTuple(host, user, pass, db);
new ErrorCode, Handle:SqlConnection = SQL_Connect(sql_typle, ErrorCode, g_Error, charsmax(g_Error));
if (SqlConnection == Empty_Handle)
set_fail_state(g_Error);
new Handle:Queries;
Queries = SQL_PrepareQuery(SqlConnection, "CREATE TABLE IF NOT EXISTS Raise_the_coin (`steamid` varchar(32), `coin` INT(11), `time_join` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP)");
if (!SQL_Execute(Queries))
{
SQL_QueryError(Queries, g_Error, charsmax(g_Error));
set_fail_state(g_Error);
}
SQL_FreeHandle(Queries);
SQL_FreeHandle(SqlConnection);
if (get_pcvar_num(cvar[TIME_DELETE]) > 0)
{
new szTemp[512];
if(!strcmp("mysql", set_type))
{
formatex(szTemp, charsmax(szTemp), "DELETE FROM `Raise_the_coin` WHERE `time_join` < FROM_UNIXTIME(%d - (86400 * %d))", get_systime(), get_pcvar_num(cvar[TIME_DELETE]));
SQL_ThreadQuery(sql_typle, "ignore_handle", szTemp);
// log_amx("mysql delete time %s", szTemp);
}
else if (!strcmp("sqlite", set_type))
{
formatex(szTemp, charsmax(szTemp), "DELETE FROM `Raise_the_coin` WHERE `time_join` < datetime('now','-%d day');", get_pcvar_num(cvar[TIME_DELETE]));
SQL_ThreadQuery(sql_typle, "ignore_handle", szTemp);
// log_amx("sqlite delete time %s", szTemp);
}
}
}
public Load_MySql(id)
{
new sAuthID[32];
new szTemp[512];
get_user_authid(id, sAuthID, charsmax(sAuthID));
new Data[1];
Data[0] = id;
format(szTemp, charsmax(szTemp), "SELECT * FROM `Raise_the_coin` WHERE (`Raise_the_coin`.`steamid` = '%s')", sAuthID);
SQL_ThreadQuery(sql_typle, "registration_client", szTemp, Data, 1);
}
public registration_client(FailState, Handle:Query, Error[], Errcode, Data[], DataSize)
{
if (FailState == TQUERY_CONNECT_FAILED)
{
log_amx("Load - Could not connect to SQL database. [%d] %s", Errcode, Error);
}
else if (FailState == TQUERY_QUERY_FAILED)
{
log_amx("Load Query failed. [%d] %s", Errcode, Error);
}
new id;
id = Data[0];
if (SQL_NumResults(Query) < 1)
{
new sAuthID[32];
new szTemp[512];
get_user_authid(id, sAuthID, charsmax(sAuthID));
format(szTemp, charsmax(szTemp), "INSERT INTO `Raise_the_coin` ( `steamid` , `coin`)VALUES ('%s','0')", sAuthID);
SQL_ThreadQuery(sql_typle, "ignore_handle", szTemp);
}
else
{
g_iCoin[id] = SQL_ReadResult(Query, 1);
}
return PLUGIN_HANDLED;
}
public Save_MySql(id)
{
new sAuthID[32];
new szTemp[512];
get_user_authid(id, sAuthID, charsmax(sAuthID));
format(szTemp, charsmax(szTemp), "UPDATE `Raise_the_coin` SET `coin` = '%i' WHERE `Raise_the_coin`.`steamid` = '%s';", g_iCoin[id], sAuthID);
SQL_ThreadQuery(sql_typle, "ignore_handle", szTemp);
}
public ignore_handle(FailState, Handle:Query, Error[], Errcode, Data[], DataSize)
{
SQL_FreeHandle(Query);
return PLUGIN_HANDLED;
}
#else
public save_coins(id)
{
new szKey[40];
new szCoin[15];
get_user_authid(id, szKey, charsmax(szKey));
formatex(szCoin, charsmax(szCoin), "%i", g_iCoin[id]);
nvault_set(g_Vault, szKey, szCoin);
}
public load_coins(id)
{
new szKey[40];
new szCoin[15];
get_user_authid(id, szKey, charsmax(szKey));
nvault_get(g_Vault, szKey, szCoin, charsmax(szCoin));
g_iCoin[id] = str_to_num(szCoin);
}
#endif
UTIL_SayText(id, const szMessage[], any: ...)
{
new szBuffer[190];
static iMsgSayText;
if (!iMsgSayText) iMsgSayText = get_user_msgid("SayText");
if (numargs() > 2) vformat(szBuffer, charsmax(szBuffer), szMessage, 3);
else copy(szBuffer, charsmax(szBuffer), szMessage);
while (replace(szBuffer, charsmax(szBuffer), "!y", "^1")) {}
while (replace(szBuffer, charsmax(szBuffer), "!t", "^3")) {}
while (replace(szBuffer, charsmax(szBuffer), "!g", "^4")) {}
switch (id)
{
case 0:
{
for (new i = 1; i < g_iMaxPlayers; i++)
{
if (!is_user_connected(i)) continue;
message_begin(MSG_ONE_UNRELIABLE, iMsgSayText, .player = i);
write_byte(i);
write_string(szBuffer);
message_end();
}
}
default:
{
message_begin(MSG_ONE_UNRELIABLE, iMsgSayText, .player = id);
write_byte(id);
write_string(szBuffer);
message_end();
}
}
return 0;
}