Mehanik Yar если спавнишь скриптом то алгоритм функции примерно такой
1 Спавним
2 Дан ли инфопоршень чтобы делать его другом?(заведомо создай его и выдай когда надо, он нужен как "флажок")
3 Если дан то делаем другом
А если не скриптом, тогда надо перебирать все(возможно у тебя онлайн) объекты и получать его по каким-нибудь признакам
Dark Scripter, хоть какая-то информация, спасибо.
Хоть твой вопрос адресован не мне, все же отвечу: данная функция меняет отношение непися (в данном случае) к гг на друга.
Dark Scripter, а, тогда извиняюсь :) Mehanik Yar, странные вопросы ты однако задаешь. Примеров назначения отношения гейм объектов море. Ты просто можешь посмотреть другие файлы.
Если ты не желаешь искать - в логике пишешь: %=actor_friend% - этим непись будет тебе другом, если он не из другой группировки.
Dark Scripter я стандартные функции не исп., лень искать, проще заново написать, а универсальность(возможность её сделать) видится по ходу написания.
В чем может быть косяк?
Сделал непися с логикой, он должен быть на милитари, спавню скриптом(!), на милитари он не появляется...появляется он чудесным образом на Агропроме, но когда прихожу на Агропром там его нет....и он вообще исчезает куда-то не пойми куда. Если спавню его на Кордоне то все нормально - он воюет, если не воюет, то ясное дело вылетает(ему до милитари много топать, а у него там пути прописаны). Уже и по условию прихода актора на милитари его пытался заспавнить, тогда он вообще не спавнится.
Во всем виновата интеллектуальная система гулагов...будь она не ладна.
Логика не применяеться в spawn_sections когда скриптом спавнить? То есть логику ему надо после спавна пакетом переписывать, а потом загонять непися в офлайн и возвращать обратно, чтобы все это применилось, или спавнить его в оффлайне.
...продолжу монолог.
Даже если отказатся от путей, и допустим написать логику чтобы сидел на стуле, все равно ведь надо будет писать одну точку пути, так? Ибо он попадёт под дефолтную логику, и будет вести себя "дефолтно".
отредактировал(а) Struck: 24-06-2011 13:49 GMT3 час. Снова в строю.
Скажите кто-ньть:
К примеру если я на кордоне, а НПС дал объявление (куплю или продам оружие)
на Радаре или складах.Вопрос - если я туда приду ,то какова вероятность что к тому времени
НПС будет на месте??
Struck
К чему подобные 'монологи' (#1495594)? Призыв не обращать внимания на стандартные коды/функции и писать свои или призыв к лени, из-за которой готовое и проверенное заменяется сурогатом?
Во всем виновата интеллектуальная система гулагов...будь она не ладна.
Виноват IQ модмейкера ..., который остается на уровне "интеллектуальной системы гулагов", а точнее: чем порождено - то и имеем.
Логику скриптом не подсунуть при спавне объекта, но(!) ничего не мешает сделать 'аля-all.spawn', засунув нужную логику в саму секцию спавнящегося объекта. Тогда и с нет-пакетами и офф-онлайнами не придется ковыряться (если не надобно или обременительно). lt BASTER
Этот топик не по вопросам игры с модами, а по модификациям (процессу внесения изменений).
Но отвечу: Подобные сообщения выводит скрипт офф-лайн-алайфа, т.е. NPC сам в оффлайне и никуда не денется со своего места, пока тот же модуль иль не убъет его иль не отправит еще куда.
В дальнейшем адресуй вопросы в топики соответствующего мода.
Скажите плз, есть ли методы вырезания текста в таком случае: у меня есть строка, в ней находятся несколько неизвестных слов. Эти слова разделены пробелами. Мне нужно получить первое слово, т.е удалить все, что идет после пробела. Как так вырезать?
отредактировал(а) SkyLoader: 25-06-2011 10:50 GMT3 час.
5.4 - Работа со строками
Библиотека предоставляет основные функции для работы со строками, такие как поиск и выделение подстрок, а также поиск по шаблону. Строки в Lua индексируются с 1 (а не 0, как в C). Индексы могут быть отрицательными и интерпретируются как индекс с конца строки. Т.е. последний символ имеет позицию -1, и т.д.
Библиотека работы со строками предоставляет все функции в таблице string. Она также устанавливает поле __index метатаблицы строк на таблицу string. Также, Вы можете использовать строковые функции в объектно-ориентированном стиле. Например, string.byte(s, i) может быть записано как s:byte(i).
string.byte (s [, i [, j]])
Возвращает числовые коды символов s, s[i+1], ···, s[j]. По умолчанию значение для i равно 1; по умолчанию значение для j равно i.
Напоминаем, что числовые коды символов не одинаковы на разных платформах.
string.char (···)
Принимает 0 или более целых чисел. Возвращает строку, длина которой равна количеству параметров, и каждый элемент строки равен символу с кодом соответствующего параметра.
Напоминаем, что числовые коды символов не одинаковы на разных платформах.
string.dump (function)
Возвращает строку, содержащую двоичное представление данной функции, так, что если после этого вызвать функцию loadstring указав ей в качестве параметра эту строку, то мы получим копию функции. function должна быть Lua функцией без внешних локальных переменных (upvalues).
string.find (s, pattern [, init [, plain]])
Ищет первое вхождение шаблона pattern в строку s. Если поиск успешен, то find возвращает индексы s где найдено совпадение с шаблоном, т.е. начало и конец вхождения; иначе возвращает nil. Третий, необязательный числовой параметр init указывает откуда начинать поиск; по умолчанию он равен 1, также он может быть отрицательным. Значение true в четвертом, необязательном параметре plain выключает возможность поиска по шаблону, в этом случае производится поиск подстроки как есть, т.е. считается, что она не содержит «шаблонных» ("magic") символов. Помните, что если указан параметр plain, то параметр init должен быть указан тоже.
Если шаблон содержит подшаблоны (captures) и поиск успешен, то найденные подстроки также возвращаются, сразу после двух индексов.
string.format (formatstring, ···)
Возвращает параметры, передаваемые в функцию, отформатированные в соответствии первым параметром (который должен быть строкой). Строка формата должна строиться по тем же правилам, что и строка формата для семейства C функций printf. Отличие только в том, что опции/модификаторы *, l, L, n, p и h не поддерживаются, но имеется дополнительная опция q. Опция q позволяет вернуть строку в формате, безопасно воспринимаемом Lua интерпретатором: сама строка выводится в двойных кавычках, а все двойные кавычки, перевод строки, символы с кодом 0 и обратный слеш внутри строки экранируются обратным слешем (escaped). Например, вызов
string.format('%q', 'a string with "quotes" and \n new line')
возвратит строку:
"a string with \"quotes\" and \
new line"
Опции c, d, E, e, f, g, G, i, o, u, X, и x должны использоваться только для числовых параметров, а q и s - для строковых.
Эта функция не принимает строковые параметры, содержащие символы с кодом 0, кроме параметров для формата, имеющего опцию q.
string.gmatch (s, pattern)
Возвращает итератор, который, при каждом вызове, возвращает следующее захваченное значение. Если шаблон pattern не содержит подшаблонов (captures), то при каждом вызове будет выполнено простое сравнение.
Например,следующий цикл
s = "hello world from Lua"
for w in string.gmatch(s, "%a+") do
print(w)
end
будет проходить по всем словам в строке s, печатая их построчно по одному. Следующий пример собирает все парные ключи key=value из указанной строки в таблицу:
t = {}
s = "from=world, to=Lua"
for k, v in string.gmatch(s, "(%w+)=(%w+)") do
t[k] = v
end
Для данной функции, символ '^' в начале шаблона (т.е. признак поиска с начала строки) не работает, поскольку это помешает итерации.
string.gsub (s, pattern, repl [, n])
Возвращает копию s, в котором все найденные строки (или только n строк, если этот параметр задан) были заменены строкой замены, указанной repl. repl может быть строкой, таблицей, или функцией. Функция gsub также возвращает как второе значение общее количество произведенных замен.
Если repl - строка, то для замены используется ее значение. Символ % работает как символ со специальным назначением: любая последовательность в repl в виде %n, где n - число от 1 до 9, заменяется на n-ную подстроку (см. ниже). Последовательность %0 заменяется на всю найденную строку. Для задания одиночный символа % используется запись %%.
Если repl является таблицей, то она запрашивается при каждом совпадении шаблона со строкой, с использованием первой захваченной подстроки в качестве ключа; если шаблон не содержит подшаблонов, то в качестве ключа используется найденная строка целиком.
Если repl является функцией, то эта функция вызывается каждый раз, когда обнаруживается совпадение. В качестве параметров ей передаются все захваченные подстроки; если шаблон не содержит подшаблонов, то в функцию передается найденная строка целиком как единственный аргумент.
Если значение, возвращаемое таблицей или функцией является строкой или числом, то это значение используется для замены; в противном случае, если значение равно false или nil, то замена не производится (т.е. найденное значение остается без замены).
Необязательный последний параметр n ограничивает максимальное количество замен. Например, если n равно 1, то будет выполнено не более одной замены.
Несколько примеров:
x = string.gsub("hello world", "(%w+)", "%1 %1")
--> x="hello hello world world"
string.len (s)
Возвращает длину строки, переданной в качестве параметра. Пустая строка "" имеет длину 0. Вложенные символы с кодом 0 также считаются как символ, т.е. строка "a\000bc\000" имеет длину 5.
string.lower (s)
Возвращает копию строки s, где все заглавные буквы заменены на прописные. Все остальные символы остаются неизменными. Понятие «заглавные буквы» зависит от текущей кодовой страницы.
string.match (s, pattern [, init])
Поиск первого вхождения шаблона pattern в строку s. В случае обнаружения, match возвращает захваченные значения (captures); в противном случае возвращает nil. Если pattern не содержит подшаблонов, то производится простое сравнение. Третий, необязательный числовой параметр init указывает с какого символа строки необходимо начинать поиск; по умолчанию этот параметр равен 1. Также он может быть отрицательным.
string.sub (s, i [, j])
Возвращает подстроку строки s, которая начинается с символа с индексом i и продолжается до символа с индексом j; i и j могут быть отрицательными. Если j не указан, то считается, что он равен -1 (то же самое, что длина строки). В частности, вызов string.sub(s,1,j) возвращает начальную часть строки с длиной j, а string.sub(s, -i) возвращает конец строки s длиной i.
string.upper (s)
Принимает строку и возвращает копию этой строки, где все прописные буквы заменены на заглавные. Все остальные символы остаются неизменными. Понятие «прописные буквы» зависит от текущей кодовой страницы.
А в твоем случае нужно сделать так:
local old_text = "mama mila ramy"
local new_text = string.sub(old_text,1,string.find(old_text," ")-1)
Ma$ter
Вариант конечно рабочий, но не следует забывать о крайних условиях!
Если исходная строка НЕ**5002618d69873ce82a42**ew_text = ""
local p = string.find(old_text," ")
if p then
new_text = string.sub(old_text,1,p-1)
end
...[/code] SkyLoader
Если важно не 'лишь бы работало', то следует уточнять исходные данные. При работе со строками многое зависит от обрабатываемых симоволов. Если не требуется обрабатывыть 'все-и-вся', т.е. строка заведомо содержит корректные для 'eng' буквы и/или цифры - то патерны для обработки могут значительно упростить требуемый код. P.S. Опоздал ... singapur22 уже дал ответ. :-)
Ну тогда в качестве разминки мозгов:
Чем отличается такая строка: mama mila ramy
от такой:
'mama\160mila\160ramy
? ;-) B? кстати, 3-й способ:[code]local sFullStr = "mama mila ramy"
local sFirstWord = sFullStr:match('[^%s]+') or '' --/ все, что до первого пробела[/code]
SkyLoader Для справки (Касается всех, кто не в курсе):
Манипулируя кон
отредактировал(а) singapur22: 25-06-2011 11:46 GMT3 час. Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Ну тогда в качестве разминки мозгов:
Чем отличается такая строка:
mama mila ramy
от такой:
mama\160mila\160ramy
?
Ничем. Код "\160" соответствует одному пробельному символу, русского алфавита.
Аналог: "\032" код пробела латинского алфавита.
Код "\000" будет производить обрезание строки, до своего места. Фактически, некий разделитель строки от комментария, внутри строки.
Тем более есть и ему замена не менее удобная: см. #1495972 на предыдущей страничке
Звиняюсь, не увидел. :-G
Короче говоря, способов много. Но сколько кодов не копал, в основном (за редким исключением), используются стандартные (не требующие напряжения мозгов) способы. И ведь это касается не только парсера строк, но и всего остального.
Как говорилось в электронике (в своё время занимался), "Не стандартный подход, даёт наилучшие результаты!!!". Но многие этим пренебрегают, и стараются мыслить в одном укоренившемся направлении.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
singapur22
(о трениревке мозгов)
Опять ты обобщаешь. :-)
'Ничем' - слишком категоричное выражение. Приведу примеры, когда это 'ничем' можно использовать в модинге игры:
а) как известно, вывод строки в лог-файл с использованием консольной команды get_console():execute("my_string") приводит к обрыву выводимой строки на первом же пробеле, что вынуждает использовать или команду якобы загрузки сохраненной игры с именем "my_string" или заменять типа: string.gsub("my_string","%s",'_').
Использование '\160' в качестве замены позволяет сохранить текст в лог-файле неизменным.
б) При авто- или ручном переносе длинных строк по-словам, порою требуется оставлять заведомо неразрываемые сочетания слов. В этом случае использование псевдо-пробела также позволяет получить желаемое.
... и т.д.
Ну а то, что предпочитают не ломать мозги - ты прав, в основном идут по пути - зачем изобретать 'америку', когда есть готовое и проверенное. Вот и наращивают коды далеко не оптимальными вариантами. Ну а когда начинает игра лагать иль вылетать из-за нехватки ресурсов - начинают задумываться, но ... уже навороченное мало кто хочет разгребать.
Strchi
Ты на митинге иль где? 'Народ' весь там ..., а тут все сами по себе.
Artos Ну, в подробности использования байт-кодов символов, в текстах, я ещё не вдавался. Но спасибо за небольшую консультацию. По крайней мере будет с чего начать.
Strchi Даже в оригинале артефакты спавнятся не на столько часто, чтобы ими можно было набивать рюкзаки не прилагая усилий. Проблема лишь в том, что в all.spawn артефакты внесены изначально в немалом количестве (от 10 до 30 штук, почти на каждой локации). Вывод. Почисти all.spawn от артефактов, и они станут действительно редкой вещью.
А если ещё установить систему подбирания артов нпс'ми, да мод "детектор артефактов" последней версии, да чтоб нпс'ы их не просто таскали, а относили торговцу, то найти артефакт будет гораздо сложнее, чем в ЧН, или в ЗП. Я бы даже сказал, почти невозможно.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
DIFx Нет. Текстуры нет. Перекрестие, это результат рисования линий, и производится он внутри движка. Ты лишь можешь его отключить, или изменить длину и цвет линий.
Как вариант, можно выводить на худ по центру требуемый рисунок, предварительно отключив перекрестие.
Для справки. В какомто моде, (не помню в каком) в перекрестии убрали центральную точку путём правки dll. Какая dll за него отвечает, не в курсе.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Singapur22
Ну почему же не применяют "другие" шаблоны. Всё зависит же от целе**5005618d69873ce82a42**l s = ' blabla flafla '
local w = s:match('%a+') or ''
[/code]
Gun12 На сколько я помню, функция match() в Сталкере не работает, поэтому везде используются устаревшие find() и gfind(). Но, не в этом суть. А суть в том, что большинство скриптёров используют стандартные способы (строка > индекс > обрезание), даже если индекс больше нигде не применяется.
Кстати "%a+" плохой вариант шаблона, так как извлекает только буквенные символы. Когда слово может иметь любой символ, за исключением символа разделения, то шаблон должен иметь форму исключения.
P.S.
Я никого не сужу. Сам также делаю, в большинстве случаев. Но я по крайней мере, после, стараюсь (не всегда удачно и не всегда в полной мере) оптимизировать и модернизировать код. Дабы жрал меньше ресурсов, и занимал при этом меньше места. Думаю всё дело во времени. Оптимизация отнимает больше времени, чем само написание кодов. А времени у всех почемуто не хватает. Как будто завязаны контрактом, и малыми сроками его выполнения. :-G
отредактировал(а) singapur22: 25-06-2011 13:23 GMT3 час. Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.