Ru-MaNGOS

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

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.04.2012, 19:47   #1
staf0rd
Гость
 
Сообщений: 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();
Еще ниже опять найти //custom и дописать
Код:
AddSC_npc_xp();
4. Заходим в папка_с_исходниками/mangos/src/bindings/scriptdev2/VC80 или VC90 (для VC100 хз как), открываем имеющийся там проект любым
тестовым редактором, находим
Код:
<Filter 
Name="custom" 
> 
</Filter>
пишем между > и </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(); 
}
И традиционный sql в базу (id 99002):
Код:
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');
Прошу тапками не кидаться, моя первая работа в C++

Последний раз редактировалось staf0rd; 03.05.2012 в 17:22.
  Ответить с цитированием
Старый 24.04.2012, 07:23   #2
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию

Ой, какой код знакомый! Где-то я его уже видел...
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
Старый 25.04.2012, 09:34   #3
KiriX
Умный
Старожил
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

Имея два голда - можем покупать 100000 опыта...
KiriX вне форума   Ответить с цитированием
Старый 27.04.2012, 09:42   #4
staf0rd
Гость
 
Сообщений: n/a
По умолчанию

"Ой, какой код знакомый! Где-то я его уже видел... "
wowjp, не? код сначала я выложил туда
"Имея два голда - можем покупать 100000 опыта..."
цену всегда можно поменять
  Ответить с цитированием
Старый 27.04.2012, 10:37   #5
Evgeniy
Пользователь
 
Регистрация: 06.01.2012
Сообщений: 98
Сказал(а) спасибо: 12
Поблагодарили 33 раз(а) в 21 сообщениях
Evgeniy На верном пути
По умолчанию

Код:
  costo = 20000; 

     if (money < costo ) 
     {
дальше проверки не видно
Evgeniy вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
KiriX (30.04.2012)
Старый 30.04.2012, 23:21   #6
KiriX
Умный
Старожил
 
Аватар для KiriX
 
Регистрация: 06.03.2010
Сообщений: 886
Сказал(а) спасибо: 698
Поблагодарили 433 раз(а) в 181 сообщениях
Записей в дневнике: 4
KiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человекKiriX Реально хороший человек
По умолчанию

Цитата:
Сообщение от Evgeniy Посмотреть сообщение
Код:
  costo = 20000; 

     if (money < costo ) 
     {
дальше проверки не видно
Я бы сказал, что проверка не там где надо используется. Ну или не так, как надо - в любом случае - дыра
KiriX вне форума   Ответить с цитированием
Старый 01.05.2012, 01:18   #7
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию

Цитата:
Сообщение от staf0rd Посмотреть сообщение
"Ой, какой код знакомый! Где-то я его уже видел... "
wowjp, не? код сначала я выложил туда
Ага - где я, и где вов*опа...

А то я не узнаю код написанный на Ру-Мангос...

Просто посмотрите как подобные же примеры сделаны.

Видите ли, молодой человек... Мало просто спереть вот этот кусок из перевыложенных тысячи раз на куче форумов наших скриптов:
Код:
if (money < costo ) 
{
player->CLOSE_GOSSIP_MENU();
_Creature->MonsterSay("Недостаточно денег", LANG_UNIVERSAL, NULL);
return;
}
Там надо еще смотреть что выше и что ниже понаписано.

Так что, наверное, стоило бы не только себя в авторы вписать, но еще и "Russian MaNGOS Community".
Вот только не раньше, чем проверка встанет в нужное место
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
Старый 01.05.2012, 16:01   #8
staf0rd
Гость
 
Сообщений: n/a
По умолчанию

Цитата:
Сообщение от tempura Посмотреть сообщение
Ага - где я, и где вов*опа...

А то я не узнаю код написанный на Ру-Мангос...

Просто посмотрите как подобные же примеры сделаны.

Видите ли, молодой человек... Мало просто спереть вот этот кусок из перевыложенных тысячи раз на куче форумов наших скриптов:
Код:
if (money < costo ) 
{
player->CLOSE_GOSSIP_MENU();
_Creature->MonsterSay("Недостаточно денег", LANG_UNIVERSAL, NULL);
return;
}
Там надо еще смотреть что выше и что ниже понаписано.

Так что, наверное, стоило бы не только себя в авторы вписать, но еще и "Russian MaNGOS Community".
Вот только не раньше, чем проверка встанет в нужное место
я тут не лазал, не надо гнать
p.s. я c++ знаю на 0
  Ответить с цитированием
Старый 01.05.2012, 18:46   #9
StinK
RMDC Donator
 
Аватар для StinK
 
Регистрация: 07.03.2010
Сообщений: 78
Сказал(а) спасибо: 48
Поблагодарили 32 раз(а) в 7 сообщениях
StinK На верном пути
По умолчанию

Цитата:
Сообщение от staf0rd Посмотреть сообщение
я c++ знаю на 0
И какого, извините, фига здесь делает данная запись?
Цитата:
Решил попробовать написать продавца опыта
__________________
ModSpora: Web-Interface for MaNGOS
WoW и MaNGOS больше не моя стихия...
StinK вне форума   Ответить с цитированием
Старый 01.05.2012, 19:43   #10
lovepsone
Ученый
 
Регистрация: 07.03.2010
Адрес: Беларусь,Брест
Сообщений: 188
Сказал(а) спасибо: 131
Поблагодарили 34 раз(а) в 27 сообщениях
lovepsone Хрен знает что...lovepsone Хрен знает что...
По умолчанию

__________________
sql-language.ru
lovepsone вне форума   Ответить с цитированием
Старый 02.05.2012, 17:02   #11
staf0rd
Гость
 
Сообщений: n/a
По умолчанию

Удалите тему тогда, раз не надо никому
  Ответить с цитированием
Старый 02.05.2012, 22:20   #12
tempura
Forum bot
 
Аватар для tempura
 
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
tempura отключил(а) отображение уровня репутации
По умолчанию

Цитата:
Сообщение от staf0rd Посмотреть сообщение
Удалите тему тогда, раз не надо никому
А ты еще поучи, чем нам тут заниматься. Уж поверь, без тебя решим что и когда удалять. Особенно рекомендую снова и снова перечитать Правила Форума, например последний абзац пункта А-6:
Цитата:
Узурпация функций модераторов, как-то: «тему можно закрывать», «переместите в другой раздел», и т.п. заявления. Обычно у модераторов и без того хватает мозгов сообразить, что делать с темами;



Умел код своровать - умей и ответ держать. Если б не хамил "я сам написал" (да еще и авторство в файле свое поставил), а често признался "переделаный мной скрипт Карателя" - и отношение было бы нормальное. Или ты думал что целые куски кода кто-то может не узнать?

Вот из-за таких "модописателей" и идет дурная слава о РуМангос, мол "там одни ка33лыЪ, я написал, а меня г*ном облили" и т.п. заявы. Сопрут здесь же код, поменяют один-два параметра, и говорят "я написал". А была бы совесть написать "я немного переделал скрипт, гляньте кому надо" - был бы другой разговор. Вот только почему-то подобные личности не готовы признаваться в воровстве, им проще обос*ть РуМангос.
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки.
tempura вне форума   Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
KiriX (03.05.2012), lovepsone (02.05.2012), Sid (03.05.2012)
Старый 03.05.2012, 13:23   #13
staf0rd
Гость
 
Сообщений: n/a
По умолчанию

Да не брал я код отсюда, взял телегая из репо rsa и поизвращался над ним
  Ответить с цитированием
Старый 03.05.2012, 13:38   #14
Taumer
Новичок
 
Регистрация: 07.03.2010
Сообщений: 17
Сказал(а) спасибо: 28
Поблагодарили 9 раз(а) в 2 сообщениях
Taumer На верном пути
По умолчанию

А как вы думаете, откуда он там? Да и
Код:
SDComment: by tempura, modify by Asprorpsa
тонко намекает.
Taumer вне форума   Ответить с цитированием
Старый 03.05.2012, 16:05   #15
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от staf0rd Посмотреть сообщение
Да не брал я код отсюда, взял телегая из репо rsa и поизвращался над ним
В этом-то вся и разница отношении к коду здесь и на вовж...
в тексте скрипта мы видим:
SDAuthor: staford

текст скрипта (примерно 90%) взят у меня. однако я, несмотря на то, что когда-то переписал этот скрипт из начального варианта более чем на 50%, никакого
SDAuthor: rsa
туда не вставлял. догадайтесь, почему? потому что подгонка (правка, коррекция, етц...) - это не работа, а доработка. она не меняет автора кода.
может теперь все же задумаетесь над отношением (моим в частности, да и тут оно в целом не лучше) к "зборщикам"? вам уже пора переходить из категории "зборщиков" в категорию кодеров, вспомните ланца.
rsa вне форума   Ответить с цитированием
4 пользователя(ей) сказали cпасибо:
KiriX (03.05.2012), Sid (03.05.2012), Taumer (04.05.2012), tempura (04.05.2012)
Ответ

« [script] Guildhouse Keeper | Следующей темы нет »
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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



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


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