#maip :
а как самому добавить предмет ? я хочу добавить в ТЧ ЭКЗОСКЕЛЕТ ДОЛГА И СВОБОДЫ.или есть уже такие моды чтобы экзоскелеты есть но если научусь то добавлю туда и монолита экзик и всех группировок. а как группировки создавать?можете дать ссылку на мод где уже есть новая группировка?я много аз читал,спрашивал как самому сделать но не понимаю у меня этих файлов нету же,мне любую только НОВУЮ.только ответьте пожалуйста не сюда а на мейл.ру valera281098@mail.ru или на мой сайт http://stalker-fanats.ucoz.ru/ ну или на аську 561924617 ! ПЛИЗ ОТВЕТЬТЕ НУ А ЕСЛИ НЕ ХОТИТЕ БОХ С ВАМИ СЮДА ОТВЕЧАЙТЕ!! Я НЕ ОБИЖУСЬ!
Есть мода на портале в файлах. Добавляет много экзиков разных.
Журнал
- модель M79
- модель HK SL-8
- модель Milkor m32 WIP
Поставил мод-"Зона поражения 2.Отвеный удар".По моему так называется.Сначала нарадоваться не мог.Сначала.До тех пор пока не убили.А потом начались различные проблемы-то вылет при синхронизации,то не возможность загрузки с последнего сохранения,то,если всё таки вошёл в игру,сделав пару шагов вылетаю из игры.
подскажите!!!
stable_generate_fnames это фаил с именами сталкеров
stable_generate_snames это фаил с кличками
я хочу изменить имена и половина имен сталкеров удалил (их там гдето 100 имен) у меня получилась около 60-десяти. в игре теперь некоторые сталкеры называются (name_stalker_93 name_stalker_94 name_stalker_95 ит.д. ) как сократить эти имена со 100 до 60 чтоб лишнии непоявлялись.
singapur22
у меня тут масса вопросов накопилась пока меня здесь не было.
В общем прогнал через SCITE почти все базовые функции (кроме API - это отдельная песня).
Вопрос первый:
в функциях вида filename:close() и т.д. какая форма записи должна быть у имени файла?
например для функций переименования или удаления файла я пишу так
os.rename("C:\\test\\имя_файла.doc","C:\\test\\имя_файла.doc")
или вот так для итерации файла построчно:
local txt = "C:\\test\\logic_army.ltx"
for line in io.lines(txt) do
но такой вариант - полный путь до файла, расширение и кавычки - работая здесь, не работает для filename:имя_функции() Как надо правильно?
Второе: - io.open ("C:\\test\\имя_файла.doc", "w+") - стереть все данные получается без проблем, а вот как делать запись\дозапись\перезапись данных файла (включая нужный режим)- не понял.
Третье: создал модуль, который запускаю из стороннего файла через require , путь до файла переопределяю так:
package.path = package.path..".\\?.lua;C:\\new\\?.lua"
подбирал этот вариант методом тыка - и так и не понял зачем вот это .\\?.lua -без него не работает - функция файл не находит.
Четвертое:
хочу сделать скрипт который будет парсить нужные мне файлы и находить в них заданные строчки.
Вопрос а) :можно ли строчки указывать в таком виде
"inv_weight%s+=%s*%a+" а затем через какую-нить функцию поиска по шаблону (string.match или string.gmatch) находить нужную последовательность заданную опять же шаблоном - в данном случае %s*%a+ и получать ее реальное значение.
вопрос б): как задавать шаблоны пути до файлов - указывая только расширение - без конкретного имени.
уже третий день мучаюсь с этой проблемой и никак не пойму как надо делать...
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik, по парсеру примерно так (я без компа, поэтому проверить не могу) :
function search(fname) --укажешь путь
local file = assert(io.open(fname, "r")) --assert -чтобы в случае чего выскочило сообщение об ошибке
local fsize = file:seek("end") --посмотрим какой длины наш файл
if fsize == 0 then --если пустой ...
file:close() --закрываем, зачем он нужен если пустой:-)
return "" --и вернем то, что он из себя представляет
end
--ну а если не пустой...
for line in io.lines(fname) do
if string.find(line,"^%s*(inv_weight)%s*=") then --^%s* потому, что вдруг у тебя будет такая же закомментированная(ые) строка
return string.gsub(line,"=%s*(%d*%p?%d*)","%1") --отрезаем лишнее и возвращаем только цифры(а если ничего не записано, то вернется пустая строка)
end
end
end
P.S. Для сохранения используй io.flush()
отредактировал(а) Gun12: 07-11-2009 20:43 GMT3 час. Не стань номинантом премии Дарвина.
Люди,а можно сделать к примеру вот так:если я скачал мод на одном сайте(мод не мой),то я могу его разместить на этом портале?Я имею в виду вопросы не возникнут?
Человек предполагает, а располагает кто-то другой.
Gun12
огромное тебе , спасибо :-) а то я с это io.lines мучился - выводила мне либо все строки файла, либо ничего.
вот так пытался:
for line in io.lines("C:\\test\\items.ltx") do
if line == "inv_weight%s*%=%s*%d+" then
value = string.match(line,"%d+")
print(value)
break
end
end
end
кстати - управляющие символы для которых используется мэджик символ - %с - это какие? ~ # @ & - вот эти или какие то другие?
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Управляющие символы - это к примеру СR-возврат каретки, LF-перевод строки и др. В общем невидимые символы. В SсiТЕ ты можешь их отобразить и посмотреть. Глянь сюда _http://ru.m.wikipedia.org/wiki/Управляющие_символы?wasRedirected=true
З.Ы. Ты испытывал мою писанину? Хоть работает?
отредактировал(а) Gun12: 07-11-2009 21:33 GMT3 час. Не стань номинантом премии Дарвина.
ДатчикХабара Извини,что опять спрашиваю.Я имею в виду,СПЕЦИАЛЬНО договариваться с автором не надо о размещении мода на портале?А то "поставлю" мод на портал,а он...
Человек предполагает, а располагает кто-то другой.
1. Про ^%s* в начале я уже писал. Конечно если тебе нужно чтобы нашлись все записи, то надо убрать.
2. С %d+ ты немного не прав. Если ты лично напишешь в строке ... = 50 (например килограмм), то сработает. А если там будет запись
0.5 (вернет 0) или
.5 (вообще не найдет)? Всё может быть, лучше перестраховаться.
отредактировал(а) Gun12: 07-11-2009 21:55 GMT3 час. Не стань номинантом премии Дарвина.
Gun12
сразу извиняюсь если чего недопонял - (шаблоны вещь хитрая) :-)
в общем шаблон строки я сделал такой
if string.find(line,"^%s*(inv_weight)%s*%=%s*%d*%.?%d+")
то есть после знака равно любая совокупность пробелов (в кол-ве от нуля и больше), любая совокупность цифр(в кол-ве от нуля и больше - так как может и не быть ее там), единственное вхождение точки (а больше ее там и не будет - а при использовании %p находились ненужные символы), любая совокупность цифр (в кол-ве от 1 и больше)
не понял почему ты использовал функцию string.gsub - она же возвращает копию строки с заменой части символов по шаблону?
поэтому использовал итерацию по шаблону "цифра - точка - цифра"
for k in string.gmatch(line,"%d*%.?%d+") do
если убрать начало и енды то функция так выглядит:
for line in io.lines("C:\\test\\items.ltx") do
if string.find(line,"^%s*(inv_weight)%s*%=%s%d*%.?%d+") then
for k in string.gmatch(line,"%d*%.?%d+") do
print (k)
break
печатает все найденное по шаблону - что уже хорошо.
только почему то break не срабатывает - надо чтобы после первого нахождения был выход из цикла.
в общем ты мне сильно помог разобраться - еще раз спасибо.
добавлено спустя 22 минут
Gun12
слушай я щас подумал - надо ведь такой вариант типа .3 как то заменять надо на 0.3 - а то получается не гуд...мне ведь потом найденные значения надо не только сохранять но и плюсовать к друг другу.
отредактировал(а) erlik: 07-11-2009 22:54 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik, да,виноват - прозевал. Но я всё-таки настаиваю на string.gsub в таком варианте(вероятно не последнем)
string.gsub(line,"^%.*%=%s*(%d*%p?%d*)%.$","%1"). Почему? Смотри.
Хорошо, ты нашел эту часть строки.
string.find(line,"^%s*(inv_weight)%s*%=%s*%d*%.?%d+")
Но почему %d+(плюс)? Ты уверен что там обязательно будет хоть 1 цифра? А перестраховка? Ну да ладно, это не столь важно.
Важно тут.
string.gmatch(line,"%d*%.?%d+")
читается не та часть строки что ты нашел, в вся. А знаешь как бывает записано
inv_weight = 50 ;80
В этом случае найдет 2 значения.
В моем случае вся строка заменяется на первое вхождение подшаблона (%d*...) без вариантов.
добавлено спустя 1 минуту
.3 читается и считается как 0.3, не переживай.
Чтобы после первого вхождения прерывалось используй string.match
отредактировал(а) Gun12: 07-11-2009 23:56 GMT3 час. Не стань номинантом премии Дарвина.
Gun12
1. да согласен есть варианты типа inv_weight = 0.1 ;0.2
но у меня и так читается (и возвращается) только то что стоит сразу после =
то есть цифры после ; не учитываются
А при шаблоне где вместо точки был %р - печаталось то ли оба значения (не помню уже) то ли сам знак ;, что мне не надо
2. %d+ - цифра после точки полюбому стоит, хотя можно конечно использовать и %d*
3. твой вариант - новый (в первом была какая то ошибочка - вроде со знаком = что то связано - SCITE сразу заругалась) - я испробую - просто я пока не до конца в него въехал.
кстати пробовал заменять все найденные варианты типа "точка - цифра" на "ноль - точка - цифра"
однако не выходит for k in string.gmatch(line,"%d*%.?%d+") do
if k == "%.?%d+" then
h = string.gsub(k,"%.?%d+","%0%.?%d+")
добавлено спустя 12 минут
Gun12
результат использования
k = string.gsub(line,"^%.*%=%s*(%d*%p?%d*)%.$","%1")
print (k)
Gun12
спасибо за помощь :-)...кстати ты бы прав - мой шаблон для всей строки не совсем верный - оказывается он все таки читает вторые цифры, я просто сразу не заметил....а щас глянул внимательнее и увидел, так что надо его исправлять.
добавлено спустя 40 минут
нашел вариант, который читает только первые цифры, а остальные после ; игнорит
for line in io.lines("C:\\test\\items.ltx") do
if string.find(line,"^%s*(inv_weight)%s*%=%s*%d*%.?%d+%A*") then
for k in string.gmatch(line,"(%d*%.?%d+)") do
print (k)
break
теперь осталось сделать замену :-)
отредактировал(а) erlik: 08-11-2009 01:09 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlikпопробуй так поменять значения
string.gsub(line,"(%.)(%d+)", "0%.%2")
или так
string.gsub(k,"%.(%d+)","0%.%1")
возможно и так
string.gsub(k,"%.(%d+)","0%.%0")
отредактировал(а) Gun12: 08-11-2009 10:09 GMT3 час. Не стань номинантом премии Дарвина.
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.