|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
Нубский вопрос, но...
|
|
Arch | Дата: Суббота, 02.12.2006, 04:46:35 | Сообщение # 1 |
Рядовой
Группа: Пользователи
Сообщений: 6
Статус: Не в сети
| ...хотелось бы получить квалифицированный ответ (помимо RTFM) Есть задумка - написать плаг (cs 1.6, патч 21, мод amxx), который при юзании прицела в снайперках показывал бы кратность зума и расстояние до цели. Существует ли такой плаг или похожие? Если нет - то не будет ли любезен многоуважаемый джинн дать кусок рабочего кода, описывающий видимый конструктивный минимум? P.S: Да, я знаю, что это наглость - просить за меня сделать 90% работы, но чем чёрт не шутит... На самом деле буду рад любой помощи
While all answers are replies, not all replies are answers.
Сообщение отредактировал Arch - Суббота, 02.12.2006, 04:52:12 |
|
| |
AlMod | Дата: Суббота, 02.12.2006, 11:06:39 | Сообщение # 2 |
Сонный кодер
Группа: Админы
Сообщений: 600
Статус: Не в сети
| Есть такая фигня в АМХХ: origin - местоположение игорка в пространстве Code | get_user_origin(id,origin[3],mode=0) | Необходим инклуд <fun> при моде = 0 - координаты игрока, при моде = 3 (по-моему) - точка, куда он смотрит. Потом Code | get_distance(orig1[3],orig2[3]) | Возвращает расстояние Ну а кратность зума можно определить количеством кликов поль АльтФайру
|
|
| |
VEN | Дата: Суббота, 02.12.2006, 12:35:27 | Сообщение # 3 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Для get_user_origin fun не нужен, он идет с core, ты путаешь с set_user_origin
|
|
| |
AlMod | Дата: Суббота, 02.12.2006, 13:05:39 | Сообщение # 4 |
Сонный кодер
Группа: Админы
Сообщений: 600
Статус: Не в сети
| Но в принципе то верно )
|
|
| |
Arch | Дата: Суббота, 02.12.2006, 18:46:13 | Сообщение # 5 |
Рядовой
Группа: Пользователи
Сообщений: 6
Статус: Не в сети
| Решил начать хотя бы просто с постоянного выведения дистанции HUD. Закопался в референс, и уже третий час пытаюсь хоть что-то понять... Млин... вот что значит забить на математику в школе... Насколько сообразил мой кривой мозжечок, начать надо так: #include <amxmodx> Затем - что? public plugin_init? Если да, то хм, получается так: public plugin_init() { new g_plorig = get_user_origin(32,origin[3],mode=0) new g_aimorig = get_user_origin(32,origin[3],mode=3) get distance(g_plorig[3],g_aimorig[3]) } Только что-то мне говорит, что plugin_init тут ни при чём... Собственно, следующий тупой вопрос: а что дальше?
While all answers are replies, not all replies are answers.
|
|
| |
VEN | Дата: Суббота, 02.12.2006, 18:57:52 | Сообщение # 6 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Э-э-э, да тебе нужно сначала основы усвоить. У меня с нуля тебя "поднять" терпения не хватит. Читай оригинальные мануалы, что не понятно - спрашивай. http://wiki.amxmodx.org/index.php/Category:Scripting_%28AMX_Mod_X%29 - scripting
Сообщение отредактировал VEN - Суббота, 02.12.2006, 18:59:17 |
|
| |
Arch | Дата: Суббота, 02.12.2006, 19:16:10 | Сообщение # 7 |
Рядовой
Группа: Пользователи
Сообщений: 6
Статус: Не в сети
| Я там с утра пасусь. И на http://www.amxmodx.org/doc/ ещё пасусь активно. Только проблема в том, что непонятно вообще ничего. Вся беда в том, что как считать - я понимаю, это элементарно. Кривое (точнее, наоборот, прямое, но не с моей user side) представлениe типа string - тоже усвоил. Операторы if-then-else проблемы вообще никогда не представляли. А вот как строить функции, к чему привязывать переменные и константы, когда и зачем это надо делать - уже лес непролазный. Мозги уже кипят, а сатори всё нет и нет... P.S: html/cs/js/vbs - это я могу понять. Даже xml и php местами ясно. mrc, tcl - понимаю отлично. Вот функция, вот приём, вот рабочий пример к ним. Делаю своё, смотрю - ага, оно. Похоже, я понимаю, чем скриптование от программирования отличается - наличием исчерпывающего справочного руководства, предусматривающего пошаговое построение программы...
While all answers are replies, not all replies are answers.
Сообщение отредактировал Arch - Суббота, 02.12.2006, 19:25:52 |
|
| |
VEN | Дата: Суббота, 02.12.2006, 19:20:17 | Сообщение # 8 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Давай постепенно. Что конкретно не понятно? Задавай конкретные вопросы для конкретного случая - попытаюсь ответить. Не бойся задавать много или простые вопросы. Вариант "не понятно все" не пройдет. :]
|
|
| |
Arch | Дата: Суббота, 02.12.2006, 19:53:35 | Сообщение # 9 |
Рядовой
Группа: Пользователи
Сообщений: 6
Статус: Не в сети
| Умгу, тогда щас попробую сформулировать что-нибудь "начальное"... только вопросы будут, наверное, не простые, а глупые. Так... 1. Чтобы хоть что-то понимать, надо как можно быстрее организовать вывод в консоль. Делается это через console_print(id,сообщение). Значит, если я хотю, чтобы скрипт по набору команды говорил hello world, надо: #include <amxmodx> new const helloworld[] = "Hello world" public plugin_init() { register_clcmd("hwrl",console_print(id,helloworld)) } Так? P.S: Про "всё непонятно" - знаю по собственному опыту обучения народа мирковским скриптам, это просто крик души был
While all answers are replies, not all replies are answers.
|
|
| |
VEN | Дата: Суббота, 02.12.2006, 21:07:33 | Сообщение # 10 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Советую почитать инклуды - у тебя синтаксис неправильный. Открыли amxmodx\scripting\include\amxmodx.inc и видим: /* Registers function which will be called from client console. */ native register_clcmd(const client_cmd[],const function[],flags=-1, info[]=""); client_cmd - клиент команда, которая будет вызывать функцию function flags - требуемый уровень доступа (опционален) info - описание команды (опционально) function будет вызываться с прототипом (id, level, cid), где id - индекс (номер игрока), level - уровень доступа команды, cid - индекс команды Рекомендую почитать скрипты в amxmodx\scripting\, чтение помогает понять иногда лучше чем описание.
Сообщение отредактировал VEN - Суббота, 02.12.2006, 21:09:30 |
|
| |
Arch | Дата: Воскресенье, 03.12.2006, 02:43:46 | Сообщение # 11 |
Рядовой
Группа: Пользователи
Сообщений: 6
Статус: Не в сети
| Спасибо за терпение, я, кажется, разобрался в элементарщине А теперь - другой вопрос: могу ли я объявлять внутриязыковые алиасы по примеру css в html (а лучше - по примеру mirc), не создавая новых функций вместе со всем багажом? Скажем, я хочу, чтобы в переменных не надо было задавать длину, а тип всегда расценивался как string. К примеру, мне нужна внутриязыковая функция, которая сведёт задание переменной к простому выражению set foo "bar", создавая переменную foo, содержащую bar типа string. При этом обработка процесса тоже должна протекать без моего участия - т.е., к примеру, если эта переменная уже есть, то она будет перезаписана вне зависимости от содержания... Или я слишком много хочу, и надо создавать собственный скриптовый язык на основе имеющегося программного? Плагин, который позволит облегчить написание плагинов?.. Да, попутно ещё вопросы: как заставить функцию пользоваться переменной, а не константой, в качестве аргумента? Например, тот же client_print требует id, type, const message. Что нужно сделать, чтобы получить аналог, работающий на var? Поможет ли загоняние в константу содержимого переменной, которое будет получено в результате предшествующих операций, или я неправильно понимаю структуру языка? И ещё - какой id соответствует id вызвавшего срабатывание скрипта?
While all answers are replies, not all replies are answers.
Сообщение отредактировал Arch - Воскресенье, 03.12.2006, 03:03:43 |
|
| |
VEN | Дата: Воскресенье, 03.12.2006, 11:38:32 | Сообщение # 12 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Рекомендую почитать http://www.compuphase.com/pawn/pawn-lang.pdf Это исчерпывающий guide, позволяет быстро и эффективно освоить Pawn. Без него люди месяцами и даже годами "плавают" в темноте или полумраке. Code | как заставить функцию пользоваться переменной, а не константой, в качестве аргумента? | В заголовках/прототипах функций const атрибут используют, чтобы сказать нам о том, что посланный массив не изменится в теле самой функции. Почему я сказал "массив" а не "строка"? Все дело в том, что строка - это массив ASCII символов: string[] = {'h', 'i', '^0'} Мы имеем 3 символа как три элемента массива. ASCII символов может быть представлен как число. Поэтому строка может быть представлена как последовательность чисел. Т.е. string[] = {'h', 'i', '^0'} то же самое, что и string[] = {104, 105, 0} В Pawn нулевой char '^0' равен 0 и указывает конец строки. ^ - контрол char, используется для указания спец. символов и т.п. Например: ^n - новая строка, ^t - табуляция, ^" - кавычка и т.д. Контрол char можно изменять в скрипте: #pragma ctrlchar char В Pawn массивы передаются из функцию в функцию по ссылке (by reference (byref)). Т.е мы можем передать массив и изменить его. const атрибут гарантирует неизменность массива в теле данной функции. int/bool/float по умолчанию не передаются byref (т.е. как бы копируются), но можно форсировать byref и для них: func(&int), func(&Float:f), func(&bool:b) Важно понимать, что технически все данные int/float/bool/char "слеплены из одного и того же теста" - cell. Поэтому чтобы отличать их, в Pawn существуют тэги (Float, bool и т.д.). Можно использовать свои тэги, например: mytag:var Т.о. имеется возможность изменять тип, например: new bool:b // содали булевую b new var = _:b // создали целую var и присвоили значение b new bool:b2 = bool:var // создали булевую b2 и присвоили значение var, т.е. b Quote | И ещё - какой id соответствует id вызвавшего срабатывание скрипта? | Не понял вопроса.
Сообщение отредактировал VEN - Воскресенье, 03.12.2006, 11:48:17 |
|
| |
AlMod | Дата: Воскресенье, 03.12.2006, 16:57:07 | Сообщение # 13 |
Сонный кодер
Группа: Админы
Сообщений: 600
Статус: Не в сети
| Не хотелось бы критиковать, но у нас статья есть на сайте как раз про это!
|
|
| |
VEN | Дата: Воскресенье, 03.12.2006, 18:13:01 | Сообщение # 14 |
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Тут речь несколько о другом.
|
|
| |
JohnJ | Дата: Вторник, 05.12.2006, 23:20:06 | Сообщение # 15 |
Лейтенант
Группа: Скриптеры
Сообщений: 65
Статус: Не в сети
| вот про это не понял new var = _:b // создали целую var и присвоили значение b что за _:? а что будет, если просто new var = b?
|
|
| |
| AMX Mod X Russian Community © 2006-2025 | |
|
| |