Ich möchte nicht, dass Feinde Leitungen von Gebäuden abnehmen können.
Habe dazu schon im Linekit Skript in der Activate Funktion was eingefügt, aber das unterbindet halt leider nur alle Aktionen die man machen kann, wenn man einen Leitungsbausatz dabei hat.
Wo finde ich die Funktion, die dafür zuständig ist, dass Leitungen abgenommen werden, wenn man vor einem Gebäude mit Leitung doppelgraben drückt?
Habe schon den Objects Ordner und auch den source Code nach "getrennt." durchsucht, da beim Abnehmen von Leitungen die message erscheint "Energieleitung von Sägewerk getrennt.".... aber leider scheint es das nirgends zu geben?!
Edit:
habe den Eintrag dazu jetzt in System LanguageDE.txt gefunden...IDS_OBJ_DISCONNECT=%s von|%s getrennt.
Im Source Code findet sich das in C4ObjectCom.cpp ...
soo.. nun nur noch überlegen, wie ich das ändern kann.. ?...
BOOL ObjectComLineConstruction(C4Object *cObj)
{
C4Object *linekit,*tstruct,*cline;
DWORD ocf;
ObjectActionStand(cObj);
// Check physical
if (!cObj->GetPhysical()->CanConstruct)
{
sprintf(OSTR,LoadResStr("IDS_OBJ_NOLINECONSTRUCT"),cObj->GetName());
GameMsgObject(OSTR,cObj); return FALSE;
}
// - - - - - - - - - - - - - - - - - - Line pickup - - - - - - - - - - - - - - - - -
// Check for linekit
if (!(linekit=cObj->Contents.Find(C4ID_Linekit)))
{
// Check for collection limit
if (cObj->Def->CollectionLimit && (cObj->Contents.ObjectCount()>=cObj->Def->CollectionLimit) ) return FALSE;
// Check line pickup
ocf=OCF_LineConstruct;
tstruct=Game.Objects.AtObject(cObj->x,cObj->y,ocf,cObj);
if (!tstruct || !(ocf & OCF_LineConstruct)) return FALSE;
if (!(cline=Game.FindObject(C4ID_None,0,0,0,0,OCF_All,"Connect",tstruct))) return FALSE;
// Check line connected to linekit at other end
if ( (cline->Action.Target && (cline->Action.Target->Def->id==C4ID_Linekit))
|| (cline->Action.Target2 && (cline->Action.Target2->Def->id==C4ID_Linekit)) )
{
StartSoundEffect("Error",false,100,cObj);
sprintf(OSTR,LoadResStr("IDS_OBJ_NODOUBLEKIT"),cline->GetName());
GameMsgObject(OSTR,cObj); return FALSE;
}
// Create new linekit
if (!(linekit=Game.CreateObject(C4ID_Linekit,cObj,cline->Owner))) return FALSE;
// Enter linekit into clonk
bool fRejectCollect;
if (!linekit->Enter(cObj, TRUE, true, &fRejectCollect))
{
// Enter failed: abort operation
linekit->AssignRemoval(); return FALSE;
}
// Attach line to collected linekit
StartSoundEffect("Connect",false,100,cObj);
if (cline->Action.Target==tstruct) cline->Action.Target=linekit;
if (cline->Action.Target2==tstruct) cline->Action.Target2=linekit;
// Message
sprintf(OSTR,LoadResStr("IDS_OBJ_DISCONNECT"),cline->GetName(),tstruct->GetName());
GameMsgObject(OSTR,tstruct);
return TRUE;
}