Перейти к содержанию

Странная ошибка


Рекомендуемые сообщения

Доброго дня, дорогие форумчане!

 

Проявилась странная ошибка на эмуляторе еа от 2012 года.

У одного из игроков пропали вкладки все кроме первой и последней (что можно использовать, поты и прочее и лут). Причем в кафре занято 997 из 1000 возможных, а все закладки оружия, брони пустые. 

Есть идеи из-за чего подорбное может быть и как восстановить отображение?

Спасибо за уделенное внимание!

 

Ссылка на комментарий
Поделиться на другие сайты

Возможно вопрос глупый, в таком случае прошу не проходить мимо. Будет очень полезна любая информацию касающаяся вопроса. Спасибо!

Ссылка на комментарий
Поделиться на другие сайты

Я так понимаю что сами вкладки никуда не пропали, они есть, но они пустые...

Скорее всего, я так думаю, что проблема с базой, в которой храниться вся информация о чаре или его аккаунте.

Возможно таблица базы нарушена, и ее нужно поченить. Функцыя починкы таблицы есть пхпМуАдмин. Пробуйте.

Ссылка на комментарий
Поделиться на другие сайты

В старых эмуляторах надо ставить фикс для кафры, чтобы иметь больше (731 is the safe limit) слотов.

2010-12-21storpage (3).diff

 

Скрытый текст

Index: src/map/atcommand.c
===================================================================
--- src/map/atcommand.c	(revision 14609)
+++ src/map/atcommand.c	(working copy)
@@ -1153,6 +1153,15 @@
 	if (sd->npc_id || sd->vender_id || sd->state.trading || sd->state.storage_flag)
 		return -1;
 
+	if( message && message[0] )
+	{// storage paging
+		sd->storage_page = atoi(message);
+	}
+	else
+	{
+		sd->storage_page = 0;
+	}
+
 	if (storage_storageopen(sd) == 1)
 	{	//Already open.
 		clif_displaymessage(fd, msg_txt(250));
@@ -1190,6 +1199,15 @@
 		return -1;
 	}
 
+	if( message && message[0] )
+	{// storage paging
+		sd->storage_page = atoi(message);
+	}
+	else
+	{
+		sd->storage_page = 0;
+	}
+
 	storage_guild_storageopen(sd);
 	clif_displaymessage(fd, "Guild storage opened.");
 	return 0;
Index: src/map/script.c
===================================================================
--- src/map/script.c	(revision 14609)
+++ src/map/script.c	(working copy)
@@ -7432,6 +7432,15 @@
 	if( sd == NULL )
 		return 0;
 
+	if( script_hasdata(st,2) )
+	{// storage paging
+		sd->storage_page = script_getnum(st,2);
+	}
+	else
+	{
+		sd->storage_page = 0;
+	}
+
 	storage_storageopen(sd);
 	return 0;
 }
@@ -7445,6 +7454,15 @@
 	if( sd == NULL )
 		return 0;
 
+	if( script_hasdata(st,2) )
+	{// storage paging
+		sd->storage_page = script_getnum(st,2);
+	}
+	else
+	{
+		sd->storage_page = 0;
+	}
+
 	ret = storage_guild_storageopen(sd);
 	script_pushint(st,ret);
 	return 0;
@@ -14654,8 +14672,8 @@
 	BUILDIN_DEF(gettimetick,"i"),
 	BUILDIN_DEF(gettime,"i"),
 	BUILDIN_DEF(gettimestr,"si"),
-	BUILDIN_DEF(openstorage,""),
-	BUILDIN_DEF(guildopenstorage,""),
+	BUILDIN_DEF(openstorage,"?"),
+	BUILDIN_DEF(guildopenstorage,"?"),
 	BUILDIN_DEF(itemskill,"vi"),
 	BUILDIN_DEF(produce,"i"),
 	BUILDIN_DEF(cooking,"i"),
Index: src/map/clif.c
===================================================================
--- src/map/clif.c	(revision 14609)
+++ src/map/clif.c	(working copy)
@@ -2174,7 +2174,13 @@
 #else
 	const int cmd = 28;
 #endif
+	int skip_e = 0, skip_s = 0, max_e = 20480/cmd, max_s = 20480/s;
 
+	if( sd->storage_page < 0 )
+	{// storage paging
+		sd->storage_page = 0;
+	}
+
 	buf = (unsigned char*)aMallocA(items_length * s + 4);
 	bufe = (unsigned char*)aMallocA(items_length * cmd + 4);
 
@@ -2185,6 +2191,19 @@
 		id = itemdb_search(items[i].nameid);
 		if( !itemdb_isstackable2(id) )
 		{ //Equippable
+			if( sd->storage_page )
+			{// storage paging
+				if( skip_e/max_e < sd->storage_page-1 )
+				{
+					skip_e++;
+					continue;
+				}
+				else if( ne >= max_e )
+				{
+					continue;
+				}
+			}
+
 			WBUFW(bufe,ne*cmd+4)=i+1;
 			clif_item_sub(bufe, ne*cmd+6, &items[i], id, id->equip);
 			clif_addcards(WBUFP(bufe, ne*cmd+16), &items[i]);
@@ -2196,6 +2215,19 @@
 		}
 		else
 		{ //Stackable
+			if( sd->storage_page )
+			{// storage paging
+				if( skip_s/max_s < sd->storage_page-1 )
+				{
+					skip_s++;
+					continue;
+				}
+				else if( n >= max_s )
+				{
+					continue;
+				}
+			}
+
 			WBUFW(buf,n*s+4)=i+1;
 			clif_item_sub(buf, n*s+6, &items[i], id,-1);
 #if PACKETVER >= 5
Index: src/map/pc.h
===================================================================
--- src/map/pc.h	(revision 14609)
+++ src/map/pc.h	(working copy)
@@ -385,6 +385,8 @@
 
 	char away_message[128]; // [LuzZza]
 
+	int storage_page;  // storage paging
+
 	int cashPoints, kafraPoints;
 	int rental_timer;
 

 

 

Изменено пользователем Sky
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

21 часа назад, Sky сказал:

В старых эмуляторах надо ставить фикс для кафры, чтобы иметь больше (731 is the safe limit) слотов.

2010-12-21storpage (3).diff

 

Скрытое содержимое

 

куда вставить код? Как применить? Сапсибо за помощь!

Ссылка на комментарий
Поделиться на другие сайты

Файл который надо фиксить

--- src/map/atcommand.c	(revision 14609)
+++ src/map/atcommand.c	(working copy)

Строчки с минусами удалить, с плюсами воткнуть вместо них

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

Ребят, к сожалению сервер на линуксе и svn не используется, просто скачена сборка. Возможно кто то может поделиться файлами которые уже пофиксены, для кафры? Если конечно они стандартные. 

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...
Яндекс.Метрика