Телепорт как лоттерея

 
+
-
edit
 

garri_il

втянувшийся
Script Sucessfullty Parsed.
Include 'data/jbforth/Main.f' ...
Include 'data/jbforth/constants/main.f' ...
Include 'data/jbforth/constants/pets.f' ...
Include 'data/jbforth/jbf/Main.f' ...
Include 'data/jbforth/jbf/Flow.f' ...
Include 'data/jbforth/jbf/L2j.f' ...
Include 'data/jbforth/admin/Teleports.f' ...
Include 'data/jbforth/games/Casino.f' ...
Include 'data/jbforth/games/CurrentEvent.f' ...
Include 'data/jbforth/games/jump.f' ...
JBForth started.
Abort: Unknown word 'dup?'

JBForth init:


при создании Телепорт как лоттерея выдается ошибка Unknown word 'dup?'
да если где можно скачать Форт чтобы распечатать ?
da s pravami vi pravelno pridumali ,a isklu4enii ne budet :)
 
+
-
edit
 

Balancer

администратор
★★★★★
Я ж без проверки писал. Опечатался. Слово зовётся ?DUP

:)

Традиционное обозначение - вопросительный знак перед словом, если оно рассматривает входящие данные как условный флаг, а оканчивается - если флаг возвращает.

1534 player@ inventory? проверить, есть в инвентаре игрока player@ предмет с id 1534 :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

garri_il

втянувшийся
Balancer:
Я ж без проверки писал. Опечатался. Слово зовётся ?DUP

:)

Традиционное обозначение - вопросительный знак перед словом, если оно рассматривает входящие данные как условный флаг, а оканчивается - если флаг возвращает.

1534 player@ inventory? проверить, есть в инвентаре игрока player@ предмет с id 1534 :)
 

все стало нормально загрузилось а он выдает в 4ате сообщение :(
 
+
-
edit
 

garri_il

втянувшийся
sori za kartinki j dumal 4to oni ssilkoi vstanut a oni kartinkami raskrilis i udalit ne smog :)
 
+
-
edit
 

Balancer

администратор
★★★★★
Опять ошибка :D Интуитивно постоянно воспринимаю, что в слове телепорта порядок аргументов должен быть x y z player, а сделал слово сперва в виде player x y z

Можешь обновить сборку (только что для других целей выложил, но эта поправка там есть), я ввёл слово teleport-player-to, которое работает именно с таким порядком аргументов :)

Т.е. обнови сборку и перепиши все teleport_player_to на teleport-player-to

Ну, или с текущей своей сборкой просто поменяй порядок аргументов :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

garri_il

втянувшийся
4eta komanda //JBF_RELOAD rabotat' ne ho4et :(
 
+
-
edit
 

Balancer

администратор
★★★★★
Надеюсь, ты обновил сборки сервера до вчерашней? Там была устранён баг, по которому Форт переставал работать, если при перезагрузке его по JBF_RELOAD возникала ошибка в Форт-файлах.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

garri_il

втянувшийся
da zborku obnovi po etoi ssilke v meste s papkoi JBFORT
http://la2.balancer.ru/files/...
gdeto v 23.00
teleport zarabotal spasibo no perezagruzit' fort j ne smog on pisal neizvestnaj komanda 'JBF_RELOAD':(
 
+
-
edit
 

Balancer

администратор
★★★★★
Хм. Непонятно. А что пишет-то?

И в логах что?

Кстати, там вчера в датапаке не хватало одного файла (admin/main.f) - выложил сегодня утром. М.б. из-за него?
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

garri_il

втянувшийся
net on u tebj v datopake bil j ottuda vsy papku vzjl JBFORT
a v logah toka
java.lang.ArrayIndexOutOfBoundsException: 90
at net.sf.l2j.gameserver.model.L2World.getRegion(L2World.java:365)
at net.sf.l2j.gameserver.model.L2Object.setXYZ(L2Object.java:96)
at net.sf.l2j.gameserver.model.L2Character.teleToLocation(L2Character.java:2824)
at net.sf.l2j.gameserver.lib.jbf.words.L2j$teleport_player_to.exec(L2j.java:111)
at net.sf.l2j.gameserver.lib.jbf.words.Word.exec(Word.java:57)
at net.sf.l2j.gameserver.lib.jbf.JBCore.do_word(JBCore.java:68)
at net.sf.l2j.gameserver.lib.jbf.JBCore.exec(JBCore.java:106)
at net.sf.l2j.gameserver.lib.JBForth.exec(JBForth.java:37)
at net.sf.l2j.gameserver.clientpackets.RequestBypassToServer.runImpl(RequestBypassToServer.java:89)
at net.sf.l2j.gameserver.clientpackets.ClientBasePacket.run(ClientBasePacket.java:56)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
eto j sednj ska4al no i v4era toze bilo
a samoe nehoroshee eto to 4to posle etogo mne prishlos' svoih 4arov udalit' ,sna4alo odin perestal vhodit ,bzjl vtorogo zashol im poproboval perezagruzit FORT nevishlo a nautro perezagruzil server i amba :(
kogda potom pitalsj zaiti v igru dohodit do zastavki LOAD no vse zvuki ostautsj kagbudto ti stoish v zale vibora 4arov
i naetom vse zastavka i zvuki komnati i tak do bezkone4nosti i oshibki ni kakoi :(
 
+
-
edit
 

garri_il

втянувшийся
random-jump ( --) . . , - . - , , .
5 CHOOSE 0 4
?dup 0= if ( , )
drop
player@ 12345 3456 -4566 teleport_player_to player@ x y z.
exit
then
- , ,
1-
dup?,
?dup 0= if player@ 9876 123456 -1834 teleport_player_to exit then
1- ?dup 0= if player@ 193475 345623 -5834 teleport_player_to exit then
1- ?dup 0= if player@ 433475 23423 -2834 teleport_player_to exit then
1- ?dup 0= if player@ 433475 23423 -2834 teleport_player_to exit then

, :)
player@ 433475 23423 -2834 teleport_player_to

;
mozet j 4eta naputal
 
+
-
edit
 

Balancer

администратор
★★★★★
code forth
  1. : random-jump  ( --)
  2.     5 CHOOSE          0    4
  3.     ?dup 0= if   выпал 0
  4.         drop  тут drop не нужен, т.к. ?dup дублирует число только если не ноль.
  5.         player@ 12345 3456 -4566  teleport_player_to
  6.         exit                    
  7.     then              
  8.     1- ?dup 0= if  ( была 1) player@ 9876 123456 -1834  teleport_player_to   exit   then
  9.     1- ?dup 0= if  ( была 2) player@ 193475 345623 -5834  teleport_player_to   exit   then
  10.     1- ?dup 0= if  ( была 3) player@ 433475 23423 -2834  teleport_player_to   exit   then
  11.     1- ?dup 0= if  ( была 4) player@ 433475 23423 -2834  teleport_player_to   exit   then
  12.    drop  вот тут drop нужен. Снять оставшуюся после предыдущего вычитания 1.
  13.    player@ 433475 23423 -2834  teleport_player_to
  14. ;


В таком виде должно, вроде, работать. Но не проверял, конечно.

В новой сборке есть слово jump, которое перекидывает текущего игрока в заданные координаты. Со стека снимаются три параметра - x y и x. С ним код чуть-чуть упрощается:

code forth
  1. : random-jump  ( --)
  2.     5 CHOOSE
  3.     ?dup 0= if 12345 3456 -4566  jump exit then
  4.     1- ?dup 0= if  9876 123456 -1834  jump   exit   then
  5.     1- ?dup 0= if  193475 345623 -5834  jump   exit   then
  6.     1- ?dup 0= if  433475 23423 -2834  jump   exit   then
  7.     1- ?dup 0= if  433475 23423 -2834  jump   exit   then
  8.    drop 433475 23423 -2834  jump
  9. ;
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

garri_il

втянувшийся
попробовал запустит второи вариант при визове команды вна4але идит ошибка а патом телепортит но тока в одну то4ку а в логе таже ошибка
java.lang.ArrayIndexOutOfBoundsException: 68
at net.sf.l2j.gameserver.model.L2World.getRegion(L2World.java:365)
at net.sf.l2j.gameserver.model.L2Object.setXYZ(L2Object.java:96)
at net.sf.l2j.gameserver.model.L2Character.teleToLocation(L2Character.java:2824)
at net.sf.l2j.gameserver.lib.jbf.words.L2j$teleport_player_to2.exec(L2j.java:129)
at net.sf.l2j.gameserver.lib.jbf.words.Word.exec(Word.java:57)
at net.sf.l2j.gameserver.lib.jbf.words.Word.exec(Word.java:57)
at net.sf.l2j.gameserver.lib.jbf.JBCore.do_word(JBCore.java:68)
at net.sf.l2j.gameserver.lib.jbf.JBCore.exec(JBCore.java:106)
at net.sf.l2j.gameserver.lib.JBForth.exec(JBForth.java:37)
at net.sf.l2j.gameserver.clientpackets.RequestBypassToServer.runImpl(RequestBypassToServer.java:89)
at net.sf.l2j.gameserver.clientpackets.ClientBasePacket.run(ClientBasePacket.java:56)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
java.lang.ArrayIndexOutOfBoundsException: 90
at net.sf.l2j.gameserver.model.L2World.getRegion(L2World.java:365)
at net.sf.l2j.gameserver.model.L2Object.setXYZ(L2Object.java:96)
at net.sf.l2j.gameserver.model.L2Character.teleToLocation(L2Character.java:2824)
at net.sf.l2j.gameserver.lib.jbf.words.L2j$teleport_player_to2.exec(L2j.java:129)
at net.sf.l2j.gameserver.lib.jbf.words.Word.exec(Word.java:57)
at net.sf.l2j.gameserver.lib.jbf.words.Word.exec(Word.java:57)
at net.sf.l2j.gameserver.lib.jbf.JBCore.do_word(JBCore.java:68)
at net.sf.l2j.gameserver.lib.jbf.JBCore.exec(JBCore.java:106)
at net.sf.l2j.gameserver.lib.JBForth.exec(JBForth.java:37)
at net.sf.l2j.gameserver.clientpackets.RequestBypassToServer.runImpl(RequestBypassToServer.java:89)
at net.sf.l2j.gameserver.clientpackets.ClientBasePacket.run(ClientBasePacket.java:56)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

и после этого на4инаются 4удеса на серваке :)
 
+
-
edit
 

Balancer

администратор
★★★★★
А координаты точно правильные прописываешь? Очень похоже на то, что координаты конечной точки за пределами игрового мира, а проверки на это дело, судя по всему, в игре до сих пор не сделали.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

garri_il

втянувшийся
ne vse 4ast' ostavil kak bili oki provery ostal'nie
 
+
-
edit
 

Balancer

администратор
★★★★★
Кстати, заметил, вот. JBF_RELOAD "не работает", если не закрыто где-то определение слова. Т.е. двоеточие прошло, а точки с запятой нет.

Тогда можно просто тупо ввести точку с запятой :) И должно заработать дальше.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

garri_il

втянувшийся
спасибо ты оказался прав когда рaсставил нормальные координаты все оки стало :) 4удна :)
 
AD Реклама Google — средство выживания форумов :)
+
-
edit
 

Balancer

администратор
★★★★★
Никакого чуда :) Как уже говорил, клиенту часто сносит башку, когда координаты игрока оказываются за пределами мира. Я как-то делал на этот счёт проверку в своей старой сборке, но в нынешних этого снова нет :)

Были глюки с координатами, когда мне некоторым игрокам сервера приходилось их координаты каждый день обнулять :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  

в начало страницы | новое
 
1914: Покушение Гаврилы Принципа на австрийского престолонаследника Франца Фердинанда в Сараево и его жену, послужившее поводом к началу Первой мировой войны. (108 лет).
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru