Ru-MaNGOS

Вернуться   Ru-MaNGOS > Разработка скриптов > Принятые

Важная информация

Принятые Патчи, принятые разработчиками ScripDev2

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.08.2010, 23:53   #1
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию [QUEST=11865]Им рано умирать

По сниффам в данном квесте используем итем, который активирует го, после чего спавнится го (шкура), спавнится нпц, который говорит рандомно 1 из 4 фраз, идет к го (ловушка), использует ее и умирает от ее спелла, игрок получает +1.

Патч во вложении.

Запросы:
1. Для базы игрового мира:
Код:
DELETE FROM `spell_script_target` WHERE `entry`=46085;
INSERT INTO `spell_script_target` SET `entry`=46085, `type`=0, `targetentry`=187983;
DELETE FROM `gameobject` WHERE `id`=187983;
INSERT INTO
`gameobject` (`id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`)
SELECT
187983, `gameobject`.`map`, `gameobject`.`spawnMask`, `gameobject`.`phaseMask`, `gameobject`.`position_x`, `gameobject`.`position_y`, `gameobject`.`position_z`, `gameobject`.`orientation`, `gameobject`.`rotation0`, `gameobject`.`rotation1`, `gameobject`.`rotation2`, `gameobject`.`rotation3`, -`gameobject`.`spawntimesecs`, `gameobject`.`animprogress`, `gameobject`.`state`
FROM
`gameobject`, `gameobject_template`
WHERE
`gameobject`.`id`=`gameobject_template`.`entry`
AND `gameobject_template`.`name`='Caribou Trap';
UPDATE `gameobject_template` SET `scriptname`='go_high_quality_fur' WHERE `entry`=187983;
UPDATE `gameobject_template` SET `flags`=4 WHERE `name`='Caribou Trap';
DELETE FROM `creature` WHERE `id`=25835;
UPDATE `creature_template` SET `unit_flags`=33024, `scriptname`='npc_nesingwary_trapper' WHERE `entry`=25835;
2. Для базы СД2:
Код:
DELETE FROM `script_texts` WHERE `entry` IN (-1000006,-1000007,-1000008, -1000009);
INSERT INTO `script_texts` (`entry`, `content_default`, `type`, `emote`, `comment`) VALUES
(-1000006,'It\'s a miracle! The beast skinned itself!', 0, 5, 'for quest 11865'),
(-1000007,'Jackpot!', 0, 5, 'for quest 11865'),
(-1000008,'This is the last one i need for that set of Nesingwary steak knives!', 0, 5, 'for quest 11865'),
(-1000009,'Silly beasts!', 0, 5, 'for quest 11865');
3. Локализация ruRU:
Код:
UPDATE `script_texts` SET `content_loc8`='Это чудо! Зверь сбросил кожу!' WHERE `entry`=-1000006;
UPDATE `script_texts` SET `content_loc8`='Джекпот!' WHERE `entry`=-1000007;
UPDATE `script_texts` SET `content_loc8`='Это последний нож, необходимый мне для полной коллекции ножей для стейков Эрнестуэя!' WHERE `entry`=-1000008;
UPDATE `script_texts` SET `content_loc8`='Глупое зверье!' WHERE `entry`=-1000009;
Вложения
Тип файла: patch q11865.patch (8.0 Кб, 568 просмотров)
virusav вне форума   Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
Limpnau (07.08.2010), tempura (26.08.2010)
Старый 06.08.2010, 07:34   #2
timmit
YTDB Dev
 
Регистрация: 01.02.2010
Сообщений: 115
Сказал(а) спасибо: 0
Поблагодарили 36 раз(а) в 25 сообщениях
timmit На верном пути
По умолчанию

Не правильно
Цитата:
UPDATE `gameobject_template` SET `faction`=114 WHERE `name`='Caribou Trap';
UPDATE `creature_template` SET `unit_flags`=384, `type_flags`=2,
Вот правильное
Код:
UPDATE `gameobject_template` SET `flags` = 4 WHERE `name`='Caribou Trap';
UPDATE `creature_template` SET `unit_flags` = 33024 WHERE `entry` = 25835;

Последний раз редактировалось timmit; 06.08.2010 в 07:37.
timmit вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
tempura (26.08.2010)
Старый 06.08.2010, 08:33   #3
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Если не ошибаюсь, то фракция 114 для го используется для скриптов, чтобы нельзя было просто так использовать го.
Насчет флага нпц - в базе было 0, по вики `type_flags`=2 делает нпц неатакуемым, что и требуется.
virusav вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
tempura (26.08.2010)
Старый 06.08.2010, 11:54   #4
timmit
YTDB Dev
 
Регистрация: 01.02.2010
Сообщений: 115
Сказал(а) спасибо: 0
Поблагодарили 36 раз(а) в 25 сообщениях
timmit На верном пути
По умолчанию

я дал данные по снифу, а дальше решайте сами)

Последний раз редактировалось timmit; 06.08.2010 в 11:58.
timmit вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
tempura (26.08.2010)
Старый 06.08.2010, 14:54   #5
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Вчера, значит, зажал данные по сниффу, когда я спрашивал.

Постараюсь вечером проверить с твоими запросами.
Хотелось бы услышать комментарии по самому скрипту, правильно ли написан, можно ли оптимизировать. чтобы поправить и выложить на форум СД2.
virusav вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
tempura (26.08.2010)
Старый 06.08.2010, 20:18   #6
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Поправил запросы под данные со сниффов.
virusav вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
tempura (26.08.2010)
Старый 06.08.2010, 22:24   #7
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Поправил скрипт: теперь остается только один момент: го спавнится но не отображается до момента, когда игрок сделает какое-либо движение.
Если стоять неподвижно, то го не будет видно.

Это лечится в скрипте или вопрос к ядру?
virusav вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
tempura (26.08.2010)
Старый 06.08.2010, 23:15   #8
PSZ
Ученый
 
Регистрация: 07.03.2010
Сообщений: 138
Сказал(а) спасибо: 200
Поблагодарили 143 раз(а) в 49 сообщениях
PSZ Обладатель прекрасной аурыPSZ Обладатель прекрасной ауры
По умолчанию

Go->UpdateObjectVisibility();
PSZ вне форума   Ответить с цитированием
Старый 07.08.2010, 11:18   #9
PSZ
Ученый
 
Регистрация: 07.03.2010
Сообщений: 138
Сказал(а) спасибо: 200
Поблагодарили 143 раз(а) в 49 сообщениях
PSZ Обладатель прекрасной аурыPSZ Обладатель прекрасной ауры
По умолчанию

Еще замечание. Не храните указатели, храните гуиды. С хранимыми указателями в свн не примут, да и краши это иногда вызывает...
PSZ вне форума   Ответить с цитированием
Старый 07.08.2010, 13:32   #10
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Еще неизвестно что лучше - все время дергать указатель по гуиду (постоянно рискуя нарваться на краш при этом) или хранить указатель и просто проверять его перед использованием, а при брейке просто скипать операции с ним. По мне так второй вариант куда быстрее и эффективнее.
rsa вне форума   Ответить с цитированием
Старый 07.08.2010, 14:12   #11
zergtmn
MaNGOS Dev
 
Аватар для zergtmn
 
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
zergtmn Обладатель прекрасной аурыzergtmn Обладатель прекрасной ауры
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
Еще неизвестно что лучше - все время дергать указатель по гуиду (постоянно рискуя нарваться на краш при этом) или хранить указатель и просто проверять его перед использованием, а при брейке просто скипать операции с ним. По мне так второй вариант куда быстрее и эффективнее.
Трудно определить, когда указатель станет не валидным. При работе с гуидами таких проблем нет.
zergtmn вне форума   Ответить с цитированием
Старый 07.08.2010, 14:25   #12
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Абсолютно те же проблемы. Есть у меня в коллекции один краш в котором указатель стал невалидным в момент его возвращения по гуиду. А краши в instance->GetCreature я даже считать перестал, они там просто на ровном месте происходят...
rsa вне форума   Ответить с цитированием
Старый 07.08.2010, 14:58   #13
zergtmn
MaNGOS Dev
 
Аватар для zergtmn
 
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
zergtmn Обладатель прекрасной аурыzergtmn Обладатель прекрасной ауры
По умолчанию

Цитата:
Сообщение от rsa Посмотреть сообщение
Абсолютно те же проблемы. Есть у меня в коллекции один краш в котором указатель стал невалидным в момент его возвращения по гуиду.
Как такое возможно при работе в один поток?
Unit::GetUnit, ObjectAccessor::FindPlayer к тому же делают проверку на IsInWorld().
zergtmn вне форума   Ответить с цитированием
Старый 10.08.2010, 23:58   #14
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Переписал патч по пожеланиям на форуме СД2, вложение в первом посте обновлено.
virusav вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
tempura (26.08.2010)
Старый 25.08.2010, 20:24   #15
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Очередной раз переписал патч под требования на форуме СД2 + убрал лишние задержки между действиями, которые теперь выполняются одинаково независимо от точки спавна нпц.

Вложение в первом посте обновлено.
virusav вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
tempura (26.08.2010)
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 03:04. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot