Jelajahi Sumber

- Removed backup.pl (for TXT servers) and vs9-to-vs8.php (outdated versions);
- Merged @killmonster2 with @killmonster tid:73632;
- Fixed bugreport:6764, auction code was misplaced;
- Follow up to r16753 (bugreport:6523), fixed bugreport:6673, using Gravitational Field with Safety Wall would keep the character immobilized. Blame myself, thankyou Lunar for the fix;
- Fixed bugreport:6514, @slaveclone wouldn't be targeted by monster. Thanks to zippy;
- Fixed bugreport:6837, some code was duplicated;
- Fixed bugreport:6768, removed some leftovers from TXT removal;
- Fixed bugreport:6868, Unequipping a weapon with Incantation Samurai card will not kill you if you have less than 999 hp and are on a non-pvp map;
- Fixed wrong bit field on ai field in mob_data structure. Credits to Ind.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16881 54d463be-8e91-2dee-dedb-b68131a5f0ec

momacabu 12 tahun lalu
induk
melakukan
aae7d1d129

+ 1 - 1
db/pre-re/item_db.txt

@@ -1888,7 +1888,7 @@
 4260,Wootan_Shooter_Card,Wootan Shooter Card,6,20,,10,,,,,,,,769,,,,,{ bonus bDef,1; bonus2 bResEff,Eff_Confusion,2000; },{},{}
 4261,Wootan_Fighter_Card,Wootan Fighter Card,6,20,,10,,,,,,,,769,,,,,{ bonus bDef,1; bonus2 bResEff,Eff_Bleeding,2000; },{},{}
 4262,Evil_Cloud_Hermit_Card,Cloud Hermit Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12029,RC_Plant,100; },{},{}
-4263,Incant_Samurai_Card,Samurai Spector Card,6,20,,10,,,,,,,,2,,,,,{ bonus bIgnoreDefRace,RC_NonBoss; bonus bHPrecovRate,-100; bonus2 bHPLossRate,666,10000; },{},{ heal -999,0; }
+4263,Incant_Samurai_Card,Samurai Spector Card,6,20,,10,,,,,,,,2,,,,,{ bonus bIgnoreDefRace,RC_NonBoss; bonus bHPrecovRate,-100; bonus2 bHPLossRate,666,10000; },{},{ if( (Hp <= 999) && !getmapflag(strcharinfo(3),6) && !getmapflag(strcharinfo(3),7) && !getmapflag(strcharinfo(3),8) ) { heal (1 - Hp), 0; } else { heal -999, 0; } }
 4264,Wind_Ghost_Card,Wind Ghost Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAutoSpell,"WZ_JUPITEL",3+7*(getskilllv("WZ_JUPITEL")==10),20; },{},{}
 4265,Li_Me_Mang_Ryang_Card,Jing Guai Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12033,RC_Angel,100; },{},{}
 4266,Eclipse_Card,Eclipse Card,6,20,,10,,,,,,,,4,,,,,{ bonus bVit,1; },{},{}

+ 1 - 1
db/re/item_db.txt

@@ -2168,7 +2168,7 @@
 4260,Wootan_Shooter_Card,Wootan Shooter Card,6,20,,10,,,,,,,,769,,,,,{ bonus bDef,1; bonus2 bResEff,Eff_Confusion,2000; },{},{}
 4261,Wootan_Fighter_Card,Wootan Fighter Card,6,20,,10,,,,,,,,769,,,,,{ bonus bDef,1; bonus2 bResEff,Eff_Bleeding,2000; },{},{}
 4262,Evil_Cloud_Hermit_Card,Cloud Hermit Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12029,RC_Plant,100; },{},{}
-4263,Incant_Samurai_Card,Samurai Spector Card,6,20,,10,,,,,,,,2,,,,,{ bonus bIgnoreDefRace,RC_NonBoss; bonus bHPrecovRate,-100; bonus2 bHPLossRate,666,10000; },{},{ heal -999,0; }
+4263,Incant_Samurai_Card,Samurai Spector Card,6,20,,10,,,,,,,,2,,,,,{ bonus bIgnoreDefRace,RC_NonBoss; bonus bHPrecovRate,-100; bonus2 bHPLossRate,666,10000; },{},{ if( (Hp <= 999) && !getmapflag(strcharinfo(3),6) && !getmapflag(strcharinfo(3),7) && !getmapflag(strcharinfo(3),8) ) { heal (1 - Hp), 0; } else { heal -999, 0; } }
 4264,Wind_Ghost_Card,Wind Ghost Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAutoSpell,"WZ_JUPITEL",3+7*(getskilllv("WZ_JUPITEL")==10),20; },{},{}
 4265,Li_Me_Mang_Ryang_Card,Jing Guai Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12033,RC_Angel,100; },{},{}
 4266,Eclipse_Card,Eclipse Card,6,20,,10,,,,,,,,4,,,,,{ bonus bVit,1; },{},{}

+ 1 - 1
sql-files/item_db.sql

@@ -1919,7 +1919,7 @@ REPLACE INTO `item_db` VALUES (4259,'Wooden_Golem_Card','Wooden Golem Card',6,20
 REPLACE INTO `item_db` VALUES (4260,'Wootan_Shooter_Card','Wootan Shooter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bDef,1; bonus2 bResEff,Eff_Confusion,2000;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4261,'Wootan_Fighter_Card','Wootan Fighter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bDef,1; bonus2 bResEff,Eff_Bleeding,2000;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4262,'Evil_Cloud_Hermit_Card','Cloud Hermit Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAddMonsterDropItem,12029,RC_Plant,100;',NULL,NULL);
-REPLACE INTO `item_db` VALUES (4263,'Incant_Samurai_Card','Samurai Spector Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bIgnoreDefRace,RC_NonBoss; bonus bHPrecovRate,-100; bonus2 bHPLossRate,666,10000;',NULL,'heal -999,0;');
+REPLACE INTO `item_db` VALUES (4263,'Incant_Samurai_Card','Samurai Spector Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bIgnoreDefRace,RC_NonBoss; bonus bHPrecovRate,-100; bonus2 bHPLossRate,666,10000;',NULL,'if( (Hp <= 999) && !getmapflag(strcharinfo(3),6) && !getmapflag(strcharinfo(3),7) && !getmapflag(strcharinfo(3),8) ) { heal (1 - Hp), 0; } else { heal -999, 0; }');
 REPLACE INTO `item_db` VALUES (4264,'Wind_Ghost_Card','Wind Ghost Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAutoSpell,"WZ_JUPITEL",3+7*(getskilllv("WZ_JUPITEL")==10),20;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4265,'Li_Me_Mang_Ryang_Card','Jing Guai Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAddMonsterDropItem,12033,RC_Angel,100;',NULL,NULL);
 REPLACE INTO `item_db` VALUES (4266,'Eclipse_Card','Eclipse Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus bVit,1;',NULL,NULL);

+ 1 - 1
sql-files/item_db_re.sql

@@ -2199,7 +2199,7 @@ REPLACE INTO `item_db_re` VALUES (4259,'Wooden_Golem_Card','Wooden Golem Card',6
 REPLACE INTO `item_db_re` VALUES (4260,'Wootan_Shooter_Card','Wootan Shooter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bDef,1; bonus2 bResEff,Eff_Confusion,2000;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (4261,'Wootan_Fighter_Card','Wootan Fighter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bDef,1; bonus2 bResEff,Eff_Bleeding,2000;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (4262,'Evil_Cloud_Hermit_Card','Cloud Hermit Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAddMonsterDropItem,12029,RC_Plant,100;',NULL,NULL);
-REPLACE INTO `item_db_re` VALUES (4263,'Incant_Samurai_Card','Samurai Spector Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bIgnoreDefRace,RC_NonBoss; bonus bHPrecovRate,-100; bonus2 bHPLossRate,666,10000;',NULL,'heal -999,0;');
+REPLACE INTO `item_db_re` VALUES (4263,'Incant_Samurai_Card','Samurai Spector Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bIgnoreDefRace,RC_NonBoss; bonus bHPrecovRate,-100; bonus2 bHPLossRate,666,10000;',NULL,'if( (Hp <= 999) && !getmapflag(strcharinfo(3),6) && !getmapflag(strcharinfo(3),7) && !getmapflag(strcharinfo(3),8) ) { heal (1 - Hp), 0; } else { heal -999, 0; }');
 REPLACE INTO `item_db_re` VALUES (4264,'Wind_Ghost_Card','Wind Ghost Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAutoSpell,"WZ_JUPITEL",3+7*(getskilllv("WZ_JUPITEL")==10),20;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (4265,'Li_Me_Mang_Ryang_Card','Jing Guai Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAddMonsterDropItem,12033,RC_Angel,100;',NULL,NULL);
 REPLACE INTO `item_db_re` VALUES (4266,'Eclipse_Card','Eclipse Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus bVit,1;',NULL,NULL);

+ 0 - 3
src/char/int_elemental.c

@@ -90,8 +90,6 @@ bool mapif_elemental_delete(int ele_id) {
 	return true;
 }
 
-#ifndef TXT_SQL_CONVERT
-
 static void mapif_elemental_send(int fd, struct s_elemental *ele, unsigned char flag) {
 	int size = sizeof(struct s_elemental) + 5;
 	
@@ -161,4 +159,3 @@ int inter_elemental_parse_frommap(int fd) {
 	}
 	return 1;
 }
-#endif //TXT_SQL_CONVERT

+ 0 - 4
src/char/int_guild.h

@@ -34,8 +34,4 @@ int inter_guild_charname_changed(int guild_id,int account_id, int char_id, char
 int inter_guild_CharOnline(int char_id, int guild_id);
 int inter_guild_CharOffline(int char_id, int guild_id);
 
-//For the TXT->SQL converter.
-int inter_guild_tosql(struct guild *g,int flag);
-int inter_guildcastle_tosql(struct guild_castle *gc);
-
 #endif /* _INT_GUILD_SQL_H_ */

+ 0 - 2
src/char/int_party.h

@@ -22,7 +22,5 @@ void inter_party_sql_final(void);
 int inter_party_leave(int party_id,int account_id, int char_id);
 int inter_party_CharOnline(int char_id, int party_id);
 int inter_party_CharOffline(int char_id, int party_id);
-//Required for the TXT->SQL converter
-int inter_party_tosql(struct party *p, int flag, int index);
 
 #endif /* _INT_PARTY_SQL_H_ */

+ 7 - 21
src/map/atcommand.c

@@ -2179,12 +2179,11 @@ static int atkillmonster_sub(struct block_list *bl, va_list ap)
 	return 1;
 }
 
-void atcommand_killmonster_sub(const int fd, struct map_session_data* sd, const char* message, const int drop)
+ACMD_FUNC(killmonster)
 {
-	int map_id;
+	int map_id, drop_flag;
 	char map_name[MAP_NAME_LENGTH_EXT];
-
-	if (!sd) return;
+	nullpo_retr(-1, sd);
 
 	memset(map_name, '\0', sizeof(map_name));
 
@@ -2194,26 +2193,13 @@ void atcommand_killmonster_sub(const int fd, struct map_session_data* sd, const
 		if ((map_id = map_mapname2mapid(map_name)) < 0)
 			map_id = sd->bl.m;
 	}
+	
+	drop_flag = strcmp(command+1, "killmonster2");
 
-	map_foreachinmap(atkillmonster_sub, map_id, BL_MOB, drop);
+	map_foreachinmap(atkillmonster_sub, map_id, BL_MOB, -drop_flag);
 
 	clif_displaymessage(fd, msg_txt(165)); // All monsters killed!
 
-	return;
-}
-
-ACMD_FUNC(killmonster)
-{
-	atcommand_killmonster_sub(fd, sd, message, 1);
-	return 0;
-}
-
-/*==========================================
- *
- *------------------------------------------*/
-ACMD_FUNC(killmonster2)
-{
-	atcommand_killmonster_sub(fd, sd, message, 0);
 	return 0;
 }
 
@@ -8866,7 +8852,7 @@ void atcommand_basecommands(void) {
 		ACMD_DEF2("monstersmall", monster),
 		ACMD_DEF2("monsterbig", monster),
 		ACMD_DEF(killmonster),
-		ACMD_DEF(killmonster2),
+		ACMD_DEF2("killmonster2", killmonster),
 		ACMD_DEF(refine),
 		ACMD_DEF(produce),
 		ACMD_DEF(memo),

+ 4 - 2
src/map/battle.c

@@ -5230,8 +5230,10 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f
 
 			if( !md->special_state.ai )
 			{ //Normal mobs
-				if( (target->type == BL_MOB && t_bl->type == BL_PC && ((TBL_MOB*)target)->special_state.ai < 4) ||
-					( t_bl->type == BL_MOB && !((TBL_MOB*)t_bl)->special_state.ai ) )
+				if(
+					( target->type == BL_MOB && t_bl->type == BL_PC && ( ((TBL_MOB*)target)->special_state.ai != 4 && ((TBL_MOB*)target)->special_state.ai != 1 ) ) ||
+					( t_bl->type == BL_MOB && !((TBL_MOB*)t_bl)->special_state.ai )
+				  )
 					state |= BCT_PARTY; //Normal mobs with no ai are friends.
 				else
 					state |= BCT_ENEMY; //However, all else are enemies.

+ 1 - 9
src/map/elemental.c

@@ -457,13 +457,6 @@ int elemental_change_mode(struct elemental_data *ed, int mode) {
 	return 1;
 }
 
-void elemental_damage(struct elemental_data *ed, int hp, int sp) {
-	if( hp )
-		clif_elemental_updatestatus(ed->master, SP_HP);
-	if( sp )
-		clif_elemental_updatestatus(ed->master, SP_SP);
-}
-
 void elemental_heal(struct elemental_data *ed, int hp, int sp) {
 	if( hp )
 		clif_elemental_updatestatus(ed->master, SP_HP);
@@ -471,7 +464,7 @@ void elemental_heal(struct elemental_data *ed, int hp, int sp) {
 		clif_elemental_updatestatus(ed->master, SP_SP);
 }
 
-int elemental_dead(struct elemental_data *ed, struct block_list *src) {
+int elemental_dead(struct elemental_data *ed) {
 	elemental_delete(ed, 1);
 	return 0;
 }
@@ -645,7 +638,6 @@ static int elemental_ai_sub_foreachclient(struct map_session_data *sd, va_list a
 
 static int elemental_ai_timer(int tid, unsigned int tick, int id, intptr_t data) {
 	map_foreachpc(elemental_ai_sub_foreachclient,tick);
-	
 	return 0;
 }
 

+ 1 - 2
src/map/elemental.h

@@ -67,9 +67,8 @@ int elemental_save(struct elemental_data *ed);
 int elemental_change_mode_ack(struct elemental_data *ed, int mode);
 int elemental_change_mode(struct elemental_data *ed, int mode);
 
-void elemental_damage(struct elemental_data *ed, int hp, int sp);
 void elemental_heal(struct elemental_data *ed, int hp, int sp);
-int elemental_dead(struct elemental_data *ed, struct block_list *src);
+int elemental_dead(struct elemental_data *ed);
 
 int elemental_delete(struct elemental_data *ed, int reply);
 void elemental_summon_stop(struct elemental_data *ed);

+ 1 - 1
src/map/homunculus.c

@@ -85,7 +85,7 @@ void merc_damage(struct homun_data *hd) {
 	clif_hominfo(hd->master,hd,0);
 }
 
-int merc_hom_dead(struct homun_data *hd, struct block_list *src)
+int merc_hom_dead(struct homun_data *hd)
 {
 	//There's no intimacy penalties on death (from Tharis)
 	struct map_session_data *sd = hd->master;

+ 1 - 1
src/map/homunculus.h

@@ -80,7 +80,7 @@ int merc_hom_recv_data(int account_id, struct s_homunculus *sh, int flag); //alb
 struct view_data* merc_get_hom_viewdata(int class_);
 int hom_class2mapid(int hom_class);
 void merc_damage(struct homun_data *hd);
-int merc_hom_dead(struct homun_data *hd, struct block_list *src);
+int merc_hom_dead(struct homun_data *hd);
 void merc_hom_skillup(struct homun_data *hd,int skillnum);
 int merc_hom_calc_skilltree(struct homun_data *hd);
 int merc_hom_checkskill(struct homun_data *hd,int skill_id);

+ 0 - 1
src/map/mail.c

@@ -20,7 +20,6 @@ void mail_clear(struct map_session_data *sd)
 	sd->mail.index = 0;
 	sd->mail.amount = 0;
 	sd->mail.zeny = 0;
-	sd->auction.amount = 0;
 
 	return;
 }

+ 1 - 9
src/map/mercenary.c

@@ -344,14 +344,6 @@ int merc_data_received(struct s_mercenary *merc, bool flag)
 	return 1;
 }
 
-void mercenary_damage(struct mercenary_data *md, int hp, int sp)
-{
-	if( hp )
-		clif_mercenary_updatestatus(md->master, SP_HP);
-	if( sp )
-		clif_mercenary_updatestatus(md->master, SP_SP);
-}
-
 void mercenary_heal(struct mercenary_data *md, int hp, int sp)
 {
 	if( hp )
@@ -360,7 +352,7 @@ void mercenary_heal(struct mercenary_data *md, int hp, int sp)
 		clif_mercenary_updatestatus(md->master, SP_SP);
 }
 
-int mercenary_dead(struct mercenary_data *md, struct block_list *src)
+int mercenary_dead(struct mercenary_data *md)
 {
 	merc_delete(md, 1);
 	return 0;

+ 1 - 2
src/map/mercenary.h

@@ -56,9 +56,8 @@ int merc_create(struct map_session_data *sd, int class_, unsigned int lifetime);
 int merc_data_received(struct s_mercenary *merc, bool flag);
 int mercenary_save(struct mercenary_data *md);
 
-void mercenary_damage(struct mercenary_data *md, int hp, int sp);
 void mercenary_heal(struct mercenary_data *md, int hp, int sp);
-int mercenary_dead(struct mercenary_data *md, struct block_list *src);
+int mercenary_dead(struct mercenary_data *md);
 
 int merc_delete(struct mercenary_data *md, int reply);
 void merc_contract_stop(struct mercenary_data *md);

+ 1 - 1
src/map/mob.h

@@ -121,7 +121,7 @@ struct mob_data {
 	char name[NAME_LENGTH];
 	struct {
 		unsigned int size : 2; //Small/Big monsters.
-		unsigned int ai : 3; //Special ai for summoned monsters.
+		unsigned int ai : 4; //Special ai for summoned monsters.
 							//0: Normal mob.
 							//1: Standard summon, attacks mobs.
 							//2: Alchemist Marine Sphere

+ 2 - 2
src/map/skill.c

@@ -11902,8 +11902,8 @@ static int skill_unit_effect (struct block_list* bl, va_list ap)
 	skill_id = group->skill_id;
 
 	//Target-type check.
-	if( !(group->bl_flag&bl->type && battle_check_target(&unit->bl,bl,group->target_flag)>0) && (flag&4) ) {
-		if( group->state.song_dance&0x1 || (group->src_id == bl->id && group->state.song_dance&0x2) )
+	if( !(group->bl_flag&bl->type && battle_check_target(&unit->bl,bl,group->target_flag)>0) ) {
+		if( flag&4 && ((group->src_id == bl->id && group->state.song_dance&0x2) || skill_get_inf2(skill_id)&INF2_SONG_DANCE) )
 			skill_unit_onleft(skill_id, bl, tick);//Ensemble check to terminate it.
 	} else {
 		if( flag&1 )

+ 5 - 5
src/map/status.c

@@ -1224,8 +1224,8 @@ int status_damage(struct block_list *src,struct block_list *target,int hp, int s
 		case BL_PC:  pc_damage((TBL_PC*)target,src,hp,sp); break;
 		case BL_MOB: mob_damage((TBL_MOB*)target, src, hp); break;
 		case BL_HOM: merc_damage((TBL_HOM*)target); break;
-		case BL_MER: mercenary_damage((TBL_MER*)target,hp,sp); break;
-		case BL_ELEM: elemental_damage((TBL_ELEM*)target,hp,sp); break;
+		case BL_MER: mercenary_heal((TBL_MER*)target,hp,sp); break;
+		case BL_ELEM: elemental_heal((TBL_ELEM*)target,hp,sp); break;
 	}
 
 	if( src && target->type == BL_PC && ((TBL_PC*)target)->disguise ) {// stop walking when attacked in disguise to prevent walk-delay bug
@@ -1248,9 +1248,9 @@ int status_damage(struct block_list *src,struct block_list *target,int hp, int s
 	switch (target->type) {
 		case BL_PC:  flag = pc_dead((TBL_PC*)target,src); break;
 		case BL_MOB: flag = mob_dead((TBL_MOB*)target, src, flag&4?3:0); break;
-		case BL_HOM: flag = merc_hom_dead((TBL_HOM*)target,src); break;
-		case BL_MER: flag = mercenary_dead((TBL_MER*)target,src); break;
-		case BL_ELEM: flag = elemental_dead((TBL_ELEM*)target,src); break;
+		case BL_HOM: flag = merc_hom_dead((TBL_HOM*)target); break;
+		case BL_MER: flag = mercenary_dead((TBL_MER*)target); break;
+		case BL_ELEM: flag = elemental_dead((TBL_ELEM*)target); break;
 		default:	//Unhandled case, do nothing to object.
 			flag = 0;
 			break;

+ 0 - 100
tools/backup.pl

@@ -1,100 +0,0 @@
-#!/usr/bin/perl
-
-##########################################################################
-# Athena用データバックアップツール
-#
-#  Athenaの各種データファイル*.txtをバックアップするツール
-#
-#-------------------------------------------------------------------------
-# 設定方法
-#  実行する時のカレントフォルダからのデータへのパス、ファイルのリストを
-#  正しく設定します。バックアップ先のフォルダは自動作成されないので、
-#  自分で作成しておく必要があります。
-#  フォルダの最後の「/」は省略できません。
-#
-#  フォルダは引数でも指定できます。例>./backup ../save/ ./backup_data/
-#  フォルダの最後の「/」は省略できません。
-#
-#  実行するとバックアップ先のフォルダへ、ファイル名に現在の日付と時刻を
-#  つけてファイルをコピーします。
-#
-#   * toolフォルダ内にbackup_dataフォルダを作成し、
-#    athena.shの中に「./tool/backup ./save/ ./tool/backup_data/」
-#     という行を追加すると、athenaを起動するたびにバックアップが取れます
-#
-#   復元するときは引数に「-r 日付と時刻」を指定します。
-#  またその後ろにフォルダを指定することも出来ます
-#  例1> ./backup -r 200309191607
-#  例2> ./backup -r 200309191607 ../save ./backup_data/
-#  この例では2003/09/19の16:07分にバックアップしたデータを復元しています
-#
-#  復元するとき、Athenaディレクトリにあるデータは *.bak に名前を変更して
-#  残しているので、いらない場合は rm *.bak などで消してください。
-#
-##########################################################################
-
-$sdir="../save/";		#バックアップ元(Athenaのディレクトリ/save/)
-$tdir="./backup_data/";		#バックアップ先
-
-@files=(			#ファイルのリスト
-	"account","athena","storage","party","guild","castle","pet"
-);
-
-
-#-------------------------------設定ここまで-----------------------------
-
-
-
-
-
-
-
-
-
-
-
-if($ARGV[0]=~/^\-r$/i || $ARGV[0]=~/\-\-(recover|restore)/i){
-	#復元処理
-
-	$file=$ARGV[1];
-	$sdir=$ARGV[2]||$sdir;
-	$tdir=$ARGV[3]||$tdir;
-	&restorecopy($_) foreach @files;
-	exit(0);
-}
-
-#バックアップ処理
-$sdir=$ARGV[0]||$sdir;
-$tdir=$ARGV[1]||$tdir;
-
-unless( -d $tdir ){
-	print "$0: \"$tdir\" : No such directory\n";
-	exit(1);
-}
-
-(undef,$min,$hour,$day,$month,$year)=localtime;
-
-$file=sprintf("%04d%02d%02d%02d%02d",
-	$year+1900, $month+1, $day, $hour, $min );
-
-&backupcopy($_) foreach @files;
-exit(0);
-
-sub backupcopy {
-	my($name)= @_;
-	system("cp $sdir$name.txt $tdir$name$file.txt");
-}
-
-sub restorecopy {
-	my($name)= @_;
-	unless( -f "$sdir$name.txt" ){
-		printf("$0: \"$sdir$name.txt\" not found!\n");
-		return 0;
-	}
-	unless( -f "$tdir$name$file.txt" ){
-		printf("$0: \"$tdir$name$file.txt\" not found!\n");
-		return 0;
-	}
-	rename "$sdir$name.txt","$sdir$name.bak";
-	system("cp $tdir$name$file.txt $sdir$name.txt");
-}

+ 0 - 46
tools/vs9-to-vs8.php

@@ -1,46 +0,0 @@
-<?php
-	// Visual Studio 9 to Visual Studio 8 project file converter
-	// author : theultramage
-	// version: 16. august 2008
-?>
-<?php
-	fwrite(STDERR, "VS9 to VS8 project file converter".PHP_EOL);
-	fwrite(STDERR, "---------------------------------".PHP_EOL);
-	if( @$_SERVER["argc"] < 2 )
-	{
-		fwrite(STDERR, "Usage: {$_SERVER["argv"][0]} file.vcproj".PHP_EOL);
-		exit();
-	}
-
-	$input = @$_SERVER["argv"][1];
-	$data = file($input);
-	if( $data === FALSE )
-		die("invalid input file '".$input."'");
-
-	fwrite(STDERR, "Converting {$input}...".PHP_EOL);
-	
-	$eol = ( strstr($data[0], "\r\n") !== FALSE ) ? "\r\n" : "\n";
-	define("EOL", $eol);
-
-	foreach( $data as $line )
-	{
-		if( strstr($line,'Version="9,00"') !== FALSE )
-			fwrite(STDOUT, "\t".'Version="8,00"'.EOL);
-		else
-		if( strstr($line,'Version="9.00"') !== FALSE )
-			fwrite(STDOUT, "\t".'Version="8.00"'.EOL);
-		else
-		if( strstr($line,'TargetFrameworkVersion') !== FALSE )
-			;
-		else
-		if( strstr($line,'RandomizedBaseAddress') !== FALSE )
-			;
-		else
-		if( strstr($line,'DataExecutionPrevention') !== FALSE )
-			;
-		else // default
-			fwrite(STDOUT, $line);
-	}
-
-	fwrite(STDERR, "done.".PHP_EOL);
-?>