Ами най-малкия пример. Всяка карта си има определен ID. Има разминаване между версиите на картите, защото повечето които се занимават работят с enUS локал на пачовете. Затова когато ходите по някои територии може да ви даде грешка и когато mangos-а се опита да поправи проблема, той изпълнява sql заявка която да премести героя ви 'назад' и ако има някаква грешка и в тази заявка, героя ви изчезва, защото на практика заявката е delete from **** insert into *** Надявам се някой да ме е разбрал хаха
Не си прав.
ID-to е едно за всички locales, точно това е идеята на ID-to както в базата така и в DBC фаиловете, map файловете и т.н.
Идеята е че зад всяко Id стой някаква локализация била тя ако искаш и на китаиски.
Образно казано в сървъра ти се канектва човек от китай, тои ще вижда всичко на китаиски което е от неговата клиентска част но съответно когато тръгне да изпълнява да кажем куест ще получите данните от колоната description в таблицата quest_template която в твоя случай е на англииски.
Същото важи когато се четат данни от таблицата mangos_strings и т.н.
Локализацията на клиентската част не от значение за сървърската част, цялата идея на локализацията е точно тази.
Така че ако един клиент се канекнте с EnGB локализация а сървъра е с EnUs това по никакъв начин не може да е причина някой да си загуби героя.
Единственото правило в случая е клиента и сървъра да бъдат на една и съща версия за да може даденият клиент да играе.
Ако поразгледаш Source Codes на Mangos ще видиш че съм прав.
ПС: Цялата идея не е на Mangos тя е тръгнала от Blizzard, да не кажеме че и идеята не е тяхна даже.
Подобно нещо се казва Нормализация на базата, има няколко нива на нормализация но това е друга тема.
Отностно някой беше писал тук за транзакциите в mangos, ажаба аз никаде в source code на мангос не съм видял да се пуска транзанция и при Exeption да се rollback или при успех да се Commit.
Изцяло разчитат на Auto Start Transaction, и може би по добре в случая защото една увиснала транзакция а тя може да не се окаже една в дадения случай ще разкатае мамата на SQL Servera.
Отедлно че в Source Code на Mangos не е спазен стандарта ANSI SQL и съответно имплементирането на mangos с друг SQL Server е трудоемко и почти невъзможно.
Заявки от сорта:
ALTER TABLE `item_template`
ADD COLUMN `RequiredArenaRank` INT(10) UNSIGNED NOT NULL DEFAULT 0 AFTER `ExtendedCost`;
не отговарят на ANSI стандарта и не могат да бъдат имплементирани в MS SQL Server например.
Правилната заявка е:
ALTER TABLE item_template
ADD COLUMN RequiredArenaRank INT(10) UNSIGNED NOT NULL DEFAULT 0 AFTER ExtendedCost;
Това е от мен.
Все пак трябва да се радваме на това което полуаваме безплатно макар и то да не е савършенно.