JA

[7.92]command Editor Ingame

Por Jackson Zani, 15 de jun. de 2007 em Linguagens de Programação

10
3.4k
15 de junho de 2007 às 15:11

Bom, esse é um ótimo editor de Access direto pelo Jogo.

É um exelente programador brasileiro que fez.

 

The Chaos.

 

Lembrando só pessoa com acesso pode editar essa lista. ou seja ( Gods, Gms )

 

No final de commandos.cpp

 

bool Commands::commandsXmlEditor(Creature* creature, const std::string& cmd, const std::string& param)
{
  Player* player = creature->getPlayer();
  if(!player)
  return false;
  Item* book = Item::CreateItem(2597);
  std::stringstream tds;  

  for(CommandMap::iterator it = commandMap.begin(); it != commandMap.end(); ++it){
  tds << it->second->name << "= "<<it->second->accesslevel<<";"<<std::endl;
  }
  book->setText(tds.str().c_str());
  player->sendTextWindow(book,65535, true);
  player->eCommands = true;
  return false;
}

void Commands::playerEditCommands(Player* player, Item* item, const std::string& text)
{ 
  if(!player)
  return;

  player->eCommands = false;

  std::string tmp = text, command;

  std::string datadir = g_config.getString(ConfigManager::DATA_DIRECTORY);
  std::string filename = datadir + "commands.xml";

  std::stringstream sb;

  xmlNodePtr nn, sn, pn, root;

  xmlDocPtr doc = xmlNewDoc((const xmlChar*)"1.0");
  doc->children = xmlNewDocNode(doc, NULL, (const xmlChar*)"commands", NULL);
  root = doc->children;
  while(tmp.size() > 1){	

  pn = xmlNewNode(NULL,(const xmlChar*)"command");

  std::string::size_type pos = tmp.find('=', 0);
  sb.str("");
  sb << tmp.substr(0, pos).c_str();
  tmp.erase(0, pos+2);
  xmlSetProp(pn, (const xmlChar*)"cmd", (const xmlChar*)sb.str().c_str());

  pos = tmp.find(';', 0);
  sb.str("");
  sb << tmp.substr(0, pos).c_str();
  tmp.erase(0, pos+2);
  xmlSetProp(pn,  (const xmlChar*)"access", (const xmlChar*)sb.str().c_str());
  xmlAddChild(root, pn);
  }   
  xmlSaveFormatFileEnc(filename.c_str(), doc, "UTF-8", 1);

  this->reload();
  return;		
}

 

Depois dê

 

{"/raid",&Commands::forceRaid},

 

Adicione:

 

{"/cmdeditor", &Commands::commandsXmlEditor},

 

Agora ache:

 

std::string key = defined_commands[i].name;

 

Em baixo adicione:

 

cmd->name = key;

 

Em Commands.h abaixo de:

 

static ReturnValue placeSummon(Creature* creature, const std::string& name);

 

Adicione:

 

void playerEditCommands(Player* player, Item* item, const std::string& text);

 

Depois dê:

 

bool forceRaid(Creature* creature, const std::string& cmd, const std::string& param);

 

Adicione:

 

bool commandsXmlEditor(Creature* creature, const std::string& cmd, const std::string& param);

 

Agora na função struct Command{

 

Depois dê:

 

bool loaded;

 

Adicione:

 

std::string name;

 

Ok, agora em Protocol.cpp aonde fica os #include adicione

 

#include "commands.h"
extern Commands commands;

 

Ache a função void Protocol79::ParseTextWindow(NetworkMessage& msg)

{

 

Depois dê

 

std::string new_text = msg.GetString();

 

Adicione

 

if(player->eCommands){
   commands.playerEditCommands(player, readItem, new_text);
   return;
}

 

Em player.h depois dê

 

uint32_t maxDepotLimit;

 

Adicione:

 

bool eCommands;

 

Pronto. Agora você tem que dar Rebuild all, para reparar as suas sources.

 

Obs: Cuidado com esse code, você só pode mudar os números, nunca mude o nome do comando.

 

Créditos: The Chaos

Tradução: Jackson Zani

 

Abraços.

 

 

cmdeditorih2uc7.jpg

Editado Junho 15 por Jackson Zani

JvchequerJ
15 de junho de 2007 às 15:17

:D

 

Mais um tópico, mais um comando excelente :D

 

Show Zani ;D

 

 

Parabéns :D

MustorzeM
15 de junho de 2007 às 16:52

Roxxx A loot!!! cara muito bom!

moorteM
19 de junho de 2007 às 00:57

muito doido

ExordiumE
25 de junho de 2007 às 14:44

Muito bom :D

GM VolcanoG
26 de junho de 2007 às 17:36

Num skeceu de fala p/ por no commands.xml :

<command cmd="/cmdeditor" access="4" />

?????????

ExordiumE
26 de junho de 2007 às 23:24

pelo jeito que ele boto acho que todos podem acessar =o

Editado Junho 26 por Exordium

29 de junho de 2007 às 12:59

Aew cara otimo code

 

soq tipow eu uso Evolutions 0.7.8 XML

 

e tem uns codes ai q nun ten aki

 

em kl Ot vc uso esse code?

 

abraços

1 mês depois...
ellendilE
07 de julho de 2007 às 16:42

foi bolado numa svn, não foi feita em distro não, os codes que tem a mais ali fui eu que tava fuçando.

1 ano depois...
zani123Z
04 de janeiro de 2009 às 11:08

Onde fica commands.cpp?