Главная | Форум | Статьи | Фaйлы| Картинки WoW | Профиль | Регистрация | Вход

[ Новые сообщения · Правила форума · Поиск · RSS ]

WoW-Info — информационный World of Warcraft портал

XP Giver - Форум

  • Сторінка 1 з 1
  • 1
XP Giver
keonjiДата: Неділя, 16.01.2011, 21:26 | Сообщение # 1



keonji
Скаут
Группа: Пользователи
Сообщений: 8

Замечания:

Оффлайн
Пишу ещё и тут, мб будет помощь. В общем скрипт не работает. Не правильно сделана проверка лвл и выдача 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



Diyvol
ЗлОй-АйТИшник
Центурион
Группа: Best of the Best user Wow-info
Сообщений: 356

Замечания:

Оффлайн
По точней проблему опиши что имено не так.
мб.чем и помогу



Веб-дизайнер.
Работа, учеба и тренажерный зал. Жизнь это когда ты рад тому, что ты устал. Я не вижу смысла в жизни наркоманов. Наркотик в роли пастуха для всех этих баранов. Я иду вперед и не думаю сворачивать.
 
InuyashaДата: Понеділок, 17.01.2011, 08:08 | Сообщение # 3



Inuyasha
Капрал
Группа: Пользователи
Сообщений: 76

Замечания:

Оффлайн
Diyvol, Как тебе ещё точней ? Чем ты тут поможешь ? 0_о
ВОт мой с тринити

Добавлено (17.01.2011, 06:50)
---------------------------------------------

Quote (Inuyasha)
GiveX

А не
Quote (keonji)
ModifyXPValue

Покрайней мере так на тринити, а они много не отличаются, + ты без проверки вообще на мони сделал, тоесть у тебя ом и с одним серебром будет кастовать и вообще в ядре есть подобное, нужно искать !

Добавлено (17.01.2011, 08:08)
---------------------------------------------
Попробуй вот так





Сообщение отредактировал Inuyasha - Понеділок, 17.01.2011, 08:09
 
keonjiДата: Понеділок, 17.01.2011, 15:29 | Сообщение # 4



keonji
Скаут
Группа: Пользователи
Сообщений: 8

Замечания:

Оффлайн
Inuyasha,
Quote (Inuyasha)
GiveX

на мангосе не работает.

Добавлено (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



Inuyasha
Капрал
Группа: Пользователи
Сообщений: 76

Замечания:

Оффлайн
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



lanc
Скаут
Группа: Пользователи
Сообщений: 7

Замечания:

Оффлайн
Inuyasha,
Code
pPlayer->ModifyMoney(-50000*costgold);
а это что по вашему? санта клаус?)))

keonji, пробуй сделать как я писал на вовжп, т.е. добавить функцию для XpValue пример я давал доработать его и должно заработать

 
ArmagidonДата: Субота, 22.01.2011, 21:25 | Сообщение # 7



Armagidon
GameMaster
Командир
Группа: Пользователи
Сообщений: 584

Замечания:

Оффлайн
хмм щас в нете гляну


 
InuyashaДата: Неділя, 23.01.2011, 08:05 | Сообщение # 8



Inuyasha
Капрал
Группа: Пользователи
Сообщений: 76

Замечания:

Оффлайн
Quote (lanc)
pPlayer->ModifyMoney(-50000*costgold);

Ололо, будет у меня хоть 1 меди, он всё равно наложит хр, и снимет золото ...


 
ArmagidonДата: Субота, 05.02.2011, 10:08 | Сообщение # 9



Armagidon
GameMaster
Командир
Группа: Пользователи
Сообщений: 584

Замечания:

Оффлайн
я не знаю в нете не че не нашел ! cry


 
  • Сторінка 1 з 1
  • 1
Пошук:

Новые сообщения в темах
Сдам в аренду сервер и хостинг · (Хост Предложения)
Автор: redlaine
Последнее сообщение в 23:53
хаха :D · (Приколы)
Автор: [N1ke]Medved
Последнее сообщение в 18:40
Autobattle - новый боевой бот ... · (Боты для WoW)
Автор: terrikon
Последнее сообщение в 18:39
PvE руководство для Чернокнижн... · (Чернокнижник)
Автор: Darkensand
Последнее сообщение в 18:38
Пустой свиток (Часть 11) · (Истории WoW)
Автор: R_a_Z_o_R
Последнее сообщение в 18:37
Друиды в Катаклизме: Официальн... · (Друид)
Автор: Darkensand
Последнее сообщение в 18:37
[Баг 3.3.5] Фарм ледяных бадже... · (Читы для WoW)
Автор: Darkensand
Последнее сообщение в 18:35
FarmBot (Бот для фарма руды и ... · (Боты для WoW)
Автор: homma
Последнее сообщение в 18:34
Почему мы сражаемся: ролевая и... · (Воин)
Автор: Darkensand
Последнее сообщение в 18:34
Книги по Wold of Warcraft · (Истории WoW)
Автор: R_a_Z_o_R
Последнее сообщение в 18:33
Маг огня в Cataclysm · (Маг)
Автор: Darkensand
Последнее сообщение в 18:33
Как начать играть в World of W... · (Полезно знать)
Автор: Belkmondesh
Последнее сообщение в 18:32
Характеризация профессий · (Профессии)
Автор: Darkensand
Последнее сообщение в 18:31
Что значит для арканов бета те... · (Маг)
Автор: Darkensand
Последнее сообщение в 18:31

Контакты Контакты Copyright WoW-Info — World of Warcraft портал © 2025 | Условия и правила использования ресурса | Реклама / Услуги
WoW-Info портал.World of Warcraft портал — готовые сервера, сайты, картинки, аддоны, патчи, читы, баги, mangos, ArcEmu, TrinityCore, Warcraft 3, новости, Cataclysm...
Яндекс.Метрика Хостинг від uCoz