poly

 
+
-
edit
 

leva1988

новичок
vozmojno li cherez NPC sdelat chtobi pri najatie, chel prevrashalsa v NPC?
 

BLaS

новичок
конечно
чтото вроде (для NPC c ID 123) превращает в NPC ID 10110:

code forth
  1. : npc-123-dialog-append
  2. '
  3. <a action="bypass -h jbf_make_me_monster">Make me monster</a>
  4. ' . ;
  5. ;
  6. : bypass_make_me_monster 10110 @player poly ;


код не проверял
 
+
-
edit
 

leva1988

новичок
ya eto vpisal tak v NPC id 7729

code text
  1. <html>
  2. <head>
  3. <body>
  4. <tr><td><font color="FF0066">Tattoo Mike:</font></tr></td>
  5.  
  6.  
  7. <tr><td><font color="FFFFCC">Burp... Hey, you young man... Or are you a woman?  Hiccup... You're strong... but... you've got to have smarts to get by. Long ago a stupid royal guard was being cocky but... he lost everything...  He realized that the people he loved caused him to be alive... hiccup... but that was useless... Useless! Heh, heh, heh... UUURP!</font></tr></td>
  8.  
  9.  
  10. <center>
  11.  
  12.                 <a action="bypass -h npc_%objectId%_Buy 6144">
  13.                 <font color="FF9900">Buy L2day Scrolls</font></a>
  14.  
  15.  
  16.                 <a action="bypass -h npc_%objectId%_Buy 6146">
  17.                 <font color="FF9900">Soul/Spirit Shots</font></a>      
  18.  
  19.  
  20. <a action="bypass -h jbf_make_me_monster 999 @player poly">
  21. <font color="FF9900">make you to skeleton</font></a>
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29. <a action="bypass -h npc_%objectId%_Quest 1006_tattoos">
  30. <font color="FF9900">
  31. Ask him about tattoos
  32. </font></a>
  33.  
  34.  
  35. <a action="bypass -h npc_%objectId%_Quest">
  36. <font color="FF6600">
  37. Quest
  38. </font></a>
  39. </center>
  40. </body>
  41. </html>



mojet ya choto sdelal nepravelno?!
 
+
-
edit
 

leva1988

новичок
aaa... ponal v chom oshibka...

eto tolko cherez npc ID 123??? ili ya mogu cherez luboi NPC?
 
+
-
edit
 

Balancer

администратор
★★★★★
leva1988:
<a action="bypass -h jbf_make_me_monster 999 @player poly">
 


player@ можно не передавать, так как его скрипт сам может считать. poly тут вообще не в тему :) Из-за кривости клиента, по которой код в html-ссылке может исполнить любой хакер, вся работа с фортом была из строки запроса убрана. Ссылки должны быть в таком духе:

<a action="bypass -h jbf_make_me_monster 123"><font color="FF9900">make you to skeleton</font></a>

123 - это npc_id моба, в которого хочешь полиморфнуть игрока.

Соответствующий Форт-код в системе будет такой:
: bypass_make_me_monster   player@ poly

Если будет сыпать иксепшн,несоответствия классов (не помню, как там в низкоуровневом коде написал), то принудительно в int строку надо будет конвертнуть:
: bypass_make_me_monster   int player@ poly


Кстати, помни, что сам ты свой полиморф не увидишь, его увидят только со стороны :)
 

Styx

разработчик l2j-сервера
У неписи оставляешь так:
code text
  1. <a action="bypass -h jbf_make_me_monster 999">

и, например, в файле data/jbforth/service/main.f добавляешь в конец:
code text
  1. : bypass_make_me_monster
  2.   player@ poly
  3. ;


UPD: пока писал пост - Балансер уже ответил :)
...and what better way to say goodbye than to kill everyone in sight? © Syntari  
+
-
edit
 

leva1988

новичок
извеняюсь что возвращаю вас снова на эту тему.
но это все почемуто не роботает.
что я сделал:
я создал HTML файл 8223.html и написал в нём следущее:
code text
  1. <a action="bypass -h jbf_make_me_monster 2"><font color="FF9900">make me to</font></a>


дальше я открыл в jbforth папку service и написал там это в main.f:
code text
  1.  
  2. service/teleport
  3. service/jail
  4.  
  5. : .t if -1 else 0 then . ;
  6.  
  7. : online-notify
  8.         player-online-notify not if exit then
  9.         'caller "Name" p@    " is online " s+ .' do-players
  10. ;
  11.  
  12. : offline-notify
  13.         player-offline-notify not if exit then
  14.         'caller "Name" p@    " is offline " s+ .' do-players
  15. ;
  16. : bypass_make_me_monster
  17.   player@ poly
  18. ;

(то что выше нужного это уже было в нём.)
но почемуто когда я подхожу к нпс и нажимаю на ПОЛИ он нечё не делает (все меня видят как обычно)
если не трудно подскажите как правельно делать.

зарание срасибо!
 
+
-
edit
 
скорее так (не помню в poly в каком порядке передаются аргументы)
"bypass -h forth 2 player@ poly"
либо
"bypass -h forth player@ 2 poly"
Пытаясь понять рекурсию, следи за тем, чтобы она не поняла тебя первой...  
+
-
edit
 

leva1988

новичок
а то куда, и как я вписал сам код, это верно?
я просто смотру во всех menu.f написано об одной вещи много, а я тужа вписал только это....
code text
  1. : bypass_make_me_monster
  2.   player@ poly
  3. ;


и кстати, HTML файл обязан находиться в тойже папке?? (в даном случае эта папка: datajbforthservice)
 
+
-
edit
 

leva1988

новичок
ok, vsem sps...
u mena poluchilos (prosto pochemuto jbforth bil vikluchen..)
 
+
-
edit
 

leva1988

новичок
у меня тут вазник вопрос:
как я могу сделать, чтобы НПС брал старые манеты за это...
я прописал чтобы это было за деньги, но даже это не получилось.
code text
  1. : bypass_make_me_monster
  2.    DUP player@ ADENA@ >
  3.     IF
  4.         "Not enough adena" SHOW
  5.         DROP
  6.         EXIT
  7.     THEN
  8.  
  9.   player@ poly ;
 
+
-
edit
 

leva1988

новичок
pojaluista otvette na vopros...

sps :0
 

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru