- Increased line buffer size when parsing scripts. Helps when trying to define pretty big shops.
- Applied The Ultra Mage's patch to use strict npc header formatting parsing. Updated the relevant stock scripts/mapflags that didn't conform to the standard. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9352 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
e3615a4cb5
commit
e23391b60d
@ -4,6 +4,9 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
|
|||||||
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
|
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
|
||||||
|
|
||||||
2006/11/28
|
2006/11/28
|
||||||
|
* Applied The Ultra Mage's patch to use strict npc header formatting
|
||||||
|
parsing. Updated the relevant stock scripts/mapflags that didn't conform to
|
||||||
|
the standard. [Skotlex]
|
||||||
* Moved the blocking of casting supportive skills on homunculus from
|
* Moved the blocking of casting supportive skills on homunculus from
|
||||||
battle_check_target to status_check_skilluse as bct is not invoked unless
|
battle_check_target to status_check_skilluse as bct is not invoked unless
|
||||||
the skill is offensive (or party/guild only) [Skotlex]
|
the skill is offensive (or party/guild only) [Skotlex]
|
||||||
|
@ -68,14 +68,14 @@ auction_01.gat mapflag indoors
|
|||||||
auction_02.gat mapflag indoors
|
auction_02.gat mapflag indoors
|
||||||
ra_in01.gat mapflag indoors
|
ra_in01.gat mapflag indoors
|
||||||
ra_temin.gat mapflag indoors
|
ra_temin.gat mapflag indoors
|
||||||
que_rachel.gat mapflag indoors
|
que_rachel.gat mapflag indoors
|
||||||
yuno_pre.gat mapflag indoors
|
yuno_pre.gat mapflag indoors
|
||||||
lhz_que01.gat mapflag indoors
|
lhz_que01.gat mapflag indoors
|
||||||
que_job01.gat mapflag indoors
|
que_job01.gat mapflag indoors
|
||||||
thana_step.gat mapflag indoors
|
thana_step.gat mapflag indoors
|
||||||
kh_mansion.gat mapflag indoors
|
kh_mansion.gat mapflag indoors
|
||||||
kh_rossi.gat mapflag indoors
|
kh_rossi.gat mapflag indoors
|
||||||
kh_school.gat mapflag indoors
|
kh_school.gat mapflag indoors
|
||||||
kh_vila.gat mapflag indoors
|
kh_vila.gat mapflag indoors
|
||||||
que_bingo.gat mapflag indoors
|
que_bingo.gat mapflag indoors
|
||||||
que_ng.gat mapflag indoors
|
que_ng.gat mapflag indoors
|
||||||
|
@ -198,7 +198,7 @@ hu_fild05.gat mapflag nightenabled
|
|||||||
hu_fild04.gat mapflag nightenabled
|
hu_fild04.gat mapflag nightenabled
|
||||||
hu_fild01.gat mapflag nightenabled
|
hu_fild01.gat mapflag nightenabled
|
||||||
yuno_fild06.gat mapflag nightenabled
|
yuno_fild06.gat mapflag nightenabled
|
||||||
tha_scene01.gat mapflag nightenabled
|
tha_scene01.gat mapflag nightenabled
|
||||||
hugel.gat mapflag nightenabled
|
hugel.gat mapflag nightenabled
|
||||||
p_track01.gat mapflag nightenabled
|
p_track01.gat mapflag nightenabled
|
||||||
p_track01.gat mapflag nightenabled
|
p_track01.gat mapflag nightenabled
|
||||||
@ -227,4 +227,4 @@ ra_fild11.gat mapflag nightenabled
|
|||||||
ra_fild12.gat mapflag nightenabled
|
ra_fild12.gat mapflag nightenabled
|
||||||
ra_fild13.gat mapflag nightenabled
|
ra_fild13.gat mapflag nightenabled
|
||||||
ra_temple.gat mapflag nightenabled
|
ra_temple.gat mapflag nightenabled
|
||||||
ra_temsky.gat mapflag nightenabled
|
ra_temsky.gat mapflag nightenabled
|
||||||
|
@ -44,13 +44,13 @@ payon_in01.gat mapflag noicewall
|
|||||||
payon_in02.gat mapflag noicewall
|
payon_in02.gat mapflag noicewall
|
||||||
payon_in03.gat mapflag noicewall
|
payon_in03.gat mapflag noicewall
|
||||||
payon.gat mapflag noicewall
|
payon.gat mapflag noicewall
|
||||||
pay_arche.gat mapflag noicewall
|
pay_arche.gat mapflag noicewall
|
||||||
prt_are_in.gat mapflag noicewall
|
prt_are_in.gat mapflag noicewall
|
||||||
prt_are01.gat mapflag noicewall
|
prt_are01.gat mapflag noicewall
|
||||||
prt_castle.gat mapflag noicewall
|
prt_castle.gat mapflag noicewall
|
||||||
prt_church.gat mapflag noicewall
|
prt_church.gat mapflag noicewall
|
||||||
prt_in.gat mapflag noicewall
|
prt_in.gat mapflag noicewall
|
||||||
prontera.gat mapflag noicewall
|
prontera.gat mapflag noicewall
|
||||||
sec_in01.gat mapflag noicewall
|
sec_in01.gat mapflag noicewall
|
||||||
job_sword1.gat mapflag noicewall
|
job_sword1.gat mapflag noicewall
|
||||||
um_in.gat mapflag noicewall
|
um_in.gat mapflag noicewall
|
||||||
|
@ -63,8 +63,8 @@ yuno.gat mapflag noteleport
|
|||||||
yuno_pre.gat mapflag noteleport
|
yuno_pre.gat mapflag noteleport
|
||||||
y_airport.gat mapflag noteleport
|
y_airport.gat mapflag noteleport
|
||||||
lhz_airport.gat mapflag noteleport
|
lhz_airport.gat mapflag noteleport
|
||||||
einbroch.gat mapflag noteleport
|
einbroch.gat mapflag noteleport
|
||||||
einbech.gat mapflag noteleport
|
einbech.gat mapflag noteleport
|
||||||
lhz_que01.gat mapflag noteleport
|
lhz_que01.gat mapflag noteleport
|
||||||
lhz_cube.gat mapflag noteleport
|
lhz_cube.gat mapflag noteleport
|
||||||
lhz_in01.gat mapflag noteleport
|
lhz_in01.gat mapflag noteleport
|
||||||
@ -89,7 +89,7 @@ auction_02.gat mapflag noteleport
|
|||||||
ra_in01.gat mapflag noteleport
|
ra_in01.gat mapflag noteleport
|
||||||
ra_temin.gat mapflag noteleport
|
ra_temin.gat mapflag noteleport
|
||||||
ra_temsky.gat mapflag noteleport
|
ra_temsky.gat mapflag noteleport
|
||||||
que_rachel.gat mapflag noteleport
|
que_rachel.gat mapflag noteleport
|
||||||
kh_mansion.gat mapflag noteleport
|
kh_mansion.gat mapflag noteleport
|
||||||
kh_rossi.gat mapflag noteleport
|
kh_rossi.gat mapflag noteleport
|
||||||
kh_school.gat mapflag noteleport
|
kh_school.gat mapflag noteleport
|
||||||
|
@ -2616,7 +2616,7 @@ static int npc_parse_mapcell (char *w1, char *w2, char *w3, char *w4)
|
|||||||
void npc_parsesrcfile (char *name)
|
void npc_parsesrcfile (char *name)
|
||||||
{
|
{
|
||||||
int m, lines = 0;
|
int m, lines = 0;
|
||||||
char line[1024];
|
char line[2048];
|
||||||
|
|
||||||
FILE *fp = fopen (name,"r");
|
FILE *fp = fopen (name,"r");
|
||||||
if (fp == NULL) {
|
if (fp == NULL) {
|
||||||
@ -2626,33 +2626,34 @@ void npc_parsesrcfile (char *name)
|
|||||||
current_file = name;
|
current_file = name;
|
||||||
|
|
||||||
while (fgets(line, sizeof(line) - 1, fp)) {
|
while (fgets(line, sizeof(line) - 1, fp)) {
|
||||||
char w1[1024], w2[1024], w3[1024], w4[1024], mapname[1024];
|
char w1[2048], w2[2048], w3[2048], w4[2048], mapname[2048];
|
||||||
int i, j, w4pos, count;
|
int i, w4pos, count;
|
||||||
lines++;
|
lines++;
|
||||||
|
|
||||||
if (line[0] == '/' && line[1] == '/')
|
if (line[0] == '/' && line[1] == '/')
|
||||||
continue;
|
continue;
|
||||||
// 不要なスペースやタブの連続は詰める
|
|
||||||
for (i = j = 0; line[i]; i++) {
|
if (!sscanf(line, " %n", &i) && i == strlen(line)) // just whitespace
|
||||||
if (line[i]==' ') {
|
continue;
|
||||||
if (!((line[i+1] && (isspace((unsigned char)line[i+1]) || line[i+1]==',')) ||
|
|
||||||
(j && line[j-1]==',')))
|
|
||||||
line[j++]=' ';
|
|
||||||
} else if (line[i]=='\t') {
|
|
||||||
if (!(j && line[j-1]=='\t'))
|
|
||||||
line[j++]='\t';
|
|
||||||
} else
|
|
||||||
line[j++]=line[i];
|
|
||||||
}
|
|
||||||
line[j] = '\0'; //Forget to terminate the string. From [jA 1091]
|
|
||||||
// 最初はタブ区切りでチェックしてみて、ダメならスペース区切りで確認
|
// 最初はタブ区切りでチェックしてみて、ダメならスペース区切りで確認
|
||||||
w1[0] = w2[0] = w3[0] = w4[0] = '\0'; //It's best to initialize values
|
w1[0] = w2[0] = w3[0] = w4[0] = '\0'; //It's best to initialize values
|
||||||
//to prevent passing previously parsed values to the parsers when not all
|
//to prevent passing previously parsed values to the parsers when not all
|
||||||
//fields are specified. [Skotlex]
|
//fields are specified. [Skotlex]
|
||||||
if ((count = sscanf(line,"%[^\t]\t%[^\t]\t%[^\t\r\n]\t%n%[^\t\r\n]", w1, w2, w3, &w4pos, w4)) < 3 &&
|
if ((count = sscanf(line, "%[^\t\n]\t%[^\t\n]\t%[^\t\n]\t%n%[^\n]", w1, w2, w3, &w4pos, w4)) < 3)
|
||||||
(count = sscanf(line,"%s%s%s%n%s", w1, w2, w3, &w4pos, w4)) < 3) {
|
{
|
||||||
continue;
|
if ((count = sscanf(line, "%s %s %[^\t]\t %n%[^\n]", w1, w2, w3, &w4pos, w4)) == 4 ||
|
||||||
|
(count = sscanf(line, "%s %s %s %n%[^\n]\n", w1, w2, w3, &w4pos, w4)) >= 3)
|
||||||
|
{
|
||||||
|
ShowWarning("\r");
|
||||||
|
ShowWarning("Incorrect separator syntax in file '%s', line '%i'. Use tabs instead of spaces!\n * %s %s %s %s\n",current_file,lines,w1,w2,w3,w4);
|
||||||
|
} else {
|
||||||
|
ShowError("\r"); //Erase the npc spinner.
|
||||||
|
ShowError("Could not parse file '%s', line '%i'.\n * %s %s %s %s\n",current_file,lines,w1,w2,w3,w4);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// マップの存在確認
|
// マップの存在確認
|
||||||
if (strcmp(w1,"-") !=0 && strcmpi(w1,"function") != 0 ){
|
if (strcmp(w1,"-") !=0 && strcmpi(w1,"function") != 0 ){
|
||||||
sscanf(w1,"%[^,]",mapname);
|
sscanf(w1,"%[^,]",mapname);
|
||||||
@ -2689,7 +2690,7 @@ void npc_parsesrcfile (char *name)
|
|||||||
} else if (strcmpi(w2,"setcell") == 0 && count >= 3) {
|
} else if (strcmpi(w2,"setcell") == 0 && count >= 3) {
|
||||||
npc_parse_mapcell(w1,w2,w3,w4);
|
npc_parse_mapcell(w1,w2,w3,w4);
|
||||||
} else {
|
} else {
|
||||||
ShowError("Probably TAB is missing: %s %s %s %s line '%i', file '%s'\n",w1,w2,w3,w4,lines,current_file); //Lupus
|
ShowError("Probably TAB is missing in file '%s', line '%i':\n * %s %s %s %s\n",current_file,lines,w1,w2,w3,w4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user