• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
[C++ FUN mod] Морфы игроков
Dimitro
Praise the sun!
Решил написать мод для FUN и РП серверов...
Все простенько пока...

Суть мода:

Создается таблица, в которой хранится гуид, игрока ид морфа и размер (.mod scale) и, при входе игрока, данные берутся из этой таблицы.
Данные пока заносятся вручную.
Будьте осторожны со значениями.

Мод не тестил, ибо видуха сгорела.
Просьба протестить.
Подсоединяется к скрипт системе как обычный скрипт.

В планах:
Добавить дополнительных проверок, имплементировать вкл/выкл мода через конфиг, реализовать занесение данных в таблицу при использовании, собственно команд .mod morph и .mod scale.

При репосте куда либо, просьба указывать автора патча.
А то я смотрю на AC-WEB мои скрипты репостят от своего имени...


Собственно код с запросом в базу characters:

Code
#include "ScriptPCH.h"

/*
create table `character_morphs`(    
      `guid` int(10) UNSIGNED NOT NULL COMMENT 'Character guid' DEFAULT '0',    
      `morph` int(5) UNSIGNED NOT NULL COMMENT 'Character morph' DEFAULT '0',
      `scale` float(2) UNSIGNED NOT NULL COMMENT 'Character scale' DEFAULT '1',
      PRIMARY KEY (`guid`)
    )  ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT 'Charaster morphs';
    */

class morphing_on_login : public PlayerScript
{
public:
       morphing_on_login() : PlayerScript("morphing_on_login") {}

       void OnLogin(Player* player)
       {
           int64 pguid = player->GetGUID();
           QueryResult morph = CharacterDatabase.PQuery("SELECT morph from character_morphs WHERE guid = '%u'", pguid);
           QueryResult scale = CharacterDatabase.PQuery("SELECT scale from character_morphs WHERE guid = '%u'", pguid);

               if (morph)
                   player->SetDisplayId(morph->Fetch()->GetUInt32());

               if (scale)
                   player->SetFloatValue(OBJECT_FIELD_SCALE_X, scale->Fetch()->GetFloat());
       }
};

void AddSC_morphing_on_login()
{
       new morphing_on_login();
}
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 1 отредактировано Dimitro - Суббота, 22.10.2011, 23:32
Neket007
Core Developer
Avatar01, как я понял это постоянный морф, который не будет спадать даже после релога
Сообщение # 3 написано 23.10.2011 в 05:29
Dimitro
Praise the sun!
Да, именно так.
Причем не только морф, но и размер игрока.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 4 написано 23.10.2011 в 13:20
Brize
Скаут
Очень пригодилось для моего РП проекта, благодарю.
Сообщение # 5 написано 27.01.2012 в 11:49
Dimitro
Praise the sun!
В данном коде выше, они слетают после смерти, надл его просто немного доделать.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 6 написано 27.01.2012 в 14:30
keonji
I ♥ S-PB
Quote (Dimitro)
В данном коде выше, они слетают после смерти, надл его просто немного доделать.

это не сложно
Сообщение # 7 написано 27.01.2012 в 22:15
Dimitro
Praise the sun!
А я и не писал, что это сложно.
кто хочет, тот доделает, я просто информирую о некоторых недостатках скрипта.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 8 написано 27.01.2012 в 22:20
Прадмур
~
Quote (Dimitro)
кто хочет, тот доделает, я просто информирую о некоторых недостатках скрипта.

Это значит что сам ты этого сделать не можешь? (если не знаешь, то я подскажу как нужно было сделать)
Просто в текущей версии этот скрипт вообще бесполезен. Он при любом деморфе вызванном любым скриптом или даже сменой формы будет скидывать тот установленный тобой displayid.

P.S: желательно использовать подготовку запросов когда запрос выполняется больше одного раза.
Сообщение # 9 отредактировано Прадмур - Пятница, 27.01.2012, 22:45
Dimitro
Praise the sun!
Это значит что просто мне конкретно лень его переписывать и этот скрипт лично мне больше не нужен.

Через PlayerScript правильно это не реализовать.
Придется точечно править некоторые функции.

А конкретно, Create и, возможно, InitDisplayIds из класса Player, также SetDisplayId из класса Unit.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 10 отредактировано Dimitro - Пятница, 27.01.2012, 23:44
Just_Max
Рыцарь
Code
/*  
  create table `character_morphs`(     
       `guid` int(10) UNSIGNED NOT NULL COMMENT 'Character guid' DEFAULT '0',     
       `morph` int(5) UNSIGNED NOT NULL COMMENT 'Character morph' DEFAULT '0',  
       `scale` float(2) UNSIGNED NOT NULL COMMENT 'Character scale' DEFAULT '1',  
       PRIMARY KEY (`guid`)  
     )  ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT 'Charaster morphs';  
     */


Может кто нить выложить данную таблицу?

Добавлено (17.09.2012, 00:56)
---------------------------------------------
Dump имеется ввиду!



Человек не может жить без сердца, без печени, без почек.
Зато, сука, без мозгов спокойно живут целыми поколениями.
Сообщение # 11 написано 17.09.2012 в 00:56
Dimitro
Praise the sun!
А выше что тогда?
Сохраняете в sql без знаков комментария, вот вам и дамп.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 12 написано 17.09.2012 в 01:29
nrj45
Рыцарь
А как можно добавить player->CastSpell чтобы так же от туда бралось ?
Новый сервер - http://lk-wow.ru
Сообщение # 13 написано 17.09.2012 в 18:43
Dimitro
Praise the sun!
Посмотреть на скрипт, подумать, сделать по примеру.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 14 написано 17.09.2012 в 19:20
nrj45
Рыцарь
Добавляю

QueryResult aura = CharacterDatabase.PQuery("SELECT aura from character_morphs WHERE guid = '%u'", pguid);

player->CastSpell(aura->Fetch()->GetUInt32())

Ошибка на "->" отсутствуют экземпляры перегруженная функция player::CastSpell, соответствующие списку аргументов
Новый сервер - http://lk-wow.ru
Сообщение # 15 написано 17.09.2012 в 19:25
Dimitro
Praise the sun!
Учите С++.
У функции CastSpell не один аргумент.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 16 написано 17.09.2012 в 19:30
nrj45
Рыцарь
Сделал по другому примеру и работает
if (player->HasAura(aura->Fetch()->GetUInt32(), true))
{
player->CLOSE_GOSSIP_MENU();
}
else
{
player->CLOSE_GOSSIP_MENU();
player->CastSpell(player, aura->Fetch()->GetUInt32(), true);
Новый сервер - http://lk-wow.ru
Сообщение # 17 написано 17.09.2012 в 19:56
Dimitro
Praise the sun!
Quote (nrj45)
player->CLOSE_GOSSIP_MENU();

Это тут зачем?
Зачем бездумно пихать ненужный код?
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 18 написано 17.09.2012 в 21:02
nrj45
Рыцарь
я с++ не знаю а нужно чтобы было вот и пробовал всяко чтобы работало, такой вариант работает я на нём и остановился.
Новый сервер - http://lk-wow.ru
Сообщение # 19 написано 18.09.2012 в 18:52
ThePhenom
Капрал
Хорошая весчь. Как раз совмещу со своим нпс, который раздавал временные морфы.
Сообщение # 20 отредактировано ThePhenom - Четверг, 20.09.2012, 23:48
0niwone
WoW-Carnge <Dev>
Очень пригодится, спасибо.
Пользуюсь гарант услугами pwlvl.ru
Сообщение # 21 написано 25.09.2012 в 21:58
Just_Max
Рыцарь
На новой реве не пашет так же как и Фейк онлайн!!!!


Человек не может жить без сердца, без печени, без почек.
Зато, сука, без мозгов спокойно живут целыми поколениями.
Сообщение # 22 написано 25.09.2012 в 22:17
ThePhenom
Капрал
Что там может не пахать. Переопределен один метод 10 строками..
Сообщение # 23 написано 27.09.2012 в 15:36
Depain
Скаут
После морфа тринки ДБВ(воля) морф игрока спадает
Сообщение # 24 отредактировано Depain - Воскресенье, 14.10.2012, 19:14
dezing2
Куратор Ares-wow.ru
Объясните как установить данный патч в исходник.
Сообщение # 25 написано 12.08.2013 в 22:29
  • Страница 1 из 1
  • 1
Поиск: