diff options
author | Matheus Macabu <mkbu95@gmail.com> | 2013-02-04 00:32:19 -0200 |
---|---|---|
committer | Matheus Macabu <mkbu95@gmail.com> | 2013-02-04 00:32:19 -0200 |
commit | 524291493e64196d8ce02f4b637ea0ee1a176d0a (patch) | |
tree | 7a15790fb1b7658d7fb39deaae83f562fd81c872 /src/map | |
parent | f651ffc9f92dbf339e9691c24d66577bf4a43d47 (diff) | |
download | hercules-524291493e64196d8ce02f4b637ea0ee1a176d0a.tar.gz hercules-524291493e64196d8ce02f4b637ea0ee1a176d0a.tar.bz2 hercules-524291493e64196d8ce02f4b637ea0ee1a176d0a.tar.xz hercules-524291493e64196d8ce02f4b637ea0ee1a176d0a.zip |
Merged some commits from rAthena.
Diffstat (limited to 'src/map')
-rw-r--r-- | src/map/npc.c | 27 | ||||
-rw-r--r-- | src/map/pc.c | 4 |
2 files changed, 17 insertions, 14 deletions
diff --git a/src/map/npc.c b/src/map/npc.c index 3aabeaf98..383cd031a 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -2884,24 +2884,23 @@ int npc_do_atcmd_event(struct map_session_data* sd, const char* command, const c setd_sub(st, NULL, ".@atcmd_command$", 0, (void *)command, NULL); // split atcmd parameters based on spaces - i = 0; - j = 0; - temp = (char*)aMalloc(strlen(message) + 1); - while( message[i] != '\0' ) { - if( message[i] == ' ' && k < 127 ) { - temp[j] = '\0'; - setd_sub(st, NULL, ".@atcmd_parameters$", k++, (void *)temp, NULL); - j = 0; - ++i; - } else - temp[j++] = message[i++]; + for( i = 0; i < ( strlen( message ) + 1 ) && k < 127; i ++ ) { + if( message[i] == ' ' || message[i] == '\0' ) { + if( message[ ( i - 1 ) ] == ' ' ) { + continue; // To prevent "@atcmd [space][space][space]..." + } + temp[k] = '\0'; + k = 0; + setd_sub( st, NULL, ".@atcmd_parameters$", j++, (void *)temp, NULL ); + } else { + temp[k] = message[i]; + k++; + } } - temp[j] = '\0'; - setd_sub(st, NULL, ".@atcmd_parameters$", k++, (void *)temp, NULL); - setd_sub(st, NULL, ".@atcmd_numparameters", 0, (void *)&k, NULL); + setd_sub(st, NULL, ".@atcmd_numparameters", 0, (void *)__64BPRTSIZE(j), NULL); aFree(temp); run_script_main(st); diff --git a/src/map/pc.c b/src/map/pc.c index 6f608cd49..4fb555d0f 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -8194,6 +8194,10 @@ int pc_removecombo(struct map_session_data *sd, struct item_data *data ) { cursor++; } + + /* check if combo requirements still fit */ + if( pc_checkcombo( sd, data ) ) + continue; /* it's empty, we can clear all the memory */ if( (sd->combos.count = cursor) == 0 ) { |