Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: sourceserver.info. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

xEpic-Team

Anfänger

  • »xEpic-Team« ist der Autor dieses Themas

Beiträge: 10

Wohnort: Neuburg a. D.

Beruf: SystemIntegrator

Rootserver vorhanden: Ja

  • Nachricht senden

1

Sonntag, 24. Juni 2012, 00:45

Hilfe bei Readfile & SteamID abgleich

Hey,
ich habe heute mit Sourcepawn angefangen,
der Sprache Pawn(GTA-SA:MP) bin ich eigentlich mächtig, aber manche Funktionen sind hier doch sehr anders...

Ich möchte das beim Spawnen die SteamID abgefragt wird und auch abgefragt wird ob eine Datei mit der SteamID besteht(SteamID = Dateinamen)
wenn ja möchte ich abfragen was darin steht. Es sollen zwei Werte drinstehen, beides Integer.

Ich hab mich schon ein bisschen damit befasst jedoch hab ich keine Ahnung wo ich anfangen soll.


Hier ein Beispiel:
Der Erste Integer ist das LVL der zweite der Skin.
SteamID_0:0:12345 spawnt.
Die Datei gibt es, LVL != 0 und Skin ist ebenfalls nicht null.
Jetzt müsste ich eben wissen wie man das Abfragt.
Am liebsten würde ich es in einem Stock oder einem Public machen
da ich das öfters brauche(nicht nur beim spawn)

Ich hätte diesen Code bis jetzt:

Quellcode

1
2
3
4
stock GetData(client,data){
if(data==0){//Der erste wert soll ausgelesen werden}
else if(data==1){//Der zweite wert soll ausgelesen werden}
}




Wäre sehr dankbar für hilfe da ich neu in dem Gebiet bin


mfg

Edit:

Im Stock sollte der Integer returned werden...

Impact

Super Moderator

Beiträge: 1 276

Rootserver vorhanden: Nein

  • Nachricht senden

2

Sonntag, 24. Juni 2012, 10:00

Bevor du damit weitermachst, würde ich dir Vorschlagen eine effizientere Speichermethode zu suchen, zB Sqlite, Mysql.
Wenn du an deiner Art der Speicherung (Pro Id eine Datei) festhalten magst, würde ich KeyValues empfehlen, steh ich allerdings persönlich gar nicht drauf.
Zudem solltest du den Inhalt deiner Datei mal posten.
Aber zu deiner Frage, schau dir hier mal folgendes an:
FileExists, OpenFile, Readfileline.

MfG
Impact

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Impact« (24. Juni 2012, 10:07)


xEpic-Team

Anfänger

  • »xEpic-Team« ist der Autor dieses Themas

Beiträge: 10

Wohnort: Neuburg a. D.

Beruf: SystemIntegrator

Rootserver vorhanden: Ja

  • Nachricht senden

3

Sonntag, 24. Juni 2012, 13:28

Danke erstmal für die Antwort, ich würde gern an meiner Methode festhalten :)
Jedoch habe ich nach wie vor Probleme mit dem öffnen und auslesen, ich hab eine denkblockade...
Ich hab schon tuts gesucht aber leider nichts gefunden

mfg

Impact

Super Moderator

Beiträge: 1 276

Rootserver vorhanden: Nein

  • Nachricht senden

4

Sonntag, 24. Juni 2012, 13:41

Hier ein Beispiel:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
if(FileExists("credits.txt"))
{
    new Handle:file OpenFile("credits.txt""r");
    new String:Buffer[64];
    
    while(ReadFileLine(fileBuffersizeof(Buffer)))
    {
        ReplaceString(Buffersizeof(Buffer), "\n""");
        PrintToServer("Line: %s"Buffer);
    }
    
    CloseHandle(file);
}

Muss je nach Verwendung halt angepasst werden

MfG
Impact

xEpic-Team

Anfänger

  • »xEpic-Team« ist der Autor dieses Themas

Beiträge: 10

Wohnort: Neuburg a. D.

Beruf: SystemIntegrator

Rootserver vorhanden: Ja

  • Nachricht senden

5

Sonntag, 24. Juni 2012, 13:46

Okei, sieht garnicht so kompliziert aus,
was würde Buffer ausgeben?
wenn in einer Datei Zeile:1 Einst steht und wenn in der Zweiten Zeile 2 steht?

Weil irgendwie muss ich ja die einzelnen raussfinden

Impact

Super Moderator

Beiträge: 1 276

Rootserver vorhanden: Nein

  • Nachricht senden

6

Sonntag, 24. Juni 2012, 13:49

Probier es doch einfach aus ;)

Quellcode

1
2
Line: 1
Line: 2


MfG
Impact

xEpic-Team

Anfänger

  • »xEpic-Team« ist der Autor dieses Themas

Beiträge: 10

Wohnort: Neuburg a. D.

Beruf: SystemIntegrator

Rootserver vorhanden: Ja

  • Nachricht senden

7

Sonntag, 24. Juni 2012, 14:08

Okei Danke, eine andere Frage:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <sourcemod>


new MaxFrags;

public OnPluginStart()
{

MaxFrags = 50;



HookEvent("player_death", OnPlayerDeath, EventHookMode_Post);
}

public OnCVarChange(Handle:cvar, const String:oldVal[], const String:newVal[])
{
MaxFrags = 50
}

public Action:OnPlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
{
new killer = GetClientOfUserId(GetEventInt(event, "attacker"));

if(IsClientInGame(killer) && GetClientFrags(killer) >= MaxFrags)
PrintToChatAll("\x03%N\x04 ist der Gewinner er hat das Limit erreicht \x03%i\x04 ", killer, MaxFrags);
PrintToConsole("changelevel gg_tunnels_beta);
}


Wieso ist das PrintToConsole falsch?

Jackmaster

Super Moderator

Beiträge: 660

Rootserver vorhanden: Ja

  • Nachricht senden

8

Sonntag, 24. Juni 2012, 14:13

PrintToConsole("changelevel gg_tunnels_beta);

zu

PrintToConsole("changelevel gg_tunnels_beta");

Da fehlt einfach ein Anführungszeichen

xEpic-Team

Anfänger

  • »xEpic-Team« ist der Autor dieses Themas

Beiträge: 10

Wohnort: Neuburg a. D.

Beruf: SystemIntegrator

Rootserver vorhanden: Ja

  • Nachricht senden

9

Sonntag, 24. Juni 2012, 14:16

Danke ich weiß aber das war nciht der Fehler, habs nur falsch kopiert;
/groups/sourcemod/upload_tmp/textqdd4ak.sp(28) : error 035: argument type mismatch (argument 1)

fluxX

Super Moderator

Beiträge: 1 056

Wohnort: Österreich

Beruf: IT Systemadministrator

Rootserver vorhanden: Ja

  • Nachricht senden

10

Sonntag, 24. Juni 2012, 14:26

So ist es richtig

PrintToConsole(client, "changelevel gg_tunnels_beta", client);
PrintToConsole = Die Client Console (denk ich mal :D)
PrintToServer = Server Console, da würde das gehn: PrintToServer("changelevel gg_tunnels_beta");

wenn ich aber das sehe "changelevel gg_tunnels_beta" willst du die Map wechseln? - das geht mit diesem Code:
ServerCommand("changelevel gg_tunnels_beta")

Greetz

xEpic-Team

Anfänger

  • »xEpic-Team« ist der Autor dieses Themas

Beiträge: 10

Wohnort: Neuburg a. D.

Beruf: SystemIntegrator

Rootserver vorhanden: Ja

  • Nachricht senden

11

Sonntag, 24. Juni 2012, 14:37

Vielen Dank :)

MadMakz

Super Moderator

Beiträge: 1 878

Wohnort: ~#

Rootserver vorhanden: Ja

  • Nachricht senden

12

Sonntag, 24. Juni 2012, 21:40

vor dem ServerCommand() würde ich aber noch einen timer setzen sonnst wird kaum einer PrintToChatAll() mitbekommen.

bsp:

Spoiler Spoiler

Quellcode

1
2
3
4
5
6
7
8
9
...
	PrintToChatAll("\x03%N\x04 ist der Gewinner er hat das Limit erreicht \x03%i\x04 ", killer, MaxFrags);
	CreateTimer(6.0, ChangeLevel);
}

public Action:ChangeLevel(Handle:timer)
{
	ServerCommand("changelevel gg_tunnels_beta");
}

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »MadMakz« (24. Juni 2012, 21:48)


Verwendete Tags

CSS