Bläddra i källkod

- Implemented "item_nouse.txt" to prevent players from using items under certain flags (which are pre-determined). Thanks to Muad_Dib for providing the item list for this db.
- Updated Portuguese translation.

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

momacabu 12 år sedan
förälder
incheckning
88ffdd2e3d
5 ändrade filer med 216 tillägg och 5 borttagningar
  1. 45 4
      conf/msg_conf/map_msg_por.conf
  2. 132 0
      db/item_nouse.txt
  3. 27 1
      src/map/itemdb.c
  4. 8 0
      src/map/itemdb.h
  5. 4 0
      src/map/pc.c

+ 45 - 4
conf/msg_conf/map_msg_por.conf

@@ -1419,10 +1419,10 @@
 
 // @channel
 1404: %s falhou.
-1405: O nome do Canal deve começar com '#'.
-1406: O tamanho do Canal deve ter entre 3 e %d caracteres.
-1407: O Canal '%s' não está disponível.
-1408: A senha do Canal não pode conter espaços.
+1405: O nome do canal deve começar com '#'.
+1406: O tamanho do canal deve ter entre 3 e %d caracteres.
+1407: O canal '%s' não está disponível.
+1408: A senha do canal não pode conter espaços.
 1409: - #%s (%d usuários)
 1410: ---- Canais Públicos ----
 1411: Cor '%s' desconhecida.
@@ -1450,6 +1450,47 @@
 1433: O seu chat global foi desunido do canal '#%s'.
 1434: Você já está no canal '%s'.
 1435: Você agora está no canal '#%s' para '%s'.
+1436: A senha do canal não pode exceder %d caracteres.
+1437: O jogador '%s' está banido do canal '%s'.
+1438: Você está banido do canal '%s'.
+1439: O canal '%s' não possui jogadores banidos.
+1440: O jogador '%s' não está banido neste canal.
+1441: O jogador '%s' está desbanido do canal '%s'.
+1442: Removido todos os jogadores banidos do canal '%s'.
+1443: ---- '#%s' ~ Lista de Banidos:
+1444: ---- Cores Disponíveis ----
+1445: - %s
+1446: Você precisa digitar uma opção.
+1447: Opção do canal '%s' desconhecida.
+1448: O canal '%s' foi deletado.
+1449: A opção '%s' já está habilitada (use '@channel setopt %s 0' para desabilitá-la).
+1450: A opção '%s' está habilitada para o canal '%s'.
+1451: O valor '%d' para a opção '%s' está fora dos limites (de 0 até 10).
+1452: A opção '%s' está habilitada para o canal '%s' em %d segundos.
+1453: A opção '%s' está desabilitada para o canal '%s'.
+//1454 livre
+1455: Você está digitando muito rápido!
+1456: * %s ban <#nome_do_canal> <jogador>
+1457: -- Bane o jogador especificado do canal.
+1458: * %s banlist <#nome_do_canal>
+1459: -- Lista todos os jogadores banidos do canal.
+1460: * %s unban <#nome_do_canal> <jogador>
+1461: -- Desbane o jogador especificado do canal.
+1462: * %s setopt <#nome_do_canal> <opção> <valor>
+1463: -- Define uma opção e valor para o canal.
+1464: Banimento falhou para o jogador '%s'.
+1465: O jogador '%s' já está banido neste canal.
+1466: Entre com o número de segundos (0-10) para a opção '%s'.
+1467: * %s unbanall <#nome_do_canal>
+1468: -- Remove todos os banimentos do canal.
+1469: * %s delete <#nome_do_canal>
+1470: -- Destrói o canal.
+1471: * %s list mine
+1472: -- Lista todos os canais que você tenha participado.
+1473: * %s join <#nome_do_canal> <senha_do_canal>
+1474: -- Entra em um canal.
+1475: ---- Meus Canais ----
+1476: Você ainda não está em nenhum canal.
 
 //Custom translations
 //import: conf/msg_conf/import/map_msg_por_conf.txt

+ 132 - 0
db/item_nouse.txt

@@ -0,0 +1,132 @@
+// Item Usage Restriction Configuration File
+// Defines if an item cannot be used under certain circumstances
+// Syntax: <item_id>, <flag>, <group_id_override>
+// flag:
+//	1 = Cannot use item while sitting
+//  X = more to come soon [TODO]
+// group_id_override: group id necessary to override this setting
+
+619,1,100  // Unripe_Apple
+620,1,100  // Orange_Juice
+621,1,100  // Bitter_Herb
+622,1,100  // Rainbow_Carrot
+623,1,100  // Earthworm_The_Dude
+624,1,100  // Rotten_Fish
+625,1,100  // Lusty_Iron
+626,1,100  // Monster_Juice
+627,1,100  // Sweet_Milk
+628,1,100  // Well_Dried_Bone
+629,1,100  // Singing_Flower
+630,1,100  // Dew_Laden_Moss
+631,1,100  // Deadly_Noxious_Herb
+632,1,100  // Fatty_Chubby_Earthworm
+633,1,100  // Baked_Yam
+634,1,100  // Tropical_Banana
+635,1,100  // Horror_Of_Tribe
+636,1,100  // No_Recipient
+637,1,100  // Old_Broom
+638,1,100  // Silver_Knife_Of_Chaste
+639,1,100  // Armlet_Of_Obedience
+640,1,100  // Shining_Stone
+641,1,100  // Contracts_In_Shadow
+642,1,100  // Book_Of_Devil
+659,1,100  // Heart_Of_Her
+660,1,100  // Prohibition_Red_Candle
+661,1,100  // Sway_Apron
+686,1,100  // Earth_Scroll_1_3
+687,1,100  // Earth_Scroll_1_5
+688,1,100  // Cold_Scroll_1_3
+689,1,100  // Cold_Scroll_1_5
+690,1,100  // Fire_Scroll_1_3
+691,1,100  // Fire_Scroll_1_5
+692,1,100  // Wind_Scroll_1_3
+693,1,100  // Wind_Scroll_1_5
+694,1,100  // Ghost_Scroll_1_3
+695,1,100  // Ghost_Scroll_1_5
+696,1,100  // Fire_Scroll_2_1
+697,1,100  // Fire_Scroll_2_5
+698,1,100  // Fire_Scroll_3_1
+699,1,100  // Fire_Scroll_3_5
+700,1,100  // Cold_Scroll_2_1
+11702,1,100  // Moon_Cookie
+12000,1,100  // Cold_Scroll_2_5
+12001,1,100  // Holy_Scroll_1_3
+12002,1,100  // Holy_Scroll_1_5
+12027,1,100  // Giggling_Box
+12028,1,100  // Box_Of_Thunder
+12029,1,100  // Gloomy_Box
+12030,1,100  // Box_Of_Grudge
+12031,1,100  // Sleepy_Box
+12032,1,100  // Box_Of_Storm
+12033,1,100  // Box_Of_Sunlight
+12034,1,100  // Painting_Box
+12215,1,100  // Blessing_10_Scroll
+12216,1,100  // Inc_Agi_10_Scroll
+12217,1,100  // Aspersio_5_Scroll
+12218,1,100  // Assumptio_5_Scroll
+12219,1,100  // Wind_Walk_10_Scroll
+12220,1,100  // Adrenaline_Scroll
+12225,1,100  // Sweet_Candy_Striper
+12235,1,100  // Strawberry_Choco
+12236,1,100  // Choco_Tart
+12237,1,100  // Choco_Lump
+12290,1,100  // Mysterious_Can
+12291,1,100  // Mysterious_PET_Bottle
+12310,1,100  // Spray_Of_Flowers
+12311,1,100  // Large_Spray_Of_Flowers
+12313,1,100  // Protection_Of_Angel
+12323,1,100  // N_Fly_Wing
+12324,1,100  // N_Butterfly_Wing
+12325,1,100  // N_Magnifier
+12340,1,100  // Mysterious_Rice_Powder
+12347,1,100  // Acorn_Jelly
+12350,1,100  // Angeling_Potion
+12358,1,100  // Fan_Of_Wind
+12359,1,100  // Very_Soft_Plant
+12360,1,100  // Very_Red_Juice
+12361,1,100  // Delicious_Shaved_Ice
+12362,1,100  // Kuloren
+12363,1,100  // Fit_Pipe
+12364,1,100  // Staff_Of_Leader
+12365,1,100  // Charming_Lotus
+12366,1,100  // Gril_Doll
+12367,1,100  // Luxury_Whisky_Bottle
+12368,1,100  // Splendid_Mirror
+12369,1,100  // Oilpalm_Coconut
+12370,1,100  // Gril's_Naivety
+12371,1,100  // Magical_Lithography
+12372,1,100  // Hell_Contract
+12373,1,100  // Boy's_Naivety
+12374,1,100  // Flaming_Ice
+12376,1,100  // Mysterious_Can2
+12377,1,100  // Mysterious_PET_Bottle2
+12388,1,100  // Runstone_Crush
+12389,1,100  // Runstone_Storm
+12390,1,100  // Runstone_Millennium
+12396,1,100  // Fools_Day_Box
+12397,1,100  // Fools_Day_Box2
+12415,1,100  // Siege_Teleport_Scroll2
+12473,1,100  // RWC_Parti_Box
+12474,1,100  // RWC_Final_Comp_Box
+12706,1,100  // Lucky_Cookie01
+12707,1,100  // Lucky_Cookie02
+12708,1,100  // Lucky_Cookie03
+12725,1,100  // Runstone_Nosiege
+12726,1,100  // Runstone_Rhydo
+12727,1,100  // Runstone_Verkana
+12728,1,100  // Runstone_Isia
+12729,1,100  // Runstone_Asir
+12730,1,100  // Runstone_Urj
+12731,1,100  // Runstone_Turisus
+12732,1,100  // Runstone_Pertz
+12733,1,100  // Runstone_Hagalas
+14521,1,100  // Repair_Scroll
+14529,1,100  // Greed_Scroll
+14532,1,100  // Battle_Manual25
+14587,1,100  // Repair_Scroll_
+14591,1,100  // Siege_Teleport_Scroll
+14592,1,100  // Job_Manual50
+14593,1,100  // Magic_Power_Scroll
+14594,1,100  // Quagmire_Scroll
+14599,1,100  // Greed_Scroll_C
+14606,1,100  // Job_Manual25

+ 27 - 1
src/map/itemdb.c

@@ -738,6 +738,31 @@ static bool itemdb_read_buyingstore(char* fields[], int columns, int current)
 
 	return true;
 }
+
+/*******************************************
+** Item usage restriction (item_nouse.txt)
+********************************************/
+static bool itemdb_read_nouse(char* fields[], int columns, int current)
+{// <nameid>,<flag>,<override>
+	int nameid, flag, override;
+	struct item_data* id;
+
+	nameid = atoi(fields[0]);
+	
+	if( ( id = itemdb_exists(nameid) ) == NULL ) {
+		ShowWarning("itemdb_read_nouse: Invalid item id %d.\n", nameid);
+		return false;
+	}
+	
+	flag = atoi(fields[1]);
+	override = atoi(fields[2]);
+
+	id->item_usage.flag = flag;
+	id->item_usage.override = override;
+
+	return true;
+}
+
 /**
  * @return: amount of retrieved entries.
  **/
@@ -1316,7 +1341,8 @@ static void itemdb_read(void) {
 	sv_readdb(db_path, "item_delay.txt",         ',', 2, 2, -1, &itemdb_read_itemdelay);
 	sv_readdb(db_path, "item_stack.txt",         ',', 3, 3, -1, &itemdb_read_stack);
 	sv_readdb(db_path, DBPATH"item_buyingstore.txt",   ',', 1, 1, -1, &itemdb_read_buyingstore);
-	
+	sv_readdb(db_path, "item_nouse.txt",		 ',', 3, 3, -1, &itemdb_read_nouse);
+
 	itemdb_uid_load();
 }
 

+ 8 - 0
src/map/itemdb.h

@@ -69,6 +69,10 @@ enum {
 	ITEMID_SPECIAL_COOLER,
 } mecha_item_list;
 
+enum {
+	NOUSE_SITTING = 0x01,
+} item_nouse_list;
+
 //The only item group required by the code to be known. See const.txt for the full list.
 #define IG_FINDINGORE 6
 #define IG_POTION 37
@@ -138,6 +142,10 @@ struct item_data {
 		unsigned int storage:1;
 		unsigned int guildstorage:1;
 	} stack;
+	struct {// used by item_nouse.txt
+		unsigned int flag;
+		unsigned short override;
+	} item_usage;
 	short gm_lv_trade_override;	//GM-level to override trade_restriction
 	/* bugreport:309 */
 	struct item_combo **combos;

+ 4 - 0
src/map/pc.c

@@ -4107,6 +4107,10 @@ int pc_isUseitem(struct map_session_data *sd,int n)
 		return 0;
 	if( !item->script ) //if it has no script, you can't really consume it!
 		return 0;
+		
+	if( (item->item_usage.flag&NOUSE_SITTING) && (pc_issit(sd) == 1) && (pc_get_group_level(sd) < item->item_usage.override) ) {
+		return 0; // You cannot use this item while sitting.
+	}
 
 	switch( nameid ) //@TODO, lot oh harcoded nameid here
 	{