1 registered members (TipmyPip),
18,633
guests, and 5
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
brauche hilfe beim panel
#341350
09/15/10 01:44
09/15/10 01:44
|
Joined: Nov 2008
Posts: 46
DrBong
OP
Newbie
|
OP
Newbie
Joined: Nov 2008
Posts: 46
|
Hallo leute, ich lerne lite-c und wollte ein menü coden wo man erstma nur die auflösung ändern kann... Ich will das die aktuele auflösung im panel angezeigt wird, habe einen globalen string angelegt und eine funktion geschrieben die überprüft welche auflösung gerade gesetzt ist und in den string einen text speichert.. aber wie es aussieht wird der text nur innerhalb der funktion gespeichert und nicht global.. weswegen der text auch nicht im panel angezeigt wird.. und auch ein ähnliches problem hab ich beim zentrieren des panels, wen ich die auflösung ändere bleibt das panel auf der alten position.. hier mein vllt bisel verwierender und schlecht geschriebener code ^^
BMAP* bg_g_optionen = "m_grafik_optionen2.png";
BMAP* ok_off = "ok.png";
BMAP* ok_on = "ok_on.png";
BMAP* schliessen = "schließen.png";
BMAP* schliessen_on = "schließen_on.png";
BMAP* links = "links.png";
BMAP* rechts = "rechts.png";
STRING* zeige_aufloesung;
var desktop_size_x; // Horizontal
var desktop_size_y; // Vertikal
var aufloesung = 1;
var m_aufloesung = aufloesung;
PANEL* optionen_pan =
{
bmap = bg_g_optionen;
layer = 10;
flags = SHOW;
button(48, 168, ok_on, ok_off, ok_on, ok(), NULL, NULL);
button(102, 168, schliessen_on, schliessen, schliessen_on, close(), NULL, NULL);
button(50, 20, links, links, links, kleiner_aufloesung(), NULL, NULL);
button(180, 20, rechts, rechts, rechts, groeser_aufloesung(), NULL, NULL);
digits(75, 20, 10, "Arial#14bi", 0, zeige_aufloesung);
}
function screen()
{
desktop_size_x = sys_metrics(0); // SM_CXSCREEN // System Bildschirm Auflösung (X)
desktop_size_y = sys_metrics(1); // SM_CYSCREEN // System Bildschirm Auflösung (Y)
if(aufloesung == 0)
{
video_set(desktop_size_x, desktop_size_y, 0, 1);
}
if(aufloesung == 1)
{
video_set(800, 500, 0, 2);
video_window(NULL ,NULL ,16 ,"Grafik Einstellungen");
}
if(aufloesung == 2)
{
video_set(1024, 600, 0, 1);
}
if(aufloesung == 3)
{
video_set(0, 0, 0, 1);
}
if(aufloesung == 4)
{
video_set(0, 0, 0, 1);
}
if(aufloesung == 5)
{
video_set(0, 0, 0, 1);
}
if(aufloesung == 6)
{
video_set(0, 0, 0, 1);
}
if(aufloesung == 7)
{
video_set(0, 0, 0, 1);
}
if(aufloesung == 8)
{
video_set(0, 0, 0, 1);
}
if(aufloesung == 9)
{
video_set(0, 0, 0, 1);
}
if(aufloesung == 10)
{
video_set(0, 0, 0, 1);
}
}
function screen_center()
{
optionen_pan.pos_x = (screen_size.x - bmap_width(bg_g_optionen))/2;
optionen_pan.pos_y = (screen_size.y - bmap_height(bg_g_optionen))/2;
}
function close()
{
optionen_pan.flags &= ~SHOW;
}
function ok()
{
aufloesung = m_aufloesung;
screen_center();
screen();
}
function z_aufloesung()
{
if(aufloesung == 0)
{
zeige_aufloesung = "Standart";
}
if(aufloesung == 1)
{
zeige_aufloesung = "800x500(F)";
}
if(aufloesung == 2)
{
}
if(aufloesung == 3)
{
}
if(aufloesung == 4)
{
}
if(aufloesung == 5)
{
}
if(aufloesung == 6)
{
}
if(aufloesung == 7)
{
}
if(aufloesung == 8)
{
}
if(aufloesung == 9)
{
}
if(aufloesung == 10)
{
}
}
function groeser_aufloesung()
{
m_aufloesung = m_aufloesung + 1;
z_aufloesung();
}
function kleiner_aufloesung()
{
m_aufloesung = m_aufloesung - 1;
z_aufloesung();
}
function main()
{
level_load ("");
mouse_mode = 3;
z_aufloesung();
screen();
screen_center();
}
ich hoffe mir kann einer helfen
Last edited by DrBong; 09/15/10 01:45.
|
|
|
Re: brauche hilfe beim panel
[Re: DrBong]
#341351
09/15/10 05:18
09/15/10 05:18
|
Joined: Jul 2009
Posts: 1,198 Berlin, Germany
Liamissimo
Serious User
|
Serious User
Joined: Jul 2009
Posts: 1,198
Berlin, Germany
|
NUr mal drüber geschaut, vllt. hilfts ja:
Ändere bei digits das hier
digits(75, 20, 10, "Arial#14bi", 0, zeige_aufloesung);
zu
digits(75, 20, 10, "Arial#14bi", 1, zeige_aufloesung);
"Ich weiss nicht genau, was Sie vorhaben, aber Sie können keine Triggerzonen durch Ihr Level kullern lassen." -JCL, 2011
|
|
|
Re: brauche hilfe beim panel
[Re: Liamissimo]
#341352
09/15/10 07:21
09/15/10 07:21
|
Joined: Dec 2008
Posts: 271
Saturnus
Member
|
Member
Joined: Dec 2008
Posts: 271
|
Momentan verwendest du einen STRING-Pointer und weist diesem char-Arrays zu - das funktioniert nicht. Weise dem Pointer stattdessen ein STRING-Objekt zu und benutze die str_-Funktionen, um den STRING zu verändern: STRING* zeige_aufloesung; STRING* zeige_aufloesung = "";
zeige_aufloesung = "Standart"; str_cpy(zeige_aufloesung, "Standard");Man beachte auch das "d" am Ende von "Standard".  Für die digits müsstest du als format-Parameter "%s" übergeben, damit der als var-Parameter angegebene String auch angezeigt wird: digits(75, 20, 10, "Arial#14bi", 0, zeige_aufloesung); digits(75, 20, "%s", "Arial#14bi", 1, zeige_aufloesung);Rufe screen_center() nach jedem Ändern der Auflösung auf, damit die Zentrierung aktualisiert wird.
|
|
|
Re: brauche hilfe beim panel
[Re: Saturnus]
#341361
09/15/10 11:27
09/15/10 11:27
|
Joined: Sep 2007
Posts: 62 Germany
bodden
Junior Member
|
Junior Member
Joined: Sep 2007
Posts: 62
Germany
|
Bisher zentrierst du erst und stellst dann eine neue Auflösung ein. Tausche mal in der Funktion ok() die beiden Zeilen screen(); screen_center();
dann sollte das mit dem Zentrieren immer funktionieren.
Außerdem solltest du bei den button-Definitionen die Klammern hinter den Funktionen entfernen (z.B. "kleiner_aufloesung" statt "kleiner_aufloesung()"). Das könnte ansonsten zu ungewollten Ergebnissen führen (Funktionen würden bei der Definition der Buttons ausgeführt anstatt verknüpft).
Last edited by bodden; 09/15/10 11:28.
|
|
|
|