Русское сообщество по скриптингу

Переделка плагина MarioCoins

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Переделка плагина MarioCoins

Сообщение nikolay.zimin.71 » 09 сен 2021, 20:56

Всем привет. Кто сможет переделать плагин MarioCoins под Bonusmenu RBS исходник приложу. Суть такая мне надо переделать чтоб допустим игрок собрал 10 монет добавлялись 10 поинты от bonusmenu. Тоесть чтоб собраные монеты плюсовались к поинтам, можно даже просто собирать поинты по одному постоянно, чтоб поинты фиксирывались от bonusmenu. Есть похожий плагин , исходник имеется. Там всё как раз и сделано под bonusmenu и с фиксацией в БД тоже приложу исходник. Но там не удобно сделано, Со своих и чужих вылетают монеты. Надо чтоб убил противника поднял монету поинт прибавился.

Код: Выделить всё
#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(idaddxp);
native ar_add_user_anew(adminplayeranew);
    
#elseif RANKS_SYSTEM == 2
    #include <aes_v>
;
    
#elseif RANKS_SYSTEM == 3
native cmsranks_set_user_addxp(idvalue);
native cmsranks_add_user_anew(idvalue);
    
#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_NAMEPLUGIN_VERSIONPLUGIN_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"szConfigFilecharsmax(szConfigFile));
    
formatex(szConfigFilecharsmax(szConfigFile), "%s/%s"szConfigFileCONFIG_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_Vault0get_systime() - (86400 get_pcvar_num(cvar[TIME_DELETE])));
    
#endif
}

public 
plugin_precache()
{
    
precache_model(ENT_MODEL);
    
precache_sound(SND_PICKUP);
}

public 
CBasePlayer_Killed_Post(pVictimpAttackerpGib)
{
    new 
FloatvecOrigin[3];
    new 
FloatvecVelocity[3];

    
get_entvar(pVictimvar_originvecOrigin);

    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.0200.0);
    
vecVelocity[1] = random_float(-200.0200.0);
    
vecVelocity[2] = random_float(1.0200.0);

    
engfunc(EngFunc_SetModeliEntityENT_MODEL);
    
engfunc(EngFunc_SetSizeiEntity, { -9.0, -7.0, -0.0 }, { 9.07.06.0 });
    
set_entvar(iEntityvar_framerate1.0);
    
set_entvar(iEntityvar_sequence2);
    
engfunc(EngFunc_AnimationAutomoveiEntity100.0);

    
set_entvar(iEntityvar_originvecOrigin);
    
set_entvar(iEntityvar_classnameENT_CLASSNAME);
    
set_entvar(iEntityvar_movetypeMOVETYPE_TOSS);
    
set_entvar(iEntityvar_solidSOLID_TRIGGER);
    
set_entvar(iEntityvar_velocityvecVelocity);
    
set_entvar(iEntityvar_nextthinkget_gametime() + get_pcvar_float(cvar[ENT_LIFETIME]));

    if (
get_pcvar_num(cvar[GLOW]))
    {
        
set_entvar(iEntityvar_rendermodekRenderGlow);
        
set_entvar(iEntityvar_renderamt1.0);
        
set_entvar(iEntityvar_rendercolorFloat: { 0.0255.00.0 });
        
set_entvar(iEntityvar_renderfxkRenderFxGlowShell);
    }

    
SetThink(iEntity"Cashbrick_Think");
    
SetTouch(iEntity"Cashbrick_Touch");
}

public 
Cashbrick_Think(pEntity)
{
    if (!
is_entity(pEntity))
        return;

    if (
get_entvar(pEntityvar_iuser2))
    {
        new 
FloatfRenderAmt;
        
get_entvar(pEntityvar_renderamtfRenderAmt);

        if (
fRenderAmt 20.0)
        {
            
set_entvar(pEntityvar_renderamtfRenderAmt 20.0);
            
set_entvar(pEntityvar_nextthinkget_gametime() + 0.1);
        }
        else
            
set_entvar(pEntityvar_flagsFL_KILLME);
    }
    else
    {
        
set_entvar(pEntityvar_iuser21);
        
set_entvar(pEntityvar_rendermodekRenderTransTexture);
        
set_entvar(pEntityvar_renderamt255.0);
        
set_entvar(pEntityvar_nextthinkget_gametime() + 1.5);
    }
}

public 
Cashbrick_Touch(pEntitypToucher)
{
    if (!
is_entity(pEntity) || !is_user_connected(pToucher))
        return;

    
g_iCoin[pToucher]++;
    
set_hudmessage(02550, -1.00.2600.12.00.10.13);
    
show_hudmessage(pToucher"+1 монета"g_iCoin);
    
rh_emit_sound2(pToucherpToucherCHAN_ITEMSND_PICKUPVOL_NORMATTN_NORM);
    
set_entvar(pEntityvar_flagsFL_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], szMessagecharsmax(szMessage));
        if (
szMessage[0])
        {
            
num_to_str(iBonusszBonuscharsmax(szBonus));
            
num_to_str(iExpszExpcharsmax(szExp));
            
num_to_str(iMoneyszMoneycharsmax(szMoney));
            
replace_all(szMessagecharsmax(szMessage), "[bonus]"szBonus);
            
replace_all(szMessagecharsmax(szMessage), "[exp]"szExp);
            
replace_all(szMessagecharsmax(szMessage), "[money]"szMoney);
            
UTIL_SayText(pToucherszMessage);
        }
        
rg_add_account(pToucherget_pcvar_num(cvar[RAISE_MONEY]));
            
#if RANKS_SYSTEM == 1
        
ar_set_user_addxp(pToucherget_pcvar_num(cvar[RAISE_EXP]));
        
ar_add_user_anew(-1pToucherget_pcvar_num(cvar[RAISE_BONUS]));
            
#elseif RANKS_SYSTEM == 2
        
aes_add_player_exp_f(pToucherget_pcvar_num(cvar[RAISE_EXP]));
        
aes_add_player_bonus_f(pToucherget_pcvar_num(cvar[RAISE_BONUS]));
            
#elseif RANKS_SYSTEM == 3
        
cmsranks_set_user_addxp(pToucherget_pcvar_num(cvar[RAISE_EXP]));
        
cmsranks_add_user_anew(pToucherget_pcvar_num(cvar[RAISE_BONUS]));
            
#endif
    
}
}

public 
Task_HudMsg()
{
    
set_hudmessage(2002002000.010.9000.11.00.10.14);

    for (new 
id 1id g_iMaxPlayersid++)
    {
        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], hostcharsmax(host));
    
get_pcvar_string(cvar[CVAR_SQL_USER], usercharsmax(user));
    
get_pcvar_string(cvar[CVAR_SQL_PASS], passcharsmax(pass));
    
get_pcvar_string(cvar[CVAR_SQL_DB], dbcharsmax(db));
    
get_pcvar_string(cvar[CVAR_SQL_TYPLE], set_typecharsmax(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_PREFIXset_typePLUGIN_PREFIXset_typeCONFIG_FILE);
        return ;
    }

    
SQL_GetAffinity(get_type12);

    if (!
equali(get_typeset_type))
    if (!
SQL_SetAffinity(set_type))
      
log_amx("Failed to set affinity from %s. to %s."get_typeset_type);

    
sql_typle SQL_MakeDbTuple(hostuserpassdb);


    new 
ErrorCodeHandle:SqlConnection SQL_Connect(sql_typleErrorCodeg_Errorcharsmax(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(Queriesg_Errorcharsmax(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(szTempcharsmax(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(szTempcharsmax(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(idsAuthIDcharsmax(sAuthID));

    new 
Data[1];
    
Data[0] = id;

    
format(szTempcharsmax(szTemp), "SELECT * FROM `Raise_the_coin` WHERE (`Raise_the_coin`.`steamid` = '%s')"sAuthID);

    
SQL_ThreadQuery(sql_typle"registration_client"szTempData1);
}

public 
registration_client(FailStateHandle:QueryError[], ErrcodeData[], DataSize)
{
    if (
FailState == TQUERY_CONNECT_FAILED)
    {
        
log_amx("Load - Could not connect to SQL database.  [%d] %s"ErrcodeError);
    }
    else if (
FailState == TQUERY_QUERY_FAILED)
    {
        
log_amx("Load Query failed. [%d] %s"ErrcodeError);
    }

    new 
id;
    
id Data[0];

    if (
SQL_NumResults(Query) < 1)
    {
        new 
sAuthID[32];
        new 
szTemp[512];

        
get_user_authid(idsAuthIDcharsmax(sAuthID));

        
format(szTempcharsmax(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(Query1);
    }
    return 
PLUGIN_HANDLED;
}

public 
Save_MySql(id)
{
    new 
sAuthID[32];
    new 
szTemp[512];
    
get_user_authid(idsAuthIDcharsmax(sAuthID));

    
format(szTempcharsmax(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(FailStateHandle:QueryError[], ErrcodeData[], DataSize)
{
    
SQL_FreeHandle(Query);
    return 
PLUGIN_HANDLED;
}
#else
public save_coins(id)
{
    new 
szKey[40];
    new 
szCoin[15];

    
get_user_authid(idszKeycharsmax(szKey));

    
formatex(szCoincharsmax(szCoin), "%i"g_iCoin[id]);
    
nvault_set(g_VaultszKeyszCoin);
}

public 
load_coins(id)
{
    new 
szKey[40];
    new 
szCoin[15];

    
get_user_authid(idszKeycharsmax(szKey));

    
nvault_get(g_VaultszKeyszCoincharsmax(szCoin));
    
g_iCoin[id] = str_to_num(szCoin);
}
#endif

UTIL_SayText(id, const szMessage[], any: ...)
{
    new 
szBuffer[190];
    static 
iMsgSayText;
    if (!
iMsgSayTextiMsgSayText get_user_msgid("SayText");
    if (
numargs() > 2vformat(szBuffercharsmax(szBuffer), szMessage3);
    else 
copy(szBuffercharsmax(szBuffer), szMessage);
    while (
replace(szBuffercharsmax(szBuffer), "!y""^1")) {}
    while (
replace(szBuffercharsmax(szBuffer), "!t""^3")) {}
    while (
replace(szBuffercharsmax(szBuffer), "!g""^4")) {}
    switch (
id)
    {
        case 
0:
        {
            for (new 
1g_iMaxPlayersi++)
            {
                if (!
is_user_connected(i)) continue;
                
message_begin(MSG_ONE_UNRELIABLEiMsgSayText, .player i);
                
write_byte(i);
                
write_string(szBuffer);
                
message_end();
            }
        }
        default:
        {
            
message_begin(MSG_ONE_UNRELIABLEiMsgSayText, .player id);
            
write_byte(id);
            
write_string(szBuffer);
            
message_end();
        }
    }
    return 
0;
}
 
Аватара пользователя
nikolay.zimin.71
 
Сообщения: 6
Зарегистрирован: 12 янв 2020, 17:10
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Языки программирования: Я ничего не знаю

Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 19