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

Как убрать отлов раунда?  [Решено]

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

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

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

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

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

Как убрать отлов раунда?

Сообщение MokA » 10 янв 2017, 15:48

У меня csdm,этот плагин дает затуманенность на карту,но эффект работает до первого переподключения к серверу и работает только для тех игроков которые успели зайти в самом начале игры,можно ли сделать,что бы отлов был не раунда,а игрока,даже если игрок зайдет по середине игры или переподключится на сервак,тума остается

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

#define PLUGIN  "Smok"
#define VERSION "0.3"
#define AUTHOR  "MistrRun"

#define get_bit(%1,%2)  (%1 & (1 << (%2 & MAXCLIENTS-1)))
#define set_bit(%1,%2)  (%1 |= (1 << (%2 & MAXCLIENTS-1)))
#define reset_bit(%1,%2)        (%1 &= ~(1 << (%2 & MAXCLIENTS-1)))

#define MAXCLIENTS 32
#define SNOW_SPRITE "sprites/Smok/smok.spr"
#define CLASSNAME "SnowEntity"

new g_bAlive;

new g_iSpriteSnow;
new g_iMaxPlayers;

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    
    register_event
("HLTV", "Event_NewRound", "a", "1=0", "2=0");
    
    new ent 
= create_entity("info_target");
    
    entity_set_string
(ent, EV_SZ_classname, CLASSNAME);
    entity_set_float(ent, EV_FL_nextthink, get_gametime() + 2.0);
    
    register_think
(CLASSNAME, "ThinkSnow");
    
    RegisterHam
(Ham_Spawn, "player", "Ham_PlayerSpawn_Post", 1);
    RegisterHam(Ham_Killed, "player", "HamPlayerKilled_Post", 1);
    
    g_iMaxPlayers 
= get_maxplayers();
}
public plugin_precache()
{
    g_iSpriteSnow = precache_model(SNOW_SPRITE);
}
public Ham_PlayerSpawn_Post(id)
{
    if(is_user_alive(id)) set_bit(g_bAlive, id);
}
public Event_NewRound(){
    set_fog(255, 0, 255);
    set_lights ("f");
}
public HamPlayerKilled_Post(id)
{
    reset_bit(g_bAlive, id);
}
public ThinkSnow(ent)
{
    entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.10);
    
    static id
;
    for(id = 1; id <= g_iMaxPlayers; id++)
    {
        if(!get_bit(g_bAlive, id)) continue;
        
        new Float
:fOrigin[3], iOrigin[3];
        entity_get_vector(id, EV_VEC_origin, fOrigin);
        FVecIVec(fOrigin, iOrigin);
        iOrigin[0] += random_num(-1000, 1000);
        iOrigin[1] += random_num(-1000, 1000);
        iOrigin[2] += random_num(100, 200);
        UTIL_CreateSnow(iOrigin, g_iSpriteSnow, 1, 1, 4);
    }
}
stock UTIL_CreateSnow(const iOrigin[3], const iSpriteID, const iCount, const iLife, const iScale)
{
    message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
    write_byte(TE_SPRITETRAIL);
    write_coord(iOrigin[0]);        // start position (X)
    write_coord(iOrigin[1]);        // start position (Y)
    write_coord(iOrigin[2]);        // start position (Z)
    write_short(iSpriteID);                 // sprite index
    write_byte(iCount);                             // number of snow
    write_byte(random_num(1, 3));   // randomness of velocity in 10's
    message_end();
}

stock set_fog(red, green, blue){
    message_begin(MSG_ALL, get_user_msgid("Fog"));
    write_byte(red);
    write_byte(green);
    write_byte(blue);
    write_long(_:0.0005)
    message_end();
}
Аватара пользователя
MokA
 
Сообщения: 45
Зарегистрирован: 28 дек 2016, 13:49
Благодарил (а): 8 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: cs 1.6

Re: Как убрать отлов раунда?

Сообщение NEoMASTERR » 10 янв 2017, 16:36

Код: Выделить всё
new g_FogId;

public plugin_init()
{
    //
    g_FogId = get_user_msgid("Fog");
}

public Ham_PlayerSpawn_Post(id)
{
    if(is_user_alive(id))
    {
        set_bit(g_bAlive, id);
        set_fog_user(id, 255, 0, 255)
    }
}

stock set_fog_user(id, red, green, blue){
    message_begin(MSG_ONE, g_FogId, _, id);
    write_byte(red);
    write_byte(green);
    write_byte(blue);
    write_long(_:0.0005)
    message_end();
}


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

Re: Как убрать отлов раунда?

Сообщение MokA » 10 янв 2017, 16:58

NEoMASTERR писал(а):
Код: Выделить всё
new g_FogId;

public plugin_init()
{
    //
    g_FogId = get_user_msgid("Fog");
}

public Ham_PlayerSpawn_Post(id)
{
    if(is_user_alive(id))
    {
        set_bit(g_bAlive, id);
        set_fog_user(id, 255, 0, 255)
    }
}

stock set_fog_user(id, red, green, blue){
    message_begin(MSG_ONE, g_FogId, _, id);
    write_byte(red);
    write_byte(green);
    write_byte(blue);
    write_long(_:0.0005)
    message_end();


Добавлено спустя 7 минут 56 секунд:
Не уверен но у Fog всего 3 параметра, и 3ий неизвестен)
Вы должны зарегистрироваться, чтобы видеть ссылки.

ошибка строки 53
Код: Выделить всё
 set_fog_user(id2550255
Аватара пользователя
MokA
 
Сообщения: 45
Зарегистрирован: 28 дек 2016, 13:49
Благодарил (а): 8 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: cs 1.6

Re: Как убрать отлов раунда?

Сообщение NEoMASTERR » 10 янв 2017, 17:01

Какая ошибка?

Добавлено спустя 31 секунду:
Код: Выделить всё
stock set_fog_user(idredgreenblue){
    
message_begin(MSG_ONEg_FogId_id);
    
write_byte(red);
    
write_byte(green);
    
write_byte(blue);
    
write_long(_:0.0005)
    
message_end();
}  


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

Re: Как убрать отлов раунда?

Сообщение MokA » 10 янв 2017, 17:06

NEoMASTERR писал(а):Какая ошибка?

Добавлено спустя 31 секунду:
Код: Выделить всё
stock set_fog_user(id, red, green, blue){
    message_begin(MSG_ONE, g_FogId, _, id);
    write_byte(red);
    write_byte(green);
    write_byte(blue);
    write_long(_:0.0005)
    message_end();
}


код добавил?

Да,ошибка - error 017: undefined symbol "set_fog"
Аватара пользователя
MokA
 
Сообщения: 45
Зарегистрирован: 28 дек 2016, 13:49
Благодарил (а): 8 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: cs 1.6

Re: Как убрать отлов раунда?

Сообщение NEoMASTERR » 10 янв 2017, 17:08

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

Re: Как убрать отлов раунда?

Сообщение MokA » 10 янв 2017, 17:09

NEoMASTERR писал(а):set_fog_user(id, 255, 0, 255)

Ну да,
Код: Выделить всё
public Ham_PlayerSpawn_Post(id)
{
    if(
is_user_alive(id))
    {
        
set_bit(g_bAliveid);
        
set_fog_user(id2550255)
    }
Аватара пользователя
MokA
 
Сообщения: 45
Зарегистрирован: 28 дек 2016, 13:49
Благодарил (а): 8 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: cs 1.6

Re: Как убрать отлов раунда?  [Решено]

Сообщение NEoMASTERR » 10 янв 2017, 17:11

MokA писал(а):Да

Добавил или заменил?
Код: Выделить всё
stock set_fog(red, green, blue){
    message_begin(MSG_ALL, g_FogId);
    write_byte(red);
    write_byte(green);
    write_byte(blue);
    write_long(_:0.0005)
    message_end();
}

stock set_fog_user(id, red, green, blue){
    message_begin(MSG_ONE, g_FogId, _, id);
    write_byte(red);
    write_byte(green);
    write_byte(blue);
    write_long(_:0.0005)
    message_end();
}
Аватара пользователя
NEoMASTERR
 
Сообщения: 832
Зарегистрирован: 05 янв 2015, 16:38
Благодарил (а): 43 раз.
Поблагодарили: 188 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Как убрать отлов раунда?

Сообщение MokA » 10 янв 2017, 17:14

NEoMASTERR писал(а):
MokA писал(а):Да

Добавил или заменил?
Код: Выделить всё
stock set_fog(red, green, blue){
    message_begin(MSG_ALL, g_FogId);
    write_byte(red);
    write_byte(green);
    write_byte(blue);
    write_long(_:0.0005)
    message_end();
}

stock set_fog_user(id, red, green, blue){
    message_begin(MSG_ONE, g_FogId, _, id);
    write_byte(red);
    write_byte(green);
    write_byte(blue);
    write_long(_:0.0005)
    message_end();
}

Все отлично
Код: Выделить всё
set_lights
надо было перенести :-)
Аватара пользователя
MokA
 
Сообщения: 45
Зарегистрирован: 28 дек 2016, 13:49
Благодарил (а): 8 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: cs 1.6


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

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

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