* Initialized "day" variable in npc.c. [Valaris]

* Added @whozeny. Shows list of top 50 online players and their zeny sorted from highest to lowest. [Valaris]
* Added @happyhappyjoyjoy. Makes all players on server do a random emote. [Valaris]
* Removed -fu

git-svn-id: https://svn.code.sf.net/p/rathena/svn/athena@269 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
valaris 2004-11-20 14:13:23 +00:00
parent 5f71054119
commit e868e90267
6 changed files with 106 additions and 4 deletions

View File

@ -1,5 +1,10 @@
Date Added
11/20
11/20
* Initialized "day" variable in npc.c. [Valaris]
* Added @whozeny. Shows list of top 50 online players and their zeny sorted from highest to lowest. [Valaris]
* Added @happyhappyjoyjoy. Makes all players on server do a random emote. [Valaris]
* Removed -funroll-loops from compile. (Do not re-add!) [Valaris]
* Skill updates [celest]
* Added check for max vending_max_value when reading config [kobra_k88]
* Skill updates [celest]
- Napalm vulcan, Enchant Deadly Poison, Slow Poison (based on jAthena 1066)

View File

@ -16,7 +16,7 @@ else
MAKE = make
endif
OPT = -g -O2 -ffast-math -funroll-loops
OPT = -g -O2 -ffast-math
ifeq ($(findstring CYGWIN,$(PLATFORM)), CYGWIN)
OS_TYPE = -DCYGWIN

View File

@ -119,6 +119,9 @@ mountpeco: 20
who: 20
whois: 20
// Returns list of top 50 logged in characters and their zeny based on zeny sorted from highest amount to lowest.
whozeny: 20
// Returns list of logged in characters with their job.
who2: 20
@ -291,6 +294,9 @@ useskill: 40
// make another player killable
charkillable: 40
// makes everyone on server do a random emote
happyhappyjoyjoy:40
//---------------------
// 50: Sub-GM+ commands

View File

@ -5,6 +5,7 @@
#include <ctype.h>
#include <math.h>
#include "../common/socket.h"
#include "../common/timer.h"
#include "../common/nullpo.h"
@ -53,6 +54,8 @@ ATCOMMAND_FUNC(whomap);
ATCOMMAND_FUNC(whomap2);
ATCOMMAND_FUNC(whomap3);
ATCOMMAND_FUNC(whogm); // by Yor
ATCOMMAND_FUNC(whozeny); // [Valaris]
ATCOMMAND_FUNC(happyhappyjoyjoy); // [Valaris]
ATCOMMAND_FUNC(save);
ATCOMMAND_FUNC(load);
ATCOMMAND_FUNC(speed);
@ -466,7 +469,8 @@ static AtCommandInfo atcommand_info[] = {
{ AtCommand_ChangeSex, "@changesex", 1, atcommand_changesex }, // by MC Cameri
{ AtCommand_Mute, "@mute", 99, atcommand_mute }, // [celest]
{ AtCommand_Mute, "@red", 99, atcommand_mute }, // [celest]
{ AtCommand_WhoZeny, "@whozeny", 20, atcommand_whozeny }, // [Valaris]
{ AtCommand_HappyHappyJoyJoy, "@happyhappyjoyjoy", 40, atcommand_happyhappyjoyjoy }, // [Valaris]
#ifndef TXT_ONLY // sql-only commands
{ AtCommand_CheckMail, "@checkmail", 1, atcommand_listmail }, // [Valaris]
{ AtCommand_ListMail, "@listmail", 1, atcommand_listmail }, // [Valaris]
@ -1596,6 +1600,91 @@ int atcommand_whogm(
return 0;
}
int compare (const void * a, const void * b)
{
return ( *(int*)b - *(int*)a );
}
int atcommand_whozeny(
const int fd, struct map_session_data* sd,
const char* command, const char* message)
{
char output[200];
struct map_session_data *pl_sd;
int i, j, count,c;
char match_text[100];
char player_name[24];
int zeny[clif_countusers()];
char counted[clif_countusers()];
memset(output, '\0', sizeof(output));
memset(match_text, '\0', sizeof(match_text));
memset(player_name, '\0', sizeof(player_name));
if (sscanf(message, "%99[^\n]", match_text) < 1)
strcpy(match_text, "");
for (j = 0; match_text[j]; j++)
match_text[j] = tolower(match_text[j]);
count = 0;
for (i = 0; i < fd_max; i++) {
if (session[i] && (pl_sd = session[i]->session_data) && pl_sd->state.auth) {
memcpy(player_name, pl_sd->status.name, 24);
for (j = 0; player_name[j]; j++)
player_name[j] = tolower(player_name[j]);
if (strstr(player_name, match_text) != NULL) { // search with no case sensitive
zeny[count]=pl_sd->status.zeny;
count++;
}
}
}
qsort(zeny, count, sizeof(int), compare);
for (c = 0; c < count && c < 50; c++) {
if(!zeny[c])
continue;
for (i = 0; i < fd_max; i++) {
if (session[i] && (pl_sd = session[i]->session_data) && pl_sd->state.auth && !counted[i] && zeny[c]) {
if(pl_sd->status.zeny==zeny[c]) {
sprintf(output, "Name: %s | Zeny: %d", pl_sd->status.name, pl_sd->status.zeny);
clif_displaymessage(fd, output);
zeny[c]=0;
counted[i]=1;
}
}
}
}
if (count == 0)
clif_displaymessage(fd, msg_table[28]); // No player found.
else if (count == 1)
clif_displaymessage(fd, msg_table[29]); // 1 player found.
else {
sprintf(output, msg_table[30], count); // %d players found.
clif_displaymessage(fd, output);
}
return 0;
}
int atcommand_happyhappyjoyjoy(
const int fd, struct map_session_data* sd,
const char* command, const char* message)
{
struct map_session_data *pl_sd;
int i,e;
for (i = 0; i < fd_max; i++) {
if (session[i] && (pl_sd = session[i]->session_data) && pl_sd->state.auth) {
e=rand()%40;
clif_emotion(&pl_sd->bl,e);
}
}
return 0;
}
/*==========================================
*
*------------------------------------------

View File

@ -196,6 +196,8 @@ enum AtCommandType {
AtCommand_UpTime,
AtCommand_ChangeSex,
AtCommand_Mute, // [celest]
AtCommand_WhoZeny, // [Valaris]
AtCommand_HappyHappyJoyJoy, // [Valaris]
// SQL-only commands start
#ifndef TXT_ONLY
AtCommand_CheckMail, // [Valaris]

View File

@ -392,7 +392,7 @@ int npc_event_do_clock(int tid,unsigned int tick,int id,int data)
time_t timer;
struct tm *t;
char buf[64];
char *day;
char *day="";
int c=0;
time(&timer);