Jump to content

Recommended Posts

Posted

GUIDE TO CREATE AN NPC BY YOUR SELF>>>>>

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

 

 

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

 

 

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

 

 

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

 

 

Code:

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().g etInfo(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

 

 

Code:

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)

 

 

Code:

<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

 

 

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\

 

 

Code:

'9999_NPCBuffer',

STEP FOUR:. TESTING THE BUFFER

 

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

GG you have now your npc......

  • 7 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

    • First, you need to understand what you're doing and what you want to achieve. You have to choose a server core. After that, decide what you want your server to include, code it, modify the client to fit your server, go public, and drink champagne.   If you know how to code, creating a server is relatively easy — a few months of work and you can make it happen. Modifying the client is a completely different story. There’s a lack of tutorials, tools, and source materials. I’m currently working on the client myself, and I’ve already spent over three weeks just trying to get started due to the lack of information. If you don’t have the knowledge and experience, you’ll need a team and a bag of money — but realistically, it just won’t succeed.
    • The server has been online and stable for over 2 months now, and we’re still going strong! No wipes, no shortcuts ~ just continuous work, daily fixes, events, and improvements to ensure the best possible experience.   Great News! 🔥 CHAPTER II IS COMING — GRACIA FINAL 🔥 On February 16, L2Elixir enters a new era. The server will be officially updated to Gracia Final, opening Chapter II of our journey. Expect new content, improvements, and surprises that will refresh the gameplay while keeping the classic Gracia Final spirit alive.   More challenges, more competition, and more reasons to log in.   📅 Update Date: February 16 ⚔️ Chapter II: Gracia Final This is not a reset. This is evolution.   Prepare yourselves — Chapter II begins soon.   Website: https://l2elixir.org/ Discord: https://discord.gg/5ydPHvhbxs    
    • Server owners, Top.MaxCheaters.com is now live and accepting Lineage 2 server listings. There is no voting, no rankings manipulation, and no paid advantages. Visibility is clean and equal, and early listings naturally appear at the top while the platform grows. If your server is active, it should already be listed. Submit here 👉https://Top.MaxCheaters.com This platform is part of the MaxCheaters.com network and is being built as a long-term reference point for the Lineage 2 community. — MaxCheaters.com Team
    • Hello! We are Genesis, small team that works on new Lineage 2 project. Our goal with this project is to create a fresh new place to play — built around real community feedback, with no aggressive pay-to-win donations and with carefully thought-out quality-of-life improvements, balance changes etc. We believe that even tho we all love this game, everyone has at least one or two things they would like to change in the game to make it more enjoyable. Thats why we want the comunity feedback to shape our server. Main information about the server: • Interlude Classic version • Rates: EXP x4 SP x2 Loot x2, Spoil x2 (not set in stone, might be changed) • Local & Server-Side Dualbox Protection • Complete, Clear Website with Integrated Account Panel (Game account creation, direct communication with support, bug reporting, voting and reward system) • Launcher – External Game Login System: manage all your accounts inside the launcher, “Play” button logs you directly into the game server Here are list of few changes we already added/decided to add to the server: • Reworked Client to fit interlude Era with upgraded Classic Ui • Custom Antibot system • Custom AntiDualBox System • Offline shops • Offline shop with buffs (available only in towns) • Mass Sweeper added to the game • Newbie buffs available all the way to lvl 76 (nothing crazy, but its free) • Slight balance change to Destroyer damage with Polearm and Cancel spell from SPS • PvP zones on every Epic spawn spot • Overbuffing blocked • And more! Since we put big focus on community feedback and suggestions, we are looking for people for our internal tests, that will discuss whether current changes „fit” into the game and maybe suggest some changes themselves. If what you’ve just read sounds interesting to you, if you want to help creating server fitted for you, join our server Discord. Help us to understand what Lineage 2 players in 2026 actually expect and need — so we can meet those expectations and avoid becoming just another server that dies a natural death.     Even if you’re not interested in playing right now, but you are a long-time Lineage 2 player, feel free to join our community. We would greatly appreciate your experience and feedback to help us improve and develop our project. Join the growing L2Genesis community: https://discord.gg/mcuHsQzNCm Also check our website: https://l2genesis.com/
  • 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..