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

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

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

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

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

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

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

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

Сообщение Lt.RAT » 09 авг 2011, 21:58

noo00oob писал(а):
Fedcomp писал(а):И вообще будут ли целесообразны эти функции?


Для чего? Искать в имень игрока подстроку "ggf", и если такая нашлась давать ему безсмертие? :thumbs_up

iddqd искать надо :)

один inc это мало, надо уж сразу несколько с группировкой по функционалу, файлы, пакеты, строки, цветной чат итп итд...
Аватара пользователя
Lt.RAT
 
Сообщения: 301
Зарегистрирован: 30 сен 2009, 01:44
Благодарил (а): 4 раз.
Поблагодарили: 151 раз.
Языки программирования: Counter-Strike 1.6

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

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

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


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

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

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

Fedcomp писал(а):
  • Функция для получения подстроки имея начальное и конечное число, т.е 'lolhammerwut' нам нужно получить строку 'hammer' задав допустим substr(3 (начало), 8 (конец), строку_приемник, длину_строки_приемника)

Код: Выделить всё
// By WPMG PRoSToTeM@
GetStringByStartAndEnd(const szString[], iStart, iEnd, szOut[], iLenOut)
{
    if (iStart > iEnd)
        return 0;
    
    new iMax 
= strlen(szString);
    
    if 
(iStart >= iMax || iEnd >= iMax)
        return 0;
    
    return copy
(szOut, min(iLenOut, (iEnd - iStart) + 1), szString[iStart]);
}


Добавлено спустя 1 минуту 37 секунд:
Особо не тестировал.

Добавлено спустя 3 минуты 39 секунд:
Fedcomp писал(а):
  • Функцию для поиска первого совпадения в строке поданой подстроки которая возвращает число начиная с которого идет подстрока (искать в строке 'lolwut' подстроку 'lwut' equal выдает только true/false)

Contain?
Последний раз редактировалось PRoSToTeM@ 10 авг 2011, 02:22, всего редактировалось 2 раз(а).
Аватара пользователя
PRoSToTeM@
Скриптер
 
Сообщения: 2498
Зарегистрирован: 26 мар 2010, 00:12
Благодарил (а): 438 раз.
Поблагодарили: 1125 раз.

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

Сообщение KORD_12.7 » 10 авг 2011, 03:11

Для строк вот интерестный инклюдник: Вы должны зарегистрироваться, чтобы видеть ссылки.

Мб кому-то пригодится:
Код: Выделить всё
stock UTIL_DecalTrace(const pTrace, const szDecalName[])
{
    new entityIndex
    new index
    new message
    
    if 
((index = get_decal_index(szDecalName)) < 0)
        return
        
    new flFraction
    get_tr2
(pTrace, TR_flFraction, flFraction)
    
    if 
(flFraction == 1.0)
        return
    
    new pHit 
= get_tr2(pTrace, TR_pHit);
        
    
// Only decal BSP models
    if (pev_valid(pHit))
    {
        if (pHit && !((pev(pHit, pev_solid) == SOLID_BSP) || (pev(pHit, pev_movetype) == MOVETYPE_PUSHSTEP)))
            return
        entityIndex 
= pHit;
    }
    else 
        entityIndex 
= 0;    
        
    message 
= TE_DECAL;
    if ( entityIndex != 0 )
    {
        if ( index > 255 )
        {
            message = TE_DECALHIGH;
            index -= 256;
        }
    }
    else
    
{
        message = TE_WORLDDECAL;
        if ( index > 255 )
        {
            message = TE_WORLDDECALHIGH;
            index -= 256;
        }
    }
    
    new Float
: vecEndPos[3]
    get_tr2(pTrace, TR_vecEndPos, vecEndPos)
    
    message_begin
(MSG_BROADCAST, SVC_TEMPENTITY)
    write_byte(message)
    engfunc(EngFunc_WriteCoord, vecEndPos[0])
    engfunc(EngFunc_WriteCoord, vecEndPos[1])
    engfunc(EngFunc_WriteCoord, vecEndPos[2])
    write_byte(index)
        
    if 
(entityIndex)
        write_short(entityIndex);
    
    message_end
;
}

_http://aghl.ru/ - Half-Life и Adrenaline Gamer: за пределами возможного
Аватара пользователя
KORD_12.7
Скриптер
 
Сообщения: 298
Зарегистрирован: 28 сен 2009, 10:14
Откуда: Владивосток
Благодарил (а): 142 раз.
Поблагодарили: 257 раз.
Опыт программирования: Больше трех лет
Языки программирования: Half-Life
Opposing Force
Adrenaline Gamer
Counter-Strike

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

Сообщение Fedcomp » 10 авг 2011, 19:46

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


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

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

Сообщение noo00oob » 10 авг 2011, 19:59

Декаль рисует на конце трассы.
Один фрукт, страдающий недостачей времени, нашел его ради меня любимого и писал(а):
noo00oob, зачем родился на свет вообще? срать на форумах это понятно.. больше изъеба не найти как бэ? а то, что ты недоношенная скотина, сдерживайся, детка.
noo00oob
 
Сообщения: 1061
Зарегистрирован: 09 янв 2010, 21:52
Благодарил (а): 258 раз.
Поблагодарили: 394 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Half-Life

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

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

GetStringByStartAndEnd нужен?
Аватара пользователя
PRoSToTeM@
Скриптер
 
Сообщения: 2498
Зарегистрирован: 26 мар 2010, 00:12
Благодарил (а): 438 раз.
Поблагодарили: 1125 раз.

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

Сообщение noo00oob » 10 авг 2011, 20:49

Мдэ, интересная операция, тогда уж так:

Да, как это интересно, возвращать не еденицу, а еденицу! :thumbs_up
Один фрукт, страдающий недостачей времени, нашел его ради меня любимого и писал(а):
noo00oob, зачем родился на свет вообще? срать на форумах это понятно.. больше изъеба не найти как бэ? а то, что ты недоношенная скотина, сдерживайся, детка.
noo00oob
 
Сообщения: 1061
Зарегистрирован: 09 янв 2010, 21:52
Благодарил (а): 258 раз.
Поблагодарили: 394 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6
Half-Life

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

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

PRoSToTeM@ писал(а):GetStringByStartAndEnd нужен?

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


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

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

Сообщение PRoSToTeM@ » 12 авг 2011, 12:18

Код: Выделить всё
// CBasePlayerItem
#define m_iId                           43
 
// CBasePlayer
#define m_pActiveItem           373
 
#define XO_MONSTER                      5
#define XO_WEAPON                       4   

Код: Выделить всё
stock GetPlayerActiveWeaponId(pId)
{
        new pActiveItem = get_pdata_cbase(pId, m_pActiveItem, XO_MONSTER);
        
        if 
(pActiveItem <= 0)
                return 0;
        
        return get_pdata_int
(pActiveItem, m_iId, XO_WEAPON);


Добавлено спустя 47 секунд:
Код: Выделить всё
stock GetPlayerProtocol(pId)
{
        static cvarDpProtocol;
        
        if 
(!cvarDpProtocol && !(cvarDpProtocol = get_cvar_pointer("dp_r_protocol")))
                return 0;
        
        server_cmd
("dp_clientinfo %d", pId);
        server_exec();
        
        return get_pcvar_num
(cvarDpProtocol);


GetPlayerActiveWeaponId - Берёт текущее оружие игрока причём безошибочно.
GetPlayerProtocol - Берёт протокол CS игрока.
Аватара пользователя
PRoSToTeM@
Скриптер
 
Сообщения: 2498
Зарегистрирован: 26 мар 2010, 00:12
Благодарил (а): 438 раз.
Поблагодарили: 1125 раз.

Пред.След.

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

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

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