crosshair

Сообщения
36
Реакции
1
Всем привет, ребята можете подсказать что делаю не так. Хочу сделать отдельный прицел на сервере, но чет идет не так. Не отображает спрайт прицела.

Код:
#include <amxmodx>
#include <amxmisc>
#include <biohazard>

new HideWeapon;
new g_msgids[4];

new const crosshairs[]="crosshairs";

public plugin_init() {
    
    register_event("CurWeapon", "CurWeapon", "be", "1!0", "2=29");
    HideWeapon = get_user_msgid("HideWeapon");
    g_msgids[1] = get_user_msgid("WeaponList");
    g_msgids[2] = get_user_msgid("SetFOV");
    g_msgids[3] = get_user_msgid("CurWeapon");
}

public plugin_precache()
{
    new tmp[128]
    
    formatex(tmp, charsmax(tmp), "sprites/%s.txt", crosshairs)
    
    precache_generic(tmp)
    
    precache_generic("sprites/crosshairs.spr");
}

public CurWeapon(id)
{
    message_begin(MSG_ONE_UNRELIABLE, HideWeapon, _, id);
    write_byte(1<<6);
    message_end();
    SetMessage_WeaponList(id);
    SetMessage_SetFOV(id, 89);
    SetMessage_CurWeapon(id);
    SetMessage_SetFOV(id, 90);
}

SetMessage_WeaponList(const id) {
    message_begin(MSG_ONE, g_msgids[1], .player = id); {
    write_string(crosshairs);
    }
    message_end();
}

SetMessage_SetFOV(const id, const FOV) {
    message_begin(MSG_ONE, g_msgids[2], .player = id); {
        write_byte(FOV);
    }
    message_end();
}

SetMessage_CurWeapon(const id) {
    new ammo;
    get_user_weapon(id, ammo);

    message_begin(MSG_ONE, g_msgids[3], .player = id); {
        write_byte(1);
        write_byte(2);
        write_byte(ammo);
    }
    message_end();
}
 
Сообщения
36
Реакции
1
Вроде чет вышло, но есть проблемка. Когда человек становится зомби, то у него прицел появляется и быстро пропадает, но когда в чат прописать команду для прицела, то он нормально работает. Можете подсказать в чем проблема?

Код:
#include <amxmodx>
#include <biohazard>


new const crosshairs[] = "crosshair";


new      bool:g_scope[MAX_PLAYERS + 1],
    g_msgids[4];

public plugin_init() {

    register_clcmd("say /cross1", "@clcmd_crosshair1");

    register_event("SetFOV", "@Event_SetFOV", "be");
    register_event("CurWeapon", "@Event_CurWeapon", "be", "1=1", "2!18");

    g_msgids[0] = get_user_msgid("HideWeapon");
    g_msgids[1] = get_user_msgid("WeaponList");
    g_msgids[2] = get_user_msgid("SetFOV");
    g_msgids[3] = get_user_msgid("CurWeapon");
}

@Event_SetFOV(const id) {
    new FOV = read_data(1);

    if(FOV == 90) {
        g_scope[id] = false;
    }
    else {
        g_scope[id] = true;
        SetMessage_HideWeapon(id, 0);
    }
}

public plugin_precache() {
    precache_generic(fmt("sprites/%s.txt", crosshairs));
    precache_generic("sprites/crosshair.spr");
}

public event_infect(victim, attacker)
{
    @clcmd_crosshair1(victim)
}

@clcmd_crosshair1(id) {
    Change_Crosshair(id);
}

@Event_CurWeapon(const id) {
    if(g_scope[id]) {
        return;
    }

    new id = read_data(2);
    Change_Crosshair(id);
}

Change_Crosshair(const id) {
    SetMessage_WeaponList(id);
    SetMessage_HideWeapon(id, 1<<6);
    SetMessage_SetFOV(id, 89);
    SetMessage_CurWeapon(id);
    SetMessage_SetFOV(id, 90);
}

SetMessage_WeaponList(const id) {
    if(is_user_alive(id))
    {
        message_begin(MSG_ONE, g_msgids[1], .player = id);
        {
            write_string(crosshairs);
            write_byte(-1);
            write_byte(-1);
            write_byte(-1);
            write_byte(-1);
            write_byte(0);
            write_byte(11);
            write_byte(2);
            write_byte(0);
        }
        message_end();
    }
}

SetMessage_SetFOV(const id, const FOV) {
    message_begin(MSG_ONE, g_msgids[2], .player = id); {
        write_byte(FOV);
    }
    message_end();
}

SetMessage_CurWeapon(const id) {
    new ammo;
    get_user_weapon(id, ammo);

    message_begin(MSG_ONE, g_msgids[3], .player = id); {
        write_byte(1);
        write_byte(2);
        write_byte(ammo);
    }
    message_end();
}

SetMessage_HideWeapon(const id, const byte) {
    message_begin(MSG_ONE, g_msgids[0], .player = id); {
        write_byte(byte);
    }
    message_end();
}
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу