Лаборатория скриптов
| |
[MOD]Soosisya_san | Дата: Вторник, 12.10.2010, 12:15 | Сообщение # 1 |
Опытный морпех
Группа: Модераторы
Сообщений: 163
Статус: Offline
| Не знаете как реализовать ту или иную вещь? Пишите сюда. Мы поможем с реализацией. Для подобных вещей в основном сейчас используют тему "Вопросы по DECORATE" и "Вопросы по ACS". Поэтому предлагаю складывать сюда различные функции и скрипты, которые вы использовали в своих проектов, и которые могут оказаться интересны. by bed.intruder
Я модер... Я модер в клане модеров.... Я в Раю!!!))))
|
|
| |
Archi | Дата: Вторник, 12.10.2010, 12:53 | Сообщение # 2 |
Морпех
Группа: Проверенные
Сообщений: 69
Статус: Offline
| Это больше к маппингу относится, в целом.
|
|
| |
[MOD]Soosisya_san | Дата: Вторник, 12.10.2010, 13:15 | Сообщение # 3 |
Опытный морпех
Группа: Модераторы
Сообщений: 163
Статус: Offline
| есть случаи, когда человек придумал интирестную вещь(с точки зрения модинга) но он ни как не может додуматся, как это можно реализовать
Я модер... Я модер в клане модеров.... Я в Раю!!!))))
|
|
| |
[MOD]bed_intruder | Дата: Пятница, 29.10.2010, 21:04 | Сообщение # 4 |
Опытный морпех
Группа: Модераторы
Сообщений: 114
Статус: Offline
| Стыбзено с i.iddqd.ru (автор - я). Недавно мне понадобилась функция, которая преобразует строку в число. Но такой функции не оказалось. Тогда я стал писать свою. Функция будет далее, но сначала немного теории. Как известно, строка есть массив символов. Символы записываются в виде '*' (* - это символ), и представляют число - ACSII-код символа. Так как разница между символами '0' и '9' равна девяти, то для преобразования символа в цифру можно использовать следующее: n = c - '0' (c - символ, n - число). Получить символ из строки можно с помощью функции GetChar. Теперь немного математики. Возьмем, скажем, последовательность цифр "3654". Число 3654 представляет сумму 3*10^3 + 6*10^2 + 5*10^1 + 4*10^0 (x^n - это возведение числа x в степень n (в ACS он означает несколько другое), любое_число^0 = 1). Вспоминаем разряды из начальной школы Здесь есть некая закономерность - разряды идут от числа, равному длине последовательности, уменьшенной на единицу, до нуля. Зная это, можно вывести формулу: sum = a*10^n-1 + b*10^n-2 + ... + x*10^n-n. А вот и сама формула. Так как в ACS нет оператора возведения в степень, то пришлось взять готовую с вики. Также в коде есть функция получения цифры из строки. Code function int pow (int x, int n) //получаем число x в n-ной степени; стыбзено с zdoom.org/wiki/Pow { int y = 1; while (n-- > 0) y *= x; return y; }
function int StringToNum(str string) { int c; //текущий символ int r = strlen(string)-1; //разряд; используется для нахождения суммы (числа) int sum; //а вот и сама сумма for(int i=0;i<strlen(string);i++) //прокручиваем циклом символы в строке { c = GetChar(string,i); //получаем текущий символ if((c >= '0')&&(c <= '9')) //он должен быть от '1' до '9' { c -= '0'; sum += c*pow(10,r--); //используем разряд } else return -1; //если попался посторонний символ, то останавливаем скрипт } return sum; }
function int DigitFromString(str string, int pos) //получаем цифру из строки { return GetChar(string,pos)-'0'; }
Если в числе попадается посторонний символ, будь то буква, знак препинания и прочее, то функция возвращает -1. r-- значит, что сначала число r используется, а потом уменьшится на единицу. Если r-- заменить на --r, то будет наоборот. Вот и все Помните, если нет нужной функции, то всегда можно сделать свою.
|
|
| |
Push_start_to_rich | Дата: Суббота, 30.10.2010, 08:49 | Сообщение # 5 |
Морпех
Группа: Проверенные
Сообщений: 79
Статус: Offline
| [MOD]bed_intruder, а зачем это надо? В смысле преобразовывать строку в число? O.o
|
|
| |
[MOD]Soosisya_san | Дата: Суббота, 30.10.2010, 08:55 | Сообщение # 6 |
Опытный морпех
Группа: Модераторы
Сообщений: 163
Статус: Offline
| мсожно шифровать текст, можно ставмть различные условия, можно менять текст, не создовая нового...
Я модер... Я модер в клане модеров.... Я в Раю!!!))))
|
|
| |
[MOD]Soosisya_san | Дата: Суббота, 30.10.2010, 08:57 | Сообщение # 7 |
Опытный морпех
Группа: Модераторы
Сообщений: 163
Статус: Offline
| Quote (|MOD|bed_intruder) if((c >= '0')&&(c <= '9')) //он должен быть от '1' до '9' у тебя явно в условии написано, что он должен быть от 0 до 9 включительно
Я модер... Я модер в клане модеров.... Я в Раю!!!))))
|
|
| |
cybermind | Дата: Пятница, 05.11.2010, 21:48 | Сообщение # 8 |
Призрак =)
Группа: Проверенные
Сообщений: 9
Статус: Offline
| Выложу сюда по просьбе [MOD]Soosisya_san исходники ACS-скриптов мода "Terminator-800", думаю, может кому-то пригодится: Скачать
|
|
| |
[MOD]bed_intruder | Дата: Суббота, 06.11.2010, 18:27 | Сообщение # 9 |
Опытный морпех
Группа: Модераторы
Сообщений: 114
Статус: Offline
| Делаем стрейф для монстров (DECORATE) Команда A_Chase позволяет монстру ходить. A_FastChase - быстро ходить. Прикол в том, что монстр сначала идет в сторону, а потом - к цели. Если вместе с A_Chase использовать A_FastChase, то во время выполнения A_FastChase "наводка сбивается", и монстр делает рывок (по сути, быстро топает) в сторону. Вот пример зомби, который изредка стрейфится: Code actor NewZombieMan : ZombieMan replaces ZombieMan { states { See: POSS AABBCCDD 4 A_Chase POSS ABCDABCD 1 A_FastChase Loop } } А вот пример зомби, который часто стрейфится: Code actor NewZombieMan : ZombieMan replaces ZombieMan { states { See: POSS AABB 4 A_Chase POSS CDABCDAB 1 A_FastChase Loop } } Естественно, это не настоящий стрейф, а лишь только его имитация. Кстати, такой фокус не работает на лестнице.
|
|
| |
|