.| Autor | Beitrag |
|---|---|
|
000 11.11.2006, 13:53 JohnLeDon |
Ich benutze für mein dialogsystem fopen("dialogues.txt"); weiss jemand wie ich auf die festgelegten pfade zugreifen kann? (so in etwa: fopen(GAME+"scripts/dialogues.txt"); natürlich geht es, wenn ich den korrekten gesamten pfad angebe, aber der kann ja immer anders sein.. --Dieser Beitrag wurde am 11.11.2006 um 13:59 von JohnLeDon bearbeitet. |
|
Profil || Suche |
|
001 11.11.2006, 17:47 sw_a_t |
Es muss eigentlich mit sw_a_t heißt jetzt CPoly ! |
|
Profil || Suche |
|
002 11.11.2006, 19:02 feigling |
ich würde aber sicherheitshalber schauen, was genau PrecacheModel macht. Vielleicht packt PrecacheModel da von selber noch den richtigen Game-Pfad dran. -- |
|
Profil || Suche |
|
003 11.11.2006, 19:43 sw_a_t |
Ich habe einfach mal das gesammte Projekt nach "gamepath" durchsucht (erschien mir ein guter Name für eine Variable) und habe mit etwas tiefgründiger Suche das hier gefunden :
sw_a_t heißt jetzt CPoly ! Medieval Battles - Para Bella Crudelia Dieser Beitrag wurde am 11.11.2006 um 19:47 von sw_a_t bearbeitet. |
|
Profil || Suche |
|
004 12.11.2006, 15:34 JohnLeDon |
geh ich da recht in der annahme, das so benutzen zu müssen: char *gamedir[255] ?? btw. wieder mal typisch: und dann: WAS HABEN DIE SäCKE DA BLOSS FüR EIN VECKACKTES UPDATE RAUSGEBRACHT?????? (siehe auch meine vgui anfrage.) --Dieser Beitrag wurde am 12.11.2006 um 15:44 von JohnLeDon bearbeitet. |
|
Profil || Suche |
|
005 12.11.2006, 15:56 feigling |
Such doch einfach mal im Source nach GameDir .. Irgendwo wirds die Funktion schon noch geben. Und wenn man halt mal da 20 mins am Suchen ist. Das ist nun mal so, wenn man einen solch komplexen Code vor sich liegen hat, der von jemand anderem geschrieben wurde. Klar ists Mist, wenn die Dokus nicht stimmen, aber anstatt rumzuheulen sollte man einfach selber ein bisschen suchen. -- |
|
Profil || Suche |
|
006 12.11.2006, 16:25 Bluthund |
Was du da versuchst ist die Adresse eines Arrays von char Pointern zu übergeben... Ich glaube nicht, dass du bzw die Funktion das will. Ich empfehle dir dringend etwas Lektüre über Arrays/Pointer in C/C++. -- The C language combines all the power of assembly language with all the ease-of-use of assembly language. |
|
Profil || Suche |
|
007 12.11.2006, 17:35 JohnLeDon |
also leute ich entschuldige mich für mein geheule. 1. GetGameDirectory ist auf der Client side. 5. Als ich so rumgeheult hab, war ich kurz davor, aus dem Fenster zu springen....ich hoffe ihr versteht das.... --Dieser Beitrag wurde am 12.11.2006 um 17:38 von JohnLeDon bearbeitet. |
|
Profil || Suche |
|
008 12.11.2006, 17:49 feigling |
Wenn schon, dann wäre der Code char gamedir[255] = {0}; |
|
Profil || Suche |
|
009 12.11.2006, 18:14 Bluthund |
3: Wenn du wüsstest wie Arrays und Pointer funktionieren wüsstest du auch das char *x == char x[] ist und würdest hier nicht so nen Unfug verzapfen. Du brauchst bei Arrays/Pointern keinen Adressoperator weil Arrays und Pointer Adressen sind. Deshalb kann die einzig sinnvolle Lösung auch nur die sein, die feigling jetzt gepostet hat. Auch wenn ich glaube er hätte das besser nicht tun sollen, da du das wahrscheinlich genau so übernehmen wirst ohne dir Gedanken darüber zu machen, warum es grad so ist. (Außerdem nehm ich an, dass die Funktion bei nem Array mit 255 Gliedern auch 255 als maxlength annimmt. Aber ich denk mal feigling hat sich die Implementation der Funktion wie ich auch nicht angesehn und daher gilt ja eh "lieber zu kurz geschrieben als übers Ende hinaus" :) ) 4: Du belegtst einen uninitialisierten Pointer mit einem Wert. Allererste Sahne. *doh* Mal davon abgesehen das die Funktion so deklariert ist: und sich daraus ergibt dass sie keinen Wert zurück gibt den man somit mit Hilfe des Zuweisungsoperators auf eine Variable legen könnte. Auch hier gilt wieder die FEIGLINGsche Lösung :) Fazit bis hier: Noch mal ganz genau ein Buch darüber lesen, was du hier versuchst zu tun: Programmieren in C/C++ 5: Wenn du wegen sowas Ambitionen hegst dein Leben zu beenden solltest du dir ernsthafte Gedanken machen ob du nicht vielleicht lieber das Hobby wechselst oder mal eine längere Pause einlegst. --The C language combines all the power of assembly language with all the ease-of-use of assembly language. |
|
Profil || Suche |
|
010 12.11.2006, 20:00 JohnLeDon |
da für Euer Korrektheit: char *fnam=new char[2050]; das dann komplimert (ja feigling, ich weiss) und es funzt. und bitte: schlagt mir ja nie vor, ein buch über cpp zu lesen. Niemals wieder. Echt. Das hat mich zutiefst beleidigt. Wenn ihr wüsstet, was ich schon alles zusammengecoded hab....also echt. --Dieser Beitrag wurde am 12.11.2006 um 20:01 von JohnLeDon bearbeitet. |
|
Profil || Suche |
|
011 12.11.2006, 22:01 Bluthund |
Ich wollte dich keineswegs beleidigen mit der Empfehlung ein Buch zu lesen. Aber wer uninitialisierte Pointer in C/C++ verwendet oder Konstrukte wie Adresse von Pointer-Array auf char an eine Funktion übergibt die Pointer auf char bzw char-Array verlangt sollte sich einfach nochmal damit beschäftigen, was er da tut. Und da kannst du noch so viele Programme geschrieben haben. Sowas sind elementare Sachen die man im Umgang mit C/C++ einfach wissen muss. The C language combines all the power of assembly language with all the ease-of-use of assembly language. |
|
Profil || Suche |
|
012 12.11.2006, 23:37 feigling |
Dann solltest du wissen, dass strcat böse ist und man eher strncat nehmen sollte ;x Nö, ist nicht das gleiche. char *blah = "123"; crasht während char blah[] = "123"; funktioniert, aber das ist ja hier eh wurscht =) -- |
|
Profil || Suche |
|
013 13.11.2006, 00:21 Bluthund |
Arg sowas musste ja kommen... Ich meinte damit natürlich, dass die Benutzung von Pointern und Arrays äquivalent ist und nicht deren Deklaration (War ungünstig geschrieben). Das erste muss ja zwangsläufig crashen, weil der Pointer nicht initialisiert ist. // Ab hier bitte überlesen Aber das brauch ich dir ja eigentlich nicht zu erzählen, feigling :) edit: habe grad nochmal dein erstes probiert und das geht kurioserweise mit MSVC++ 2005 Express Edition. edit2: habe mal das ganze oben ein wenig verbessert. Der Code ist natürlich auch totaler Unfug. Ich hab mich von MS blenden lassen, dass sowas funktioniert. Naja gut mit MSVC++ 2005 Express Ed. funktionierts auch. Aber naja... --The C language combines all the power of assembly language with all the ease-of-use of assembly language. Dieser Beitrag wurde am 13.11.2006 um 00:57 von Bluthund bearbeitet. |
|
Profil || Suche |
|
014 13.11.2006, 00:26 feigling |
"weil der Pointer nicht initialisiert ist." Nö, weil das 1. ein String Literal ist und man diese nicht verändern kann. Das Zweite ist nen normales Char Array, aber lassen wir das jetzt. Bringt ja diesen Thread nicht weiter =) -- |
|
Profil || Suche |
|
015 13.11.2006, 00:49 Bluthund |
Ich beuge mich... :) Daran hatte ich garnicht gedacht. --The C language combines all the power of assembly language with all the ease-of-use of assembly language. |
|
Profil || Suche |
|
016 13.11.2006, 01:07 oxff |
Bamm, Buffer Overflow. Verlierer. Du gehoerst beleidigt, `komplimirer'. Ausserdem, mal eben 2 kB fuer einen Dateinamen allozieren auf dem Stack... Sahne! -- mwcollect - mein Projekt | oxlog - mein blog | happyhardcore.com Stream - gute Musik |
|
Profil || Suche |
|
017 13.11.2006, 18:06 JohnLeDon |
ja ich geb ja zu, das das mit strcat nicht gerade das beste ist. ich habs erst mit sprintf versucht, aber da will die engine ihr q_snprintf dazu geben, und das wollte dann prompt mal nicht. und 2kb sind schon recht viel, ich weiss....aber wer weiss schon, was die leute für pfade angeben in hammer. und der game-pfad selbst ist ja manchmal (meistens) schon ellenlang.... ^^ genau so wars. also newbies: es heisst kompilieren bzw. compilen. -- |
|
Profil || Suche |
|
018 13.11.2006, 18:38 feigling |
sprintf ist genauso scheiße wie strcat. Wenn, dann snprintf. ;x €dit Wobei man bei snprintf natürlich selber auf das '\0' am Ende achten muss. €dit2: Err, quatsch ... bei strncpy wars.. nicht bei snprintf ... --Dieser Beitrag wurde am 13.11.2006 um 19:36 von feigling bearbeitet. |
|
Profil || Suche |
|
019 13.11.2006, 21:04 JohnLeDon |
naja snprintf wollte ja mal gaaaaar nicht....das hab ich ja auch versucht. -- |
|
Profil || Suche |
|
020 14.11.2006, 05:56 feigling |
Wenn strcat geht, geht auch snprintf. -- |
|
Profil || Suche |
|
021 16.11.2006, 10:34 JohnLeDon |
ne, die engine hat da einen "ersetze snprintf durch q_snprintf" parameter.... Dieser Beitrag wurde am 16.11.2006 um 10:35 von JohnLeDon bearbeitet. |
|
Profil || Suche |

