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

Чекпоинты только для CT

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

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

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

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

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

Re: Чекпоинты только для CT

Сообщение dvahitov95 » 27 авг 2017, 18:41

Как здесь? Нашел в интернете

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <cstrike>
#include <hamsandwich>

new gfwCreateFinish;
new 
gfwFinished;
new 
gfwStarted;

new const 
giColorRun[][3]=
{
    {
25500},
    {
5000},
    {
1000}
};

new const 
giColorFinished[][3]=
{
    {
02550},
    {
0500},
    {
0100}
}

#define BLIFE 3

new const gszFinish[] = "drfinish";

public 
cmdFinish(idlevelcid)
{
    if(!
cmd_access(idlevelcid1))
        return 
PLUGIN_HANDLED;
    
gbFinished[id] = true;
    new 
Float:fOrigin[3];
    
pev(idpev_originfOrigin);
    
createFinish(idfOrigin);
    
gbEntityMoved true;
    return 
PLUGIN_HANDLED;
}

createFinishI(idxyz)
{
    if(!
&& !&& !z) return;
    new 
Float:fOrigin[3];
    
fOrigin[0] = float(x);
    
fOrigin[1] = float(y);
    
fOrigin[2] = float(z);
    
createFinish(idfOrigin);
}

public 
createFinish(id, const Float:fOrigin[3])
{
    if(
pev_valid(gEntFinish))
        
remove_entity(gEntFinish);
    
gEntFinish 0;
    if(
ExecuteForward(gfwCreateFinishgEntFinishidPrepareArray(_:fOrigin3), get_pcvar_num(gcvarDrawFinish)) && pev_valid(gEntFinish))
        return;
    new 
ent create_entity("trigger_multiple");
    
set_pev(entpev_classnamegszFinish);
    
set_pev(entpev_originfOrigin);
    
dllfunc(DLLFunc_Spawnent);
    
entity_set_size(entFloat:{-40.0, -40.0, -20.0}, Float:{40.040.020.0});
    
set_pev(entpev_solidSOLID_TRIGGER);
    
set_pev(entpev_movetypeMOVETYPE_NONE);
    
gEntFinish ent;
    
set_pev(entpev_nextthinkget_gametime()+BLIFE);
}

public 
fwThink(ent)
{
    if(
get_pcvar_num(gcvarDrawFinish))
    {
        for(new 
id=0;id<33;id++)
            
is_user_alive(id) && Create_Box(ident);
    }
    
set_pev(entpev_nextthinkget_gametime()+BLIFE);
}

public 
fwTouch(entid)
{
    if(
gfStartRun[id] <= 0.0)
        return;
    if(!
gbFinished[id])
    {
        
Create_Box(ident);
        
gbFinished[id] = true;
        
fwFinished(id);
    }
}

public 
fwTouch2(ident)
{
    
fwTouch(entid);
}

stock Create_Box(ident)
{
    if(
gfStartRun[id] <= 0.0) return;
    new 
Float:maxs[3], Float:mins[3];
    
pev(entpev_absmaxmaxs);
    
pev(entpev_absminmins);
    new 
Float:fOrigin[3];
    
pev(entpev_originfOrigin);
    new 
Float:fOff = -5.0;
    new 
Float:z;
    for(new 
i=0;i<3i++)
    {
        
fOrigin[2]+fOff;
        
DrawLine(idimaxs[0], maxs[1], zmins[0], maxs[1], z);
        
DrawLine(idimaxs[0], maxs[1], zmaxs[0], mins[1], z);
        
DrawLine(idimaxs[0], mins[1], zmins[0], mins[1], z);
        
DrawLine(idimins[0], mins[1], zmins[0], maxs[1], z);
        
fOff += 5.0;
    }
}

public 
DrawLine(idiFloat:x1Float:y1Float:z1Float:x2Float:y2Float:z2)
{
    new 
Float:start[3], Float:stop[3];
    
start[0] = x1;
    
start[1] = y1;
    
start[2] = z1;
    
stop[0] = x2;
    
stop[1] = y2;
    
stop[2] = z2;
    
Create_Line(idistartstop);
}

stock Create_Line(idnum, const Float:start[], const Float:stop[])
{
    new 
iColor[3];
    if(
gbFinished[id])
    {
        
iColor[0] = giColorFinished[num][0];
        
iColor[1] = giColorFinished[num][1];
        
iColor[2] = giColorFinished[num][2];
    }
    else
    {
        
iColor[0] = giColorRun[num][0];
        
iColor[1] = giColorRun[num][1];
        
iColor[2] = giColorRun[num][2];
    }
    
message_begin(MSG_ONE_UNRELIABLESVC_TEMPENTITY_id)
    
write_byte(TE_BEAMPOINTS)
    
engfunc(EngFunc_WriteCoordstart[0])
    
engfunc(EngFunc_WriteCoordstart[1])
    
engfunc(EngFunc_WriteCoordstart[2])
    
engfunc(EngFunc_WriteCoordstop[0])
    
engfunc(EngFunc_WriteCoordstop[1])
    
engfunc(EngFunc_WriteCoordstop[2])
    
write_short(gsprite)
    
write_byte(1)
    
write_byte(5)
    
write_byte(10*BLIFE)
    
write_byte(50)
    
write_byte(0)
    
write_byte(iColor[0])
    
write_byte(iColor[1])
    
write_byte(iColor[2])
    
write_byte(250)
    
write_byte(5)
    
message_end()
Аватара пользователя
dvahitov95
 
Сообщения: 133
Зарегистрирован: 07 авг 2017, 17:48
Благодарил (а): 16 раз.
Поблагодарили: 1 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Чекпоинты только для CT

Сообщение NEoMASTERR » 27 авг 2017, 18:57

Что то типа:
1. Создаёте прозрачные чек поинты на карте
2. Делаете таймер который каждые 10 (25.5) сек рассылает всем КТ сообщения SVC_TEMPENTITY с уже нормальной моделькой
3. Ловите касания с прозрачными

Вы должны зарегистрироваться, чтобы видеть ссылки. -> TE_MODEL
write_byte(life in 0.1's) полагаю 255 = 25.5 сек

Вместо TE_MODEL можно любой спрайт, или если порыться еще мб еще какие варианты есть.
Аватара пользователя
NEoMASTERR
 
Сообщения: 832
Зарегистрирован: 05 янв 2015, 16:38
Благодарил (а): 43 раз.
Поблагодарили: 188 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Чекпоинты только для CT

Сообщение dvahitov95 » 27 авг 2017, 19:56

Сложно :(
Аватара пользователя
dvahitov95
 
Сообщения: 133
Зарегистрирован: 07 авг 2017, 17:48
Благодарил (а): 16 раз.
Поблагодарили: 1 раз.
Языки программирования: Pawn
SourcePawn
C++
Php
Ruby
Python
C#

Re: Чекпоинты только для CT

Сообщение Garey » 29 авг 2017, 04:21

Subb98 писал(а):
dvahitov95 писал(а):Фуллпак не охота использовать

Нет другой функции, которая бы позволяла скрывать видимость объекта только у определённых игроков.

pev_groupinfo ?
Аватара пользователя
Garey
 
Сообщения: 85
Зарегистрирован: 24 дек 2010, 03:12
Благодарил (а): 4 раз.
Поблагодарили: 37 раз.

Re: Чекпоинты только для CT

Сообщение Subb98 » 29 авг 2017, 07:44

Garey, гм, ни разу не использовал / не обращал внимания на этот офсет...
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Чекпоинты только для CT

Сообщение DeMNiX » 29 авг 2017, 08:15

инфы о ней мало, но тоже интересно стало. Вечером надо глянуть
Работа с моделями для кс 1.6
Telegram @DeMNiX
vk com/sbalburov
Аватара пользователя
DeMNiX
 
Сообщения: 177
Зарегистрирован: 24 сен 2011, 17:48
Благодарил (а): 25 раз.
Поблагодарили: 37 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Чекпоинты только для CT

Сообщение Garey » 29 авг 2017, 11:36

Пример:
Код: Выделить всё

    
#define MaskEnt(%0)    ( 1<<(%0 & 31) )
    // Игрок 1 - Осязаем и виден группе 1 но не 2
    set_pev(1, pev_groupinfo, MaskEnt(1));
    // Игрок 2 - Осязаем и виден группе 2 но не 1
    set_pev(2, pev_groupinfo, MaskEnt(2));
    // Игрок 3 - Осязаем и виден группе 1 и 2
    set_pev(3, pev_groupinfo, MaskEnt(1) | MaskEnt(2)); 

Вроде так если ненапутал
P.S. - чтука очень хорошая но только один плагин может ее во всю мощь использовать что жаль)
Аватара пользователя
Garey
 
Сообщения: 85
Зарегистрирован: 24 дек 2010, 03:12
Благодарил (а): 4 раз.
Поблагодарили: 37 раз.

Re: Чекпоинты только для CT

Сообщение DeMNiX » 29 авг 2017, 15:15

осязаемость и отображение объекта по отдельности не задается?
Работа с моделями для кс 1.6
Telegram @DeMNiX
vk com/sbalburov
Аватара пользователя
DeMNiX
 
Сообщения: 177
Зарегистрирован: 24 сен 2011, 17:48
Благодарил (а): 25 раз.
Поблагодарили: 37 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Чекпоинты только для CT

Сообщение Garey » 29 авг 2017, 15:34

данным способом - нет =)
Аватара пользователя
Garey
 
Сообщения: 85
Зарегистрирован: 24 дек 2010, 03:12
Благодарил (а): 4 раз.
Поблагодарили: 37 раз.

Re: Чекпоинты только для CT

Сообщение fl0wer » 29 авг 2017, 16:38

Что за бред? Групинфо для щита сделан. Чтобы движок игнорил этот хитбокс, если групинфо 0.
Аватара пользователя
fl0wer
 
Сообщения: 1687
Зарегистрирован: 27 фев 2011, 21:35
Откуда: Россия, Ижевск
Благодарил (а): 240 раз.
Поблагодарили: 508 раз.
Опыт программирования: Больше трех лет
Языки программирования: C++, Java, PAWN

Пред.

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

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

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