Упоролся скриптами для телекома. Оставляйте тут свои реквесты, и я что-нибудь напишу.
P.S. буду благодарен, если кто-то поделится ссылкой на нормальную документацию
P.S. буду благодарен, если кто-то поделится ссылкой на нормальную документацию
0
Автор: Kinrany · 02.04.2015, 00:43 · 23 сообщений
Проверь, пожалуйста, является ли память отдельной для каждого канала, или общая на телекомм. А то мне лень.Kinrany (01 April 2015 - 14:43) писал: писал:Упоролся скриптами для телекома. Оставляйте тут свои реквесты, и я что-нибудь напишу.
P.S. буду благодарен, если кто-то поделится ссылкой на нормальную документацию
ЦитатаСобственно, форумные кукаретики как всегда в ударе и извернули всё так, как им удобно.
Уверен, что это mem для записи текущей строки, кучка свитчей и проверка с переносом на начало.tizit (02 April 2015 - 02:33) писал: писал:Я пилил замену сообщений на определенный текст (на Таню и паучка конечно же)). Но это секретный скрипт, он даёт силу, а вместе с ней и ответственность.
>Returns null/0 if not foundKinrany (02 April 2015 - 02:59) писал: писал:Более-менее уверен, что память своя для каждого сервера.
На вики недостаточно подробно. Например, не сказано, что возвращает mem(), когда значение не задано.
Нит, не совсем. Нужно разбивать на предложения по ". ", вставлять в массив (лист, я хз как там называется) и вытаскивать по номеру. Но там есть проблемка, т.к. всё это дело вызывается при любом входящем сообщении на любой частоте, а выводится только на общий канал, то целостность текста нарушается, и надо делать проверку на канал в самом начале.intercross (02 April 2015 - 02:37) писал: писал:Уверен, что это mem для записи текущей строки, кучка свитчей и проверка с переносом на начало.
ЦитатаСобственно, форумные кукаретики как всегда в ударе и извернули всё так, как им удобно.
Что. Ты же можешь проверять и изменять $freq.Цитатат.к. всё это дело вызывается при любом входящем сообщении на любой частоте, а выводится только на общий канал
К примеру?Kinrany (02 April 2015 - 03:14) писал: писал:Ладно, плохой пример, но там полно функций с неопределенным поведением.
У процедур не указано возвращаемое значение. У всех или почти всех не описано поведение при некорректном вводе.intercross (02 April 2015 - 07:47) писал: писал:К примеру?
Я делал выполнение кода на коммон сервере, как оказалось, он выполняет код при сообщений на любой из каналов, хотя я думал, что коммон - это 145.9.Kinrany (02 April 2015 - 07:09) писал: писал:Что. Ты же можешь проверять и изменять $freq.
Ссылки на функции хранить нельзя ведь?
ЦитатаСобственно, форумные кукаретики как всегда в ударе и извернули всё так, как им удобно.
////////////////////
// type.ntsl ///////
////////////////////
$TYPE_Number = "num";
$TYPE_String = "str";
$TYPE_Vector = "vect";
NULL = "";
def typeof($var) {
if ($var == NULL) {
return NULL;
}
elseif (isnum($var)) {
return $TYPE_Number;
}
elseif (isvect($var)) {
return $TYPE_Vector;
}
elseif (isstr($var)) {
return $TYPE_String;
}
else {
DEBUG_Broadcast("STR Fatal Error in typeof()");
return NULL;
}
}
def isnum($var) {
$x = $var + 0;
if ($x == $var) {
return TRUE;
}
else {
return FALSE;
}
}
def isvect($var) {
$cp = copy($var, 0, 0);
if ($cp == NULL) {
return FALSE;
}
else {
return TRUE;
}
}
def isstr($var) {
$str = 0 + $var;
$num = tonum($str);
if ($num == NULL) {
return FALSE;
}
else {
return TRUE;
}
}
Окей, ты правKinrany (02 April 2015 - 09:01) писал: писал:У процедур не указано возвращаемое значение. У всех или почти всех не описано поведение при некорректном вводе.
Ну и ещё я подозреваю, что там есть скрытый функционал. Например, есть встроенная implode(), но она даже не упомянута.
Upd.
Ещё не написано, что broadcast() с пустой строкой в качестве сообщения выдаёт "*beep*" и срабатывает только один раз.
Upd.
Переменные по умолчанию имеют значение пустой строки, и вроде как некоторые функции возвращают её при некорректном вводе.
Kartag (01 April 2015 - 14:45) писал: писал:Скрипт, который переставляет слова случайным образом. Йодастанция тринадцать иди.
////////////////////
// debug.ntsl //////
////////////////////
$DEBUG_Freq = 1473;
def DEBUG_Broadcast($content) {
broadcast($content, $DEBUG_Freq, "DEBUG", "Bot");
}
def DEBUG_ArgException($name) {
DEBUG_Broadcast("Argument exception in " + $name + "().");
}
////////////////////
// type.ntsl ///////
////////////////////
NULL = "";
def isvect($var) {
$cp = copy($var, 0, 0);
if ($cp == NULL) {
return FALSE;
}
else {
return TRUE;
}
}
////////////////////
// vector.ntsl /////
////////////////////
// head [1, "a", 3] -> 1
def head($vector) {
if (!isvect($vector) || length($vector) == 0) {
DEBUG_ArgException("head");
return NULL;
}
return at($vector, 1);
}
// last [1, "a", 3] -> 3
def last($vector) {
$length = length($vector);
if (!isvect($vector) || $length == 0) {
DEBUG_ArgException("last");
return NULL;
}
return at($vector, $length);
}
//shuffle [1, 2, 3, 4] -> [2, 4, 3, 1]
//shuffle [1, 2, 3, 4] -> [1, 3, 4, 2]
def shuffle($vector) {
$shuffled = $vector;
$length = length($shuffled);
if (!isvect($shuffled) || $length == 0) {
DEBUG_ArgException("shuffle");
}
$index = 1;
while ($index < $length) {
$rand = rand($index, $length + 1);
swap($shuffled, $index, $rand);
$index += 1;
}
return $shuffled;
}
def yoda($string) {
$string = lower($string);
$string = replace($string, ",", " ");
$string = replace($string, ".", " ");
$string = replace($string, "!", " ");
$expld = explode($string, " ");
$shuffled = shuffle($expld);
$length = length($shuffled);
$first = head($shuffled);
$first = proper($first);
at($shuffled, 1, $first);
$last = last($shuffled);
$last += ".";
at($shuffled, $length, $last);
$string = implode($shuffled, " ");
return $string;
}
$content = yoda($content);
Ну ты же не можешь вставить в строку null, вот строка и превращается в nullKinrany (03 April 2015 - 09:29) писал: писал:Охренеть, replace() выдает null, если третий аргумент - null.
Да, там стек запросов жеKinrany (03 April 2015 - 12:28) писал: писал:Скрипт вроде работает. Хорошо проверить не получилось, на грине слишком сложно дойти от шаттла до телекома.
Upd.
Случайно обнаружил, что broadcast() срабатывает только один раз для каждого сообщения. Если сделать:
broadcast("hello world");
broadcast("hello world");
То в основном канале будет только одно сообщение.
Тут null == "", было бы логично при вставке null в строку возвращать ту же строку.ЦитатаНу ты же не можешь вставить в строку null, вот строка и превращается в null