|
-
Wenn wir irgendwann Zeit und Lust haben.. vielleicht. Ich kann dir aber nichts versprechen.
MfG Gottfried
-
Hallo.
Ich hab da ein paar Fragen zum Cursor.
Ist es möglich, dass der Cursor über alle anderen Texturen die auf den Bildschirm sind gezeichnet wird?
Momentan geht der Cursor immer unter die Texturen die ich printe.
Und noch ein spezielles Problem, bei meinem folgenden Skript.
Gothic 2 stürtzt mit einer AV ab wenn ich mit der Maus in einen bestimmten Bereich auf den Screen bin. (Ich makiere den Teil im Skript mal rot)
Code:
func void Print_Beutel_001() {
// Wir zeigen den Cursor und gleichzeitig einen Button an der geklickt werden soll:
Cursor_Show();
// Neuen View:
Beutel_001 = View_CreatePxl(0, 0, 512, 512);
View_SetTexture(Beutel_001, "SOJ_MG_BEUTEL_001.TGA");
View_Open(Beutel_001);
// Optional kann ich die Maus für die Engine auch noch abschalten:
Cursor_NoEngine = true; // -> Die Engine reagiert dann nicht mehr auf Bewegungen, bewegt also auch die Kamera nicht
// Und Loopfunktion aktivieren:
FF_Apply(Beutel_001_Loop);
};
func void Beutel_001_Loop() {
if ((Cursor_X >= 100 && Cursor_X <= 426 && Cursor_Y >= 125 && Cursor_Y <= 154)
|| (Cursor_X >= 100 && Cursor_X <= 426 && Cursor_Y >= 125 && Cursor_Y <= 154)
|| (Cursor_X >= 100 && Cursor_X <= 136 && Cursor_Y >= 155 && Cursor_Y <= 392)
|| (Cursor_X >= 390 && Cursor_X <= 426 && Cursor_Y >= 155 && Cursor_Y <= 392)
|| (Cursor_X >= 137 && Cursor_X <= 354 && Cursor_Y >= 360 && Cursor_Y <= 392)
|| (Cursor_X >= 282 && Cursor_X <= 390 && Cursor_Y >= 302 && Cursor_Y <= 331)
|| (Cursor_X >= 204 && Cursor_X <= 349 && Cursor_Y >= 216 && Cursor_Y <= 245)
|| (Cursor_X >= 159 && Cursor_X <= 223 && Cursor_Y >= 177 && Cursor_Y <= 199)
|| (Cursor_X >= 204 && Cursor_X <= 238 && Cursor_Y >= 246 && Cursor_Y <= 359))
//Wenn der Cursor innerhalb der Bereiche ist dann...
{
View_Close(Beutel_001);
View_Delete(Beutel_001);
Beutel_001 = 0;
// Der Engine erlauben weiterzuarbeiten:
Cursor_NoEngine = false;
FF_Remove(Beutel_001_Loop);
// Maus auch noch verstecken:
Cursor_Hide();
//B_ResetThiefLevel();
//AI_StopProcessInfos (self);
//Print ("DIEB");
//B_Attack (self, hero, AR_Theft, 1); //reagiert trotz IGNORE_Theft mit NEWS
}
else if (Cursor_X >= 139 && Cursor_X <= 201 && Cursor_Y >= 307 && Cursor_Y <= 350)
{
//B_GiveInvItems (self, other, ItMi_Gold, Npc_HasItems (self, ItMi_Gold));
//self.aivar[AIV_PlayerHasPickedMyPocket] = TRUE;
// B_GiveThiefXP();
Snd_Play ("Geldbeutel");
View_Close(Beutel_001);
View_Delete(Beutel_001);
Beutel_001 = 0;
// Der Engine erlauben weiterzuarbeiten:
Cursor_NoEngine = false;
FF_Remove(Beutel_001_Loop);
// Maus auch noch verstecken:
Cursor_Hide();
};
};
-
Zitat von Umfi
Hallo.
Ich hab da ein paar Fragen zum Cursor.
Ist es möglich, dass der Cursor über alle anderen Texturen die auf den Bildschirm sind gezeichnet wird?
Momentan geht der Cursor immer unter die Texturen die ich printe.
Das Problem hatte ich auch mal bei Lehona angesprochen, ich hoffe doch, dass sie dafür eine Möglichkeit finden.
Bei deinem Problem kann ich dir leider auf die schnelle nicht helfen.
@Lehona||Gottfried: Gibt's jetzt eigentlich schon einen Release-Termin für das nächste Update? Auch wenn es mir zur Zeit zwecks defektem PC nichts bringt, kann ich es nicht erwarten
-
-
Zitat von Gottfried
@Umfi: Kannst du vielleicht mit ein wenig Debug herausfinden wo genau es abstürzt? Ich meine bei welchem Funktionsaufruf. An sich sollte es so funktionieren wie du es geschrieben hast.
Ich weiß nich ob es zu Konflikten führt, dass du View_Close und View_Delete direkt hintereinander aufrufst.. Testweise evtl. mal das View_Close rausnehmen.
Ich rufe Print_Beutel_001(); auf.
Hab jetzt mal View_Close() rausgenommen -> absturz.
Dann hab ich View_Delete() rausgenommen (View_Close() wieder aktiv) -> kein absurz aber es ist eine print meldung aufgetaucht.
Hier mal ein Screen von der Meldung.
[Bild: DnmQ7Ju1wAU0SoQEerror.jpg]
mfg Umfi
-
Das klingt so als wäre dein View-Handle 0. Kannst du das überprüfen?
MfG Gottfried
-
Zitat von Gottfried
Das klingt so als wäre dein View-Handle 0. Kannst du das überprüfen?
MfG Gottfried
Wie genau soll ich das machen?
Mit einer if-Abfrage?
if (Beutel_001 == 0) { Print("Ist Null!");};
Aber wird nicht durch folgende Zeile dem Handle ein Wert übergeben?
Beutel_001 = View_CreatePxl(0, 0, 512, 512);
mfg Umfi
-
Ein Print wird dir nicht viel nützen, wenn das Spiel direkt danach abstürzt. Es sollte so ein dass du im zSpy nachlesen kannst was zuletzt kam.
An deiner Stelle würde ich MEM_Info, MEM_Warn oder PrintDebug benutzen.
Du kannst testweise nach jedem Befehl eine kurze Meldung verschicken, dann kannst du genau eingrenzen wann es passiert:
Code:
MEM_Info(IntToString(Beutel_001));
MEM_Info("View_Close");
View_Close(Beutel_001);
MEM_Info("View_Delete");
View_Delete(Beutel_001);
Beutel_001 = 0;
// Der Engine erlauben weiterzuarbeiten:
Cursor_NoEngine = false;
MEM_Info("FF_Remove");
FF_Remove(Beutel_001_Loop);
// Maus auch noch verstecken:
MEM_Info("Cursor_Hide");
Cursor_Hide();
MEM_Info("== fertig ==");
Es könnte natürlich auch sein dass dein Programm abstürzt weil du Beutel_001 = 0 setzt und es später noch verwendest. Das weißt du wenn nach dem Absturz noch "== fertig ==" im zSpy angekommen ist.
MfG Gottfried
Geändert von Gottfried (19.01.2012 um 16:35 Uhr)
-
Hab es jetzt mal so wie du es gepostet hast probiert. Aber im zSpy ist nichts zu lesen. (Kann es sein das das zSpy schon zu 'voll' ist?)
Wenn ich das Delete() weg lasse, stürzt es nicht ab. Nur mit dem Print (siehe Screen oben).
Hab testweise auch schon mal das Beutel_001=0; weggelassen. -> gleiches Problem.
Ich glaube einfach, dass Beutel_001 nie einen Wert hat.
(Dabei hab ich mich an diesem Beispiel orientiert. http://lego.origo.ethz.ch/wiki/beispiele_cursor )
mfg Umfi
-
Zitat von Umfi
Hab es jetzt mal so wie du es gepostet hast probiert. Aber im zSpy ist nichts zu lesen. (Kann es sein das das zSpy schon zu 'voll' ist?)
Du musst die Debugmeldungen auch noch aktivieren. (Tut mir Leid, ich bin davon ausgegangen dass du das schon hast)
MEM_SetShowDebug(1);
Schreib einfach diese Zeile in deine Init_Global.
Zitat von Umfi
Wenn ich das Delete() weg lasse, stürzt es nicht ab. Nur mit dem Print (siehe Screen oben).
Hab testweise auch schon mal das Beutel_001=0; weggelassen. -> gleiches Problem.
Ich glaube einfach, dass Beutel_001 nie einen Wert hat.
Das würde nur Sinn machen wenn du keinen View siehst. Siehst du einen View bekommst du auch ein gültiges Handle
MfG Gottfried
-
Zitat von Gottfried
Du musst die Debugmeldungen auch noch aktivieren. (Tut mir Leid, ich bin davon ausgegangen dass du das schon hast)
MEM_SetShowDebug(1);
Schreib einfach diese Zeile in deine Init_Global.Das würde nur Sinn machen wenn du keinen View siehst. Siehst du einen View bekommst du auch ein gültiges Handle
MfG Gottfried
Okay.
Hier mal die Meldung aus dem zSpy (der letzte wichtige Teil):
Code:
[i] 00:43 Info: 5 C: SND: Creating Sound Instance GELDBEUTEL (alternative: 0) .... <zSndMss.cpp,#1297>
[i] 00:43 Info: 8 C: zCSndFX_MSS :: LoadResourceData() for GELDBEUTEL .... <zSndMss.cpp,#2671>
[i] 00:43 Info: 5 U: Skript: == start == .... <zError.cpp,#465>
[i] 00:43 Info: 5 U: Skript: 18 .... <zError.cpp,#465>
[i] 00:43 Info: 5 U: Skript: View_Close .... <zError.cpp,#465>
[i] 00:43 Info: 5 U: Skript: View_Delete .... <zError.cpp,#465>
[i] 00:43 Info: 5 U: Skript: FF_Remove .... <zError.cpp,#465>
[i] 00:43 Info: 5 U: Skript: MEM_FindParserSymbol: Undefined Symbol: FFITEM_DELETE .... <zError.cpp,#465>
[i] 00:43 Info: 5 U: Skript: Cursor_Hide .... <zError.cpp,#465>
[i] 00:43 Info: 5 U: Skript: == fertig == .... <zError.cpp,#465>
[i] 00:43 Info: 5 C: Shutting down MSS .... <zSndMss.cpp,#629>
[i] 00:43 Info: 10 C: done .... <zSndMss.cpp,#652>
[i] 00:43 Info: 5 X: EmergencyExit: Releasing all DirectX-Objects ... .... <zRndD3D_Render.cpp,#283>
[i] 00:43 Info: 5 X: EmergencyExit: D3DXUninitialize done .... <zRndD3D_Render.cpp,#301>
[w] 00:43 Warn: 0 X: [RND3D-Destructor]: Can't uninitialize D3DX Utility Library ! Error: D3DXERR_D3DXNOTSTARTEDYET .... <zRndD3D.h,#127>
[i] 00:43 Info: 5 X: [RND3D-Destructor]: D3DXUninitialize done .... <zRndD3D_Render.cpp,#309>
Mfg Umfi
-
Dementsprechend stürzt dein Skript an einer anderen Stelle ab - auch wenn LeGo nicht ganz so arg wie Ikarus ist, kann man da trotzdem noch sehr schnell einen Absturz provozieren. Wenn du vielleicht einen größeren Ausschnitt deiner Scripte in diesem Zusammenhang zeigst... Falls du tagsüber (vor 22 Uhr GMT+1) Hilfe von mir möchtest, kannst du mich auch gerne in einem IM hinzufügen (siehe Profil), denn ich komme erst um die Zeit ins Forum, ansonsten müsstest du dich mit Gottfried zufrieden geben
-
-
Ich habe übrigens vor einigen Tagen mal die LeGo-Scripte auf unserem SVN zusammengepackt und hochgeladen, wer also Interesse hat, sich die neuen Sachen anzuschauen oder vielleicht zu benutzen (Ich garantiere, wie gesagt, keine vollständige Stabilität - es kann gut sein, dass ihr damit Speicherstände nicht mehr laden könnt oder ähnliches), kann das gerne tun. Das ist nicht der aktuelle Stand, denn Gottfried hat auch noch Scripte, die noch nicht auf dem SVN liegen. Hier sind die Änderungen, die wir bisher durchgeführt haben (nicht alle davon sind enthalten, aber nahezu).
-
Hab's mal runtergeladen, weil ich gehofft habe, dass dann bei GoMoN die FFs wieder klappen, aber nach wie vor tote Hose. Seit der Umstellung vom Parameter als String zum Parameter direkt als Funktion geht's da nicht mehr, in XR hingegen keinerlei Probleme.
Der Code zum Aufruf sieht z.b. so aus:
Code:
if (!FF_Active(Cursor_Loop))
{
SetMouseEnabled(TRUE);
FF_Apply(Cursor_Loop);
Cursor_Show();
};
Der Cursor wird danach angezeigt und bewegt sich auch, die Cursor_Loop hingegen wird überhaupt nicht aufgerufen.
Hab direkt am Anfang der Cursor_Loop dann mal einen Print rein, aber der wird nie geprintet.
LeGo selbst wird in der Init_Global zur Zeit so initialisiert:
Lego_Init(LeGo_Trialoge|LeGo_PrintS|LeGo_Cursor|LeGo_FrameFunctions|LeGo_AI_Func tion);
Hatte das glaub ich schonmal geschrieben, aber da das Problem nach wie vor besteht und ich da nicht weiterkomme, einfach nochmal.
-
In der Dokumentation der FrameFunctions steht, dass PermMem benötigt wird.
Wie es aussieht hat Lehona nicht meine neue LeGo.d hochgeladen, deshalb wird diese Abhängigkeit nicht initialisiert. Wenn du PermMem von Hand mitnimmst sollte es klappen.
Grundsätzlich würde ich sowieso empfehlen LeGo_All zu benutzen und nur herauszunehmen was nicht enthalten sein soll. Beim aktuellen Stand ist das auf jeden Fall sicherer
MfG Gottfried
Geändert von Gottfried (27.01.2012 um 16:07 Uhr)
-
-
Zitat von Bonne6
Tatsächlich, jetzt geht's endlich wieder Deswegen ging's also auch in XR, da war PermMem ja dabei wegen einer neuen Klasse
Jetzt kann ich endlich an der Maussteuerung weiterarbeiten, vielen Dank
EDIT: Grad auf der HP einen Fehler gefunden, wenn man mit der Maus über dem Blog-Eintrag oben ist in der Leiste, dann steht da auch Issues
Eventuell möchtest du dann auch die Buttons benutzen, die in der Version enthalten sind und sehr gut funktionieren
Und an der HP können wir nix ändern, ist nur ein Hosting-Angebot.
-
Zitat von Lehona
Eventuell möchtest du dann auch die Buttons benutzen, die in der Version enthalten sind und sehr gut funktionieren
Und an der HP können wir nix ändern, ist nur ein Hosting-Angebot.
Einige Features wie das Fangen, Item-Menü öffnen usw. während des Kampfes werde ich ziemlich sicher über die Buttons regeln, weil das einfach viel einfacher sein dürfte, als das bisher angedachte System. (hab's noch nicht angeschaut, aber ich geh mal davon aus ).
Ein paar Sachen wie das Auswählen der Monster hab ich schon eingebaut und das wäre über Buttons etwas schwierig und die Menüpunkte dürften so eh nicht gehen, da muss ich nur noch eine andere Möglichkeit finden, die Mouseovers für jede Auflösung anzupassen.
Aber du kannst auf jedenfall davon ausgehen, dass die Buttons angeschaut werden.
Was mir bis jetzt aufgefallen ist an dem Zwischenstand: Das Skillmenü fehlt noch, wird aber schon mitgeparst im Header, und es crasht offenbar, wenn die Hotkey-Leiste aktiviert ist und ein Dialog auftaucht oder das hatte einen anderen Grund
-
Oh, das Skillmenü gehört nicht zur Mod, ist aber wohl noch in der Header.d eingetragen - wie gesagt, ich habe bloß eben die entsprechenden Dateien markiert und zusammengepackt.
Was meinst du mit "MouseOvers an die Auflösung anpassen"? Vielleicht kann ich dir da helfen.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
|
|