Not logged inClonkspot Forum
Forum Home Help Search Register Login
Up Topic Deutsch / Hilfestellung / Netzwerkspiel-Fehler
- - By TLK (More than 200 posts.) Date 29.12.2016 13:11
Fulgen hat mir gerade berichtet, dass in Kamillentee ein Netzwerkfehler drin ist. Target is Zero bei InitializePlayer, ich habe hier mal den Code:

func InitializePlayer(int iPlr){
  if(iPlr == 0){
    var pFlag = CreateObject(FLAG,100,100,iPlr);
    Enter(Object(7),pFlag);
  }
  GetHiRank(iPlr)->SetPosition(55,358);
}

Object(7) ist die Hütte in die die Flagge soll. Ist im Netzwerkcode die Objectnumber Vergabe anders oder so? Ansonsten ist das einzige Target der GetHiRank(iPlr) und der macht bei mir zumindest im nicht Netzwerk keinen Ärger hat jemand ne Idee?
Parent - - By Sven2 (More than 500 posts.) Date 29.12.2016 13:20
Enter mit Target 0 sollte einfach nur fehlschlagen und keine Fehlermeldung geben. Da bleibt nur GetHiRank. Vielleicht startest du im Netzwerk ohne Objektpakete / mit den falschen Paketen und hast daher gar keinen Clonk? Logge doch mal Log("%v %d", GetHiRank(iPlr), GetCrewCount(iPlr));
Parent - - By TLK (More than 200 posts.) Date 29.12.2016 13:30
Jalo #154 1
Durin #157 1
Wenig überraschend, das Szenario hat auch keine Vorgaben es wird nur Objects.c4d benötigt und das einzige Crewmitglied ist ein Normaler Clonk. Es ist im Netzwerkspiel nicht möglich nicht Objects.c4d zu laden oder? Ansonsten ist der Bug klar, allerdings sollte das Spiel dann auch so oder so nicht Funktionieren.
Parent - - By Fulgen (More than 500 posts.) Date 29.12.2016 14:15

>Wenig überraschend, das Szenario hat auch keine Vorgaben es wird nur Objects.c4d benötigt und das einzige Crewmitglied ist ein Normaler Clonk.


Du hast in deiner Scenario.txt - Datei nicht
[Definitions]
Definition1=Objects.c4d

stehen. Dies fällt beim Starten via Frontend nicht auf, weil da die Engine automatisch Objects.c4d ergänzt. Bei der Dedicated-Server-Engine geschieht dies aber nicht.
Parent - - By TLK (More than 200 posts.) Date 29.12.2016 14:33
Okay, das einfügen ist ja kein Aufwand. Aber WTF warum wird das nicht immer einfach geladen? Ist Ja so oder so nötig
Parent - By Fulgen (More than 500 posts.) Date 29.12.2016 15:22
Nicht ganz, es gibt Packs / Szenarien, die ohne Objects.c4d auskommen, weil sie sie schon lokal haben...
Parent - By Kanibal (More than 200 posts.) Date 29.12.2016 15:46
https://ccan.de/cgi-bin/ccan/ccan-view.pl?a=view&i=1865
^- Dieses benötigt beispielsweise kein Objects.c4d
Parent - - By Fulgen (More than 500 posts.) Date 29.12.2016 14:05 Edited 29.12.2016 14:15
Passiert im Netzwerk auch bei Xeron Siedelversion.

>Enter(Object(7),pFlag);


Ist btw nicht so übersichtlich, FindObject2(Find_ID(HUT3)) anstelle von Object(7) wäre besser.
Parent - - By Pitri (More than 200 posts.) Date 30.12.2016 19:25
Object(7) ist aber eindeutig. FindObject2(Find_ID(HUT3)) gibt nicht zwingend das objekt, das man will, wenn mehrere existieren. Wenn davor (was bei einer Objektnummer von 7 nicht wahrscheinlich ist) bereits ein anderes Objekt der Art erstellt wurde, wird das genommen.
Klar, wenn die person die nummer weiß (weil sie aus Objects.txt kommt), weiß er auch direkt die position, dann könnte er die hütte sowieso direkt via script erstellen und die variable dafür weiter verwenden.
Parent - - By K-Pone (More than 200 posts.) Date 30.12.2016 22:40
CreateObject() zu benutzen und dessen Rückgabewert in einer (globalen) Variable zwischenspeichern ist an sich sinnvoller, da Object() selten eindeutig ist.
Parent - By Pitri (More than 200 posts.) Date 31.12.2016 22:06 Upvotes 1
Klar, auf Object() kann man nur verlässlich zugreifen, wenn man auch eine Object.txt hat. Ich war selbst nie Fan von Objects.txt, ich hab auch lieber alles via script erstellt.
Parent - By Sven2 (More than 500 posts.) Date 01.01.2017 02:55
In OpenClonk gibt es StaticSaveVar. Man kann sich direkt im Editor den Namen einer globalen Variable aussuchen, in der das Objekt gespeichert wird.

Fuer Clonk Rage finde ich Object() jetzt nicht so schlimm. FindObject(ID, x, y) geht auch kaputt, wenn sich das Objekt etwas bewegt. Man kann Object() uebrigens nicht fuer Sections benutzen; da ist nicht garantiert, dass man immer die gleiche Nummer bekommt.
Up Topic Deutsch / Hilfestellung / Netzwerkspiel-Fehler

Powered by mwForum 2.29.7 © 1999-2015 Markus Wichitill