[Release] Level Ticker

Newbie Spellweaver
Joined
Apr 16, 2008
Messages
67
Reaction score
0
I just made this because I think it's a neat little feature.

It simple displays the header '<Name> has reached level <level>' when a player levels up.

Open up your LevelsPacket.cpp file and search for
Code:
void LevelsPacket::levelUP

Then right above that, add this:
Code:
void strreverse(char* begin, char* end) {
	char aux;
	while(end>begin)
		aux=*end, *end--=*begin, *begin++=aux;
}
	
void itoaa(int value, char* str, int base) {
	static char num[] = "0123456789abcdefghijklmnopqrstuvwxyz";
	char* wstr=str;
	int sign;
	div_t res;
	// Validate base
	if (base<2 || base>35){ *wstr='\0'; return; }
	// Take care of sign
	if ((sign=value) < 0) value = -value;
	// Conversion. Number is reversed.
	do {
		res = div(value,base);
		*wstr++ = num[res.rem];
	}while(value=res.quot);
	if(sign<0) *wstr++='-';
	*wstr='\0';
	// Reverse string
	strreverse(str,wstr-1);
}

Scroll to the end of the 'LevelsPacket' function and add:
Code:
	char sendstring[500] = {'\0'};
	strcpy_s(sendstring, player->getName());
	strcat_s(sendstring, " has reached level ");
	char buffer[500] = {'\0'};
	itoaa(player->getLevel(),buffer,10);
	strcat_s(sendstring, buffer);
	strcat_s(sendstring, "!");
	Server::changeScrollingHeader(sendstring);

It should look something like this once your done.
Code:
void strreverse(char* begin, char* end) {
	char aux;
	while(end>begin)
		aux=*end, *end--=*begin, *begin++=aux;
}
	
void itoaa(int value, char* str, int base) {
	static char num[] = "0123456789abcdefghijklmnopqrstuvwxyz";
	char* wstr=str;
	int sign;
	div_t res;
	// Validate base
	if (base<2 || base>35){ *wstr='\0'; return; }
	// Take care of sign
	if ((sign=value) < 0) value = -value;
	// Conversion. Number is reversed.
	do {
		res = div(value,base);
		*wstr++ = num[res.rem];
	}while(value=res.quot);
	if(sign<0) *wstr++='-';
	*wstr='\0';
	// Reverse string
	strreverse(str,wstr-1);
}
	

void LevelsPacket::levelUP(Player* player, vector <Player*> players){
	Packet packet = Packet();
	packet.addHeader(0x23);
	packet.addShort(0);
	packet.addShort(0x7C10);
	packet.addShort(1);
	packet.addByte(player->getLevel());
	packet.addShort(player->getHP());
	packet.addShort(player->getMHP());
	packet.addShort(player->getMP());
	packet.addShort(player->getMMP());
	packet.addShort(player->getAp());
	packet.addInt(player->getExp());
	packet.packetSend(player); // TODO
	packet = Packet();
	packet.addHeader(0x85);
	packet.addInt(player->getPlayerid());
	packet.addByte(0);
	packet.sendTo(player, players, 0);
	char sendstring[500] = {'\0'};
	strcpy_s(sendstring, player->getName());
	strcat_s(sendstring, " has reached level ");
	char buffer[500] = {'\0'};
	itoaa(player->getLevel(),buffer,10);
	strcat_s(sendstring, buffer);
	strcat_s(sendstring, "!");
	Server::changeScrollingHeader(sendstring);

}
 
nice :P
its for those low xp only friends servers :P (if it were high exp public server it would be only spammedd lol)

but great relese :D
 
Thanks alot man
But im pretty sure something like this is being done in the development section
with the "printf" thingies
Maybe you can join and help them :) It looks like you're pretty talented
*1st post w00t*
EDIT:Dam these peolpe above me g0t 1st place before me :(:(
 
If their trying to do that with printf, i already have that in my server.

All my includes:
Code:
#include "LevelsPacket.h"
#include "PacketCreator.h"
#include "Player.h"
#include "Server.h"
 
It would overwrite itelf:

Aka if billy levels 1 second after jimmy.

Billy's thing would be said.

It only says it 1 at a time, so if 5 people lvl at the same time, only the most recent will be shown because it overwrites the last one.
 
I keep getting

Code:
------ Build started: Project: MapleStoryServer, Configuration: Release Win32 ------
Compiling...
LevelsPacket.cpp
.\LevelsPacket.cpp(70) : error C2653: 'Server' : is not a class or namespace name
.\LevelsPacket.cpp(70) : error C3861: 'changeScrollingHeader': identifier not found
Build log was saved at "file://c:\Documents and Settings\Owner\Desktop\Kryticalv6\MapleStoryServer\Release\BuildLog.htm"
MapleStoryServer - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 2 up-to-date, 0 skipped ==========

What does YOUR entire LevelsPacket look like? =\
 
I dont know what im doing wrong =/

Ive done exactly as you suggest but im STILL getting the error. and i even tried re-arranging everything.
 
OMG THANK YOU FALKMAN! adding that in worked like a charm ;).

Thank you. =)
 
Back