Вопросы по созданию от CLUQA

Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Как через ReAPI отловить и заблокировать основную, так и второстепенную атаки?


observerSend for everyone who is observing the player

Аргумент из функции rg_send_bartime, так понимаю, полоска будет показана и тем, кто наблюдает за игроком? Возможности проверить нет, но из перевода, именно так, верно?

Код:
new Float:fOrigin[3]
IVecFVec(iOrigin, fOrigin)

set_entvar(iEntity, var_origin, fOrigin)
Создав объект, я присвоил ему координаты, как заставить объект передвигаться по оси координат X от заданных?
Вариант с телепортом не подходит. Какой тип movetype при этом должен быть?

Как через ReAPI заблокировать сообщение о уроне по союзникам?

Как через ReAPI получить список всех объектов класса func_breakable и восстановить их, если какой-то был разрушен?
 
Сообщения
940
Реакции
188
Помог
4 раз(а)
observerSend for everyone who is observing the player

Аргумент из функции rg_send_bartime, так понимаю, полоска будет показана и тем, кто наблюдает за игроком? Возможности проверить нет, но из перевода, именно так, верно?
Верно.

Код:
new Float:fOrigin[3]
IVecFVec(iOrigin, fOrigin)

set_entvar(iEntity, var_origin, fOrigin)
Создав объект, я присвоил ему координаты, как заставить объект передвигаться по оси координат X от заданных?
Вариант с телепортом не подходит. Какой тип movetype при этом должен быть?
Погляди и почитай про XS инклуд.
Окей Гугл, Движение Объекта AMXX
 
Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Еще один вопрос

Как заменить анимацию игрока на другую анимацию?
Например, вместо стандартной анимации бегущего игрока, будет воспроизводиться анимация бегущего сидящего игрока?
Все эти анимации доступны в стандартных моделях, но как поменять грамотно, не прибегая к всеразличным функциям, как CmdStart и им подобным.
 
Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Как игроку заменить верхнюю анимацию?
5 Авг 2020
entity_set_int(id, EV_INT_gaitsequence, 6) // Jump graphics

Можно ли использовать в ReAPI без PreThink эту функцию?
 
Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Код:
public test(id) {
    set_entvar(id, var_gaitsequence, 6)
    set_entvar(id, var_sequence, 6)
    set_entvar(id, var_animtime, 100.0)
    set_entvar(id, var_framerate, 30.0)
}
Игрок просто дергнулся 1 раз и все на этом.
В PreThink выставлял - ничего не происходит
 
Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Код:
set_entvar(id, var_sequence, 3)
set_entvar(id, var_gaitsequence, 3)
set_entvar(id, var_frame, 1.0)
set_entvar(id, var_animtime, 100.0)
set_entvar(id, var_framerate, 24.0)
в PreThink пригрывается анимация walk при прыжке, иногда срабатывает при ударе
Как заменить анимацию ходьбы на walk?
 
Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Чем можно заменить set_view?
6 Авг 2020
Код:
@Set3DView(id)  {   
    #define CAMERA_3RDPERSON 1
    set_view(id, CAMERA_3RDPERSON)
    const FULLVIS = 255;
    rg_set_rendering(id, .fx = kRenderFxNone, .render = kRenderNormal, .amount = FULLVIS)
}

stock rg_set_rendering(index, fx = kRenderFxNone,  render = kRenderNormal, const amount = 16)
{
    set_entvar(index, var_renderfx, fx);
    set_entvar(index, var_rendermode, render);
    set_entvar(index, var_renderamt, float(amount));
}
Из-за set_view игрок становится полупрозрачным. Через rg_set_rendering не получается установить ему полную видимость.
 
Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
Как заменить анимацию ходьбы на walk?
set_es(es_handle, ES_Sequence, 3);
Помог фуллпак, но сервер офигеет, если для 32 игроков сие чудо будет.
Есть альтернативные более адекватные способы?
6 Авг 2020
Кстати, если установить sequence прыжка, то игрока будет забавно колбасить :crazy:
 
Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
fl0wer, the_hunter, подскажите, парни :sad:

set_es(es_handle, ES_Sequence, 3);
Помог фуллпак, но сервер офигеет, если для 32 игроков сие чудо будет.
Есть альтернативные более адекватные способы?
Код:
@Set3DView(id)  {   
    #define CAMERA_3RDPERSON 1
    set_view(id, CAMERA_3RDPERSON)
    const FULLVIS = 255;
    rg_set_rendering(id, .fx = kRenderFxNone, .render = kRenderNormal, .amount = FULLVIS)
}

stock rg_set_rendering(index, fx = kRenderFxNone,  render = kRenderNormal, const amount = 16)
{
    set_entvar(index, var_renderfx, fx);
    set_entvar(index, var_rendermode, render);
    set_entvar(index, var_renderamt, float(amount));
}
Из-за set_view игрок становится полупрозрачным. Через rg_set_rendering не получается установить ему полную видимость.
Касаемо камеры, как альтернативный вариант - создавать entity над игроком, сместив координаты по осям X и Z, через attach_view привязывать взгляд, но с этим вариантом у меня не хватает опыта, чтобы объект следовал за игроком, даже если с этим разберусь, то следующее препятствие - задать положение объекта именно за спиной игрока, как в set_view вид от 3-го лица.
6 Авг 2020
Как через ReAPI получить список всех объектов класса func_breakable и восстановить их, если какой-то был разрушен?
P.S. Если кому-то нужно будет, то решение здесь
http://aghl.ru/forum/viewtopic.php?f=19&t=1704&view=previous
 
Сообщения
1,668
Реакции
1,495
Помог
24 раз(а)
Касаемо камеры, как альтернативный вариант - создавать entity над игроком, сместив координаты по осям X и Z, через attach_view привязывать взгляд, но с этим вариантом у меня не хватает опыта, чтобы объект следовал за игроком, даже если с этим разберусь, то следующее препятствие - задать положение объекта именно за спиной игрока, как в set_view вид от 3-го лица.
Так в set_view так и есть.
https://github.com/alliedmodders/amxmodx/blob/master/modules/engine/forwards.cpp#L207
 
Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
fl0wer, мне нужно заменить set_view на альтернативный вариант, либо же убрать прозрачность у игрока, используя set_view, чего мне не удалось сделать. Устанавливал рендеринг после того, как использовал set_view. (В сообщение выше приложил код) В интернете вариантов убрать это - не нашел, была ссылка на форум zombie-mod, там чет обсуждалось, но перейти не смог, ибо редиректом перебрасывало на главную страницу.
6 Авг 2020
fl0wer, https://github.com/alliedmodders/amxmodx/blob/master/modules/engine/forwards.cpp#L207
Даже не вижу в этой функции, чтобы игроку устанавливалась прозрачность.
 
Сообщения
1,668
Реакции
1,495
Помог
24 раз(а)
fl0wer, мне нужно заменить set_view на альтернативный вариант, либо же убрать прозрачность у игрока, используя set_view, чего мне не удалось сделать. Устанавливал рендеринг после того, как использовал set_view. (В сообщение выше приложил код) В интернете вариантов убрать это - не нашел, была ссылка на форум zombie-mod, там чет обсуждалось, но перейти не смог, ибо редиректом перебрасывало на главную страницу.
6 Авг 2020
fl0wer, https://github.com/alliedmodders/amxmodx/blob/master/modules/engine/forwards.cpp#L207
Даже не вижу в этой функции, чтобы игроку устанавливалась прозрачность.
В фуллпаке она.
https://github.com/alliedmodders/am...ae37cbcd6d572/modules/engine/amxxapi.cpp#L167
 
Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
fl0wer, вижу. Как это можно заблокировать или заставить считать, что .iViewType = CAMERA_NONE ?
Хотел попробовать мега костыльный вариант - ставить рендер в фуллпаке, но не сработало :rofl:
Возможно, что Repatcher поможет, правильно думаю?
 
Сообщения
162
Реакции
445
Помог
2 раз(а)
CLUQA, Пример: при удерживании клавиши E включается вид от третьего лица

C++:
#pragma semicolon 1

#include <amxmodx>
#include <fakemeta>
#include <reapi>
#include <xs>

new g_viewEntModelIndex;
new g_viewEntities[MAX_PLAYERS + 1];

public plugin_precache()
{
    g_viewEntModelIndex = precache_model("models/rpgrocket.mdl");
}

public plugin_init()
{
    RegisterHookChain(RG_CBasePlayer_PostThink, "on_player_post_think_post", true);
    RegisterHookChain(RG_CBasePlayer_Killed, "client_disconnected", false);
}

public on_player_post_think_post(player)
{
    if (!is_user_alive(player)) {
        return;
    }

    if (g_viewEntities[player]) {
        if (get_member(player, m_afButtonReleased) & IN_USE) {
            remove_view_entity(player);
        }
        else {
            update_view_entity(player);
        }
    }
    else if (get_member(player, m_afButtonPressed) & IN_USE) {
        create_view_entity(player);
    }
}

public client_disconnected(player)
{
    remove_view_entity(player);
}

create_view_entity(owner)
{
    new entity = rg_create_entity("info_target", true);

    if (is_nullent(entity)) {
        return;
    }

    set_entvar(entity, var_classname, "VexdCam");
    set_entvar(entity, var_modelindex, g_viewEntModelIndex);
    set_entvar(entity, var_movetype, MOVETYPE_NOCLIP);
    set_entvar(entity, var_solid, SOLID_NOT);
    set_entvar(entity, var_takedamage, DAMAGE_NO);
    set_entvar(entity, var_gravity, 0);
    set_entvar(entity, var_owner, owner);
    set_entvar(entity, var_rendermode, kRenderTransColor);
    set_entvar(entity, var_renderamt, 0);
    set_entvar(entity, var_renderfx, kRenderFxNone);

    g_viewEntities[owner] = entity;
}

remove_view_entity(owner)
{
    new entity = g_viewEntities[owner];

    if (!is_nullent(entity)) {
        g_viewEntities[owner] = 0;
        set_entvar(entity, var_flags, get_entvar(entity, var_flags) | FL_KILLME);

        if (is_user_connected(owner)) {
            engfunc(EngFunc_SetView, owner, owner);
        }
    }
}

update_view_entity(owner)
{
    static Float:vecTmp[3];
    get_entvar(owner, var_origin, vecTmp);

    static Float:vecSrc[3];
    get_entvar(owner, var_view_ofs, vecSrc);
    xs_vec_add(vecTmp, vecSrc, vecSrc);

    static Float:vecViewAngele[3];
    get_entvar(owner, var_v_angle, vecViewAngele);

    static Float:vecAiming[3];
    get_entvar(owner, var_punchangle, vecTmp);
    xs_vec_add(vecViewAngele, vecTmp, vecAiming);

    angle_vector(vecAiming, ANGLEVECTOR_FORWARD, vecAiming);
    xs_vec_mul_scalar(vecAiming, 128.0, vecAiming);
    xs_vec_sub(vecSrc, vecAiming, vecAiming);

    static entity;
    entity = g_viewEntities[owner];

    engfunc(EngFunc_TraceLine, vecSrc, vecAiming, IGNORE_MONSTERS, entity, 0);
    get_tr2(0, TR_vecEndPos, vecTmp);

    set_entvar(entity, var_origin, vecTmp);
    set_entvar(entity, var_angles, vecViewAngele);

    engfunc(EngFunc_SetView, owner, entity);
}
 
Сообщения
1,668
Реакции
1,495
Помог
24 раз(а)
fl0wer, вижу. Как это можно заблокировать или заставить считать, что .iViewType = CAMERA_NONE ?
Хотел попробовать мега костыльный вариант - ставить рендер в фуллпаке, но не сработало :rofl:
Возможно, что Repatcher поможет, правильно думаю?
Попробуй написать Shel он любит копаться в подобном.
А если хочешь адекватное решение, то перепиши эту камеру без рендера.
 
Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
the_hunter, А-а! Просто супер! Очень доволен. Спасибо большое!!!)
 
Сообщения
1,668
Реакции
1,495
Помог
24 раз(а)
Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
fl0wer, the_hunter, благодарю за ответы, парни, но остался последний камень в моем "огороде".

set_es(es_handle, ES_Sequence, 3);
Помог фуллпак, но сервер офигеет, если для 32 игроков сие чудо будет.
Есть альтернативные более адекватные способы?

Цель: заменить анимацию модели игрока "run" на любую другую.

В данном варианте, воспроизводится анимация "walk", где игрок расставляет руки в стороны.
Собственно, есть такое понятие, как верхняя часть и нижняя часть анимации у игрока.
Например, анимация стойки с ножом, когда игрок стоит и когда игрок сидит - меняется лишь нижняя часть анимации, а верхняя часть остается нетронутой. Насколько не шарился в исходниках всяких боссов, никаких наталкивающих функций не увидел.
Почти со 100% уверенностью уверен, что подобный вариант нельзя реализовать, чтобы в анимации "run" заменить только верхнюю часть игрока.
Тогда иду другим путем и создаю свою анимацию и заменяю анимацию "run" на свою.
На данный момент, удалось сменить анимацию "run" только через функцию FullPack.
Переживаю, что при онлайне 32-ух игроков, сервер офигеет, используя данный метод, приведенный мною.
Я мог бы заменить саму анимацию "run" в самой модели, но смысл в том, что в нужный момент я буду возвращать дефолтную анимацию "run" игроку.
Пробовал совершать манипуляции через set_setnvar гайтсекьюенс и секьюенс в client_cmdStart, но игрок у меня просто один раз дергнулся и все)

Код:
set_entvar(id, var_sequence, 3)
set_entvar(id, var_gaitsequence, 3)
set_entvar(id, var_frame, 1.0)
set_entvar(id, var_animtime, 100.0)
set_entvar(id, var_framerate, 24.0)
Срабатывало при прыжке - руки в стороны, но не на анимацию "run"

Видел, что человек с ником KORD 127 разбирается в подобном, исходя из его топиков на aghl, но зарегистрироваться там не получилось, как и связаться с ним лично, только через 3-е лицо, но KORD 127 ушел на пенсию) И как бы навязываться больше не стал)

И так, слишком много информации, извиняюсь, повторюсь: как адекватно заменить анимацию игрока "run" на другую?
6 Авг 2020
fl0wer,
Думаю лучше какую-нибудь w_hegrenade.mdl чтоб не засорять прекеш.
Для личного саморазвития вопрос: почему rpgrocket.mdl будет засорять прекэш?

Поставить большое m_flLastAttackedTeammate. Можно в спавне.
Благодарю за подсказку)
 
Сообщения
1,668
Реакции
1,495
Помог
24 раз(а)
Сообщения
136
Реакции
-6
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
fl0wer, ну, судя по описаниям этого форварда, то он слишком нагружает сервер. Сильнее, чем тот же самый PreThink, client_CmdStart
Понятное дело, что в некоторых случаях можно оптимизировать и найти более адекватное решение.
Меня беспокоит частота вызова данного форварда, в котором при каждом вызове для 32 игроков будет вызываться проигрывание другой анимации, аргументированные визуальные пруфы с уровнем нагрузки до и после, приложить не могу, ибо не располагаю данной возможностью.
Не хочется, чтобы это сказывалось на будущем геймплее для игроков.

Пиши модулем тогда.
Будет ли ощутима в данном случае существенная разница?
 

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

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