- 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
Then right above that, add this:
Scroll to the end of the 'LevelsPacket' function and add:
It should look something like this once your done.
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);
}

