• Страница 1 из 2
  • 1
  • 2
  • »
Архив - только для чтения
Модератор форума: andycrowz  
compiled x32 by Kirito
Kirito
Скаут
Версия клиента 3.0.9 (9551)
Последняя сборка:
Mangos Rev 7863
ScriptDev2 Rev 1101

Compiled with Microsoft Visual Studio 2008 by Kirito

Core:
1. Chatlog & Lexics Cutter (ведение логов чата, антимат)
2. Modify scale fix (позволяет команде выставлять размеры до х15)
3. Auto Broadcast (добавляет систему автоматической отправки объявлений)
4. Stealth Removing (исправляет снятие невидимости уроном)
5. Sacrifice fix (исправляет работу спелла)
6. MySQL Reconnect (разрешает реконнект к базе при потере соединения)
7. Steady Shot (исправляет дополнительный урон у спелла)
8. Spell Disabled (позволяет отключать спеллы)
9. Miss Combat fix (исправляет зависание мобов)
10. Creature Honor Kill fix (исправляет количество Honor за боссов столиц)
11. Holy Nova Heal (исправляет лечение у спелла)
12. Walking (исправляет баг с переключением на ходьбу)
13. Lowie Buff (исправляет работу бафов)
14. Call Assist (исправляет нападение дружественных мобов)
15. Barskin (исправляет работу спелла)
16. Gobject Loot (исправляет сохранение инстансов при открытии объектов)
17. Stuns in Flight (исправляет баг с телепортом игрока в конечную точку полёта если тот получил Stun)
18. Disengage (исправляет работу спелла)
19. Attack Speed Mods (исправляет работу спеллов)
20. Some BT Spells fix (исправляет работу спеллов)
21. Devastate (исправляет работу спелла)
22. Devour Magic (исправляет работу спелла)
23. Mark Of Kaz'rogal (исправляет работу спелла)
24. Pet Experience (исправляет получение опыта у петов)
25. Arcane Charges (исправляет работу спелла)
26. Druid Energy (исправляет работу спеллов)
27. Instrument prevent Freeze (временный фикс фризов сервера)
28. Spell Miss (исправляет отображение промаха у заклинаний)
29. Instance Crash fix (исправляет одну из причин падений сервера)
30. Dispel (исправляет работу спелла)
31. Stop Moving (исправляет передвигающиеся трупы мобов)
32. Jail (реализует работу тюрьмы)
33. Charge (исправляет работу спелла)
34. Autoreg (позволяет включать автоматическую регистрацию)
35. Summon Type 429 (исправляет работу спеллов)
36. Taunt (исправляет использование спелла петами)
37. Hot Steak & Firestarter (исправляет стак спеллов)
38. Allow Only One Ability (исправляет работу спеллов)
39. Trade Enchants (реализует создание энчант свитков)
40. Reset Profession fix (корректно удаляет специализации у профессий)
41. Multilate (исправляет работу спелла)
42. Divine Hymn (исправляет работу спелла)
43. Spell Aura Fly (исправляет работу спеллов)
44. Cleanup (удаляет старый код)
45. Mind Shear & Mind Flay (исправляет работу спеллов)
46. Improved Fear (исправляет работу спелла)
47. Guardian Spirit (исправляет работу спелла)
48. Nourish (исправляет работу спелла)
49. Few Spellstack (исправляет стак нескольких спеллов)
50. Nether Protection (исправляет работу спелла)
51. Heroic Fury (исправляет работу спелла)
52. Arcane Potency (исправляет работу спелла)
53. Improved Leader of the Pack (исправляет работу спелла)
54. Death Grip (исправляет работу спелла)
55. Alterac Valley (реализует работу БГ)
56. AuctionHouse Bot (добавляет аукцион бота)
57. Savage Roar (исправляет работу спелла)
58. Underbelly Elixir (исправляет работу вещи)
59. Avenging Wrath (исправляет работу спеллов)
60. Frost Presence (исправляет работу спелла)
61. Seal of Corruption (исправляет работу спелла)
62. Self of Wisdom (исправляет работу спелла)
63. Demonic Empowerment (исправляет работу спелла)
64. Blink (исправляет работу спелла)
65. Pet Autocast (корректно прерывает спеллы у петов при подаче новой команды)
66. Archievement Criteria Win Rated Arena (исправляет работу достижения)
67. Improved Icy Touch (исправляет работу спелла)
68. Visual Stack fix (исправляет отображение стаков у спеллов)
69. DK Start Zone (запрещает битвы в стартовой зоне ДК)
70. Judgement of Wise (исправляет работу спелла)
71. Glyph of Swiftmend (исправляет работу спелла)
72. Regenerate (исправляет проблемы с регенерацией маны/энергии/рун)
73. Archievement Equip Item (реализует работу достижения)
74. Blade Flurry (исправляет работу спелла)
75. Crypt Fever (исправляет работу спеллов)
76. Rockbiter Talent Remove (удаляет мертвый код)
77. Archievement Roll Need & Greed (реализует работу достижения)
78. King of Jungles (исправляет работу спелла)
79. Glyph of Corruption (исправляет работу спелла)
80. Master Shapeshifter (исправляет работу спелла)
81. Speed Cheat fix (античит)
82. Outdoor PvP (реализует захват зон)
83. Easy Expirience Fix (предотвращает получение опыта если большую часть урона цели нанес другой моб)
84. Unkillable npc (реализует работу тренировочных кукол)
85. Tidal Force (исправляет работу спелла)
86. Aura 262 (исправляет работу спеллов)
87. Vampiric Blood (исправляет работу спелла)
88. Hex (исправляет работу спелла)
89. Diseases (исправляет работу спеллов)
90. Improved Insect Swarm (исправляет работу спелла)
91. Shadowflame (исправляет работу спелла)
92. Aura Add Creature Immunity (исправляет работу спеллов)
93. Ferocious Bite (исправляет работу спелла)
94. Berserk (исправляет работу спелла)
95. Improved Moonkin Form (исправляет работу спелла)
96. Death Pact & Coprse Explosion & Raise Dead & Army of Dead(реализует работу спеллов)
97. Shattered Barrier (исправляет работу спелла)
98. GetMap v4 (оптимизация работы сервера)
99. Declined Names v2 (исправляет работу склонений имен)
100. Fire Ward & Fire Shield (исправляет стак спеллов)
101. Threat fix (исправляет работу спеллов и системы аггро)
102. Scepters fix (исправляет работу посохов с контролем разума)
103. Procflag Death (исправляет работу спеллов)
104. Pet Aura Distance (исправляет радиус действия аур петов)
105. Pet Attack Distance (исправляет дальность атаки петов)
106. Distract (исправляет снятие стелса некоторыми спеллами)
107. Improved Shadowform (исправляет работу спелла)
108. Reincarnation (исправляет работу спеллов)
109. Character Login (исправляет работу с базой)
110. Freezing Arrow (исправляет работу спелла)
111. Demonic Circle (исправляет работу спелла)
112. Physhic Horror (исправляет работу спелла)
113. Aspect of the Dragonhawk (исправляет работу спелла)
114. Chimera Shot (исправляет работу спелла)

Script:
1. Teleguy (добавляет скрипт на телепорт мастера)
2. Al'ar (добавляет скрипт на босса)
3. Supremus (исправляет работу босса)
4. Nightbane (добавляет скрипт на босса)
5. WotLK Taxi (исправляет работу новых такси)
6. Sapphiron (исправляет работу босса)
7. Item Scripts (исправляет работу некоторых вещей)
8. npc_arena_honor (обменник ап на хонор и наоборот)
9. guildmaster (скрипт на покупку гильдмастером ГХ,цены - 30000 покупка ГХ, 15000 продажа)
10. Buffer v1.0 (добавляет скрипт на баффера)

Те кто устанавливал предыдущего баффера - удалите его
id нового - 99002

Зелёным выделено то, что добавил я (патч Buffer сделан мной), остальное кумуль карателя.

Ядро - http://filekeeper.org/download/kirito/WoW/Mangos%207863%2BPatches.7z

Extractor - http://filekeeper.org/download/kirito/WoW/Extractor.7z


Сообщение # 1 отредактировано Kirito - Суббота, 23.05.2009, 16:51
Nazgool
Центурион
Kirito, поточнее что тут ты добавил что было?
КИНУЛ НАХ!
Сообщение # 2 написано 11.05.2009 в 10:54
Kirito
Скаут
Nazgool, обновил первый пост

Сообщение # 3 написано 11.05.2009 в 10:57
Nazgool
Центурион
Kirito, неплохо скрипты ты писал?
КИНУЛ НАХ!
Сообщение # 4 написано 11.05.2009 в 12:37
Kirito
Скаут
Nazgool, нет но я их подгонял под ревы и переделывал.

Сообщение # 5 написано 11.05.2009 в 12:41
Nazgool
Центурион
Kirito, ну не плохо бы было автора скриптов указать или источник откуда их взял smile
КИНУЛ НАХ!
Сообщение # 6 написано 11.05.2009 в 12:55
farion
Сержант
Под linuх подойдёт?)
Сообщение # 7 отредактировано farion - Понедельник, 11.05.2009, 14:28
HordeStig
Скаут
ну и как сборка ?:) кстати выложи скрипт отдельно на арену - npc_arena_honor (обменник ап на хонор и наоборот) smile
горячее сырым не бывает :)
Сообщение # 8 отредактировано HordeStig - Понедельник, 11.05.2009, 19:10
farion
Сержант
а для меня на гх)
Сообщение # 9 написано 12.05.2009 в 17:33
Kirito
Скаут
Патч npc_arena_honor для SD 1075
Code
Index: Makefile.am
===================================================================
--- Makefile.am    (revision 1075)
+++ Makefile.am    (working copy)
@@ -51,6 +51,7 @@
       scripts/examples/example_escort.cpp \
       scripts/examples/example_gossip_codebox.cpp \
       scripts/examples/example_misc.cpp \
+scripts/custom/npc_arena_honor.cpp \
       scripts/go/go_scripts.cpp \
       scripts/guard/guard_ai.cpp \
       scripts/guard/guard_ai.h \
Index: ScriptMgr.cpp
===================================================================
--- ScriptMgr.cpp    (revision 1075)
+++ ScriptMgr.cpp    (working copy)
@@ -51,6 +51,7 @@
       extern void AddSC_generic_creature();
             
       // -- Custom --
+extern void AddSC_npc_arena_honor();
             
       // -- Examples --
       extern void AddSC_example_creature();
@@ -900,6 +901,7 @@
           AddSC_generic_creature();
             
           // -- Custom --
+    AddSC_npc_arena_honor();
             
           // -- Examples --
           AddSC_example_creature();
Index: scripts/custom/npc_arena_honor.cpp
===================================================================
--- scripts/custom/npc_arena_honor.cpp    (revision 0)
+++ scripts/custom/npc_arena_honor.cpp    (revision 0)
@@ -0,0 +1,53 @@
+#include "sc_creature.h"
+// #include "../../../../game/QuestDef.h"
+#include "sc_gossip.h"
+#include "precompiled.h"
+
+#define GOSSIP_ITEM_ARENA_TO_HONOR "Change 100 Arena to 900 Honor"
+#define GOSSIP_ITEM_HONOR_TO_ARENA "Change 1000 Honor to 90 Arena"
+
+bool GossipHello_npc_arena_honor(Player *player, Creature *_Creature)
+{
+    player->ADD_GOSSIP_ITEM(0, GOSSIP_ITEM_HONOR_TO_ARENA, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
+    player->ADD_GOSSIP_ITEM(0, GOSSIP_ITEM_ARENA_TO_HONOR, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
+    player->SEND_GOSSIP_MENU(3961,_Creature->GetGUID());
+    return true;
+}
+
+bool GossipSelect_npc_arena_honor(Player *player, Creature *_Creature, uint32 sender, uint32 action)
+{
+    if (action == GOSSIP_ACTION_INFO_DEF + 1)
+    {
+  if (player->GetHonorPoints() >= 1000)
+        {
+   player->ModifyHonorPoints(-1000);       
+   player->ModifyArenaPoints(+90);
+        } else {
+                  _Creature->MonsterSay("You haven't enough honor points!", LANG_UNIVERSAL, 0);
+               }
+    }
+    if (action == GOSSIP_ACTION_INFO_DEF + 2)
+    {
+        if (player->GetArenaPoints() >= 100)
+        {
+            player->ModifyArenaPoints(-100);       
+            player->ModifyHonorPoints(+900);
+        } else {
+                 _Creature->MonsterSay("You haven't enough arena points!", LANG_UNIVERSAL, 0);
+               }
+    }
+player->CLOSE_GOSSIP_MENU();
+return true;
+
+}
+
+void AddSC_npc_arena_honor()
+{
+    Script *newscript;
+
+    newscript = new Script;
+    newscript->Name = "npc_arena_honor";
+    newscript->pGossipHello = &GossipHello_npc_arena_honor;
+    newscript->pGossipSelect = &GossipSelect_npc_arena_honor;
+    newscript->RegisterSelf();
+}
Index: VC80/80ScriptDev2.vcproj
===================================================================
--- VC80/80ScriptDev2.vcproj    (revision 1075)
+++ VC80/80ScriptDev2.vcproj    (working copy)
@@ -468,6 +468,10 @@
          <Filter
           Name="custom"
           >
+     <File
+     RelativePath="..\scripts\custom\npc_arena_honor"
+     >
+    <  /File>
          </Filter>
          <Filter
           Name="areatrigger"
Index: VC90/90ScriptDev2.vcproj
===================================================================
--- VC90/90ScriptDev2.vcproj    (revision 1075)
+++ VC90/90ScriptDev2.vcproj    (working copy)
@@ -467,6 +467,10 @@
          <Filter
           Name="custom"
           >
+     <File
+     RelativePath="..\scripts\custom\npc_arena_honor"
+     >
+    <  /File>
          </Filter>
          <Filter
           Name="areatrigger"

+

SQL Mangos

Code
DELETE FROM `creature_template` WHERE (`entry`=7);
INSERT INTO `creature_template` (`entry`, `heroic_entry`, `modelid_A`, `modelid_A2`, `modelid_H`, `modelid_H2`, `name`, `subname`, `IconName`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `baseattacktime`, `rangeattacktime`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `class`, `race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `unk16`, `unk17`, `RacialLeader`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`) VALUES (7, 0, 5525, 18748, 17895, 20711, 'Besdoban Durnoye', 'Arena-Honor Exchange', '', 59, 61, 6700, 24000, 5598, 5875, 20, 35, 35, 1, 1.48, 0, 0, 170, 182, 0, 1235, 1400, 1900, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 1, 3, 1, 1, 0, 1, 0, 0, 0, 'npc_arena_honor');

INSERT INTO `locales_creature` VALUES       
('7', '', '', '', '', '', '', '', 'Бездобан Дурнойе', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'Обмен Арены и Хонора'),
('11', '', '', '', '', '', '', '', 'На Порт-а-Чил', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'Телепортовая Гильдия');

INSERT INTO `creature` VALUES
(300130, 7, 1, 1, 1, 0, 0, 16211.9, 16267.1, 13.6722, 5.79842, 25, 0, 0, 6700, 5598, 0, 1),
(300131, 7, 0, 1, 1, 0, 0, -8760, 408.6, 110, 2.64, 25, 0, 0, 6700, 5598, 0, 1),
(300132, 7, 1, 1, 1, 0, 0, 1670, -4195, 56, 4.2, 25, 0, 0, 6700, 5598, 0, 1);





Патч guildmaster для SD 1075
Code
Index: Makefile.am
===================================================================
--- Makefile.am    (revision 1075)
+++ Makefile.am    (working copy)
@@ -51,6 +51,7 @@
     scripts/examples/example_escort.cpp \
     scripts/examples/example_gossip_codebox.cpp \
     scripts/examples/example_misc.cpp \
+scripts/custom/guildmaster.cpp \
     scripts/go/go_scripts.cpp \
     scripts/guard/guard_ai.cpp \
     scripts/guard/guard_ai.h \
Index: ScriptMgr.cpp
===================================================================
--- ScriptMgr.cpp    (revision 1075)
+++ ScriptMgr.cpp    (working copy)
@@ -51,6 +51,7 @@
     extern void AddSC_generic_creature();
         
     // -- Custom --
+extern void AddSC_guildmaster();
         
     // -- Examples --
     extern void AddSC_example_creature();
@@ -900,6 +901,7 @@
         AddSC_generic_creature();
         
         // -- Custom --
+    AddSC_guildmaster();
         
         // -- Examples --
         AddSC_example_creature();
Index: scripts/custom/guildmaster.cpp
===================================================================
--- scripts/custom/guildmaster.cpp    (revision 0)
+++ scripts/custom/guildmaster.cpp    (revision 0)
@@ -0,0 +1,342 @@
+#include "precompiled.h"     
+
+extern DatabaseMysql SD2Database;     
+
+#define MSG_GOSSIP_TELE          "Teleport to GuildHouse"     
+#define MSG_GOSSIP_BUY           "Buy GuildHouse (30000 gold)"     
+#define MSG_GOSSIP_SELL          "Sell GuildHouse (15000 gold)"     
+#define MSG_GOSSIP_NEXTPAGE      "Next page -->"     
+#define MSG_INCOMBAT             "You are in combat!"     
+#define MSG_NOGUILDHOUSE         "Your guild does not have a GuildHouse, loosers!"     
+#define MSG_NOFREEGH             "Sorry, all guildhouses are occupied."     
+#define MSG_ALREADYHAVEGH        "Sorry, but you already have GuildHouse (%s)."     
+#define MSG_NOTENOUGHMONEY       "Not enough money. You need %u gold to buy GuildHouse."     
+#define MSG_GHOCCUPIED           "Sorry, this GuildHouse already occupied."     
+#define MSG_CONGRATULATIONS      "Congratulations! You have GuildHouse now."     
+#define MSG_SOLD                 "You have sold GuildHouse. Here is your %u gold."     
+#define MSG_NOTINGUILD           "You are not in guild. Go find good one."     
+
+#define CODE_SELL                "SELL"     
+#define MSG_CODEBOX_SELL         "Type \"" CODE_SELL "\" (with CAPS!!!) in next window if you wanna sell your guildhouse."     
+
+#define OFFSET_GH_ID_TO_ACTION   1500     
+#define OFFSET_SHOWBUY_FROM      10000     
+
+#define ACTION_TELE              1001     
+#define ACTION_SHOW_BUYLIST      1002  //deprecated. Use (OFFSET_SHOWBUY_FROM + 0) instead     
+#define ACTION_SELL_GUILDHOUSE   1003     
+
+#define ICON_GOSSIP_BALOON       0     
+#define ICON_GOSSIP_WING         2     
+#define ICON_GOSSIP_BOOK         3     
+#define ICON_GOSSIP_WHEEL1       4     
+#define ICON_GOSSIP_WHEEL2       5     
+#define ICON_GOSSIP_GOLD         6     
+#define ICON_GOSSIP_BALOONDOTS   7     
+#define ICON_GOSSIP_TABARD       8     
+#define ICON_GOSSIP_XSWORDS      9     
+
+#define COST_GH_BUY              300000000  //1000 g.     
+#define COST_GH_SELL             150000000   //500 g.     
+
+#define GOSSIP_COUNT_MAX         10     
+
+bool isPlayerGuildLeader(Player *player)     
+{     
+    return (player->GetRank() == 0) && (player->GetGuildId() != 0);     
+}     
+
+bool getGuildHouseCoords(uint32 guildId, float &x, float &y, float &z, uint32 &map)     
+{     
+    if (guildId == 0)     
+    {     
+        //if player has no guild     
+        return false;     
+    }     
+
+    QueryResult *result;     
+    result = SD2Database.PQuery("SELECT `x`, `y`, `z`, `map` FROM `guildhouses` WHERE `guildId` = %u", guildId);     
+    if(result)     
+    {     
+        Field *fields = result->Fetch();     
+        x = fields[0].GetFloat();     
+        y = fields[1].GetFloat();     
+        z = fields[2].GetFloat();     
+        map = fields[3].GetUInt32();     
+        delete result;     
+        return true;     
+    }     
+    return false;     
+}     
+
+void teleportPlayerToGuildHouse(Player *player, Creature *_creature)     
+{     
+    if (player->GetGuildId() == 0)     
+    {     
+        //if player has no guild     
+        _creature->MonsterWhisper(MSG_NOTINGUILD, player->GetGUID());     
+        return;     
+    }     
+
+    if (!player->getAttackers().empty())     
+    {     
+        //if player in combat     
+        _creature->MonsterWhisper(MSG_INCOMBAT, LANG_UNIVERSAL, player->GetGUID());     
+        return;     
+    }     
+
+    float x, y, z;     
+    uint32 map;     
+
+    if (getGuildHouseCoords(player->GetGuildId(), x, y, z, map))     
+    {     
+        //teleport player to the specified location     
+        player->TeleportTo(map, x, y, z, 0.0f);     
+    }     
+    else     
+        _creature->MonsterWhisper(MSG_NOGUILDHOUSE, player->GetGUID());     
+
+}     
+
+bool showBuyList(Player *player, Creature *_creature, uint32 showFromId = 0)     
+{     
+    //show not occupied guildhouses     
+
+    QueryResult *result;     
+    result = SD2Database.PQuery("SELECT `id`, `comment` FROM `guildhouses` WHERE `guildId` = 0 AND `id` > %u ORDER BY `id` ASC LIMIT %u",     
+        showFromId, GOSSIP_COUNT_MAX);     
+
+    if (result)     
+    {     
+        uint32 guildhouseId = 0;     
+        std::string comment = "";     
+        do     
+        {     
+
+            Field *fields = result->Fetch();     
+
+            guildhouseId = fields[0].GetInt32();     
+            comment = fields[1].GetString();     
+                 
+            //send comment as a gossip item     
+            //transmit guildhouseId in Action variable     
+            player->ADD_GOSSIP_ITEM(ICON_GOSSIP_TABARD, comment, GOSSIP_SENDER_MAIN,     
+                guildhouseId + OFFSET_GH_ID_TO_ACTION);     
+
+        } while (result->NextRow());     
+
+        if (result->GetRowCount() == GOSSIP_COUNT_MAX)     
+        {     
+            //assume that we have additional page     
+            //add link to next GOSSIP_COUNT_MAX items     
+            player->ADD_GOSSIP_ITEM(ICON_GOSSIP_BALOONDOTS, MSG_GOSSIP_NEXTPAGE, GOSSIP_SENDER_MAIN,      
+                guildhouseId + OFFSET_SHOWBUY_FROM);     
+        }     
+
+        delete result;     
+
+        player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());     
+
+        return true;     
+    } else     
+    {     
+        if (showFromId == 0)     
+        {     
+            //all guildhouses are occupied     
+            _creature->MonsterWhisper(MSG_NOFREEGH, player->GetGUID());     
+            player->CLOSE_GOSSIP_MENU();     
+        } else     
+        {     
+            //this condition occurs when COUNT(guildhouses) % GOSSIP_COUNT_MAX == 0     
+            //just show GHs from beginning     
+            showBuyList(player, _creature, 0);     
+        }     
+    }     
+
+    return false;     
+}     
+
+bool isPlayerHasGuildhouse(Player *player, Creature *_creature, bool whisper = false)     
+{     
+
+    QueryResult *result;     
+
+    result = SD2Database.PQuery("SELECT `comment` FROM `guildhouses` WHERE `guildId` = %u",     
+        player->GetGuildId());     
+
+    if (result)     
+    {     
+        if (whisper)     
+        {     
+            //whisper to player "already have etc..."     
+            Field *fields = result->Fetch();     
+            char msg[100];     
+            sprintf(msg, MSG_ALREADYHAVEGH, fields[0].GetString());     
+            _creature->MonsterWhisper(msg, player->GetGUID());     
+        }     
+
+        delete result;     
+        return true;     
+    }     
+    return false;     
+
+}     
+
+void buyGuildhouse(Player *player, Creature *_creature, uint32 guildhouseId)     
+{     
+    if (player->GetMoney() < COST_GH_BUY)     
+    {     
+        //show how much money player need to buy GH (in gold)     
+        char msg[100];     
+        sprintf(msg, MSG_NOTENOUGHMONEY, COST_GH_BUY / 10000);     
+        _creature->MonsterWhisper(msg, player->GetGUID());     
+        return;     
+    }     
+
+    if (isPlayerHasGuildhouse(player, _creature, true))     
+    {     
+        //player already have GH     
+        return;     
+    }     
+
+    QueryResult *result;     
+
+    //check if somebody already occupied this GH     
+    result = SD2Database.PQuery("SELECT `id` FROM `guildhouses` WHERE `id` = %u AND `guildId` <> 0",     
+        guildhouseId);     
+
+    if (result)     
+    {     
+        delete result;     
+        _creature->MonsterWhisper(MSG_GHOCCUPIED, player->GetGUID());     
+        return;     
+    }     
+
+    //update DB     
+    result = SD2Database.PQuery("UPDATE `guildhouses` SET `guildId` = %u WHERE `id` = %u",     
+        player->GetGuildId(), guildhouseId);     
+
+    if (result)     
+        delete result;     
+
+    player->ModifyMoney(-COST_GH_BUY);     
+    _creature->MonsterSay(MSG_CONGRATULATIONS, LANG_UNIVERSAL, player->GetGUID());     
+         
+}     
+
+void sellGuildhouse(Player *player, Creature *_creature)     
+{     
+    if (isPlayerHasGuildhouse(player, _creature))     
+    {     
+        QueryResult *result;     
+
+        result = SD2Database.PQuery("UPDATE `guildhouses` SET `guildId` = 0 WHERE `guildId` = %u",     
+        player->GetGuildId());     
+             
+        if (result)     
+            delete result;     
+
+        player->ModifyMoney(COST_GH_SELL);     
+
+        //display message e.g. "here your money etc."     
+        char msg[100];     
+        sprintf(msg, MSG_SOLD, COST_GH_SELL / 10000);     
+        _creature->MonsterWhisper(msg, player->GetGUID());     
+    }     
+}     
+
+bool GossipHello_guildmaster(Player *player, Creature *_creature)     
+{     
+    player->ADD_GOSSIP_ITEM(ICON_GOSSIP_BALOON, MSG_GOSSIP_TELE,      
+        GOSSIP_SENDER_MAIN, ACTION_TELE);     
+
+    if (isPlayerGuildLeader(player))     
+    {     
+        //show additional menu for guild leader     
+        player->ADD_GOSSIP_ITEM(ICON_GOSSIP_GOLD, MSG_GOSSIP_BUY,     
+            GOSSIP_SENDER_MAIN, ACTION_SHOW_BUYLIST);     
+        if (isPlayerHasGuildhouse(player, _creature))     
+        {     
+            //and additional for guildhouse owner     
+            player->PlayerTalkClass->GetGossipMenu().AddMenuItem(ICON_GOSSIP_GOLD, MSG_GOSSIP_SELL,      
+                GOSSIP_SENDER_MAIN, ACTION_SELL_GUILDHOUSE, MSG_CODEBOX_SELL, 0, true);     
+        }     
+    }     
+    player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, _creature->GetGUID());     
+    return true;     
+}     
+
+
+bool GossipSelect_guildmaster(Player *player, Creature *_creature, uint32 sender, uint32 action )     
+{     
+    if (sender != GOSSIP_SENDER_MAIN)     
+        return false;     
+
+    switch (action)     
+    {     
+        case ACTION_TELE:     
+            //teleport player to GH     
+            player->CLOSE_GOSSIP_MENU();     
+            teleportPlayerToGuildHouse(player, _creature);     
+            break;     
+        case ACTION_SHOW_BUYLIST:     
+            //show list of GHs which currently not occupied     
+            showBuyList(player, _creature);     
+            break;     
+        default:     
+            if (action > OFFSET_SHOWBUY_FROM)     
+            {     
+                showBuyList(player, _creature, action - OFFSET_SHOWBUY_FROM);     
+            } else if (action > OFFSET_GH_ID_TO_ACTION)     
+            {     
+                //player clicked on buy list     
+                player->CLOSE_GOSSIP_MENU();     
+                //get guildhouseId from action     
+                //guildhouseId = action - OFFSET_GH_ID_TO_ACTION     
+                buyGuildhouse(player, _creature, action - OFFSET_GH_ID_TO_ACTION);     
+            }     
+            break;     
+    }     
+         
+    return true;     
+}     
+
+bool GossipSelectWithCode_guildmaster( Player *player, Creature *_creature, uint32 sender, uint32 action, const char* sCode )     
+{     
+    if(sender == GOSSIP_SENDER_MAIN)     
+    {     
+        if(action == ACTION_SELL_GUILDHOUSE)     
+        {     
+            int i = -1;     
+            try     
+            {     
+                //compare code     
+                if (strlen(sCode) + 1 == sizeof CODE_SELL)     
+                    i = strcmpi(CODE_SELL, sCode);     
+
+            } catch(char *str) {error_db_log(str);}     
+
+            if (i == 0)     
+            {     
+                //right code     
+                sellGuildhouse(player, _creature);     
+            }     
+                 
+            player->CLOSE_GOSSIP_MENU();     
+            return true;     
+        }     
+    }     
+    return false;     
+}     
+
+
+void AddSC_guildmaster()     
+{     
+    Script *newscript;     
+    newscript = new Script;     
+    newscript->Name = "guildmaster";     
+    newscript->pGossipHello = &GossipHello_guildmaster;     
+    newscript->pGossipSelect = &GossipSelect_guildmaster;     
+    newscript->pGossipSelectWithCode =  &GossipSelectWithCode_guildmaster;     
+    newscript->RegisterSelf();     
+}      
Index: VC80/80ScriptDev2.vcproj
===================================================================
--- VC80/80ScriptDev2.vcproj    (revision 1075)
+++ VC80/80ScriptDev2.vcproj    (working copy)
@@ -468,6 +468,10 @@
        <Filter
         Name="custom"
         >
+     <File
+     RelativePath="..\scripts\custom\guildmaster"
+     >
+    </File>
        </Filter>
        <Filter
         Name="areatrigger"
Index: VC90/90ScriptDev2.vcproj
===================================================================
--- VC90/90ScriptDev2.vcproj    (revision 1075)
+++ VC90/90ScriptDev2.vcproj    (working copy)
@@ -467,6 +467,10 @@
        <Filter
         Name="custom"
         >
+     <File
+     RelativePath="..\scripts\custom\guildmaster"
+     >
+    </File>
        </Filter>
        <Filter
         Name="areatrigger"

+

SQL Mangos

Code
DELETE FROM `creature_template` WHERE (`entry`=13);
INSERT INTO `creature_template` (`entry`, `heroic_entry`, `modelid_A`, `modelid_A2`, `modelid_H`, `modelid_H2`, `name`, `subname`, `IconName`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `baseattacktime`, `rangeattacktime`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `class`, `race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `PetSpellDataId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `unk16`, `unk17`, `RacialLeader`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`) VALUES (13, 0, 18748, 5525, 20711, 17895, 'Bruenno Guilde', 'Guildhouse Keeper', '', 52, 82, 6700, 24000, 5598, 5875, 20, 35, 35, 1, 1.48, 0, 0, 170, 182, 0, 1235, 1400, 1900, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 1, 3, 1, 1, 0, 1, 0, 0, 0, 'guildmaster');

INSERT INTO `locales_creature` VALUES     
('13', '', '', '', '', '', '', '', 'Брюенно Гвильде', NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'Хранитель Гильдейских Домов');

INSERT INTO `creature` VALUES
(300088, 13, 0, 1, 1, 0, 0, -8888.29, 607.158, 102.304, 1.83473, 25, 0, 0, 8588, 5662, 0, 0),
(300089, 13, 1, 1, 1, 0, 0, 1585.22, -4295.73, 37.8993, 2.62324, 25, 0, 0, 14124, 5773, 0, 0),
(300090, 13, 530, 1, 1, 5525, 0, -4083.11, -11629.9, -138.654, 3.41019, 25, 0, 0, 9512, 5681, 0, 0),
(300091, 13, 530, 1, 1, 5525, 0, 9469.36, -7353.5, 23.4994, 1.98703, 25, 0, 0, 10434, 5699, 0, 0),
(300092, 13, 1, 1, 1, 0, 0, 10078.7, 2184.92, 1346.62, 1.63859, 25, 0, 0, 5360, 5598, 0, 0),
(300093, 13, 0, 1, 1, 5525, 0, -5011.4, -992.523, 503.882, 3.81506, 25, 0, 0, 18276, 5856, 0, 0),
(300094, 13, 530, 1, 1, 0, 0, -1867.98, 5421.33, -10.4635, 1.10935, 25, 0, 0, 10434, 5699, 0, 0),
(300095, 13, 0, 1, 1, 0, 0, 1591.84, 202.21, -55.3424, 1.66698, 25, 0, 0, 19200, 5875, 0, 0),
(300096, 13, 1, 1, 1, 0, 0, -1299.16, 131.465, 131.464, 5.34853, 25, 0, 0, 18276, 5856, 0, 0);

+

SQL Scripdev2

Code
DROP TABLE IF EXISTS `guildhouses`;
CREATE TABLE `guildhouses` (
      `id` int(8) unsigned NOT NULL auto_increment,
      `guildId` bigint(20) NOT NULL default '0',
      `x` double NOT NULL,
      `y` double NOT NULL,
      `z` double NOT NULL,
      `map` int(11) NOT NULL,
      `comment` varchar(255) NOT NULL default '',
      PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC AUTO_INCREMENT=22 ;

INSERT INTO `guildhouses` VALUES
(1, 0, 16222, 16266, 14.2, 1, 'GM Island'),
(2, 0, -10711, 2483, 8, 1, 'Tauren village at Veiled Sea (Silithus)'),
(3, 0, -8323, -343, 146, 0, 'Fishing outside an Northshire Abbey (Elwynn Forest'),
(4, 0, 7368, -1560, 163, 1, 'Troll Village in mountains (Darkshore)'),
(5, 0, -4151, -1400, 198, 0, 'Dwarven village outside Ironforge (Wetlands)'),
(6, 0, -1840, -4233, 2.14, 0, 'Dwarven village (Arathi Highlands, Forbidding Sea)'),
(7, 0, -4151, -1400, 198, 0, 'Crashed zeppelin (Wetlands, Dun Modr)'),
(8, 0, -723, -1076, 179, 1, 'Tauren camp (Mulgore, Red Rock)'),
(9, 0, -206, 1666, 80, 0, 'Shadowfang Keep an outside instance (Silverpine Forest)'),
(10, 0, -6374, 1262, 7, 0, 'Harbor house outside Stormwind (Elwynn Forest)'),
(11, 0, -8640, 580, 96, 0, 'Empty jail between canals (Stormwind)'),
(12, 0, -4844, -1066, 502, 0, 'Old Ironforge'),
(13, 0, -4863, -1658, 503.5, 0, 'Ironforge Airport'),
(14, 0, 1146, -165, 313, 37, 'Azshara Crater instance (Alliance entrance)'),
(15, 0, -123, 858, 298, 37, 'Azshara Crater instance (Horde entrance)'),
(16, 0, 4303, -2760, 16.8, 0, 'Quel''Thalas Tower'),
(17, 0, -6161, -790, 423, 0, 'Crashed gnome airplane (between Dun Morogh and Searing Gorge)'),
(18, 0, -11790, -1640, 54.7, 0, 'Zul''Gurub an outside instance (Stranglethorn Vale)'),
(19, 0, -11805, -4754, 6, 1, 'Goblin village (Tanaris, South Seas)'),
(20, 0, -9296, 670, 132, 0, 'Villains camp outside an Stormwind (Elwynn Forest)'),
(21, 0, 3414, -3380, 142.2, 0, 'Stratholm an outside instance');

Патчи только для VC80 и VC90


Сообщение # 10 отредактировано Kirito - Вторник, 12.05.2009, 18:55
ferdust
Командир
Кто тестил как работает ядрышкро
Продаю сайты для вов. Кто заинтересовался пишите в лс
Сообщение # 11 написано 12.05.2009 в 22:06
farion
Сержант
Да вроди прекрасно) Kirito, + твой)
Сообщение # 12 написано 13.05.2009 в 21:44
Kirito
Скаут
Обновил ядро
Из за критичиской нехватки времени патчей почти не добавил

ЗЫ добавлять или нет в гильдхаусы баффера?


Сообщение # 13 написано 14.05.2009 в 11:01
Nazgool
Центурион
Kirito, дай асю поговорить надо
КИНУЛ НАХ!
Сообщение # 14 написано 15.05.2009 в 19:51
NameNot
1
Quote
100. Declinedname (исправляет работу системы склонения имён)
101. Declinednames_2 (разрешает использовать несклоняемые имена)
два одинаковых патча при накатывание должен был вылезти дубль!!!
Сообщение # 15 написано 16.05.2009 в 05:34
Kirito
Скаут
DЖoRiK, это разные патчи

Сообщение # 16 написано 16.05.2009 в 07:48
NameNot
1
посмотри в код патчей и сравни
Сообщение # 17 написано 16.05.2009 в 08:00
Niga
Рыцарь
Kirito,
Дай свою асю! Или напиши мне, я заепывать глупыми вопросами не буду!
ICQ#: 588-427-448 !
Сообщение # 18 написано 16.05.2009 в 08:02
Kirito
Скаут
404099380 если пройдёте через анти-спам, поговорим.

Сообщение # 19 написано 16.05.2009 в 09:22
Niga
Рыцарь
Да не Доцент я)))
что он не отвечает?
Сообщение # 20 написано 16.05.2009 в 09:35
Kirito
Скаут
Обновил ядро
Баффер выглядит так - http://s41.radikal.ru/i094/0905/3d/98346f451138.jpg

Сообщение # 21 написано 21.05.2009 в 20:11
Wolf910
Рыцарь
Kirito добавь пожалуйста вот этот патч на сд2 http://mangos.ru/forum/showthread.php?t=19533

Добавлено (21.05.2009, 23:14)
---------------------------------------------
Kirito добавь пожалуйста вот этот патч на сд2 http://mangos.ru/forum/showthread.php?t=19533 заранее огромное спасибо

Ушел с wowjp. Мне на все насрать кому не нравится идите в опу!
Сообщение # 22 написано 21.05.2009 в 23:14
Sw2rT1
Центурион
у меня почему то изза твоего ядра сервер крашится стал... хмм
Сообщение # 23 написано 22.05.2009 в 12:39
Csem
Центурион
народ я не понял а как тут гх работает?
Сообщение # 24 написано 22.05.2009 в 14:11
Kirito
Скаут
Quote (Sw2rT1)
у меня почему то изза твоего ядра сервер крашится стал... хмм

ни одного краша за 18 часов=) онлайн 600+

Сообщение # 25 отредактировано Kirito - Пятница, 22.05.2009, 14:48
NameNot
1
Kirito, на каком же серве твое ядро стоит, если несложно то плз ссылку
Сообщение # 26 написано 22.05.2009 в 15:03
Sw2rT1
Центурион
Kirito, я не знаю изза чего краш, но после твоего ядра началось)

Code
## Crash! 22.05.2009 14:15:36. mangosd.exe has crashed! Lines logged from Server.log

2009-05-22 14:12:23  
2009-05-22 14:12:23 ERROR:SQL: CREATE TEMPORARY TABLE temp LIKE creature_movement
2009-05-22 14:12:23 ERROR:SQL ERROR: Unknown database 'mangos'
2009-05-22 14:12:23 ERROR:SQL: INSERT INTO temp SELECT * FROM creature_movement
2009-05-22 14:12:23 ERROR:SQL ERROR: Table 'mangos.temp' doesn't exist
2009-05-22 14:12:24 ERROR:SQL: UPDATE creature_movement AS T SET point = (SELECT COUNT(*) FROM temp WHERE id = T.id AND point <= T.point)
2009-05-22 14:12:24 ERROR:SQL ERROR: Table 'mangos.temp' doesn't exist
2009-05-22 14:12:24 ERROR:SQL: DROP TABLE temp
2009-05-22 14:12:24 ERROR:SQL ERROR: Unknown table 'temp'
2009-05-22 14:12:24  
2009-05-22 14:12:24 >> Paths loaded

#############################
Сообщение # 27 написано 22.05.2009 в 15:18
NameNot
1
Сообщение # 28 написано 22.05.2009 в 15:27
Sw2rT1
Центурион
DЖoRiK, вижу ты знаешь в чём ошибка, скажешь как лечить?
Сообщение # 29 написано 22.05.2009 в 15:29
NameNot
1
Sw2rT1, как лечить не знаю.... ну это база, хотя и может быть из-за того что ты не ставил ападеиты, или из-за того что ты накатывал на базу
Сообщение # 30 написано 22.05.2009 в 15:36
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: