Hilfe beim ändern
-
Guten Tag,
Ich bräuchte hilfe um etwas zu ändern. Ich bin noch ziemlicher Anfänger beim Programmieren mit C++. Hier erstmal der Code:
#include "whitelist.hpp" #include <string.h> #include <sstream> #include <fstream> #include <list> #include <engine/e_config.h> #include <engine/e_server_interface.h> class wlist_item { public: wlist_item(std::string name, std::string ip) { this->wuser_name = name; this->wuser_ip = ip; } std::string wuser_name; std::string wuser_ip; std::string name() { return this->wuser_name; } std::string ip() { return this->wuser_ip; } }; std::list<wlist_item> whitelist; void wlist_load() { std::fstream f; f.open(config.sv_whitelist, std::ios::in); whitelist.clear(); while (!f.eof() && !f.fail()) { std::string tmpname; std::string tmpip; std::getline(f, tmpname); if(!f.eof() && tmpname!="") { std::getline(f, tmpip); whitelist.push_back(*new wlist_item(tmpname, tmpip)); } } f.close(); } void wlist_save() { std::fstream f; f.open(config.sv_whitelist, std::ios::out); if(!f.fail()) for(std::list<wlist_item>::iterator i=whitelist.begin(); i!=whitelist.end(); i++) f << i->name() << std::endl << i->ip() << std::endl; f.close(); } void wlist_show() { dbg_msg("server", "Whitelisted users:"); for(std::list<wlist_item>::iterator i=whitelist.begin(); i!=whitelist.end(); i++) { dbg_msg("server", "User: %s", i->name().c_str()); dbg_msg("server", "IP..: %s", i->ip().c_str()); dbg_msg("server", "-------------"); } } void wlist_add(int id) { if (!is_wlist(id)) { whitelist.push_back(*new wlist_item(server_clientname(id), get_range(id))); wlist_save(); } } void wlist_remove(const char *s) { std::list<wlist_item> wtmp; for(std::list<wlist_item>::iterator i=whitelist.begin(); i!=whitelist.end(); i++) wtmp.push_back(*new wlist_item(i->name(), i->ip())); whitelist.clear(); for(std::list<wlist_item>::iterator i=wtmp.begin(); i!=wtmp.end(); i++) if (i->name() != s) whitelist.push_back(*new wlist_item(i->name(), i->ip())); wlist_save(); } bool is_wlist(int id) { for(std::list<wlist_item>::iterator i=whitelist.begin(); i!=whitelist.end(); i++) { if (i->name() == server_clientname(id) && i->ip() == get_range(id)) return true; } return false; } std::string get_range(int id) { char ip_buf[128]; server_getip_range(id, ip_buf); return ip_buf; }
Also wenn dieser befehl:
void wlist_save() { std::fstream f; f.open(config.sv_whitelist, std::ios::out); if(!f.fail()) for(std::list<wlist_item>::iterator i=whitelist.begin(); i!=whitelist.end(); i++) f << i->name() << std::endl << i->ip() << std::endl; f.close();
ausgeführt wird: speichert er im Spiel die aktuelle position.
Mit dieser Funktion:
void wlist_load() { std::fstream f; f.open(config.sv_whitelist, std::ios::in); whitelist.clear(); while (!f.eof() && !f.fail()) { std::string tmpname; std::string tmpip; std::getline(f, tmpname); if(!f.eof() && tmpname!="") { std::getline(f, tmpip); whitelist.push_back(*new wlist_item(tmpname, tmpip)); } } f.close(); }
wird die position wieder geladen.
Im spiel muss man /load und /save eingeben. Ich möchte aber das man diesn Vorgang öfter machen kann also das ich z.B. /save 1 , /save 2 usw eingeben kann und dann auch /load 1 , /load 2 usw.Kann mier da einer helfen?
-
kann keienr helfen?