|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
Рисование простых рисунков на стене
|
|
JohnJ | Дата: Вторник, 05.12.2006, 23:10:36 | Сообщение # 1 |
Лейтенант
Группа: Скриптеры
Сообщений: 65
Статус: Не в сети
| Возникла интересная идея плагина для кс. Для её реализации необходимо сделать возможность рисования игроком на стене круга (или овала, лучше) с любого расстояния. Как лучше сделать, или может уже кто делал такое, где можно посмотреть? Не встречали ли вы? Подскажите, пожалуйста. ----------------- Узнал, что можно определить координаты на стене с помощью get_user_origin(id,vec,3), но вот вопрос: это, как я понял из хелпа, координаты того объекта, на который смотрит курсор... и, если это будет др. игрок, то и координаты будут его? Как же быть если надо всё-же лепить овал на стену? рисовать овал в воздухе? в принципе можно, но всё-же лучше на стене. Можно ли нарисовать овал в воздухе, если полученные координаты будут совпадать с координатами "постороннего предмета" (игрока), а не со стеной? Как лучше проверить такие случаи чтобы избежать ошибки?
Сообщение отредактировал JohnJ - Среда, 06.12.2006, 00:31:51 |
|
| |
slogic | Дата: Среда, 06.12.2006, 01:34:58 | Сообщение # 2 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| На имя функции не обращай внимания. Ее алгоритм - рисует декли у тебя под ногами. Индекс декали - 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
Статус: Не в сети
| какова степень применимости списка entities мапперов для нас, кодеров?
|
|
| |
slogic | Дата: Среда, 06.12.2006, 12:02:03 | Сообщение # 4 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| Не понял оборота. Декали - это не entity. Это динамический спрайты, видимое кол-во которых (длина очереди) настраивается клиентской переменной.
|
|
| |
JohnJ | Дата: Среда, 06.12.2006, 13:04:06 | Сообщение # 5 |
Лейтенант
Группа: Скриптеры
Сообщений: 65
Статус: Не в сети
| понятно, вот почему я не мог найти их в 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
Статус: Не в сети
| 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
Статус: Не в сети
| что такое pev и откуда возмётся значение mins?
|
|
| |
VEN | Дата: Среда, 06.12.2006, 14:44:14 | Сообщение # 8 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| http://amxmodx.ucoz.ru/forum/9-50-1
|
|
| |
slogic | Дата: Среда, 06.12.2006, 20:24:39 | Сообщение # 9 |
Генералиссимус
Группа: Админы
Сообщений: 1941
Статус: Не в сети
| 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
Статус: Не в сети
| 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
Статус: Не в сети
| 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
Статус: Не в сети
| О! спасибо! много разъяснил вопросов ) а в конце вопрос "какие ещё вопросы?" это с намёком что мои вопросы надоели? ) надеюсь что нет, у меня их много, но пока не буду их задавать, попробую сам разобраться используя ту информацию, что я уже получил
|
|
| |
VEN | Дата: Четверг, 07.12.2006, 09:54:23 | Сообщение # 13 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Quote | это с намёком что мои вопросы надоели? ) | Это с намеком на то, что они должны появиться. :Р Quote | у меня их много, но пока не буду их задавать, попробую сам разобраться используя ту информацию, что я уже получил | И это правильно!
|
|
| |
| AMX Mod X Russian Community © 2006-2024 | |
|
| |