YTDB

YTDB (http://ytdb.ru/index.php)
-   Патчи (http://ytdb.ru/forumdisplay.php?f=26)
-   -   GuildHouse патч валит сервер при раскупленых ГХ (http://ytdb.ru/showthread.php?t=315)

tempura 15.11.2009 18:54

GuildHouse патч валит сервер при раскупленых ГХ
 
Патч guildmaster.cpp на SD2.

Вот баг-репорт получил.
Цитата:

пишут как гх все раскупили при попытке купить -серв падает. Есть у тебя затычка?
Сам пока не имею возможности проверить и исправить. Кто-то имеет возможность помочь хотя бы в проверке?

Ревизии - все (он не меняется).

Тема в разделе патчей на ядро.

Mr.Grom 02.12.2009 12:00

Вот место которое отвечает за работу патча, если все гх куплены

PHP код:

        if (showFromId 0)
        {
            
//all guildhouses are occupied
            
_creature->MonsterWhisper(MSG_NOFREEGHplayer->GetGUID());
            
player->CLOSE_GOSSIP_MENU();
        } else
        {
            
//this condition occurs when COUNT(guildhouses) % GOSSIP_COUNT_MAX == 0
            //just show GHs from beginning
            
showBuyList(player_creature0);
        } 

Возможно должно быть
PHP код:

if (showFromId == NULL

или
PHP код:

 if (!showFromId


tempura 02.12.2009 12:27

кто бы протестил. :( А то мне сейчас тупо негде и не на чем. :(

real 02.12.2009 13:08

скорее всего 1 вариант
PHP код:

if (showFromId == 0)     
        { 


Mr.Grom 02.12.2009 13:36

Тогда уж
PHP код:

if (showFromId == NULL

но красивее.
PHP код:

if (!showFromId


tempura 02.12.2009 18:24

собственно предмет


уже правлено.

Mr.Grom 07.12.2009 01:21

Если ГиМ меняет( по незнанию прописывает его сам в другом городе) дом то ГХ для гильды недоступен.

tempura 07.12.2009 11:38

"меняет", в смысле - продает один, и покупает другой?


Кажется скоро придется все нафиг переписывать под Gossip System...

Smak 07.02.2010 18:25

Так не роняет:
Код:

if (!showFromId)

Chesterfield 07.02.2010 21:13

Цитата:

if (showFromId == NULL)
NULL это макрос того же самого нуля, который был указан.

tempura 07.02.2010 23:06

Ну в оригинале-то там вообще
Код:

if (showFromId = 0)
стоит. :)

Konctantin 07.02.2010 23:15

if (showFromId = 0) - означает, что переменной showFromId присваивается значение 0
А когда == или !showFromId означает что идет проверка на значение.

tempura 07.02.2010 23:47

вау.... завидую.

Давайте я вам баллистику СЦ-130ВПС расскажу. :) Обещаю, что вы в этом тоже ничего не поймете. :)


Как я понимаю - безразлично что писать:
Код:

if (showFromId = 0) // присвоение значения
if (showFromId == NULL) // проверка на значение
if (!showFromId) // проверка на значение

то есть все три строки - равнозначны? Или же все-таки какая-то из них содержит ошибку? При первой пишут, что "валит сервер при раскупленых ГХ", при последней пишут что не валит. Не понимаю.

timmit 07.02.2010 23:51

Первая дает ошибку
Код:

if (showFromId = 0) // присвоение значения
Идентичны:
Код:

if (showFromId == NULL) // проверка на значение
if (!showFromId)


tempura 07.02.2010 23:54

А, вот теперь понял. Тогда последняя строка и правда красивее смотрится. Везде поправил.

Konctantin 07.02.2010 23:57

Код:

int i = 0;
int value = 5;
i = value; // теперь i равно 5

if (i = value)  // это ошибка так нельзя писать

if (i == value)
        return true;
       
if (!value)
        return false;
       
if (value == null)
        return false;


tempura 08.02.2010 00:23

Ну тогда я про баллистику не буду, но популярные сведения предоставлю. :)


Ага, вот это я кажется понял:
Код:

i = value; // теперь i равно 5

if (i = value)  // это ошибка так нельзя писать

Тут value и так присваивается в предыдущей строке, поэтому запрос "если i = value" - некорректный.

griffonheart 08.02.2010 06:53

Цитата:

Сообщение от tempura (Сообщение 11243)
Код:

if (i = value)  // это ошибка так нельзя писать

Это семантическая ошибка, но не синтаксическая. Так писать можно, но в данном контексте не правильно.
if(i = value) - означает следующее:
1) Присваиваем переменной i значение переменной value
2) Если результат присваивания - истина - условии выполняется, если ложь - не выполняется. А рельзтат может быть ложью, если допустим значение переменной value ложно (равно нулю, например)
PS: Если что, извиняюсь за боян...


Текущее время: 20:20. Часовой пояс GMT +4.

YTDB - MaNGOS DataBase