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

Отключить кое-что

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

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

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

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

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

Отключить кое-что

Сообщение Hus3n » 10 июн 2019, 00:41

Помогите пожалуйста .
//#define COIN_DROP_COINS // Закоментируйте строку, чтобы монеты с игрока не выпадали
Мне это нужно отключить , но когда отключаю , плагин перестает работать.
Код: Выделить всё
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "Coins System"
#define VERSION "1.0"
#define AUTHOR "6u3oH"

#define CLASSNAME_DEFAULT "info_null"
#define CLASSNAME_SET "info_coin"
#define PATH_DATABASE "addons/amxmodx/data/coins_system.dat"
#define COIN_MODEL "models/coin/coin.mdl"
#define COIN_SOUND "coin/coin.wav"

#define PDATA_KILLHEAD_OFFSET 75
#define PDATA_KILLGREN_OFFSET 76
#define PDATA_PLAYER_OFFSET 5

/*----------------------------------------------------------
 ------------------------ Настройки ------------------------
 ---------------------------------------------------------*/

#define VIP_FLAG ADMIN_LEVEL_H

#define COIN_GIVE_KILL 2 // Сколько монет давать за простое убийство
#define COIN_GIVE_KILL_HEAD 3 // Сколько монет давать за убийство в голову
#define COIN_GIVE_KILL_KNIFE 5 // Сколько монет давать за убийство ножом
#define COIN_GIVE_KILL_GRENADE 6 // Сколько монет давать за убийство гранатой

//#define COIN_DROP_COINS // Закоментируйте строку, чтобы монеты с игрока не выпадали
#define COIN_NUM_DROPKILL_MIN 1 // Минимальное кол-во монет, выпадающих при смерти игрока
#define COIN_NUM_DROPKILL_MAX 3 // Максимальное кол-во монет, выпадающих при смерти игрока

#define COIN_TIME_REMOVE 30 // Через сколько секунд удаляются выпавшие монеты (закоментриуйте, чтобы удалялись только в конце раунда)

/*----------------------------------------------------------
 ------------------------ Настройки ------------------------
 ---------------------------------------------------------*/

new g_iMaxPlayers;
new 
g_iCoin[33];

public 
plugin_precache()
{
    
precache_model(COIN_MODEL);
    
precache_sound(COIN_SOUND);
}

public 
plugin_cfg() write_file(PATH_DATABASE"[База данных] [Coins System]"0);
public 
client_connect(idload_coins(id);
public 
client_disconnected(idsave_coins(id);

public 
plugin_natives()
{
    
register_native("get_user_coins""get_user_coins"true)
    
register_native("set_user_coins""set_user_coins"true)
}

public 
get_user_coins(id) return g_iCoin[id];
public 
set_user_coins(idiNumg_iCoin[id] = iNum;

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);
    
    
RegisterHam(Ham_Killed"player""fw_KilledPlayerPost"true);

    
RegisterHam(Ham_TouchCLASSNAME_DEFAULT"fw_TouchCoinPost"true);
    
#if defined COIN_TIME_REMOVE
    
RegisterHam(Ham_ThinkCLASSNAME_DEFAULT"fw_ThinkCoinPost"true);
    
#endif
     
    
register_logevent("event_RoundEnd"2"1=Round_End");

    
g_iMaxPlayers get_maxplayers();
    
set_task(2.0"Task_HudMsg", .flags "b");
}


public 
fw_KilledPlayerPost(iVictimiAttackeriCorpse)
{
#if defined COIN_DROP_COINS
    
if(!is_user_connected(iVictim))
        return;
        
    if(
g_iCoin[iVictim] > 0)
    {
        new 
FloatfOrigin[3], FloatfVelocity[3];
        
pev(iVictimpev_originfOrigin);
        
        new 
iRandom random_num(COIN_NUM_DROPKILL_MINCOIN_NUM_DROPKILL_MAX);
        
        for(new 
i<= iRandomi++)
        {
            if(!
g_iCoin[iVictim])
                return;
            
            new 
iEnt engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocStringCLASSNAME_DEFAULT));
            
            
set_pev(iEntpev_classnameCLASSNAME_SET);
            
set_pev(iEntpev_originfOrigin);
            
set_pev(iEntpev_solidSOLID_TRIGGER);
            
set_pev(iEntpev_movetypeMOVETYPE_BOUNCE);
            
            
engfunc(EngFunc_SetSizeiEntFloat: {-10.0, -10.0, -10.0}, Float: {10.010.010.0});
            
engfunc(EngFunc_SetModeliEntCOIN_MODEL);
            
            
fVelocity[0] = random_float(10.050.0);
            
fVelocity[1] = random_float(10.050.0);
            
fVelocity[2] = random_float(100.0150.0);
        
            
set_pev(iEntpev_velocityfVelocity);
            
            
#if defined COIN_TIME_REMOVE
            
set_pev(iEntpev_nextthinkget_gametime() + COIN_TIME_REMOVE);
            
        }
    }
#endif        
    
if(!is_user_connected(iAttacker))
        return;
    
    if(
iVictim == iAttacker)
        return;
    
    new 
iGiveCoin g_iCoin[iAttacker];
    
    if(
get_pdata_int(iVictimPDATA_KILLGREN_OFFSET) & DMG_GRENADE)
        
g_iCoin[iAttacker] += COIN_GIVE_KILL_GRENADE;
    else if(
iAttacker == pev(iVictimpev_dmg_inflictor) && get_user_weapon(iAttacker) == CSW_KNIFE)
        
g_iCoin[iAttacker] += COIN_GIVE_KILL_KNIFE;
    else if(
get_pdata_int(iVictimPDATA_KILLHEAD_OFFSETPDATA_PLAYER_OFFSET) == HIT_HEAD)
        
g_iCoin[iAttacker] += COIN_GIVE_KILL_HEAD;
    else
        
g_iCoin[iAttacker] += COIN_GIVE_KILL;
        
    if(
get_user_flags(iAttacker) & VIP_FLAG)
        
g_iCoin[iAttacker] *= 2;
        
    
iGiveCoin g_iCoin[iAttacker] - iGiveCoin;
        
    
set_hudmessage(02550, -1.00.2600.12.00.10.13);
    
show_hudmessage(iAttacker"+%i монет"iGiveCoin);
}

public 
fw_TouchCoinPost(iEntid)
{
    if(!
pev_valid(iEnt) || !is_user_alive(id))
        return;
            
    static 
sClassName[32];
    
pev(iEntpev_classnamesClassNamecharsmax(sClassName));
        
    if(!
equal(sClassNameCLASSNAME_SET))
        return;
        
    
g_iCoin[id]++;
    
emit_sound(idCHAN_WEAPONCOIN_SOUNDVOL_NORMATTN_NORM0PITCH_NORM);
    
    
set_pev(iEntpev_flagspev(iEntpev_flags) | FL_KILLME);
}
#endif

#if defined COIN_TIME_REMOVE
public fw_ThinkCoinPost(iEnt)
{
    if(!
pev_valid(iEnt))
        return;
        
    static 
sClassName[32];
    
pev(iEntpev_classnamesClassNamecharsmax(sClassName));
    
    if(!
equal(sClassNameCLASSNAME_SET))
        return;
        
    
set_pev(iEntpev_flagspev(iEntpev_flags) | FL_KILLME);
}
#endif

public event_RoundEnd()
{
    new 
iEnt FM_NULLENT;
    
    while((
iEnt engfunc(EngFunc_FindEntityByStringiEnt"classname"CLASSNAME_SET)))
        if(
pev_valid(iEnt))
            
set_pev(iEntpev_flagspev(iEntpev_flags) | FL_KILLME);
}

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"g_iCoin[id]);
    }
}

public 
load_coins(id)
{
    new 
iLine 1iLensData[64], sKey[38], sAuthID[38];
    
get_user_authid(idsAuthIDcharsmax(sAuthID));
    
    while((
iLine read_file(PATH_DATABASEiLinesDatacharsmax(sData), iLen)))
    {
        
parse(sDatasKey37);
        
        if(
equal(sKeysAuthID))
        {
            
parse(sDatasKey37sKey37);
            
g_iCoin[id] = str_to_num(sKey);
            
            return;
        }
    }
    
    
g_iCoin[id] = 0;
}

public 
save_coins(id)
{
    new 
iLine 1iLensData[64], sKey[38], sAuthID[38];
    
get_user_authid(idsAuthIDcharsmax(sAuthID));
    
    while((
iLine read_file(PATH_DATABASEiLinesDatacharsmax(sData), iLen)))
    {
        
parse(sDatasKey37);
        
        if(
equal(sKeysAuthID))
        {
            
format(sDatacharsmax(sData), "%s %i"sAuthIDg_iCoin[id]);
            
write_file(PATH_DATABASEsDataiLine-1);
            
            return;
        }
    }
    
    
format(sDatacharsmax(sData), "%s %i"sAuthIDg_iCoin[id]);
    
write_file(PATH_DATABASEsData, -1);
Аватара пользователя
Hus3n
 
Сообщения: 17
Зарегистрирован: 05 ноя 2016, 14:01
Благодарил (а): 12 раз.
Поблагодарили: 1 раз.
Языки программирования: Только Русский :D

Re: Отключить кое-что

Сообщение Leonidddd » 14 июн 2019, 17:20

Hus3n,
плагин перестает работать.

Плагин без ошибок никогда не перестанет работать, что конкретно не работает?
Аватара пользователя
Leonidddd
Модератор
 
Сообщения: 2557
Зарегистрирован: 08 апр 2012, 18:13
Откуда: г. Запорожье
Благодарил (а): 192 раз.
Поблагодарили: 718 раз.

Re: Отключить кое-что

Сообщение БиЗоН » 14 июн 2019, 19:51

Hus3n, спасибо за найденную ошибку, вслед за ней нашлись еще парочка. Исправил. Скачать можно по ссылочке ниже под спойлером.
Вечно занятой. Вечно в павне.
Аватара пользователя
БиЗоН
 
Сообщения: 165
Зарегистрирован: 24 мар 2014, 21:05
Благодарил (а): 10 раз.
Поблагодарили: 49 раз.
Опыт программирования: Больше трех лет

Re: Отключить кое-что

Сообщение Husen » 18 июн 2019, 02:58

Спасибо большое)
Аватара пользователя
Husen
 
Сообщения: 20
Зарегистрирован: 08 май 2019, 19:02
Благодарил (а): 11 раз.
Поблагодарили: 0 раз.
Языки программирования: Я ничего не знаю


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

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

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