PDA

View Full Version : EGuiControl in der Ship-Page



Searcherii
05-12-2013, 12:36
Es gibt bei EGuiControl 3 Varianten die man in der Schiffs-Page anwenden kann (können sollte):
- ShipPage_HelmControlForm
- ShipPage_HelmControlTable
- ShipPage_LRSTable
Zumindest deutet der Name drauf hin :>
Unten ist ein kleines BeispielScript, basierend auf Arakis 1x1 LRS-Script. Das macht nichts anderes als eine UserContext-Zeile auszugeben wenn der Event getriggert ist. Scheinbar ist es aber so, das genau diese 3 Events nicht implementiert sind(?) oder komplett anders genutzt werden müssen.

Hat jemand damit schon (positive) Erfahrung gesammelt? Vorschläge? Ideen?
Ziel ist es die LRS-Map ein wenig Augenfreundlicher zu gestalten... -.-

__________________________________________
#UseInterface Web, Gui;

Function Init()
{

ScriptContext.EnableExtension();

Var ShipListFilter As CGuiEventFilter = CGuiEventFilter.Create().AddControl(EGuiControl.Sh ipList_ShipTable);

Var HelmTableFilter As CGuiEventFilter = CGuiEventFilter.Create().AddControl(EGuiControl.Sh ipPage_HelmControlTable);
Var HelmFormFilter As CGuiEventFilter = CGuiEventFilter.Create().AddControl(EGuiControl.Sh ipPage_HelmControlForm);
Var LRSFilter As CGuiEventFilter = CGuiEventFilter.Create().AddControl(EGuiControl.Sh ipPage_LRSTable);
Var ShipPageFilter As CGuiEventFilter = CGuiEventFilter.Create().AddPage(EGuiPage.Ship);

ScriptContext.RegisterEvent(EGuiEventType.TableBef oreCreate, AddressOf CallBack_TableBeforeCreate, HelmTableFilter); ScriptContext.RegisterEvent(EGuiEventType.TableAft erCreate, AddressOf CallBack_TableAfterCreate, HelmTableFilter);
ScriptContext.RegisterEvent(EGuiEventType.TableBef oreCreate, AddressOf CallBack_TableBeforeCreate, LRSFilter);
ScriptContext.RegisterEvent(EGuiEventType.TableAft erCreate, AddressOf CallBack_TableAfterCreate, LRSFilter);
ScriptContext.RegisterEvent(EGuiEventType.TableBef oreCreate, AddressOf CallBack_TableBeforeCreate, HelmFormFilter);
ScriptContext.RegisterEvent(EGuiEventType.TableAft erCreate, AddressOf CallBack_TableAfterCreate, HelmFormFilter);

ScriptContext.RegisterEvent(EGuiEventType.TableBef oreCreate, AddressOf CallBack_TableBeforeCreate, ShipListFilter);
ScriptContext.RegisterEvent(EGuiEventType.TableAft erCreate, AddressOf CallBack_TableAfterCreate, ShipListFilter);

ScriptContext.RegisterEvent(EGuiEventType.InfoBarA fterCreate, AddressOf CallBack_InfoBarAfterCreate, ShipPageFilter);

ScriptContext.ActivateEvents();
ScriptContext.WriteAppLog("Script gestartet...");
}

Function CallBack_TableBeforeCreate(e As CGuiEventOnTableBeforeCreate)
{
ScriptContext.WriteAppLog("TableBeforCreate erreicht...");
}

Function CallBack_TableAfterCreate(e As CGuiEventOnTableAfterCreate)
{
ScriptContext.WriteAppLog("TableAfterCreate erreicht...");
}

Function CallBack_InfoBarAfterCreate(e As CGuiEventOnInfoBarAfterCreate)
{
ScriptContext.WriteAppLog("InfoBarAfterCreate erreicht...");
}

Init();

Elchi
05-12-2013, 16:06
Ich bin mir nicht sicher, aber ich glaube die Table-Events funktionieren nur in der Schiffsauswahl. Ich würde nur den Filter auf die Schiffsseite mit PageBeforeRender machen und dann die Schiffsseite verändern.

Searcherii
06-12-2013, 00:03
Naja.. ich wüsste nicht was "ShipPage_LRSTable" in der Schiffs-Page zu suchen hat. Davon abgesehen müsste dann ja in der Schiffs-Page auch der entsprechende Eintrag kommen; ist ja extra von mir so geschrieben.

Wenn ich PageBeforRende nehme wüsste ich auf Anhieb garnicht, wie ich dann die LRS-Tabelle anspreche bzw. auswähle. Deswegen sind ja (wahrscheinlich) diese Einträge da. Wirklich sicher weis es wohl nur Arakis... aber der ist irgendwie verschollen scheints mir ^^
Kann da evtl. einer der Admins mal nachschauen? :)

Elchi
06-12-2013, 13:59
Die LRS-Table findest du mit e.Page.Body.FindByControlType(EGuiControl.ShipPage _LRSTable) http://game3.stne.net/objectexplorer?p=IGuiControl.FindByControlType

Searcherii
12-12-2013, 00:03
Ui; danke :)

Damit kann man schon einiges machen; z.B. Grafiken und Tooltips austauschen.
Aber... ich möchte das ToolTip bearbeiten (und die Grafik mit Style.Add) ... und da komm ich grad nicht weiter weil:

Wie mache ich aus der IGuiControl ne Tabelle? Die einzelnen Items dieser LRS_Tabelle (img & div) kann ich ansprechen... bleiben aber IGuiControls. Wie nehm ich diese wieder auseinander? Ich hab versucht den Inhalt auf Platzhalter zu transportieren:

Var div As New CHtmlDiv();
div.GuiControl.Add(Cell.Controls.Item(0));

Aber schon alleine diese Anweisung hat zur Folge dass das entsprechende Item gelöscht wird in der LRS_Tabelle.

Vorschläge? :)

Elchi
12-12-2013, 17:40
Man kann zwar CHtmlControl in IGuiControl umwandeln, aber nicht umgekehrt. Da außerdem die LRS-Signaturen (soweit ich weiß) erst beim Rendern (also nachdem das Script läuft) eingefügt werden, musst du am "lebendigen Objekt", also der IGuiControl selbst arbeiten. Das geht meistens nur mit Try and Error und erfordert Geduld beim Programmieren