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

Сборник полезных функций

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

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

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

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

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

Re: Сборник полезных функций

Сообщение PRoSToTeM@ » 14 авг 2011, 10:56

Код: Выделить всё
stock UTIL_SayText(iDest, const vecOrigin[3] = {0, 0, 0}, pEntity, pSender, const szMessage[], const szArg1[] = "", const szArg2[] = "")
{
        static msgSayText;
        
        if 
(!msgSayText)
                msgSayText = get_user_msgid("SayText");
        
        message_begin
(iDest, msgSayText, vecOrigin, pEntity);
        write_byte(pSender);
        write_string(szMessage);
        if (szArg1[0])
        {
                write_string(szArg1);
                
                if 
(szArg2[0])
                        write_string(szArg2);
        }
        message_end();
}

 
Код: Выделить всё
stock UTIL_TeamInfo(iDest, const vecOrigin[3] = {0, 0, 0}, pEntity, pPlayer, const szTeamName[])
{
        static msgTeamInfo;
        
        if 
(!msgTeamInfo)
                msgTeamInfo = get_user_msgid("TeamInfo");
        
        message_begin
(iDest, msgTeamInfo, vecOrigin, pEntity);
        write_byte(pPlayer);
        write_string(szTeamName);
        message_end();
}


UTIL_SayText - Посылает сообщение SayText.
UTIL_TeamInfo - Посылает сообщение TeamInfo.
Аватара пользователя
PRoSToTeM@
Скриптер
 
Сообщения: 2498
Зарегистрирован: 26 мар 2010, 00:12
Благодарил (а): 438 раз.
Поблагодарили: 1125 раз.

Re: Сборник полезных функций

Сообщение PRoSToTeM@ » 14 авг 2011, 23:59

Очищает DHUD каналы.
Код: Выделить всё
stock ClearDHUDMessages(pIdiClear 8)
        for (new iDHUD 0iDHUD iCleariDHUD++)
                show_dhudmessage(pId""); 
Аватара пользователя
PRoSToTeM@
Скриптер
 
Сообщения: 2498
Зарегистрирован: 26 мар 2010, 00:12
Благодарил (а): 438 раз.
Поблагодарили: 1125 раз.

Re: Сборник полезных функций

Сообщение creator_52 » 15 авг 2011, 19:24

Код: Выделить всё
stock random_str(s_str[],i_len)
{
        for(new a;a<i_len;a++)
                s_str[a]=random_num('a','z')


Добавлено спустя 1 час 10 минут 49 секунд:
В конце концов можно и это :-) :
Код: Выделить всё
stock user_kick(i_player,s_message[])
        server_cmd("kick #%d %s",get_user_userid(i_player),s_message
Аватара пользователя
creator_52
 
Сообщения: 513
Зарегистрирован: 02 мар 2011, 15:45
Откуда: Нижний Новгород
Благодарил (а): 116 раз.
Поблагодарили: 207 раз.
Опыт программирования: Больше трех лет

Re: Сборник полезных функций

Сообщение Fedcomp » 15 авг 2011, 20:48

kick_user наверное лучше
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
Аватара пользователя
Fedcomp
Администратор
 
Сообщения: 4936
Зарегистрирован: 28 авг 2009, 20:47
Благодарил (а): 813 раз.
Поблагодарили: 1317 раз.
Языки программирования: =>
pawn / php / python / ruby
javascript / rust

Re: Сборник полезных функций

Сообщение PRoSToTeM@ » 15 авг 2011, 21:16

Берёт и устанавливает vector оффсеты.
Код: Выделить всё
stock GetPDataVector(pEntityiOffsetFloat:vec[3], iLinuxDiff 5)
{
        vec[0] = get_pdata_float(pEntityiOffset++, iLinuxDiff);
        vec[1] = get_pdata_float(pEntityiOffset++, iLinuxDiff);
        vec[2] = get_pdata_float(pEntityiOffsetiLinuxDiff);
        
        
return 1;

Код: Выделить всё
stock SetPDataVector(pEntityiOffset, const Float:vec[3], iLinuxDiff 5)
{
        set_pdata_float(pEntityiOffset++, vec[0], iLinuxDiff);
        set_pdata_float(pEntityiOffset++, vec[1], iLinuxDiff);
        set_pdata_float(pEntityiOffsetvec[2], iLinuxDiff);
        
        
return 1;

Пример использования:
Код: Выделить всё
#include <amxmodx>
#include <fakemeta>
 
#define m_vecEnemyLKP   93
 
#define XO_MONSTER              5
 
public plugin_init()
        register_clcmd("say /test""ClCmdTest");
 
public ClCmdTest(pId)
{
        new Float:vec[3];
        
        GetPDataVector
(pIdm_vecEnemyLKPvecXO_MONSTER);
        
        client_print
(pIdprint_chat"Your: %f %f %f"vec[0], vec[1], vec[2]);
        
        SetPDataVector
(pIdm_vecEnemyLKPFloat:{213.3423.71113.234}, XO_MONSTER);
        
        GetPDataVector
(pIdm_vecEnemyLKPvecXO_MONSTER);
        
        client_print
(pIdprint_chat"Changed: %f %f %f"vec[0], vec[1], vec[2]);
}
 
stock GetPDataVector
(pEntityiOffsetFloat:vec[3], iLinuxDiff 5)
{
        vec[0] = get_pdata_float(pEntityiOffset++, iLinuxDiff);
        vec[1] = get_pdata_float(pEntityiOffset++, iLinuxDiff);
        vec[2] = get_pdata_float(pEntityiOffsetiLinuxDiff);
        
        
return 1;
}
 
stock SetPDataVector
(pEntityiOffset, const Float:vec[3], iLinuxDiff 5)
{
        set_pdata_float(pEntityiOffset++, vec[0], iLinuxDiff);
        set_pdata_float(pEntityiOffset++, vec[1], iLinuxDiff);
        set_pdata_float(pEntityiOffsetvec[2], iLinuxDiff);
        
        
return 1;


Добавлено спустя 24 минуты 1 секунду:
Другой способ кика игрока:
Код: Выделить всё
stock UTIL_Disconnect(iDest, const vecOrigin[3] = {000}, pEntity 0, const szReason[])
{
        message_begin(iDestSVC_DISCONNECTvecOriginpEntity);
        write_string(szReason);
        message_end();

Пример использования:
Код: Выделить всё
#include <amxmodx>
 
public plugin_init()
        register_clcmd("say /test""ClCmdTest");
 
public ClCmdTest(pId)
        UTIL_Disconnect(MSG_ONE_pId"Скачайте новую версию Counter-Strike^n^t^t^t^tDownload new version of Counter-Strike^n^t^t^t^thttp://www.amx-x.ru/cs");
 
stock UTIL_Disconnect
(iDest, const vecOrigin[3] = {000}, pEntity 0, const szReason[])
{
        message_begin(iDestSVC_DISCONNECTvecOriginpEntity);
        write_string(szReason);
        message_end();

Cкриншот:
svc_disconnect.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
PRoSToTeM@
Скриптер
 
Сообщения: 2498
Зарегистрирован: 26 мар 2010, 00:12
Благодарил (а): 438 раз.
Поблагодарили: 1125 раз.

Re: Сборник полезных функций

Сообщение Sho0ter » 15 авг 2011, 23:24

creator_52 писал(а):
Код: Выделить всё
stock random_str(s_str[],i_len)
{
        for(new a;a<i_len;a++)
                s_str[a]=random_num('a','z')

Код: Выделить всё
stock random_string(output[], len)
{
        for(new ileni++)
        {
                output[i] = random_symbol();
        }
        return 1;
}
stock random_symbol(imax 0)
{
        switch(random_num(02))
        {
                case 0: return random_num(0imax imax 9);
                case 1: return random_num('a''z');
                case 2: return random_num('A''Z');
        }
        return 1;
Аватара пользователя
Sho0ter
 
Сообщения: 585
Зарегистрирован: 31 мар 2010, 19:18
Откуда: г. Белая Церковь, Украина
Благодарил (а): 12 раз.
Поблагодарили: 307 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Half-Life 1

Re: Сборник полезных функций

Сообщение PRoSToTeM@ » 15 авг 2011, 23:26

Ещё надо {[}]@#$ и т.д.
Аватара пользователя
PRoSToTeM@
Скриптер
 
Сообщения: 2498
Зарегистрирован: 26 мар 2010, 00:12
Благодарил (а): 438 раз.
Поблагодарили: 1125 раз.

Re: Сборник полезных функций

Сообщение Sho0ter » 15 авг 2011, 23:32

PRoSToTeM@ писал(а):Ещё надо {[}]@#$ и т.д.

Нет, ненадо. Целью было создание генератора рандомной строки как генератор пароля в мускуле.
Аватара пользователя
Sho0ter
 
Сообщения: 585
Зарегистрирован: 31 мар 2010, 19:18
Откуда: г. Белая Церковь, Украина
Благодарил (а): 12 раз.
Поблагодарили: 307 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Half-Life 1

Re: Сборник полезных функций

Сообщение PRoSToTeM@ » 16 авг 2011, 03:31

Проигрывает звук на игроке .wav или .mp3
Код: Выделить всё
stock PlaySound(pId, const szSound[], bool:bMp3 falsebool:bLoop false)
{
        if (bMp3)
                client_cmd(pId"mp3 %s %s"bLoop "loop" "play"szSound);
        else
                client_cmd(pId"spk %s"szSound);
        
        
return 1;

Останавливает все звуки (все .wav и/или .mp3)
Код: Выделить всё
#define STOP_SOUND_WAV  0
#define STOP_SOUND_MP3  1
#define STOP_SOUND_ALL  2
 
stock StopSound
(pIdiType STOP_SOUND_ALL)
{
        switch (iType)
        {
                case STOP_SOUND_WAVclient_cmd(pId"stopsound");
                case STOP_SOUND_MP3client_cmd(pId"mp3 stop");
                case STOP_SOUND_ALLclient_cmd(pId"stopsound;mp3 stop");
        }
        
        
return 1;
Аватара пользователя
PRoSToTeM@
Скриптер
 
Сообщения: 2498
Зарегистрирован: 26 мар 2010, 00:12
Благодарил (а): 438 раз.
Поблагодарили: 1125 раз.

Re: Сборник полезных функций

Сообщение quckly » 16 авг 2011, 07:05

Думаю так намного проще:
Код: Выделить всё
stock kick_user(id, const szReason[] = "You kicked !")
{
        message_begin(MSG_ONESVC_DISCONNECT_id)
        write_string(szReason)
        message_end()
Последний раз редактировалось quckly 18 авг 2011, 13:04, всего редактировалось 1 раз.
Аватара пользователя
quckly
Скриптер
 
Сообщения: 403
Зарегистрирован: 20 ноя 2009, 10:03
Благодарил (а): 41 раз.
Поблагодарили: 243 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Пред.След.

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10