| Автор |
Сообщение |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 19/06/2008 10:23:08
|
GrayFace
Новичок
Зарегистрирован: 17/06/2008 06:54:06
Сообщений: 27
От: Новосибирск
Оффлайн
|
mraleph wrote:Сохранить состояния Lua это типа persistency?
В смысле в файл.
mraleph wrote:// хм, а вы ведь на форуме АкадемГородка кажется есть, я вас вспомнил
да А какой у вас (на ты?) ник?
P.S. вообще, я это в Heroes 3 WoG решил встроить Lua.
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 19/06/2008 12:37:57
|
mraleph
Постоянный посетитель
![[Avatar]](/forum/images/avatar/fe9fc289c3ff0af142b6d3bead98a923.png)
Зарегистрирован: 20/05/2008 19:13:01
Сообщений: 42
От: Новосибирск
Оффлайн
|
GrayFace wrote:В смысле в файл.
Ну хочется сохранить состояние, а потом загрузить и продолжить исполнение? ВОобщем смотрите в сторону Pluto.
GrayFace wrote:А какой у вас (на ты?) ник?
ok, на ты. AmbassadorKosh
|
This mystery is already on the tip of my tongue |
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 22/06/2008 01:49:01
|
GrayFace
Новичок
Зарегистрирован: 17/06/2008 06:54:06
Сообщений: 27
От: Новосибирск
Оффлайн
|
А как собрать pluto? Пробовал вызывать "nmake Makefile", "nmake all Makefile" и "make -f Makefile" из VS Command Prompt - не собралось.
Это сообщение было редактировано 1 раз. Последнее обновление произошло в 22/06/2008 01:50:02
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 22/06/2008 14:03:54
|
z00n
Постоянный посетитель
Зарегистрирован: 15/02/2008 12:15:56
Сообщений: 96
Оффлайн
|
В корневой директории исходников Pluto (там где README) создайте директорию "LUADIR" и положите туда все 4 заголовочных файла луа и lua51.lib(или lua5.1.lib - что вам ближе)
Дальше, из командного окна VS, находясь в корневой директории Pluto, наберите:
Так наверное проще всего
Это сообщение было редактировано 1 раз. Последнее обновление произошло в 22/06/2008 14:05:07
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 22/06/2008 21:08:07
|
GrayFace
Новичок
Зарегистрирован: 17/06/2008 06:54:06
Сообщений: 27
От: Новосибирск
Оффлайн
|
Спасибо, собралось.
А как вызвать функцию, передав ей таблицу не как 1 из параметров, а как список параметров? (т.е. мне нужно предварительно подготовить список параметров для функции - я для этого кладу их в таблицу)
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 22/06/2008 22:07:36
|
z00n
Постоянный посетитель
Зарегистрирован: 15/02/2008 12:15:56
Сообщений: 96
Оффлайн
|
GrayFace wrote:Спасибо, собралось.
А как вызвать функцию, передав ей таблицу не как 1 из параметров, а как список параметров? (т.е. мне нужно предварительно подготовить список параметров для функции - я для этого кладу их в таблицу)
unpack
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 22/06/2008 23:41:06
|
GrayFace
Новичок
Зарегистрирован: 17/06/2008 06:54:06
Сообщений: 27
От: Новосибирск
Оффлайн
|
Спасибо.
А что в Lua невозможно взять i-тый символ строки? Код a[1] >= "A" and a[1] <= "Z" не работает. Наверное, лучше всего в таком случае использовать string.byte?
Это сообщение было редактировано 1 раз. Последнее обновление произошло в 22/06/2008 23:41:23
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 23/06/2008 01:02:33
|
z00n
Постоянный посетитель
Зарегистрирован: 15/02/2008 12:15:56
Сообщений: 96
Оффлайн
|
GrayFace wrote:Спасибо.
А что в Lua невозможно взять i-тый символ строки? Код a[1] >= "A" and a[1] <= "Z" не работает. Наверное, лучше всего в таком случае использовать string.byte?
В принципе да, можно писать a:byte(1) >= ("A"):byte(1) или
но лучше пользоваться паттернами (http://www.lua.org/pil/20.2.html)
например
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 23/06/2008 02:07:58
|
GrayFace
Новичок
Зарегистрирован: 17/06/2008 06:54:06
Сообщений: 27
От: Новосибирск
Оффлайн
|
Это будет быстрее?
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 23/06/2008 03:02:48
|
z00n
Постоянный посетитель
Зарегистрирован: 15/02/2008 12:15:56
Сообщений: 96
Оффлайн
|
GrayFace wrote:Это будет быстрее? 
Скорость будет примерно одинаковая - несколько миллионов тестов в секунду. Читаются паттерны намного лучше.
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 30/06/2008 12:59:26
|
Berkut
Новичок
![[Avatar]](/forum/images/avatar/3295c76acbf4caaed33c36b1b5fc2cb1.jpg)
Зарегистрирован: 19/04/2008 10:28:01
Сообщений: 21
Оффлайн
|
Не пойму, в чём суть проблемы. Есть вот такой кусок кода с обработкой команды:
При сработке команды должен удаляться файл с сообщениями из определённой папки, имеющий название, совпадающее с ником того, кто активизировал команду.
Проблема в том, что если файл с сообщениями был создан в ту же сессию, что и активирована команда его удаления, я получаю сообщение об очистке (т.е. формально os.execute("del "..OffLineDir..user.sName..".msg") выполняется), но файл в папке остаётся. Как я понимаю, он удаляется и создаётся заново. Если же между сохранением файла и активацией команды была перезагрузка хоста, то файл удаляется прекрасно.
Вот функция сохранения в файл:
Здесь user - таблица с данными пользователя, сохраняющего сообщение, aim - адресат, msg - сообщение.
Каким образом мне можно очистить почту, не перезапуская хост?
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 30/06/2008 14:47:00
|
z00n
Постоянный посетитель
Зарегистрирован: 15/02/2008 12:15:56
Сообщений: 96
Оффлайн
|
Berkut wrote:Не пойму, в чём суть проблемы. Есть вот такой кусок кода с обработкой команды:
Мне кажется проблема в том, что вы не закрываете файл перед тем как пытаетесь его удалить.
Попробуйте так:
Это сообщение было редактировано 1 раз. Последнее обновление произошло в 30/06/2008 16:32:37
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 30/06/2008 15:14:05
|
Berkut
Новичок
![[Avatar]](/forum/images/avatar/3295c76acbf4caaed33c36b1b5fc2cb1.jpg)
Зарегистрирован: 19/04/2008 10:28:01
Сообщений: 21
Оффлайн
|
z00n wrote:
Мне кажется проблема в том, что вы не закрываете файл перед тем как пытаетесь его удалить.
Попробуйте так:
Сработало. Только для начала файл открыть нужно было
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 30/06/2008 16:48:38
|
z00n
Постоянный посетитель
Зарегистрирован: 15/02/2008 12:15:56
Сообщений: 96
Оффлайн
|
Berkut wrote:
z00n wrote:
Сработало. Только для начала файл открыть нужно было
Дело в том, что файл уже открыт, раз вы не можете его удалить. Найдите где в вашей программе вы открываете файл и не закрываете его. Если вам нужно держать файлы открытыми - заведите глобальную lookup-table :: {filename->filehandle} c weak value. Это позволит закрывать файл по имени перед удалением.
|
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 30/06/2008 18:09:58
|
GrayFace
Новичок
Зарегистрирован: 17/06/2008 06:54:06
Сообщений: 27
От: Новосибирск
Оффлайн
|
А что такое weak value?
|
|
|
 |
|
|