Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
13.07.2003, 11:12
Zip Drive



Hi, ich hab eine Frage und zwar.
Im Multiplayer von HL da starten alle Player ja mit ner 9mm_handgun und der Crowbar.
Das ist schon klar definiert das die das haben sollen, ich möchte jetzt aber das
alle Player andere waffen haben und diese auch selbst bestimmen können!

Ich dachte da an eine Textdatei wo alle weapons,ammos und items die man beim Spawn bekommt reinschreibt.
Meinetwegen:
weapon_crowbar
weapon_9mmhandgun
weapon_shotgun
ammo_buckshot usw.

Jetzt wieder zu meiner Frage...ist dieses möglich, und wenn ja wie mache ich dieses am Besten?

Hat jemand von euch schonmal so etwas gemacht oder weiss wie am besten
(und vor allem wo im Code...) zu beginnen?

Schonmal thx.

--

-[Don't forget, Blood is red!]- | -[ http://www.zip-drive.de ]- | -[ Against TCPA! ]- | -[ 3d Supply Greatest Gamershop! ]-

zum Seitenanfang zum Seitenende Profil || Suche
001
13.07.2003, 14:13
Onkel Dittmeyer



Les die Datei Clientseitig aus und mach dir nen Clientcommand der das als Parameter an den Server schickt beim VidInit der CHud. Dann trägste beim Server ne dynamische (schwer) oder ne statische Anzahl an Items als Member in die Klasse CBasePlayer ein und füllst die auf in der Funktion ClientCommand() wenn der entsprechende Command ankommt.

--

zum Seitenanfang zum Seitenende Profil || Suche
002
13.07.2003, 21:09
Exec



also du willst,das sich jeder player in dem mod-verzeichnis ne .txt anlegt,wo er seine waffen bestimmen kann?
warum machst du das nich als menu,das vorm spawn auftritt? das is idiotensicher und sicher auch praktischer,wenn man ingame mal was an seiner spielweise ändern will

--

"selbermachen rockt am meisten :D" - -LeJean-

zum Seitenanfang zum Seitenende Profil || Suche
003
13.07.2003, 23:47
Zip Drive



Nee ein Menü will ich nicht...
Hat ja heut zutage jeder.

Es soll schon ne .txt sein.

--

-[Don't forget, Blood is red!]- | -[ http://www.zip-drive.de ]- | -[ Against TCPA! ]- | -[ 3d Supply Greatest Gamershop! ]-

zum Seitenanfang zum Seitenende Profil || Suche
004
13.07.2003, 23:59
Exec



naja,ich finds per .txt unpraktisch,aber naja, is ja nich meine wurst

wie du ne .txt ausliest kannst du in diversen quellen im internet nachlesen, dann einfach zeile für zeile (oder wie dir halt beliebt) auslesen und den string kopieren (strcpy( ziel,quelle))

--

"selbermachen rockt am meisten :D" - -LeJean-

zum Seitenanfang zum Seitenende Profil || Suche
005
14.07.2003, 10:02
Onkel Dittmeyer



Textdatei auslesen im C-Stil:
Quellcode:void CHud::VidInit()
{
          //...
    FILE* File = NULL;

    char szLine[256];
    char szCmd[256];

    File = fopen("weapon_choice.txt", "r");

    if (!File)
    {
        gEngfuncs.pfnConsolePrint("Couldn\'t open weapon_choice.txt!\n- Standard weapons will be used.\n");
    }
    else
    {
        while (!feof(File))
        {
            fgets(szLine, 255, File);
            sprintf(szCmd, "pick %s", szLine);
            ClientCmd(szCmd);
        }
    }
         //...
}
In diesem Fall hab ich den ClientCmd mal "pick" genannt. So müsstest auf dem Server eine dynamische Liste mit den Waffen erstellen... evtl. mit ner Linked List. Die muss dann aber auch wieder deletet werden sonst gibts ein schönes Memory Leak.

--


Dieser Beitrag wurde am 14.07.2003 um 10:04 von Onkel Dittmeyer bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
17.07.2003, 15:11
The_Overmind



Ähm... Ich hab zwar nit so die Ahnung von Datein in C++, aber liest Du da die TXT Datei nit falsch ein ? Die Zeilen sind doch eigentlich nit alle 256 Chars lang, sondern dynamisch lang und werden mit nem 0x0D abgeschlossen.
Wenn Du einfach so stupide 255 Chars ausliest, dann müßtest doch die Buchstaben aus mehreren Zeilen inner TXT haben ?

Wenn ich gerade Dreck erzählt hab, ich benutz nu noch hauptsächlich Delphi, kA ob das in C++ was anderes is ;)

--

zum Seitenanfang zum Seitenende Profil || Suche
007
17.07.2003, 15:37
Andy_



Zitat:
MSDN:
fgets reads characters from the current stream position to and including the first newline character,...
Abgesehen davon das Half-Life eigene Funktionen zum Datei-Einlesen und sogar eigene Tokenizer Funktionen bietet, funktioniert das teil da oben denke ich schon wie es sollte, fgets() liefert tatsächlich nur die Chars bis zum nächsen Newline Zeichen. Natürlich werden hierbei nur 255 Zeichen pro Zeile ausgelesen, ist aber egal, oder kennt jemand ne Waffe die einen mehr als 255 Zeichen langen Namen hat?

--

42 Es gibt keinen Sinn des Lebens.


Dieser Beitrag wurde am 17.07.2003 um 15:39 von Andy bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
008
17.07.2003, 19:46
Onkel Dittmeyer



Echt im SDK gibts nen Tokenzieher? Noch nie gesehen...
Ansonsten sag ich mal das selbe wie Andy. Ich denke nicht dass jemand auf die Idee kommen würde eine Waffe mit mehr als 255 Zeichen im Namen zu erstellen. Außerdem sind die Line und Command Variablen eh nur Lokal und werden nach der Funktion dealloziert und gammeln nicht auf dem Heap oder sonstwas rum. Wenn ich die dynamisch erzeugen würde, hätt ich natürlich auch die eigentliche String Länge jeder Zeile berücksichtigt. Aber in diesem Fall würde das die Sache unnötig verkomplizieren und verlangsamen.

--

zum Seitenanfang zum Seitenende Profil || Suche