Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Custom CPQ

Nae-un <33
Joined
Jun 23, 2012
Messages
554
Reaction score
70
I made an NPC version of this feature awhile back when I was learning more about coding. There've been two versions so far: one that I made nearly 4 years ago, and one that I improvised 2 years later (these are approximations). At the time I was only versed in JavaScript and small scale modification of the source. I knew nothing about basics such as classes, interfaces, listeners, etc; however, now that I've spent two years in college as a computer science major I'm going to try to revisit this and make it Java-based.

What does this entail? Well, features-wise it should be reminiscent of the Carnival PQ that we know and love; just without any of the packet stuff (because my knowledge about networking and communication between the server and the client is rudimentary at best). This means that players should be able to spawn mobs to the other side, cast debuffs as normal, and even have the ability to enter a phase called "Fever Mode", where the entire party gains 2x experience than normal for a period of 10 seconds.

All of this will be automated with schedulers and timers with a waiting map of 10 seconds and a game period of 10 minutes. Points are earned as normal, though they are displayed in the chat every 10 seconds (I know, a little rough on aesthetics).

I'm still deciding on whether party members should share their points gathered or retain individual points; who knows. Either way, I plan on implementing an abstract class or two as a plan for future projects or upgradability.

Here's a link to my GitHub concerning the project. If there's anything you guys want to interject or criticize me on, feel free. I'm open to the learning process. There are plenty of people who know much more than me and I'm eager to listen to what they have to say.



The source is based off of LeaderMS's v62 files. I chose this Maplestory version in order to launch the client on my Windows 10 desktop.

While I know this project won't exactly be a very long term project, it is still one nonetheless and I'm eager to show what I'm implementing in the hopes that it can help other young programmers. I'm all for sharing work, so here it goes!
 
Last edited:
Custom Title Activated
Loyal Member
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
You use big words :(

Cool project. Few things I'm curious about:
- Are you using original CPQ maps?
- Are you using any packets for aesthetics?
- Are you going to use any CPQ packets?

I noticed you said the score will be displayed in chat, and I wanted to know why the chatbox instead of a scoreboard. So I'm assuming your either not using the map or not using the packets, or is it just custom enough to not utilize either?

Nonetheless, good luck on this development. CPQ is best PQ. ;P
 
Nae-un <33
Joined
Jun 23, 2012
Messages
554
Reaction score
70
You use big words :(

Cool project. Few things I'm curious about:
- Are you using original CPQ maps?
- Are you using any packets for aesthetics?
- Are you going to use any CPQ packets?

I noticed you said the score will be displayed in chat, and I wanted to know why the chatbox instead of a scoreboard. So I'm assuming your either not using the map or not using the packets, or is it just custom enough to not utilize either?

Nonetheless, good luck on this development. CPQ is best PQ. ;P

Sorry, haha. It must be a college thing; you just start to instinctively use bigger words to convey more precise meanings. As for your questions.


I will be using the original CPQ maps. What I do with them and how I implement the mobs will take some time. I have to check how the mobs in the map are currently. If I remember correctly, each CPQ map already has monsters in the XML, though I'm not sure why they're there. I might remove them entirely and replace them. I'm curious as to how the game handles monster visibility (blue team's monsters are gray to red and vice versa).

As noted previously, I don't have an intimate knowledge of packets. I'll take a look at them and see if I can make anything of them, but I still don't like meddling in things I haven't read up on. I suppose this answers your latter 2 questions.

As for the scoreboard, I'm still working on that. It's also packet based and I'm curious to see how it works. Anyone with knowledge of how this works is welcome to share his or her knowledge with me.
 
Custom Title Activated
Loyal Member
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
Sorry, haha. It must be a college thing; you just start to instinctively use bigger words to convey more precise meanings. As for your questions.


I will be using the original CPQ maps. What I do with them and how I implement the mobs will take some time. I have to check how the mobs in the map are currently. If I remember correctly, each CPQ map already has monsters in the XML, though I'm not sure why they're there. I might remove them entirely and replace them. I'm curious as to how the game handles monster visibility (blue team's monsters are gray to red and vice versa).

As noted previously, I don't have an intimate knowledge of packets. I'll take a look at them and see if I can make anything of them, but I still don't like meddling in things I haven't read up on. I suppose this answers your latter 2 questions.

As for the scoreboard, I'm still working on that. It's also packet based and I'm curious to see how it works. Anyone with knowledge of how this works is welcome to share his or her knowledge with me.

I'd go over the packets with you, but Monster Carnival packets/handlers, actually the entire implementation was released already. You should check it out, it may be of help.

Just for you to know, the scoreboards and packets in CPQ are field-limit based to type CField_MonsterCarnival. This means they won't work in like Henesys or whatever, but you can use them to an advantage within the actual CPQ maps (so luckily you're using them).

Also, CPQ mobs shouldn't be in XML "spawn", but maybe they are. The server handles grey mobs for other teams by assigning the mob a Team for the Monster Carnival. The very last byte when spawning a monster into the map is called nTeamForMCarnival. This byte is the same as getTeam() you set in spawnPlayerMapobject for the character's. If it's on the character's team, they see it; however, if it is not, then it will appear grey. This is part of the CPQ implementation done by s4nta here.

One last thing.. if you're using a scoreboard, why display the score in the chat? ;P
 
Nae-un <33
Joined
Jun 23, 2012
Messages
554
Reaction score
70
I'd go over the packets with you, but Monster Carnival packets/handlers, actually the entire implementation was released already. You should check it out, it may be of help.

Just for you to know, the scoreboards and packets in CPQ are field-limit based to type CField_MonsterCarnival. This means they won't work in like Henesys or whatever, but you can use them to an advantage within the actual CPQ maps (so luckily you're using them).

Also, CPQ mobs shouldn't be in XML "spawn", but maybe they are. The server handles grey mobs for other teams by assigning the mob a Team for the Monster Carnival. The very last byte when spawning a monster into the map is called nTeamForMCarnival. This byte is the same as getTeam() you set in spawnPlayerMapobject for the character's. If it's on the character's team, they see it; however, if it is not, then it will appear grey. This is part of the CPQ implementation done by s4nta here.

One last thing.. if you're using a scoreboard, why display the score in the chat? ;P

When I see how the packets work then I'll try to definitely make it look similar to CPQ. That goes for the scoreboard as well. Anyways, here are some updates.

I actually managed to code a bunch of it in a day, but I haven't gotten around to testing it.

- Added some getter methods to NPCConversationManager so that I can get a list of parties, leaders, or characters when I look up a map.
- Time limit for CPQ is 10 minutes and automatically ends the PQ after that.
- Sending, accepting, and declining requests to vs. each other.
- Mob respawning system and summoning

TO-DO:

- JavaScript implementations
- Testing
- "Fever Mode"
- Rewards/Ending
- Debuffs
- Packet related stuff

I'm trying to look up a v62 multiclient, but am having trouble finding a working link. I'll probably be able to find one if I scour around some more.
 
not a programmer
Joined
Mar 30, 2015
Messages
532
Reaction score
62
Last edited:
Nae-un <33
Joined
Jun 23, 2012
Messages
554
Reaction score
70
Last edited:
Back
Top