Problem mit einem Custom Script!!!

07/06/2014 19:26 BlackAngelus#1
Hallo,
bin ein absoluter C++ Neuling... und versuche mich gerade an einem kleinem Script, bekomme aber immer eine Fehlermeldung (Google hat auch keine antwort geliefert)

Erstma das Script:
Code:
#include "ScriptPCH.h"

class gossip_test : public CreatureScript
{
public:
	gossip_test() : CreatureScript("gossip_test"){}

	bool OnGossipHello(Player * player, Creature * creature)
	{
		QueryResult getPoints = CharacterDatabase.PQuery("SELECT 'points' FROM 'points' WHERE name= '%s'", player->GetName());

		if (!getPoints)
		{
			CharacterDatabase.PQuery("INSETR INTO points VALUES('', '%s', '20'); ", player->GetName());
			creature->MonsterSay("Jetzt hast du Punkte zum Spenden!", LANG_UNIVERSAL, creature->GetGUID());
			return false;
		}

		do
		{
			Field * fields = getPoints->Fetch();
			uint32 points = fields[0].GetUInt32();
			ChatHandler(player).PSendSysMessage("Du hast = %u", points);
		} while (getPoints->NextRow());
		return true;
	}

};

void AddSC_test_db()
{
	new gossip_test;
}
nun die Fehlermeldung:
Code:
Fehler: Objekte des nicht trivial kopierbaren Typs »const string {aka const class std::basic_string<char>}« können nicht über »...« übergeben werden
Kompilierung wegen -Wfatal-errors beendet.
DAs BS is Ubuntu 12.04....weiss net ob ihr noch mehr infos braucht...


Hoffe jemand hat eine Idee..

Grüße
Samuel84
07/07/2014 00:19 °"Crazy"°#2
Code:
CharacterDatabase.PQuery("INSETR INTO points VALUES('', '%s', '20'); ", player->GetName());
INSERT bitte, sonst kann es beim Ausführen Probleme geben. Nebenbei erwähnt.
07/07/2014 10:16 _robox#3
um dir helfen zu können Soldes du immer die Emu und den hsah des Core mit angeben
ich gehe mal davon aus das du Trinity einsetzt.

wenn ich nicht ganz falsch liege ist hier der Fehler.
Code:
player->GetName();
zu

Code:
player->GetSession()->GetPlayer()->GetName().c_str()
und hier

Code:
ChatHandler(player).PSendSysMessage("Du hast = %u", points);
so Solde es gehen
Code:
ChatHandler* handler = new ChatHandler(player->GetSession());
handler->PSendSysMessage("Du hast = %u", points);