* Replaced buildin_getpartyname_sub, buildin_getguildname_sub and buildin_getguildmaster_sub, which create only unnecessary overhead, with equivalent inlined code.
- Fixed a memory leak in getguildmasterid, when the guild leader was not online (bugreport:2743). - Command getguildmasterid no longer requires the guild leader to be online. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@14575 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
Date Added
|
||||
|
||||
2010/12/10
|
||||
* Replaced buildin_getpartyname_sub, buildin_getguildname_sub and buildin_getguildmaster_sub, which create only unnecessary overhead, with equivalent inlined code. [Ai4rei]
|
||||
- Fixed a memory leak in getguildmasterid, when the guild leader was not online (bugreport:2743).
|
||||
- Command getguildmasterid no longer requires the guild leader to be online.
|
||||
* Fixed bAutoSpellOnSkill bonuses not working independently of each other (bugreport:4617, since r13596, related r14536). [Ai4rei]
|
||||
* Revised argument declaration of all script commands according to the actual functions' argument usage. [Ai4rei]
|
||||
- Fixed many script commands with fixed amount of optional parameters to no longer accept any amount of arguments due to faulty declaration.
|
||||
|
||||
135
src/map/script.c
135
src/map/script.c
@@ -5938,34 +5938,21 @@ BUILDIN_FUNC(getcharid)
|
||||
/*==========================================
|
||||
*指定IDのPT名取得
|
||||
*------------------------------------------*/
|
||||
char *buildin_getpartyname_sub(int party_id)
|
||||
{
|
||||
struct party_data *p;
|
||||
|
||||
p=party_search(party_id);
|
||||
|
||||
if(p!=NULL){
|
||||
char *buf;
|
||||
buf=(char *)aMallocA(NAME_LENGTH*sizeof(char));
|
||||
memcpy(buf, p->party.name, NAME_LENGTH);
|
||||
buf[NAME_LENGTH-1] = '\0';
|
||||
return buf;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
BUILDIN_FUNC(getpartyname)
|
||||
{
|
||||
char *name;
|
||||
int party_id;
|
||||
struct party_data* p;
|
||||
|
||||
party_id=script_getnum(st,2);
|
||||
name=buildin_getpartyname_sub(party_id);
|
||||
if(name != NULL)
|
||||
script_pushstr(st,name);
|
||||
party_id = script_getnum(st,2);
|
||||
|
||||
if( ( p = party_search(party_id) ) != NULL )
|
||||
{
|
||||
script_pushstrcopy(st,p->party.name);
|
||||
}
|
||||
else
|
||||
{
|
||||
script_pushconststr(st,"null");
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
/*==========================================
|
||||
@@ -6043,75 +6030,58 @@ BUILDIN_FUNC(getpartyleader)
|
||||
/*==========================================
|
||||
*指定IDのギルド名取得
|
||||
*------------------------------------------*/
|
||||
char *buildin_getguildname_sub(int guild_id)
|
||||
{
|
||||
struct guild *g=NULL;
|
||||
g=guild_search(guild_id);
|
||||
|
||||
if(g!=NULL){
|
||||
char *buf;
|
||||
buf=(char *)aMallocA(NAME_LENGTH*sizeof(char));
|
||||
memcpy(buf, g->name, NAME_LENGTH);
|
||||
buf[NAME_LENGTH-1] = '\0';
|
||||
return buf;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
BUILDIN_FUNC(getguildname)
|
||||
{
|
||||
char *name;
|
||||
int guild_id=script_getnum(st,2);
|
||||
name=buildin_getguildname_sub(guild_id);
|
||||
if(name != NULL)
|
||||
script_pushstr(st,name);
|
||||
int guild_id;
|
||||
struct guild* g;
|
||||
|
||||
guild_id = script_getnum(st,2);
|
||||
|
||||
if( ( g = guild_search(guild_id) ) != NULL )
|
||||
{
|
||||
script_pushstrcopy(st,g->name);
|
||||
}
|
||||
else
|
||||
{
|
||||
script_pushconststr(st,"null");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*==========================================
|
||||
*指定IDのGuildMaster名取得
|
||||
*------------------------------------------*/
|
||||
char *buildin_getguildmaster_sub(int guild_id)
|
||||
{
|
||||
struct guild *g=NULL;
|
||||
g=guild_search(guild_id);
|
||||
|
||||
if(g!=NULL){
|
||||
char *buf;
|
||||
buf=(char *)aMallocA(NAME_LENGTH*sizeof(char));
|
||||
memcpy(buf, g->master, NAME_LENGTH);
|
||||
buf[NAME_LENGTH-1] = '\0';
|
||||
return buf;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
BUILDIN_FUNC(getguildmaster)
|
||||
{
|
||||
char *master;
|
||||
int guild_id=script_getnum(st,2);
|
||||
master=buildin_getguildmaster_sub(guild_id);
|
||||
if(master!=0)
|
||||
script_pushstr(st,master);
|
||||
int guild_id;
|
||||
struct guild* g;
|
||||
|
||||
guild_id = script_getnum(st,2);
|
||||
|
||||
if( ( g = guild_search(guild_id) ) != NULL )
|
||||
{
|
||||
script_pushstrcopy(st,g->member[0].name);
|
||||
}
|
||||
else
|
||||
{
|
||||
script_pushconststr(st,"null");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
BUILDIN_FUNC(getguildmasterid)
|
||||
{
|
||||
char *master;
|
||||
TBL_PC *sd=NULL;
|
||||
int guild_id=script_getnum(st,2);
|
||||
master=buildin_getguildmaster_sub(guild_id);
|
||||
if(master!=0){
|
||||
if((sd=map_nick2sd(master)) == NULL){
|
||||
script_pushint(st,0);
|
||||
return 0;
|
||||
}
|
||||
script_pushint(st,sd->status.char_id);
|
||||
}else{
|
||||
int guild_id;
|
||||
struct guild* g;
|
||||
|
||||
guild_id = script_getnum(st,2);
|
||||
|
||||
if( ( g = guild_search(guild_id) ) != NULL )
|
||||
{
|
||||
script_pushint(st,g->member[0].char_id);
|
||||
}
|
||||
else
|
||||
{
|
||||
script_pushint(st,0);
|
||||
}
|
||||
return 0;
|
||||
@@ -6124,7 +6094,8 @@ BUILDIN_FUNC(strcharinfo)
|
||||
{
|
||||
TBL_PC *sd;
|
||||
int num;
|
||||
char *buf;
|
||||
struct guild* g;
|
||||
struct party_data* p;
|
||||
|
||||
sd=script_rid2sd(st);
|
||||
if (!sd) { //Avoid crashing....
|
||||
@@ -6137,18 +6108,24 @@ BUILDIN_FUNC(strcharinfo)
|
||||
script_pushstrcopy(st,sd->status.name);
|
||||
break;
|
||||
case 1:
|
||||
buf=buildin_getpartyname_sub(sd->status.party_id);
|
||||
if(buf!=0)
|
||||
script_pushstr(st,buf);
|
||||
if( ( p = party_search(sd->status.party_id) ) != NULL )
|
||||
{
|
||||
script_pushstrcopy(st,p->party.name);
|
||||
}
|
||||
else
|
||||
{
|
||||
script_pushconststr(st,"");
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
buf=buildin_getguildname_sub(sd->status.guild_id);
|
||||
if(buf != NULL)
|
||||
script_pushstr(st,buf);
|
||||
if( ( g = guild_search(sd->status.guild_id) ) != NULL )
|
||||
{
|
||||
script_pushstrcopy(st,g->name);
|
||||
}
|
||||
else
|
||||
{
|
||||
script_pushconststr(st,"");
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
script_pushconststr(st,map[sd->bl.m].name);
|
||||
|
||||
Reference in New Issue
Block a user