Jump to content

Recommended Posts

Posted

Hi everyone another time, today is a good day, I hope you enjoy this guide.

Today we are going to learn how to make our own NPC Buffer, you can add the buff you want, superhaste, chants, dances, hero buffs, noblesse buffs, songs, hierophant buffs, souls, etc... etc...

 

I have noted that all people is allways searching for a NPC Buffer, but the true is that you will never find a perfect one so that's the reason I'm making this guide for you.

 

First of all you need to be patient, this is not an easy guide, but if you follow everything I type, I know you will understand and you will get the skill to create your own

 

First of all, If you have an HTML editor like dreamweaver, use it, if not, use notepad, if you don't like notepad, download the notepad++ Is pretty cool, Don't know where to get it?? just click this link

 

If you want to make your own new NPC follow this little guide below, If you want to use an existing one just skip this step, but you have to enter the game and shift click the npc you wanna edit and see it's ID, then write it on a paper or in a place you will remember

STEP ONE:. CREATING THE NEW NPC

 

Enter Lineage II game, find a NPC you like, I don't know which, you can chose a granite golem. Antharas, Valakas, Baium, Gremlin, etc... etc.., in a few words just chose your favirite NPC template

 

Press the Shift key and click on it, there you will see the NPC ID like in image

guianpc1yk1bf1.jpg

 

Enter your MySQL Database and create a new row there you put in the column ID the number you want but make sure is not in use, try using some number like 99999

The other columns just copy them from the original NPC, but make sure the aggro colunm is 0 and the type must be "L2Npc"

In name and tittle just put what you want

In serversidename and serversidetittle put 1

Save your database and that's all

 

STEP TWO:. EDITING YOUR NPC HTML (THE TEXT IT SAYS)

 

Open your HTML editor or the notepad, and paste this code

 

<html>
<body>
<center>
<tr><td><font color="FF44FF">L2 Antorni Buffer</font></tr></td><br>
<br>
Welcome
<br>
I can buff you
<br>
<button value="Buff Me please" action="bypass -h npc_%objectId%_Quest 9999_NPCBuffer" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal">
</body>
</html>

 

go to menu file/save as..

name it as "ID of your npc".html for example 1234.html

Don't forget the .html, is very important

YOU MUST SAVE THE FILE INSITDE THE FOLDER \GAMESERVER\DATA\HTML\DEFAULT\

 

Explanation of the code,

"<html>" & "</html>" are telling us that is an html document

"<body>" & "</body>" are telling us that everything inside them is the content of the html document

"<center>" tell us that the next line will be centered

"<tr><td>" & "</tr></td>" tell us that will create a table

"<font color="FF44FF">" & "</font>" defines the color of the text inside them (color must be in hex format)

"<br>" means a line jump

"<button value="Buff Me please"will create a buton with the text buff me please action="bypass -h npc_%objectId%_Quest 9999_NPCBuffer" this is the action of the button, in this case is get the quest with the name 9999_NPCBuffer width=75 width of the button height=21 height of the button back="L2UI_ch3.Btn1_normalOn" this is tha background of the button fore="L2UI_ch3.Btn1_normal" this is the foreground of the button>"

 

Note that the background and the foreground are clientside images

 

so so sorry this guide is incomplete cause I click on submit post instead of preview, I will finish soon just sorry for the mistake LoL

 

STEP THREE:. CREATING THE BUFF FILES

 

Because of in our html we type 9999_NPCBuffer, we have to create a folder with this name in the folder gameserver\data\jscript\custom, if you want other name just change it on your HTML file and then create a folder with the same name

 

Go to your new folder, in this case gameserver\data\jscript\custom\9999_NPCBuffer\

 

There create a file with a name "__init__.py" if you don't know how, just open your notepad and click save as and you paste it, don't forget that must have the .py, without that, that's just a simple txt file

 

Open your __init__.py there is wher you will put the buffs, I will just explain how to do it, I will not do all the buffer, that will be your homework

 

Inside the __init__.py you will paste this code

 

mport sys
from net.sf.l2j.gameserver.model.actor.instance import L2PcInstance
from java.util import Iterator
from net.sf.l2j.gameserver             import SkillTable
from net.sf.l2j          import L2DatabaseFactory
from net.sf.l2j.gameserver.model.quest import State
from net.sf.l2j.gameserver.model.quest import QuestState
from net.sf.l2j.gameserver.model.quest.jython import QuestJython as JQuest
THE LINES AVOVE ARE JUST IMPORTING SOME DATA
NPC=[1234]                 HERE YOU PUT THE ID OF YOUR NPC
ADENA_ID=57               TIS IS JUST FOR TYPE ADENA_ID INSTEAD OF 57
MIN_LEVEL=40              THIS IS THE MINIMUM LEVEL TO GET BUFFED
QuestId     = 9999          THIS IS THE ID OF THE QUEST
QuestName   = "NPCBuffer" THE NAME OF THE QUEST
QuestDesc   = "custom"      THIS IS THE FOLDER OF THE QUEST
InitialHtml = "1.htm"          THIS IS THE FILE OF YOUR NPC THA WILL START
print "importing " + QuestDesc + ": " + str(QuestId) + ": " + QuestName + ": " + QuestName,
class Quest (JQuest) :
def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

def onEvent(self,event,st):
  htmltext = event
  count=st.getQuestItemsCount(ADENA_ID)HERE THE NPC GET YOUR ADENA
  level=st.getPlayer().getLevel()                HERE THE NPC GET YOUR LEVEL
  if count < 200000 and level  < MIN_LEVEL :
   htmltext = "<html><head><body>You dont have enough adena or your level is lower than st.getPlayer().getLevel().</body></html>"
  else:
   st.getPlayer().setTarget(st.getPlayer())

I will explain this just a little cause is a lot of code, just remember things in red have to be deleted to make the code works,

This code is very easy, what it do is just check if you have adena and the minimum level

 

After that code you have to put the buffs in this format

 

if event == "2":    NEED TO START IN 2 AND MUST BE RAISING 1 EACH TIME
st.takeItems(ADENA_ID,15000)   CHANGE IT FOR THE PRIZE YOU WANT
st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4344,3),False,False) CHANGE IT FOR THE SKILL ID YOU WANT TO USE, CHANGE IT FOR THE LEVEL OF THE SKILL
st.getPlayer().restoreHPMP()  HERE IS JUST RESTORING PLAYERS MP CAUSE NPC USES PLAYER MP
return "1.htm"   HERE YOU RETURN TO THE CHOSE BUFFS SCREEN 
st.setState(COMPLETED)

 

Note: for each buff you have to put this code, just change the ID of the buff, the level and the prize.. and of course the event number (if event == "2")

 

In that code you are chosing buff and prize, after that code you have to paste this

 

   if htmltext != event:
    st.setState(COMPLETED)
    st.exitQuest(1)
  return htmltext

        def onTalk (self,npc,st):
    htmltext = "<html><head><body>I have nothing to say to you</body></html>"
    st.setState(STARTED)
           return InitialHtml

QUEST       = Quest(QuestId,str(QuestId) + "_" + QuestName,QuestDesc)
CREATED=State('Start',QUEST)
STARTED=State('Started',QUEST)
COMPLETED=State('Completed',QUEST)

QUEST.setInitialState(CREATED)
for npcId in NPC:
QUEST.addStartNpc(npcId)
STARTED.addTalkId(npcId)
print "...done"

 

I will not explain that code, just paste it, there is nothing interesting

 

Note: Remember the event number of each skill, or better write them in some paper

 

Now once you have created the __int__.py you have to create a file with name 1.html that will be the buffer selection screen

 

Inside the 1.html you just have to paste this code (I will explain this one)

 

<html>
<body>
<center>
<font color="FF40FF">L2 Antorni Buffer</font><br>
<br>
<font color="00FFBB">Buff List:</font><br>
<tr><td></td><td><button value="HERE PUT THE TEXT OF THE BUTTON, IRECOMMEND YOU TO PUT THE NAME OF THE BUFF JEJE" action="bypass -h Quest 9999_NPCBuffer 2" THIS NUMBER IS VERY IMPORTANT, IS NE NUMBER OF THE EVENT THAT WILL CALL FROM __int__.py width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td></tr><br>
</center>
</body>
</html>

 

Pay a lot of attemption to this code and remember the number after 999_NPCBuffer is very important, to call the correct event, to add another buff just add this line to the code

 

<tr><td></td><td><button value="Heal" action="bypass -h Quest 9999_NPCBuffer 2" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td></tr><br>

 

Just change the number of event and the button value

 

For the last step you just need to add this line of code inside the __int__.py that is inside the folder gameserver\data\jscript\custom\

 

'9999_NPCBuffer',

 

STEP FOUR:. TESTING THE BUFFER

 

Enter the game and now type //spawn "ID of your NPC"

if your NPC Buffer works correctly then you did it well, if not, just send a reply and tell me your problem, I will try to fix it.

 

Thanks to read this post

Cya in the next tutorial i think will be [GUIDE] Making your custom GMshop

 

Credits to : antorni

Source : www.ragezone.com

 

PS : if some1 posted that guide here , delete my topic !! i searched and i havent found it !

 

 

 

Posted

Vent00za very good guide man,i think deserves sticky,i would suggest to put some links of where to find MySQL and a link for notepad++ cause you say click this link but no link there...:S

i think if you add the links of the tools is just a perfect guide that someone looks download the files and execute what you say and has his own NPC buffer:)nice share

Posted

Guyz Im Sorry, But I Have A Little Prob... :-\

 

I Dont Know How To Make The Init.py File....

 

Can Someone Tell Me??

 

I Do Everything Right Till That And When I Press Save It Comes On a .txt Format... !

Posted

when it is as a .txt file rename it as a __init__.py and it should change as a .py !

Posted

Nice share friend,vent00za....But I think that this guide is not working properly....Well I had a problem,when I tried it...

Maybe I made mistakes,who knows....

 

Has anybody tried to create one?

  • 5 months later...
  • 4 months later...
  • 1 month later...
  • 11 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • Really nice work and another great idea from you Nick. Fermata keeps getting more impressive with every release. The latest work with lighting, world objects, effects and overall scene customization shows how much potential this project really has. It’s not just about making Interlude look better, but about giving an old client modern possibilities while still keeping the original Lineage 2 feeling.   Great work once again, definitely an exciting project to follow!
    • ⚡ Weekend Stock Refresh! Fast order fulfillment is active. Get Gemini Pro Advanced + Google One cloud storage activated on your own personal email within minutes.
    • New Release World & atmosphere A complete dynamic weather system has arrived, with Clear, Light Rain, Rain, Heavy Rain, Storm, Snow, and Windy presets. Rain and snow react to roofs, wind moves foliage, lightning illuminates storms, exposed ground becomes wet and develops puddles, and snow builds up and melts over time. Weather includes Low to Ultra quality levels and advanced controls for precipitation, wind, cloud cover, lightning, surface wetness, puddles, and snow. The game server can also select or restore the current weather while local quality settings continue to control rendering cost. The weather can be controlled from the server with custom packets. For more details use Shift+Alt+P. Enhanced lighting now allows authored lamps, fires, and other light sources to illuminate towns and interiors. Lights can pulse, flicker, blink, and strobe, flames produce warm dynamic light, and lamps display depth-aware halos. Remastered emissive surfaces are now supported, beginning with illuminated windows in Giran that glow and cast light into their surroundings. Broadcasting Towers now use their correct original scale and animated rings and glow effects. Map, quests & navigation A complete quest journal has been added, with active and completed quests, expandable stages, descriptions, requirements, item progress, quest inventory integration, location controls, and quest cancellation. Quest objectives now appear through flashing minimap and world-map markers, an overhead directional guide, a notification button beside chat, and rotating quest symbols above eligible NPCs. Server-directed radar markers now work across the live minimap and world map, including the original overhead guidance effect and arrival behavior. The original tutorial system now works, including scrollable tutorial pages, animated illustrations, the flashing question button, tutorial links, and movement, camera, pickup, and sit/rest progression events. Server-opened town maps now display their original artwork and the supplied player marker. Shops, storage & items Personal, clan, castle, and freight warehouses now work, including deposits, withdrawals, stack quantities, fees, weight and capacity previews, tooltips, and the original warning and empty-storage dialogs. Account freight now works through the original recipient picker and delivery window, allowing items to be sent to another character on the same account. Multisell exchanges now work, with paged recipe lists, product details, required materials, quantity selection, warnings, and server-backed completion. Manor seed purchasing is now supported through the shop interface, including availability and pricing. Inventory items can now be dragged to the trash button and destroyed after the appropriate warning or quantity prompt. The original in-game calculator now works with mouse and keyboard input. Community The Community Board is now available from the system menu or Alt+B, with Home, Favorites, Region, Clan, Memo, Mail, and Friends sections, retained navigation, forms, scrolling, minimization, and server-provided pages. Characters, cameras & events Striders and Wyverns now render as fully animated mounts with the rider attached correctly. Striders remain ground-based, while Wyverns support three-dimensional flight. Characters now enter a proper falling state after high drops or airborne dismounts, with falling animations and server-authoritative landing and fall-damage handling. Players can now sit on authored world chairs using the correct sit, wait, and stand animations. Server-driven special camera sequences now work, including target tracking, interpolation, duration, widescreen bars, and restoration to the normal camera. GM camera mode and server-authorized ///fly movement are now supported. The original 102-second Kamael teaser sequence has been restored with its complete slideshow, transitions, panning artwork, localized subtitles, and narration. Hats, masks, circlets, and other hair accessories now use their authored head placement and correctly adjust the character's hairstyle. Timed server confirmation dialogs, short-duration status effects, regeneration previews, and the seasonal Christmas Seal presentation are now supported. Interface & performance Character creation has been refined with corrected description wrapping, clipping, layout, and name-entry presentation. Tutorial and NPC dialog windows now use polished proportional scrollbars, improved HTML layout, and correctly sized illustrations and controls. A new independent 3D render-resolution setting offers Native, 720p, 900p, 1080p, 1440p, and 4K choices while keeping the window, HUD, text, and FermaUI at native resolution. Major rendering optimizations reduce unnecessary work in local lighting, shadows, visibility, exposure, bloom, post-processing, and GPU diagnostics. Download from the launcher you have installed, or at https://updates.fermata.gg/ if you don't have the launcher. Fermata Light Engine Preview All lights can be baked in the client, shipped to the users, and exported and imported as .femlight files.
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..