[SOLVED]City Conquest

Hey Leute,

ich arbeite zurzeit an einer privaten Sammlung von Scripts für einen PvP Server. Dabei bin ich auch auf das “City Conquest” Script von lordpsyan gestoßen.

Den Patch habe ich manuell eingearbeitet und damit zunächst auch keine Probleme gehabt. Die Probleme gab es erst beim Kompilieren der Core.

Der “CityConquestMgr.cpp” und das “city_conquest_portal.cpp” geben sehr viele Fehler aus, von denen ich viele einfach nicht beheben kann. Daher frage ich hier nach, ob mir nicht jemand unter die Arme greifen kann.

CityConquestMgr.cpp:

[CODE]#include “ScriptPCH.h”

#include “Creature.h”

#include <stdio.h>

#include <time.h>

#include

#include “CityConquestMgr.h”

#include “World.h”

CityConquestMgr CityConquest;

CityConquestMgr::CityConquestMgr(){}

City::City(){}

Coords::Coords(){}

Spawn::Spawn(){}

void CityConquestMgr::StartSiege(int id, int faction);

if (CanStartSiege(id, faction));

{

 City * city = GetCityFromId(id);

 if (city->summonerSet)

	 SpawnBoss(id, faction);

 else

 {

	 int t = time (NULL) + 1800;

	 WorldDatabase.PExecute("UPDATE city_capture_bosses SET spawn_timer = %u WHERE city_id = %u", t, id);

 }


 city->active = true;


 char * fname;

 if (faction == 0)

	 fname = "Aliance";

 else

	 fname = "Horde";


 char * nm;

nm = new char[city->name.size()+1];

 nm[city->name.size()] = 0;

 memcpy(nm, city->name.c_str(), city->name.size());


 char msg[500];

 sprintf(msg, "City Conquest: %s declared war to %s. Opposite team has got 30 minutes to engage commander of %s!", fname, nm, nm);

 sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);


 WorldDatabase.PExecute("REPLACE INTO city_capture_progress (city_id, time) VALUES (%u, %u)",

	 id, time (NULL));


 //OpenPortal(id);

}

void CityConquestMgr::EndSiege(int id)

{

City *city = GetCityFromId(id);

if (!city->active)

 return;

city->active = false;

WorldDatabase.PExecute("REPLACE INTO city_capture_progress (city_id, time) VALUES (%u, %u, %u)",

 id, time (NULL));


WorldDatabase.PExecute("UPDATE city_capture_bosses SET spawn_timer =  1 WHERE city_id = %u", id);


char * fname;

if (city->controlled == 0)

fname = "Aliance";

else

 fname = "Horde";


char * nm;

nm = new char[city->name.size()+1];

nm[city->name.size()] = 0;

memcpy(nm, city->name.c_str(), city->name.size());


char msg[255];

sprintf(msg, "City Conquest: Battle for %s is over! %s is controlled by %s", nm, nm, fname);

sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);

}

void CityConquestMgr::SwitchFaction(int id)

{

City * city = GetCityFromId(id);


if (city->active)

{

 Spawns::iterator l;

 for (l = city->spawns.begin(); l != city->spawns.end(); ++l)

 {

	 Spawn *spawn = *l;

	 if (city->controlled == 1)

	 {

		 spawn->creature->setFaction(spawn->faction_A);


		 if(CreatureInfo); const *cinfo = spawn->creature->GetCreatureInfo();

		 {

			 const_cast<CreatureInfo*>(cinfo)->faction_A = spawn->faction_A;

			 const_cast<CreatureInfo*>(cinfo)->faction_H = spawn->faction_A;

		 }

		 WorldDatabase.PExecute("UPDATE creature_template SET faction_A = '%u', faction_H = '%u' WHERE entry = '%u'", spawn->faction_A, spawn->faction_A, spawn->creature->GetEntry());

	 }

 else if (city->controlled == 0)

	 {

		 spawn->creature->setFaction(spawn->faction_H);


		 if(CreatureInfo); const *cinfo = spawn->creature->GetCreatureInfo();

		 {

			 const_cast<CreatureInfo*>(cinfo)->faction_A = spawn->faction_H;

			 const_cast<CreatureInfo*>(cinfo)->faction_H = spawn->faction_H;

		 }

		 WorldDatabase.PExecute("UPDATE creature_template SET faction_A = '%u', faction_H = '%u' WHERE entry = '%u'", spawn->faction_H, spawn->faction_H, spawn->creature->GetEntry());

	 }

 }

 if (city->controlled == 0)

	 city->controlled = 1;

 else

	 city->controlled = 0;

 WorldDatabase.PExecute("UPDATE city_capture_cities SET controlled = %u WHERE id = %u", city->controlled, city->id);

 EndSiege(id);

}

}

void CityConquestMgr::SpawnBoss(int id, int faction)

{

City * city = GetCityFromId(id);

if (faction == 0)

 city->summoner->SummonCreature(city->boss_H, city->summoner->GetPositionX(), city->summoner->GetPositionY(), city->summoner->GetPositionZ(),

 city->summoner->GetOrientation(), TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1800000);

else if (faction == 1)

city->summoner->SummonCreature(city->boss_A, city->summoner->GetPositionX(), city->summoner->GetPositionY(), city->summoner->GetPositionZ(),

 city->summoner->GetOrientation(), TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1800000);


WorldDatabase.PExecute("UPDATE city_capture_bosses SET spawn_timer =  1 WHERE city_id = %u", id);

}

City * CityConquestMgr::GetCityFromId(int id)

{

Cities::iterator l;

for (l = cities.begin(); l != cities.end(); ++l)

{

 City *ct = *l;

 if (ct->id == id)

	 return ct;

}

return new City();

}

bool CityConquestMgr::CanStartSiege(int id, int faction)

{

City *city = GetCityFromId(id);

if (city->active == true)

 return false;

if (city->controlled == faction)

 return false;


QueryResult result = WorldDatabase.PQuery("SELECT time FROM city_capture_progress WHERE city_id = %u", id);

// 0

if (result)

{

 Field *fields = result->Fetch();

 // 60 = 1 min, will be increased in release

 if (fields[0].GetInt32() + 3600 > time (NULL))

	 return false;

}


return true;

}

void CityConquestMgr::LoadCities()

{

QueryResult result = WorldDatabase.Query("SELECT id, minlevel, maxlevel, name, controlled, boss_entry_A, boss_entry_H FROM city_capture_cities LEFT JOIN city_capture_bosses ON id = city_id ORDER BY id ASC");

//   													   0   1     	2     	3 	4       	5         	6

if (result)

{

 do

 {

	 City *city = new City();

	 Field *fields = result->Fetch();

	 city->id = fields[0].GetInt32();

	 city->minlevel = fields[1].GetInt32();

	 city->maxlevel = fields[2].GetInt32();

	 city->name = fields[3].GetString();

	 city->controlled = fields[4].GetInt32();

	 city->summonerSet = false;

	 city->active = false; // todo activecheck

	 city->boss_A = fields[5].GetInt32();

 city->boss_H = fields[6].GetInt32();

	 // sLog->outString("CQM: City Loaded - %s", fields[3].GetString()); -- causes crash during startup (LordPsyan)

	 cities.push_back(city);

	 city->LoadPorts();


 }

 while (result->NextRow());

}

}

void CityConquestMgr::RegisterCreature(Creature * creature, int type)

{

QueryResult result;

if (type == 0)

{

 sLog->outString("CQM: Creature Registered - %u", creature->GetEntry());

result

	 = WorldDatabase.PQuery("SELECT city_id, faction_A, faction_H FROM city_capture_creatures WHERE entry = %u",

	 //                         	0    	1      	2

	 creature->GetEntry());

 if (result)

 {

	 Field *fields = result->Fetch();

	 Cities::iterator l;

	 for (l = cities.begin(); l != cities.end(); ++l)

	 {

		 City *ct = *l;

		 if (ct->id == fields[0].GetInt32())

	 {

			 Spawn *spawn = new Spawn();

			 spawn->creature = creature;

		 spawn->faction_A = fields[1].GetInt32();

			 spawn->faction_H = fields[2].GetInt32();


			 spawn->creature->setFaction(spawn->faction_A);


			 if (ct->controlled == 1)

			 {

				 spawn->creature->setFaction(spawn->faction_H);


				 if(CreatureInfo); const *cinfo = spawn->creature->GetCreatureInfo();

				 {

					 const_cast<CreatureInfo*>(cinfo)->faction_A = spawn->faction_H;

					 const_cast<CreatureInfo*>(cinfo)->faction_H = spawn->faction_H;

				 }

				 WorldDatabase.PExecute("UPDATE creature_template SET faction_A = '%u', faction_H = '%u' WHERE entry = '%u'", spawn->faction_H, spawn->faction_H, spawn->creature->GetEntry());

			 }

			 else if (ct->controlled == 0)

			 {

				 spawn->creature->setFaction(spawn->faction_A);


				 if(CreatureInfo); const *cinfo = spawn->creature->GetCreatureInfo();

				 {

					 const_cast<CreatureInfo*>(cinfo)->faction_A = spawn->faction_A;

					 const_cast<CreatureInfo*>(cinfo)->faction_H = spawn->faction_A;

				 }

				 WorldDatabase.PExecute("UPDATE creature_template SET faction_A = '%u', faction_H = '%u' WHERE entry = '%u'", spawn->faction_A, spawn->faction_A, spawn->creature->GetEntry());

			 }


			 ct->spawns.push_back(spawn);

			 return;

		 }

	 }

 }

}

else if (type == 2)

{

 sLog->outString("CQM: City Spawner attmpts to register - %u", creature->GetEntry());

 result

 = WorldDatabase.PQuery("SELECT city_id, spawner_entry, spawn_timer FROM city_capture_bosses WHERE spawner_entry = %u", creature->GetEntry());

if (result)

 {

	 sLog->outString("CQM: City Spawner passed first check - %u", creature->GetEntry());

	 Field *fields = result->Fetch();

	 Cities::iterator l;

	 for (l = cities.begin(); l != cities.end(); ++l)

	 {

		 City *ct = *l;

		 sLog->outString("CQM: City Spawner browses through cities - %u", creature->GetEntry());

	 if (ct->id == fields[0].GetInt32())

		 {

			 if (creature->GetEntry() == fields[1].GetInt32())

			 {

				 sLog->outString("CQM: City Spawner Registered - %u", creature->GetEntry());

				 if (!ct->summonerSet)

				 {

					 ct->summoner = creature;

					 ct->summonerSet = true;

					 if (fields[2].GetInt32() > time(NULL))

					 {

						 if (ct->controlled == 1)

							 SpawnBoss(ct->id, 0);

						 else

							 SpawnBoss(ct->id, 1);

					 }

					 else

						 EndSiege(ct->id);


				 }

			 }

			 return;

		 }

	 }

 }


}

}

void City::LoadPorts()

{

QueryResult result = WorldDatabase.PQuery("SELECT x, y, z, o, map, side FROM city_capture_ports WHERE city_id = %u", id);

//   													   0  1  2  3  4	5

if (result)

{

 do

 {

	 Field *fields = result->Fetch();

	 Coords *coords = new Coords();

	 coords->x = fields[0].GetFloat();

	 coords->y = fields[1].GetFloat();

	 coords->z = fields[2].GetFloat();

	 coords->o = fields[3].GetFloat();

	 coords->map = fields[4].GetInt32();

	 if (fields[5].GetInt32() == 0)

		 port_defense = coords;

	 else if (fields[5].GetInt32() == 1)

		 port_attack = coords;

 }

 while (result->NextRow());

}

}

[/CODE]

Fehlermeldung dazu:

[SPOILER]

[CODE]

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(19): error C2761: ‘void CityConquestMgr::StartSiege(int,int)’: Die erneute Deklaration der Memberfunktion ist unzulässig

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(21): error C2059: Syntaxfehler: ‘if’

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(22): error C2447: ‘{’: Funktionsheader fehlt - Parameterliste im alten Stil?

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(98): error C2065: ‘CreatureInfo’: nichtdeklarierter Bezeichner

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(98): warning C4390: ‘;’: Leere kontrollierte Anweisung aufgetreten; ist dies beabsichtigt?

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(98): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: “default-int” wird von C++ nicht unterstützt.

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(98): error C2440: ‘Initialisierung’: ‘const CreatureTemplate *’ kann nicht in ‘const int *’ konvertiert werden

3> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(100): error C2061: Syntaxfehler: Bezeichner ‘CreatureInfo’

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(101): error C2061: Syntaxfehler: Bezeichner ‘CreatureInfo’

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(109): error C2065: ‘CreatureInfo’: nichtdeklarierter Bezeichner

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(109): warning C4390: ‘;’: Leere kontrollierte Anweisung aufgetreten; ist dies beabsichtigt?

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(109): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: “default-int” wird von C++ nicht unterstützt.

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(109): error C2440: ‘Initialisierung’: ‘const CreatureTemplate *’ kann nicht in ‘const int *’ konvertiert werden

3> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(111): error C2061: Syntaxfehler: Bezeichner ‘CreatureInfo’

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(112): error C2061: Syntaxfehler: Bezeichner ‘CreatureInfo’

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(230): error C2065: ‘CreatureInfo’: nichtdeklarierter Bezeichner

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(230): warning C4390: ‘;’: Leere kontrollierte Anweisung aufgetreten; ist dies beabsichtigt?

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(230): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: “default-int” wird von C++ nicht unterstützt.

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(230): error C2440: ‘Initialisierung’: ‘const CreatureTemplate *’ kann nicht in ‘const int *’ konvertiert werden

3> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(232): error C2061: Syntaxfehler: Bezeichner ‘CreatureInfo’

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(233): error C2061: Syntaxfehler: Bezeichner ‘CreatureInfo’

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(241): error C2065: ‘CreatureInfo’: nichtdeklarierter Bezeichner

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(241): warning C4390: ‘;’: Leere kontrollierte Anweisung aufgetreten; ist dies beabsichtigt?

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(241): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: “default-int” wird von C++ nicht unterstützt.

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(241): error C2440: ‘Initialisierung’: ‘const CreatureTemplate *’ kann nicht in ‘const int *’ konvertiert werden

3> Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(243): error C2061: Syntaxfehler: Bezeichner ‘CreatureInfo’

3>D:\Trinity\DreamCore\src\server\game\CityConquest\CityConquestMgr.cpp(244): error C2061: Syntaxfehler: Bezeichner ‘CreatureInfo’

[/CODE][/SPOILER]

city_conquest_portal.cpp:

Hier sind zwar nur wenige (ein?) Fehler, aber behen kann ich diesen leider auch nicht… jetzt mag sich eventuell jeder, der sich mit C++ auskennt an den Kopf fassen, aber damit kann ich leben. Ich hoffe, dass ich durch alle Noobfragen, die ich hier stelle später genug dazulerne, dass ich selber weiterhelfen kann
/emoticons/default_biggrin.png


#include "ScriptPCH.h"

#include "../../game/CityConquest/CityConquestMgr.h"

#include <stdio.h>

#include <time.h>

#include <list>

#define START_OFFSET   2000

#define PORT_OFFSET	5000

#define GOSSIP_ACTION_MAIN  1000

#define GOSSIP_ACTION_SARTLIST 1003

#define GOSSIP_ACTION_PORTLIST 1001

#define GOSSIP_ACTION_CLOSE  1002

int GetActiveSieges(Player* pPlayer)

{

int side = 1;

if(pPlayer->TeamForRace(pPlayer->getRace())==ALLIANCE)

  side = 0;

Cities::iterator l;

int i = 0;

for (l = CityConquest.cities.begin(); l != CityConquest.cities.end(); ++l)

{

  City *ct = *l;

if (ct->controlled != side && ct->active == true)

  {

   i++;

  }

}

return i;

}

int GetActiveSiegesAll(Player* pPlayer)

{

Cities::iterator l;

int i = 0;

for (l = CityConquest.cities.begin(); l != CityConquest.cities.end(); ++l)

{

  City *ct = *l;

  if (ct->active == true)

{

   i++;

  }

}

return i;

}

void StartSiegeList(int beginAt, Player* pPlayer, Creature* pCreature)

{

Cities::iterator l;

int side = 1;

if(pPlayer->TeamForRace(pPlayer->getRace())==ALLIANCE)

  side = 0;

int i = 0;

int lastid = 0;

for (l = CityConquest.cities.begin(); l != CityConquest.cities.end(); ++l)

{

  City *ct = *l;

  if (ct->controlled != side && ct->active == false && ct->minlevel <= pPlayer->getLevel() && ct->maxlevel >= pPlayer->getLevel() && CityConquest.CanStartSiege(ct->id, side) && ct->id >= beginAt)

  {

   if (i < 8)

	lastid = ct->id;

   if (i < 9)

   {

	pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, ct->name, GOSSIP_SENDER_MAIN, START_OFFSET + ct->id);

	i++;

   }

   else if (i == 9)

   {

	pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Next >>", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_SARTLIST + lastid);

	i++;

   }

  }

}

pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "<< Back", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_MAIN);

pPlayer->SEND_GOSSIP_MENU(1, pCreature->GetGUID());

}

void TeleportList( Player* pPlayer, Creature* pCreature)

{

Cities::iterator l;

int side = 1;

if(pPlayer->TeamForRace(pPlayer->getRace())==ALLIANCE)

  side = 0;

for (l = CityConquest.cities.begin(); l != CityConquest.cities.end(); ++l)

{

  City *ct = *l;

  if (ct->active == true)

  {

   char * nm;

   nm = new char[ct->name.size()+1];

   nm[ct->name.size()] = 0;

  memcpy(nm, ct->name.c_str(), ct->name.size());

   char msg[500];

   if (ct->controlled == side)

   {

	sprintf(msg, "Defend: %s", nm);

	pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, msg, GOSSIP_SENDER_MAIN, PORT_OFFSET + ct->id);

   }

   else

   {

	sprintf(msg, "Attack: %s", nm);

	pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, msg, GOSSIP_SENDER_MAIN, PORT_OFFSET + ct->id);

   }

  }

}

pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "<< Back", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_MAIN);

pPlayer->SEND_GOSSIP_MENU(1, pCreature->GetGUID());

}

void MainMenu(Player* pPlayer, Creature* pCreature)

{


if (GetActiveSieges(pPlayer) < 5)

  pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "New Conquest", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_SARTLIST + 1);


if (GetActiveSiegesAll(pPlayer) > 0)

  pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Aid in Conquest", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_PORTLIST);


pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Bye", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_CLOSE);

pPlayer->SEND_GOSSIP_MENU(1, pCreature->GetGUID());

}

class city_conquest_portal : public CreatureScript

{

public:

	city_conquest_portal() : CreatureScript("city_conquest_portal") {}

bool OnGossipHello(Player* pPlayer, Creature* pCreature)

{

	MainMenu(pPlayer, pCreature);

return true;

}

bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 action)

{

pPlayer->PlayerTalkClass->ClearMenus();

int id = 0;

int side = 1;

  if(pPlayer->TeamForRace(pPlayer->getRace())==ALLIANCE)

   side = 0;

if (action >= PORT_OFFSET)

{

  id = action - PORT_OFFSET;

  Cities::iterator l;

  for (l = CityConquest.cities.begin(); l != CityConquest.cities.end(); ++l)

  {

   City *ct = *l;

   if (ct->id == id)

   {

	if (ct->controlled == side)

	pPlayer->TeleportTo(ct->port_defense->map, ct->port_defense->x, ct->port_defense->y, ct->port_defense->z, ct->port_defense->o, 0);

	else

	pPlayer->TeleportTo(ct->port_attack->map, ct->port_attack->x, ct->port_attack->y, ct->port_attack->z, ct->port_attack->o, 0);

	pPlayer->PlayerTalkClass->CloseGossip();

   }

  }

}

else if (action >= START_OFFSET)

{

  int side = 1;

  if(pPlayer->TeamForRace(pPlayer->getRace())==ALLIANCE)

   side = 0;

  id = action - START_OFFSET;

  CityConquest.StartSiege(id, side);

  MainMenu(pPlayer, pCreature);

}

else if (action >= GOSSIP_ACTION_SARTLIST)

{

  id = action - GOSSIP_ACTION_SARTLIST;

  StartSiegeList(id, pPlayer, pCreature);

}

else if (action == GOSSIP_ACTION_CLOSE)

{

  pPlayer->PlayerTalkClass->CloseGossip();

}

else if (action == GOSSIP_ACTION_PORTLIST)

{

  TeleportList(pPlayer, pCreature);

}

else if (action == GOSSIP_ACTION_MAIN)

{

  MainMenu(pPlayer, pCreature);

}

	return true;

}

};


void AddSC_city_conquest_portal()

{

	new city_conquest_portal;

}

Fehlermeldung dazu:

[CODE]4> city_conquest_portal.cpp

4>D:\Trinity\DreamCore\src\server\scripts\Custom\city_conquest_portal.cpp(160): error C2039: ‘CloseGossip’: Ist kein Element von ‘PlayerMenu’

4> D:/Trinity/DreamCore/src/server/game/Entities/Creature\GossipDef.h(248): Siehe Deklaration von ‘PlayerMenu’

4>D:\Trinity\DreamCore\src\server\scripts\Custom\city_conquest_portal.cpp(180): error C2039: ‘CloseGossip’: Ist kein Element von ‘PlayerMenu’

4> D:/Trinity/DreamCore/src/server/game/Entities/Creature\GossipDef.h(248): Siehe Deklaration von ‘PlayerMenu’[/CODE]

In der CityConquestMgr.cpp sollte es ja kein großes unterfangen sein das meiste selber zu schaffen. Was die fehler sind steht ja offensichtlich da. Fehlen einfach ne menge Zeichen.

Der andere kram ist auch schnell zu beheben. Einfach mal die Fehler durchlesen

Das ist ja schon klar, das habe ich natürlich auch schon ausprobiert, aber erstens macht der Code aus meienr Sicht mit den hinzugefügten Zeichen keinen Sinn, zweitens kommen dann noch neue Fehler hinzu…

Edit: Okay, ein paar Fehler habe ich jetzt schon behoben /emoticons/default_biggrin.png

Edit²: CityConquestMgr.cpp ist jetzt vom Code und von den Fehlermelfungen auf das “komprimiert”, was ich alleine beheben konnte…

Ohne mir das genau angeschaut zu haben, können solch große Mengen an falschen bzw. als fehlend bezeichneten Zeichen an einer falschen/fehlenden Klammer zu Beginn der Datei entstehen.

Das habe ich auch schon gemerkt vorhin /emoticons/default_smile.png anstatt “Spawn::Spawn” stand pawn da… als es behoben war, waren direkt ein paar Fehelr weniger/geändert.

Aber jetzt weiß ich einfahc nicht weiter, an welchem Zeichen es eventuell liegen könnte :S

Im Zweifelsfall solltest du beim Autor der Scripts nachfragen. Custom Patches zu supporten ist immer so ne Sache, die eigentlich hier nicht tolleriert wird.

Okay, ich wende mich einfach mal per PM an ihn und versuche es in der Zwischenzeit weiter /emoticons/default_smile.png Danke trotzdem /emoticons/default_smile.png

Ach, ich gebs auf irgendwas zu schreiben -.-

Bin auch stolz auf dich /emoticons/default_tongue.png

das hast du nicht selber gelöst Mann Solde schon bei der Wahrheit bleiben. das ist genau das was ich in http://www.darkwow.net/showthread.php?p=3312 vor 2 Tagen geschrieben habe

Mit selbst gelöst meinte ich außerhalb von hier im Forum… hier wurden ja nur meine Threads gesperrt… natürlich warst du das, sorry falls es jetzt falsch rübergekommen ist, ich fürg noch den Link zu deinem Post bei meinem Post ein ^^

Kein Links zu andere Foren im öffentlichen Bereich, danke. Und Robox, das hättest du ihm auch per PN sagen können. Wenn du es geil findest, andere bloß zu stellen, dann such dir bitte nen Kindergartenforum. Wie Daine korrekt sagt, schrieb er lediglich es gelöst zu haben und nicht mit welchen Mitteln.

@Daine: Nicht aufgeben. Du hast halt direkt mit recht schwierigen Sachen angefangen. Frag einfach, wenn du nicht weiter weißt. Aber bitte konkret. Frag nicht, ob jemand dir eine Komplettlösung geben kann, sondern versuch den Kern eines Problems zu verstehen und es so mit unserer Hilfe zu beseitigen.

Okay, dankeschön Micha /emoticons/default_smile.png Ich werde mich jetzt “einfach” mal durch den Sourcecode durchwälzen und versuche die Syntax zu verstehen und nachzuprogrammieren. Das klingt für mich momentan am sinnvollsten.

— Canned message start

It appears the issue in the original post was solved, so this thread shall be closed. Should you encounter any other difficulties, please open a new thread.

— Canned message end —