Reklama
Pokazuje wyniki od 1 do 8 z 8

Temat: [7,92][c++] Zapisywanie nowej wartość na koncie.

  1. #1
    Avatar GM Esio
    Data rejestracji
    2007
    Położenie
    Mysłowice
    Wiek
    32
    Posty
    333
    Siła reputacji
    18

    Domyślny [7,92][c++] Zapisywanie nowej wartość na koncie.

    Witam proszę was o pomoc!

    w ioaccountxml.cpp funkcja
    Account IOAccountXML::loadAccount(unsigned long accno)

    Kod:
         if(readXMLInteger(tmpNode, "worldid", intValue)){
          if(xmlStrcmp(tmpNode->name, (const xmlChar*)"character") == 0){
           acc.WorldID.push_back(intValue);
          }
         }
    natomiast jak próbuję w funkcji
    bool IOAccountXML::saveAccount(Account account, unsigned long premiumTicks)

    Kod:
    		dir << "<character name=\"" << (*it) << "\" worldid=\"" << acc.WorldID << "\" />";
    dodać informację wywala mi błąd

    In member function `virtual bool IOAccountXML::saveAccount(Account, long unsigned int)':
    `acc' undeclared (first use this function)
    (Each undeclared identifier is reported only once for each function it appears in.)
    Proszę o pomoc!
    http://ots.tibiaserver.pl/tibiaserver.gif

  2. #2
    Avatar bolek
    Data rejestracji
    2005
    Położenie
    -
    Wiek
    33
    Posty
    493
    Siła reputacji
    19

    Domyślny

    Proś dalej, a najlepiej to daj mniej kodu bo za dużo dałeś i połapać się nie mogę ;/

    Czy ty angielskiego nie umiesz? Pisze, że acc jest nie zadeklarowane.

  3. Reklama
  4. #3
    Avatar GM Esio
    Data rejestracji
    2007
    Położenie
    Mysłowice
    Wiek
    32
    Posty
    333
    Siła reputacji
    18

    Domyślny

    no to powiedz mi jak go mam zdeklarować bo ja zupełnie nie wiem...
    http://ots.tibiaserver.pl/tibiaserver.gif

  5. #4
    Avatar bolek
    Data rejestracji
    2005
    Położenie
    -
    Wiek
    33
    Posty
    493
    Siła reputacji
    19

    Domyślny

    Cytuj GM Esio napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    no to powiedz mi jak go mam zdeklarować bo ja zupełnie nie wiem...
    Co robisz w ogóle? I to wcześniejsze to był sarkazm, podaj cały kod.

  6. #5
    Avatar GM Esio
    Data rejestracji
    2007
    Położenie
    Mysłowice
    Wiek
    32
    Posty
    333
    Siła reputacji
    18

    Domyślny

    chcę aby z funkcji load pobierało dane z wordid i zapisywało je podczas save.

    Kod:
    #include "otpch.h"
    
    #include "ioaccountxml.h"
    #include "tools.h"
    
    #include <algorithm>
    #include <functional>
    #include <sstream>
    #include <fstream>
    
    #include <libxml/xmlmemory.h>
    #include <libxml/parser.h>
    #include <libxml/threads.h>
    
    #include "configmanager.h"
    
    extern xmlMutexPtr xmlmutex;
    extern ConfigManager g_config;
    
    IOAccountXML::IOAccountXML()
    {
    	if(xmlmutex == NULL){
    		xmlmutex = xmlNewMutex();
    	}
    }
    
    Account IOAccountXML::loadAccount(unsigned long accno)
    {
    	Account acc;
    
    	std::stringstream accsstr;
    	std::string datadirp = g_config.getString(ConfigManager::DATA_DIRECTORYP);
    	accsstr << datadirp + "accounts/" << accno << ".xml";
    	std::string filename = accsstr.str();
    	xmlMutexLock(xmlmutex);
    
    	xmlDocPtr doc = xmlParseFile(filename.c_str());
    	if(doc){
    		xmlNodePtr root, p;
    		root = xmlDocGetRootElement(doc);
    
    		if(xmlStrcmp(root->name,(const xmlChar*)"account") != 0){
    			xmlFreeDoc(doc);			
    			xmlMutexUnlock(xmlmutex);
    			return acc;
    		}
    
    		p = root->children;
    
    		std::string strValue;
    		int intValue;
    
    		if(readXMLString(root, "pass", strValue)){
    			acc.password = strValue;
    		}
    
    		if(readXMLInteger(root, "premDays", intValue)){
    			acc.premDays = intValue;
    		}
    
    		#ifdef __XID_PREMIUM_SYSTEM__
    		if(readXMLInteger(root, "premEnd", intValue)){
    			acc.premEnd = intValue;
    		}
    		#endif
    		
    		// now load in characters.
    		while(p){
    			if(xmlStrcmp(p->name, (const xmlChar*)"characters") == 0){
    				xmlNodePtr tmpNode = p->children;
    				while(tmpNode){
    					if(readXMLString(tmpNode, "name", strValue)){
    						if(xmlStrcmp(tmpNode->name, (const xmlChar*)"character") == 0){
    							acc.charList.push_back(strValue);
    						}
    					}
    
         if(readXMLInteger(tmpNode, "worldid", intValue)){
          if(xmlStrcmp(tmpNode->name, (const xmlChar*)"character") == 0){
           acc.WorldID.push_back(intValue);
          }
         }
    
    
    					tmpNode = tmpNode->next;
    				}
    			}
    			p = p->next;
    		}
    		
    		xmlFreeDoc(doc);
    
    		// Organize the char list.
    		acc.charList.sort();
    		acc.accnumber = accno;
    	}	
    
    	xmlMutexUnlock(xmlmutex);
    	return acc;
    }
    
    bool IOAccountXML::getPassword(unsigned long accno, const std::string& name, std::string& password)
    {
    	std::string acc_password;
    	
    	std::stringstream accsstr;
    	std::string datadirp = g_config.getString(ConfigManager::DATA_DIRECTORYP);
    	accsstr << datadirp + "accounts/" << accno << ".xml";
    	std::string filename = accsstr.str();
    	
    	xmlMutexLock(xmlmutex);
    	xmlDocPtr doc = xmlParseFile(filename.c_str());
    
    	if(doc){
    		xmlNodePtr root, p;
    		root = xmlDocGetRootElement(doc);
    
    		if(xmlStrcmp(root->name,(const xmlChar*)"account") != 0){
    			xmlFreeDoc(doc);			
    			xmlMutexUnlock(xmlmutex);
    			return false;
    		}
    
    		p = root->children;
    		
    		std::string strValue;
    		if(readXMLString(root, "pass", strValue)){
    			acc_password = strValue;
    		}
    
    		// now load in characters.
    		while(p){
    			if(xmlStrcmp(p->name, (const xmlChar*)"characters") == 0){
    				xmlNodePtr tmpNode = p->children;
    				while(tmpNode){
    					if(readXMLString(tmpNode, "name", strValue)){
    						if(xmlStrcmp(tmpNode->name, (const xmlChar*)"character") == 0){
    							if(strValue == name){
    								password = acc_password;
    								xmlFreeDoc(doc);
    								xmlMutexUnlock(xmlmutex);
    								return true;
    							}
    						}
    					}
    					tmpNode = tmpNode->next;
    				}
    			}
    			p = p->next;
    		}
    		
    		xmlFreeDoc(doc);
    	}
    
    	xmlMutexUnlock(xmlmutex);
    	return false;
    }
    
    bool IOAccountXML::accountExists(unsigned long accno)
    {
    	std::string datadirp = g_config.getString(ConfigManager::DATA_DIRECTORYP);
    	std::string filename = datadirp + "accounts/" + str(accno) + ".xml";
    	std::transform(filename.begin(), filename.end(), filename.begin(), tolower);
    
    	return fileExists(filename.c_str());
    }
    
    bool IOAccountXML::saveAccount(Account account, unsigned long premiumTicks)
    {
    	int days;
                         	time_t timeNow = std::time(NULL);    
    	if(timeNow < premiumTicks){
    		days = premiumTicks - timeNow; 
    		days = (days / 86400);
    	}
    	else
    		days = 0;
    
    
    
    	std::stringstream dir;
    	dir << "data/accounts/" << account.accnumber << ".xml";
    	std::ofstream accFile(dir.str().c_str());
    	
    	
    	
    	dir.str("");				
    	std::list<std::string>::iterator it;
    	for(it = account.charList.begin(); it != account.charList.end(); it++){
    		dir << "<character name=\"" << (*it) << "\" worldid=\"" << acc.WorldID << "\" />";
    	}
    	
    	accFile << "<?xml version=\"1.0\"?><account pass=\"" << account.password << "\" premDays=\"" << days << "\" premEnd=\"" << premiumTicks << "\"><characters>" << 
    		dir.str().c_str() << "</characters></account>" << std::endl;
    	
    	return true;
    }
    Ostatnio zmieniony przez GM Esio : 26-05-2010, 21:53
    http://ots.tibiaserver.pl/tibiaserver.gif

  7. #6
    Avatar bolek
    Data rejestracji
    2005
    Położenie
    -
    Wiek
    33
    Posty
    493
    Siła reputacji
    19

    Domyślny

    Nie wiem co to wymyślasz, jakiś stary silnik, ale uzywając to w tym SaveAccount zamiast tego co podałeś:

    int id;
    memcpy(&id,acc.WorldID.begin(),sizeof(int));
    WorldID.erase(WorldID.begin());
    dir << "<character name=\"" << (*it) << "\" worldid=\"" << id << "\" />";
    Zapewne pójdzie, ale i tak bez sensu na takim serwerze pracować, poza tym mój przykład nie jest wspaniały ale jak się upierasz... ;/
    Ostatnio zmieniony przez bolek : 26-05-2010, 23:59

  8. #7
    Avatar GM Esio
    Data rejestracji
    2007
    Położenie
    Mysłowice
    Wiek
    32
    Posty
    333
    Siła reputacji
    18

    Domyślny

    Nie działa

    linijka: memcpy(&id,acc.WorldID.begin(),sizeof(int));

    Kod:
    In member function `virtual bool IOAccountXML::saveAccount(Account, long unsigned int)': 
    `acc' undeclared (first use this function) 
      (Each undeclared identifier is reported only once for each function it appears in.) 
    `WorldID' undeclared (first use this function) 
    `it' undeclared (first use this function)
    http://ots.tibiaserver.pl/tibiaserver.gif

  9. #8
    Avatar bolek
    Data rejestracji
    2005
    Położenie
    -
    Wiek
    33
    Posty
    493
    Siła reputacji
    19

    Domyślny

    int id;
    memcpy(&id,account.WorldID.begin(),sizeof(int));
    account.WorldID.erase(account.WorldID.begin());
    dir << "<character name=\"" << (*it) << "\" worldid=\"" << id << "\" />";
    teraz........

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. [C# MODERN UI] Zapisywanie plików w odpowiednim folderze
    Przez Kusterek w dziale Programowanie
    Odpowiedzi: 0
    Ostatni post: 20-11-2013, 15:04
  2. Opera - Zapisywanie haseł
    Przez Urlak w dziale Sprzęt i oprogramowanie
    Odpowiedzi: 4
    Ostatni post: 06-07-2012, 02:57
  3. Zapisywanie hotkeyow na Viscie
    Przez rycekrox21 w dziale Tibia
    Odpowiedzi: 1
    Ostatni post: 01-07-2011, 02:26
  4. [8.54][ElfBot] Zapisywanie Wpt
    Przez pooh w dziale Tibia
    Odpowiedzi: 2
    Ostatni post: 31-01-2011, 11:59
  5. [8.61][tibia auto] zapisywanie ustawień
    Przez Pumpkin w dziale Tibia
    Odpowiedzi: 2
    Ostatni post: 26-08-2010, 20:31

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •