XP Giver
|
|
keonji | Дата: Неділя, 16.01.2011, 21:26 | Сообщение # 1 |
Скаут
Группа: Пользователи
|
Пишу ещё и тут, мб будет помощь. В общем скрипт не работает. Не правильно сделана проверка лвл и выдача XP. Кто может поправьте и скиньте сюда. Code /* ScriptData SDName: xp_giver SD%Complete: 90% SDComment: Give XP for Gold SDCategory: NPC SDAuthor: keonji SDEditor: KiritoSS EndScriptData */
#include "precompiled.h"
bool GossipHello_xp_giver(Player* pPlayer, Creature* pCreature) { if (pPlayer->GetTeam() == ALLIANCE) { pPlayer->ADD_GOSSIP_ITEM( 9, "1,000 XP [1 gold]" , GOSSIP_SENDER_MAIN, 1000); pPlayer->ADD_GOSSIP_ITEM( 9, "10,000 XP [10 gold]" , GOSSIP_SENDER_MAIN, 2000); pPlayer->ADD_GOSSIP_ITEM( 9, "100,000 XP [100 gold]" , GOSSIP_SENDER_MAIN, 3000); pPlayer->ADD_GOSSIP_ITEM( 9, "500,000 XP [500 gold]" , GOSSIP_SENDER_MAIN, 4000); pPlayer->ADD_GOSSIP_ITEM( 9, "1,000,000 XP [1000 gold]" , GOSSIP_SENDER_MAIN, 5000); pPlayer->ADD_GOSSIP_ITEM( 9, "5,000,000 XP [5000 gold]" , GOSSIP_SENDER_MAIN, 6000); } else { pPlayer->ADD_GOSSIP_ITEM( 9, "1,000 XP [1 gold]" , GOSSIP_SENDER_MAIN, 1000); pPlayer->ADD_GOSSIP_ITEM( 9, "10,000 XP [10 gold]" , GOSSIP_SENDER_MAIN, 2000); pPlayer->ADD_GOSSIP_ITEM( 9, "100,000 XP [100 gold]" , GOSSIP_SENDER_MAIN, 3000); pPlayer->ADD_GOSSIP_ITEM( 9, "500,000 XP [500 gold]" , GOSSIP_SENDER_MAIN, 4000); pPlayer->ADD_GOSSIP_ITEM( 9, "1,000,000 XP [1000 gold]" , GOSSIP_SENDER_MAIN, 5000); pPlayer->ADD_GOSSIP_ITEM( 9, "5,000,000 XP [5000 gold]" , GOSSIP_SENDER_MAIN, 6000); }
pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE,pCreature->GetGUID());
return true; }
void SendDefaultMenu_xp_giver(Player* pPlayer, Creature* pCreature, uint32 uiAction) {
//Combat Check if (pPlayer->isInCombat()) { pPlayer->CLOSE_GOSSIP_MENU(); pCreature->MonsterWhisper("You are in combat!", pPlayer, NULL); return; } //Money Check if (pPlayer->GetMoney() <0) { pPlayer->CLOSE_GOSSIP_MENU(); pCreature->MonsterWhisper("You don't have enough money.", pPlayer, false); return; } //LVL Check if (pPlayer->GetLevel() >= 80) { pPlayer->CLOSE_GOSSIP_MENU(); pCreature->MonsterWhisper("You are already level 80!", pPlayer, false); return; } switch(uiAction) { case 1000: //1,000 XP { pPlayer->ModifyXPValue(+1000); pPlayer->ModifyMoney(-10000); pPlayer->CLOSE_GOSSIP_MENU(); } break; case 2000: //10,000 XP { pPlayer->ModifyXPValue(+10000); pPlayer->ModifyMoney(-100000); pPlayer->CLOSE_GOSSIP_MENU(); } break; case 3000: //100,000 XP { pPlayer->ModifyXPValue(+100000); pPlayer->ModifyMoney(-1000000); pPlayer->CLOSE_GOSSIP_MENU(); } break; case 4000: //500,000 XP { pPlayer->ModifyXPValue(+500000); pPlayer->ModifyMoney(-5000000); pPlayer->CLOSE_GOSSIP_MENU(); } break; case 5000: //1,000,000 XP { pPlayer->ModifyXPValue(+1000000); pPlayer->ModifyMoney(-1000000); pPlayer->CLOSE_GOSSIP_MENU(); } break; case 6000: //5,000,000 XP { pPlayer->ModifyXPValue(+5000000); pPlayer->ModifyMoney(-50000000); pPlayer->CLOSE_GOSSIP_MENU(); } break; pPlayer->CLOSE_GOSSIP_MENU(); } }
bool GossipSelect_xp_giver(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) { // Main menu if (uiSender == GOSSIP_SENDER_MAIN) SendDefaultMenu_xp_giver(pPlayer, pCreature, uiAction);
return true; }
void AddSC_xp_giver() { Script *newscript;
newscript = new Script; newscript->Name = "xp_giver"; newscript->pGossipHello = &GossipHello_xp_giver; newscript->pGossipSelect = &GossipSelect_xp_giver; newscript->RegisterSelf(); }
|
|
|
|
Diyvol | Дата: Понеділок, 17.01.2011, 05:20 | Сообщение # 2 |
ЗлОй-АйТИшник
Центурион
Группа: Best of the Best user Wow-info
|
По точней проблему опиши что имено не так. мб.чем и помогу
Веб-дизайнер. Работа, учеба и тренажерный зал. Жизнь это когда ты рад тому, что ты устал. Я не вижу смысла в жизни наркоманов. Наркотик в роли пастуха для всех этих баранов. Я иду вперед и не думаю сворачивать.
|
|
|
|
Inuyasha | Дата: Понеділок, 17.01.2011, 08:08 | Сообщение # 3 |
Капрал
Группа: Пользователи
|
Diyvol, Как тебе ещё точней ? Чем ты тут поможешь ? 0_о ВОт мой с тринити Добавлено (17.01.2011, 06:50) --------------------------------------------- А не Quote (keonji) ModifyXPValue Покрайней мере так на тринити, а они много не отличаются, + ты без проверки вообще на мони сделал, тоесть у тебя ом и с одним серебром будет кастовать и вообще в ядре есть подобное, нужно искать ! Добавлено (17.01.2011, 08:08) --------------------------------------------- Попробуй вот так
Сообщение отредактировал Inuyasha - Понеділок, 17.01.2011, 08:09 |
|
|
|
keonji | Дата: Понеділок, 17.01.2011, 15:29 | Сообщение # 4 |
Скаут
Группа: Пользователи
|
Inuyasha, на мангосе не работает.Добавлено (17.01.2011, 15:29) --------------------------------------------- реализовал так. З.Ы. Огромное спасибо lanc. Code /* Copyright (C) 2006 - 2010 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: xp_giver SD%Complete: SDComment: Give XP for Gold SDCategory: NPC SDAuthor: orginal author: KiritoSS, keonji, restore work lanc <img src="http://s105.ucoz.net/sm/1/wink.gif" border="0" align="absmiddle" alt="wink"> EndScriptData */ #include "precompiled.h" #include "sc_creature.h" #include "sc_gossip.h" long long int gold; int costgold; enum { SAY_COMBAT = -1960200, SAY_NOMONEY = -1960201, SAY_FAILLEVEL = -1960202, GOSSIP_XP01 = -3000060, GOSSIP_XP02 = -3000061, GOSSIP_XP03 = -3000062, GOSSIP_XP04 = -3000063, GOSSIP_XP05 = -3000064, GOSSIP_XP06 = -3000065, GOSSIP_MENU_XP_GIVER = 11001, }; bool GossipHello_xp_giver(Player* pPlayer, Creature* pCreature) { pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_XP01, GOSSIP_SENDER_MAIN, 1000); pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_XP02, GOSSIP_SENDER_MAIN, 1001); pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_XP03, GOSSIP_SENDER_MAIN, 1002); pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_XP04, GOSSIP_SENDER_MAIN, 1003); pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_XP05, GOSSIP_SENDER_MAIN, 1004); pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, GOSSIP_XP06, GOSSIP_SENDER_MAIN, 1005); pPlayer->SEND_GOSSIP_MENU(GOSSIP_MENU_XP_GIVER, pCreature->GetGUID()); return true; } void SendDefaultMenu_xp_giver(Player* pPlayer, Creature* m_creature, uint32 uiAction) { if (!pPlayer->getAttackers().empty()) { pPlayer->CLOSE_GOSSIP_MENU(); DoScriptText(SAY_COMBAT, m_creature); return; } gold = pPlayer->GetMoney(); costgold = 10000; if (gold < costgold) { pPlayer->CLOSE_GOSSIP_MENU(); DoScriptText(SAY_NOMONEY, m_creature); return; } if (pPlayer->getLevel() >= 80) { pPlayer->CLOSE_GOSSIP_MENU(); DoScriptText(SAY_FAILLEVEL, m_creature); return; } switch(uiAction) { case 1000: pPlayer->ModifyXPValue(+1000); pPlayer->ModifyMoney(-1*costgold); pPlayer->CLOSE_GOSSIP_MENU(); break; case 1001: pPlayer->ModifyXPValue(+10000); pPlayer->ModifyMoney(-10*costgold); pPlayer->CLOSE_GOSSIP_MENU(); break; case 1002: pPlayer->ModifyXPValue(+100000); pPlayer->ModifyMoney(-100*costgold); pPlayer->CLOSE_GOSSIP_MENU(); break; case 1003: pPlayer->ModifyXPValue(+500000); pPlayer->ModifyMoney(-5000*costgold); pPlayer->CLOSE_GOSSIP_MENU(); break; case 1004: pPlayer->ModifyXPValue(+1000000); pPlayer->ModifyMoney(-10000*costgold); pPlayer->CLOSE_GOSSIP_MENU(); break; case 1005: pPlayer->ModifyXPValue(+5000000); pPlayer->ModifyMoney(-50000*costgold); pPlayer->CLOSE_GOSSIP_MENU(); break; } pPlayer->CLOSE_GOSSIP_MENU(); } bool GossipSelect_xp_giver(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction) { // Main menu if (uiSender == GOSSIP_SENDER_MAIN) SendDefaultMenu_xp_giver(pPlayer, pCreature, uiAction); return true; } void AddSC_xp_giver() { Script* pNewScript; pNewScript = new Script; pNewScript->Name = "xp_giver"; pNewScript->pGossipHello = &GossipHello_xp_giver; pNewScript->pGossipSelect = &GossipSelect_xp_giver; pNewScript->RegisterSelf(); } Но все равно проблема Code error C2039: ModifyXPValue: не является членом "Player"
|
|
|
|
Inuyasha | Дата: Вівторок, 18.01.2011, 01:36 | Сообщение # 5 |
Капрал
Группа: Пользователи
|
Quote (keonji) case 1005: pPlayer->ModifyXPValue(+5000000); pPlayer->ModifyMoney(-50000*costgold); pPlayer->CLOSE_GOSSIP_MENU(); break; ЧТо реализовал то ? Проверки то нет на мани =)Добавлено (18.01.2011, 01:36) ---------------------------------------------
Quote (keonji) error C2039: ModifyXPValue: не является членом "Player" Ну значит такой функции в ядре НЕТУ
|
|
|
|
lanc | Дата: П`ятниця, 21.01.2011, 12:56 | Сообщение # 6 |
Скаут
Группа: Пользователи
|
Inuyasha, Code pPlayer->ModifyMoney(-50000*costgold); а это что по вашему? санта клаус?))) keonji, пробуй сделать как я писал на вовжп, т.е. добавить функцию для XpValue пример я давал доработать его и должно заработать
|
|
|
|
Armagidon | Дата: Субота, 22.01.2011, 21:25 | Сообщение # 7 |
GameMaster
Командир
Группа: Пользователи
|
хмм щас в нете гляну
|
|
|
|
Inuyasha | Дата: Неділя, 23.01.2011, 08:05 | Сообщение # 8 |
Капрал
Группа: Пользователи
|
Quote (lanc) pPlayer->ModifyMoney(-50000*costgold); Ололо, будет у меня хоть 1 меди, он всё равно наложит хр, и снимет золото ...
|
|
|
|
Armagidon | Дата: Субота, 05.02.2011, 10:08 | Сообщение # 9 |
GameMaster
Командир
Группа: Пользователи
|
я не знаю в нете не че не нашел ! 
|
|
|
|