AMX MOD X
Пятница, 29.03.2024, 11:30:50



Приветствую Вас Гость | RSS
[ Главная ] [ Рисование простых рисунков на стене - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » Рисование простых рисунков на стене (издалека)
Рисование простых рисунков на стене
JohnJДата: Вторник, 05.12.2006, 23:10:36 | Сообщение # 1
Лейтенант
Группа: Скриптеры
Сообщений: 65
Репутация: 4
Статус: Не в сети
Возникла интересная идея плагина для кс. Для её реализации необходимо сделать возможность рисования игроком на стене круга (или овала, лучше) с любого расстояния. Как лучше сделать, или может уже кто делал такое, где можно посмотреть? Не встречали ли вы? Подскажите, пожалуйста.

-----------------
Узнал, что можно определить координаты на стене с помощью get_user_origin(id,vec,3), но вот вопрос: это, как я понял из хелпа, координаты того объекта, на который смотрит курсор... и, если это будет др. игрок, то и координаты будут его? Как же быть если надо всё-же лепить овал на стену? рисовать овал в воздухе? в принципе можно, но всё-же лучше на стене. Можно ли нарисовать овал в воздухе, если полученные координаты будут совпадать с координатами "постороннего предмета" (игрока), а не со стеной? Как лучше проверить такие случаи чтобы избежать ошибки?

Сообщение отредактировал JohnJ - Среда, 06.12.2006, 00:31:51
 
slogicДата: Среда, 06.12.2006, 01:34:58 | Сообщение # 2
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
На имя функции не обращай внимания. Ее алгоритм - рисует декли у тебя под ногами. Индекс декали - g_iNextDecal. Индексы брать я не помню где (где-то в текстовом файле валяются у каждого мода). В любом случае ты можешь закэшировать свой .spr файл и тут же получить его индекс.

Code
static fx_blood_small(origin[3], num) 

    message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    write_byte(TE_WORLDDECAL)
    //write_coord(origin[0]+random_num(-100,100))
    //write_coord(origin[1]+random_num(-100,100)) 
    write_coord(origin[0])
    write_coord(origin[1]) 
    write_coord(origin[2]-36) 
    write_byte(g_iNextDecal) // index 
    message_end() 

 
JohnJДата: Среда, 06.12.2006, 01:51:22 | Сообщение # 3
Лейтенант
Группа: Скриптеры
Сообщений: 65
Репутация: 4
Статус: Не в сети
какова степень применимости списка entities мапперов для нас, кодеров?
 
slogicДата: Среда, 06.12.2006, 12:02:03 | Сообщение # 4
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
Не понял оборота. Декали - это не entity. Это динамический спрайты, видимое кол-во которых (длина очереди) настраивается клиентской переменной.
 
JohnJДата: Среда, 06.12.2006, 13:04:06 | Сообщение # 5
Лейтенант
Группа: Скриптеры
Сообщений: 65
Репутация: 4
Статус: Не в сети
понятно, вот почему я не мог найти их в entity )
я смотрел плагин admin paint, там рисуются точки светящиеся большие... там они рисуются так
Code

 new entid = create_entity("info_target")
 if(!entid) return PLUGIN_HANDLED;

 entity_set_string(entid, EV_SZ_classname, "paint_dot")
 entity_set_edict(entid, EV_ENT_owner, id)
 entity_set_int(entid, EV_INT_movetype, MOVETYPE_PUSH)
 entity_set_int(entid, EV_INT_solid, SOLID_BBOX)
 set_rendering(entid, kRenderFxNoDissipation, r, g, b, kRenderGlow, 255)
 entity_set_model(entid, "sprites/dot.spr")
 IVecFVec(endpoint, Vec)
 entity_set_origin(entid, Vec)


Таким каким-нибудь образом и подобием не лучше будет?
Вопрос на счёт определения координат остаётся открытым, как узнать координаты стенки, или хотя-бы проверить, координаты стенки ли мы получаем?
 
VENДата: Среда, 06.12.2006, 14:39:01 | Сообщение # 6
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Quote
Индексы брать я не помню где (где-то в текстовом файле валяются у каждого мода).
Индексы лучше "запоминать" в своем скрипте по мере их кэширования самой игрой. Это технически верный способ получения индексов не только для decals, но и models и прочего.

Quote
write_coord(origin[2]-36)
Типичный устоявшийся метод "хардкодинга". Не "хардкодьте" все и вся. Это как говорится "lame". -36 - верно не для всех случаев. Игрок может, например, присесть. Данное значение нужно получать динамически из mins pev: write_coord(origin[2] + mins[2])

Добавлено (2006-12-06, 2:39 Pm)
---------------------------------------------
Quote
Вопрос на счёт определения координат остаётся открытым, как узнать координаты стенки, или хотя-бы проверить, координаты стенки ли мы получаем?
TraceLine

Сообщение отредактировал VEN - Среда, 06.12.2006, 14:36:46
 
JohnJДата: Среда, 06.12.2006, 14:42:26 | Сообщение # 7
Лейтенант
Группа: Скриптеры
Сообщений: 65
Репутация: 4
Статус: Не в сети
что такое pev и откуда возмётся значение mins?
 
VENДата: Среда, 06.12.2006, 14:44:14 | Сообщение # 8
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
http://amxmodx.ucoz.ru/forum/9-50-1
 
slogicДата: Среда, 06.12.2006, 20:24:39 | Сообщение # 9
Генералиссимус
Группа: Админы
Сообщений: 1941
Репутация: 47
Статус: Не в сети
VEN, это тестовый скрипт, мне пофигу было. Хотя замечание важное.

Кстати, вместо traceline можно использовать get_user_origin с режимом 3:
Code
/* Gets origin from player.
* Modes:
* 0 - current position.
* 1 - position from eyes (weapon aiming).
* 2 - end position from player position.
* 3 - end position from eyes (hit point for weapon). 
* 4 - position of last bullet hit (only CS). */
native get_user_origin(index, origin[3], mode = 0);

Только в результате tracline больше информации - там структура специальная заполняется.

Сообщение отредактировал slogic - Среда, 06.12.2006, 20:38:10
 
JohnJДата: Среда, 06.12.2006, 21:41:49 | Сообщение # 10
Лейтенант
Группа: Скриптеры
Сообщений: 65
Репутация: 4
Статус: Не в сети
Quote (slogic)
Кстати, вместо traceline можно использовать get_user_origin с режимом 3

Об этом я и писал, когда говорил
Quote (JohnJ)
Узнал, что можно определить координаты на стене с помощью get_user_origin(id,vec,3)

Но как оказалось, это координаты не на стене, а на том объекте, куда смотрит крестик...
 
VENДата: Среда, 06.12.2006, 21:47:56 | Сообщение # 11
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Quote
Кстати, вместо traceline можно использовать get_user_origin с режимом 3

Quote
Узнал, что можно определить координаты на стене с помощью get_user_origin(id,vec,3)

Quote
но вот вопрос: это, как я понял из хелпа, координаты того объекта, на который смотрит курсор...
Фактически, это vecEndPos TraceResult. Т.е. по сути get_user_origin с данной опцией (3) "пуляет" невидимую линию, и vecEndPos - координаты точки "торможения".

Quote
и, если это будет др. игрок, то и координаты будут его?
Т.е. эта точка будет "лежать" на объекте, но не стоит это рассматривать как origin объекта.

Quote
Как же быть если надо всё-же лепить овал на стену?
Делать трассировку с ignore_monsters.

Quote
откуда возмётся значение mins?
Из player's mins pev. Игрок имеет size == maxs - mins
Насчет pev - я приводил ссылку выше: http://amxmodx.ucoz.ru/forum/9-50-1

Какие еще вопросы?

Сообщение отредактировал VEN - Среда, 06.12.2006, 21:52:12
 
JohnJДата: Среда, 06.12.2006, 22:53:18 | Сообщение # 12
Лейтенант
Группа: Скриптеры
Сообщений: 65
Репутация: 4
Статус: Не в сети
О! спасибо! много разъяснил вопросов ) а в конце вопрос "какие ещё вопросы?" это с намёком что мои вопросы надоели? ) надеюсь что нет, у меня их много, но пока не буду их задавать, попробую сам разобраться используя ту информацию, что я уже получил
 
VENДата: Четверг, 07.12.2006, 09:54:23 | Сообщение # 13
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Quote
это с намёком что мои вопросы надоели? )
Это с намеком на то, что они должны появиться. :Р

Quote
у меня их много, но пока не буду их задавать, попробую сам разобраться используя ту информацию, что я уже получил
И это правильно!

 
AMX Mod X Форум » Скриптинг » Помощь по скриптингу » Рисование простых рисунков на стене (издалека)
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2024