Встроенный веб-сервер

 

sys

разработчик l2j-сервера
Ковыряю встроенный веб-сервер. Там имеются файлы с расширением fst. По идее они должны быть парсемые фортом.
В примере есть время до рестарта - [ shutdown: seconds@ seconds>hms ] парсится на ура.
Вызовы методов из ява классов тоже нормально работают: [ "l2f.gameserver.model.L2World" class "getAllPlayersCount" 0 jget ] - игроки онлайн.

А такие элементарные вещи как [ "Hello wordl!" to test ] не парсятся... Уж про циклы и прочее я вообще молчу.
Как быть, если хочется, например, сделать список онлайн игроков?

2sam: Конечно можно надергать то что мало майски работает... обработать на стороне клиента яваскриптом... но это уже будет изврат.
 
UA SoulKeeper #28.02.2007 01:57
+
-
edit
 

SoulKeeper

разработчик L2J Fortress
★★★
грузить юзера - предел наглости
Разыскивается десятка с два датапакеров :) http://la2.wrk.ru/forum/viewtopic.php?id=50882  

sys

разработчик l2j-сервера
Вот и я про то же. ;)
 
+
-
edit
 

Balancer

администратор
★★★★★
sys> Вызовы методов из ява классов тоже нормально работают: [ "l2f.gameserver.model.L2World" class "getAllPlayersCount" 0 jget ] - игроки онлайн.
sys> А такие элементарные вещи как [ "Hello wordl!" to test ] не парсятся...

Странно. А что пишет? Переменная test, вообще, есть?

sys> Уж про циклы и прочее я вообще молчу.

Циклы и не должны. Форт-код в парсере работает в режиме интерпретации. В этом режиме управляющие конструкции запрещены (по идее, должны выдавать соответствующую ошибку).

sys> Как быть, если хочется, например, сделать список онлайн игроков?

Написать слово, которое это делает, и вызывать его :)
 

sys

разработчик l2j-сервера
sys>> А такие элементарные вещи как [ "Hello wordl!" to test ] не парсятся...
Balancer> Странно. А что пишет? Переменная test, вообще, есть?

Пишет [ "Hello wordl!" to test ]. В форте как свинья в апельсинах, поэтому и не предполагал что сперва должна быть переменная test.

sys>> Уж про циклы и прочее я вообще молчу.
Balancer> Циклы и не должны. Форт-код в парсере работает в режиме интерпретации. В этом режиме управляющие конструкции запрещены (по идее, должны выдавать соответствующую ошибку).

Парсер вообще не выдает ничего, по крайней мере в браузер. М.б. Он спамит свои ошибки в консоль гейм срвера - не знаю. Но тогда с отладкой полная попа... Я не могу постоянно висеть радмином на удаленном сервере =\

sys>> Как быть, если хочется, например, сделать список онлайн игроков?
Balancer> Написать слово, которое это делает, и вызывать его :)

Жестко... Хотя список онлайн игроков я получил через
[ "l2f.gameserver.model.L2World" class "getAllPlayers" 0 jget ]

PS. Положа руку на сердце, скажу что было бы удобнее писать и отлаживать функции веб сервера на языке, которые для этого разрабатывался... php например. ;)
 
+
-
edit
 

Balancer

администратор
★★★★★
sys> PS. Положа руку на сердце, скажу что было бы удобнее писать и отлаживать функции веб сервера на языке, которые для этого разрабатывался... php например. ;)

На родном PHP смысла нет. Т.к. не доступа к потрохам сервера. Сейчас, наконец, вышел PHP на Java, например, в составе Resin идёт. Он позволяет обращаться к Java-компонентам. Но прикручивать его к l2j - увольте :)
 
+
-
edit
 

Balancer

администратор
★★★★★
sys> Пишет [ "Hello wordl!" to test ]. В форте как свинья в апельсинах, поэтому и не предполагал что сперва должна быть переменная test.

Насколько я помню (давно уже писалось) при любой ошибке парсинга подставляется исходный текст. Попробуй так:
code forth
  1. [ "Hello wordl!" value test ( так мы заводим переменную test, сразу инициированную значением ) "" ( а это - пустая строка. Ибо парсер должен хоть что-то вернуть, что вставится на страницу ) ]
  2.  
  3. \ ...
  4.  
  5. [ test  ( вот тут - прочитается значение ) ]
 

sys

разработчик l2j-сервера
Жаль конечно, думается мне что веб сервер на форте далеко не уедет, т.к. это будет на порядок сложнее.
 

sys

разработчик l2j-сервера
Код:
code text
  1. [ "Hello wordl!" value test "" ]
  2. test =
  3. [ test ]

Результат:
code text
  1. test = Hello wordl!


Balancer> Циклы и не должны. Форт-код в парсере работает в режиме интерпретации. В этом режиме управляющие конструкции запрещены

С if-ами тоже облом?

PS. Жду в джабере ;)
 
Это сообщение редактировалось 28.02.2007 в 10:14
+
-
edit
 

Balancer

администратор
★★★★★
Balancer>> Циклы и не должны. Форт-код в парсере работает в режиме интерпретации. В этом режиме управляющие конструкции запрещены
sys> С if-ами тоже облом?

Да. В принципе, в Форте есть нестандартные слова [if] .. [else] .. [then], но у нас не реализованы.

Потому что, вот правда, никто не мешает определить слово во внешнем файле и подгрузить его да хоть прямо из диалога ;)

my-file.f:
code forth
  1. : my-word  ( -- output )
  2.     "l2f.gameserver.model.L2World" class "getAllPlayers" 0 jget
  3.     \ тут что-то делаем со списком ...
  4. ;


А потом вызывать, как:

[ path/my-file.f my-word ]

sys> PS. Жду в джабере ;)

Я ещё на работу не вышел, с работы зайду :)
 

sys

разработчик l2j-сервера
Понятно... ушел мучать форт
 

в начало страницы | новое
 
Поиск
Поддержка
Поддержи форум!
ЯндексЯндекс. ДеньгиХочу такую же кнопку
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru