23.04.2012, 19:47 | #1 |
Гость
Сообщений: n/a
|
[MoD] XP Trader
Решил попробовать написать продавца опыта на основе телегая. На ласт реве мангоса комплится без ошибок. В игре ничего не проверял. Цены брались примерные.
Инструкция по установке: 1. Создать файл npc_xp.cpp здесь: папка_с_исходниками/mangos/src/bindings/scriptdev2/scripts/custom. Не забудьте перед этим положить папку scriptdev2 в папку bindings. 2. Скопировать весь этот большой код в наш файл. 3. Зайти в папка_с_исходниками/mangos/src/bindings/scriptdev2/system, найти там ScriptLoader.cpp, открыть его, найти Код:
// custom Код:
extern void AddSC_npc_xp(); Код:
AddSC_npc_xp(); тестовым редактором, находим Код:
<Filter Name="custom" > </Filter> Код:
<File RelativePath="..\scripts\custom\npc_xp.cpp" > Вот npc_xp.cpp: Код:
/* Copyright (C) 2006 - 2011 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* ScriptData SDName: npc_xp SD%Complete: 100% SDComment: need test SDCategory: custom EndScriptData */ #include "precompiled.h" long long int money; int costo; bool GossipHello_npc_xp(Player *player, Creature *_Creature) { player->ADD_GOSSIP_ITEM( 5, "1000 XP. 2 Gold" , GOSSIP_SENDER_MAIN, 99995); player->ADD_GOSSIP_ITEM( 5, "5000 XP. 10 Gold" , GOSSIP_SENDER_MAIN, 99996); player->ADD_GOSSIP_ITEM( 5, "10000 XP. 20 Gold" , GOSSIP_SENDER_MAIN, 99997); player->ADD_GOSSIP_ITEM( 5, "50000 XP. 100 Gold" , GOSSIP_SENDER_MAIN, 99998); player->ADD_GOSSIP_ITEM( 5, "100000 XP. 200 Gold" , GOSSIP_SENDER_MAIN, 99999); player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,_Creature->GetObjectGuid()); return true; } void SendDefaultMenu_mob_teleguy(Player *player, Creature *_Creature, uint32 action ) { if(player->getLevel() >= 80 ) { player->CLOSE_GOSSIP_MENU(); _Creature->MonsterSay("You have reached max level!", LANG_UNIVERSAL); return; } money = player-> GetMoney(); costo = 20000; if (money < costo ) { player->CLOSE_GOSSIP_MENU(); _Creature->MonsterSay("You haven't enough money", LANG_UNIVERSAL); return; } switch(action) { case 99995: // 1000xp player->CLOSE_GOSSIP_MENU(); player->GiveXP(1000, NULL); player->ModifyMoney(-1*costo); break; case 99996: // 5000xp player->CLOSE_GOSSIP_MENU(); player->GiveXP(5000, NULL); player->ModifyMoney(-5*costo); break; case 99997: // 10000xp player->CLOSE_GOSSIP_MENU(); player->GiveXP(10000, NULL); player->ModifyMoney(-10*costo); break; case 99998: // 50000xp player->CLOSE_GOSSIP_MENU(); player->GiveXP(50000, NULL); player->ModifyMoney(-50*costo); break; case 99999: // 100000xp player->CLOSE_GOSSIP_MENU(); player->GiveXP(100000, NULL); player->ModifyMoney(-100*costo); break; } } bool GossipSelect_npc_xp(Player *player, Creature *_Creature, uint32 sender, uint32 action) { if (sender == GOSSIP_SENDER_MAIN) { player->PlayerTalkClass->ClearMenus(); SendDefaultMenu_mob_teleguy(player, _Creature, action); } return true; } void AddSC_npc_xp() { Script *newscript; newscript = new Script; newscript->Name = "npc_xp"; newscript->pGossipHello = &GossipHello_npc_xp; newscript->pGossipSelect = &GossipSelect_npc_xp; newscript->RegisterSelf(); } Код:
DELETE FROM `creature_template` WHERE `entry`=99002; INSERT INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `modelid_1`, `modelid_2`, `modelid_3`, `modelid_4`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `minhealth`, `maxhealth`, `PowerType`, `minmana`, `maxmana`, `armor`, `faction_A`, `faction_H`, `npcflag`, `speed_walk`, `speed_run`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `dmg_multiplier`, `baseattacktime`, `rangeattacktime`, `unit_class`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `spell5`, `spell6`, `spell7`, `spell8`, `PetSpellDataId`, `vehicle_id`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `unk16`, `unk17`, `RacialLeader`, `questItem1`, `questItem2`, `questItem3`, `questItem4`, `questItem5`, `questItem6`, `movementId`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`) VALUES (99002, 0, 0, 0, 0, 0, 18, 0, 18, 0, 'Archibald', 'XP Trader', NULL, 0, 70, 70, 6700, 24000, 0, 5598, 5875, 4049, 35, 35, 1, 1.48, 1.14286, 1, 0, 98, 147, 0, 37, 1.4, 1400, 1400, 2, 0, 0, 0, 0, 0, 0, 0, 78, 118, 30, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 'npc_xp'); Последний раз редактировалось staf0rd; 03.05.2012 в 17:22. |
24.04.2012, 07:23 | #2 |
Forum bot
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
|
Ой, какой код знакомый! Где-то я его уже видел...
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. |
27.04.2012, 09:42 | #4 |
Гость
Сообщений: n/a
|
"Ой, какой код знакомый! Где-то я его уже видел... "
wowjp, не? код сначала я выложил туда "Имея два голда - можем покупать 100000 опыта..." цену всегда можно поменять |
01.05.2012, 01:18 | #7 | |
Forum bot
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
|
Цитата:
А то я не узнаю код написанный на Ру-Мангос... Просто посмотрите как подобные же примеры сделаны. Видите ли, молодой человек... Мало просто спереть вот этот кусок из перевыложенных тысячи раз на куче форумов наших скриптов: Код:
if (money < costo ) { player->CLOSE_GOSSIP_MENU(); _Creature->MonsterSay("Недостаточно денег", LANG_UNIVERSAL, NULL); return; } Так что, наверное, стоило бы не только себя в авторы вписать, но еще и "Russian MaNGOS Community". Вот только не раньше, чем проверка встанет в нужное место
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. |
|
01.05.2012, 16:01 | #8 | |
Гость
Сообщений: n/a
|
Цитата:
p.s. я c++ знаю на 0 |
|
01.05.2012, 18:46 | #9 | |
RMDC Donator
Регистрация: 07.03.2010
Сообщений: 78
Сказал(а) спасибо: 48
Поблагодарили 32 раз(а) в 7 сообщениях
|
И какого, извините, фига здесь делает данная запись?
Цитата:
|
|
01.05.2012, 19:43 | #10 |
Ученый
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
|
__________________
sql-language.ru |
02.05.2012, 17:02 | #11 |
Гость
Сообщений: n/a
|
Удалите тему тогда, раз не надо никому
|
02.05.2012, 22:20 | #12 | |
Forum bot
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
|
А ты еще поучи, чем нам тут заниматься. Уж поверь, без тебя решим что и когда удалять. Особенно рекомендую снова и снова перечитать Правила Форума, например последний абзац пункта А-6:
Цитата:
Умел код своровать - умей и ответ держать. Если б не хамил "я сам написал" (да еще и авторство в файле свое поставил), а често признался "переделаный мной скрипт Карателя" - и отношение было бы нормальное. Или ты думал что целые куски кода кто-то может не узнать? Вот из-за таких "модописателей" и идет дурная слава о РуМангос, мол "там одни ка33лыЪ, я написал, а меня г*ном облили" и т.п. заявы. Сопрут здесь же код, поменяют один-два параметра, и говорят "я написал". А была бы совесть написать "я немного переделал скрипт, гляньте кому надо" - был бы другой разговор. Вот только почему-то подобные личности не готовы признаваться в воровстве, им проще обос*ть РуМангос.
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. |
|
03.05.2012, 13:23 | #13 |
Гость
Сообщений: n/a
|
Да не брал я код отсюда, взял телегая из репо rsa и поизвращался над ним
|
03.05.2012, 13:38 | #14 |
Новичок
Регистрация: 07.03.2010
Сообщений: 17
Сказал(а) спасибо: 28
Поблагодарили 9 раз(а) в 2 сообщениях
|
А как вы думаете, откуда он там? Да и
Код:
SDComment: by tempura, modify by Asprorpsa |
03.05.2012, 16:05 | #15 | |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
Цитата:
в тексте скрипта мы видим: SDAuthor: staford текст скрипта (примерно 90%) взят у меня. однако я, несмотря на то, что когда-то переписал этот скрипт из начального варианта более чем на 50%, никакого SDAuthor: rsa туда не вставлял. догадайтесь, почему? потому что подгонка (правка, коррекция, етц...) - это не работа, а доработка. она не меняет автора кода. может теперь все же задумаетесь над отношением (моим в частности, да и тут оно в целом не лучше) к "зборщикам"? вам уже пора переходить из категории "зборщиков" в категорию кодеров, вспомните ланца. |
|