You are not logged in.

xEpic-Team

Beginner

  • "xEpic-Team" started this thread

Posts: 10

Location: Neuburg a. D.

Occupation: SystemIntegrator

wcf.user.option.userOption53: Ja

  • Send private message

1

Sunday, June 24th 2012, 12:45am

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:

Source code

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

Posts: 1,276

wcf.user.option.userOption53: Nein

  • Send private message

2

Sunday, June 24th 2012, 10:00am

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

This post has been edited 2 times, last edit by "Impact" (Jun 24th 2012, 10:07am)


xEpic-Team

Beginner

  • "xEpic-Team" started this thread

Posts: 10

Location: Neuburg a. D.

Occupation: SystemIntegrator

wcf.user.option.userOption53: Ja

  • Send private message

3

Sunday, June 24th 2012, 1:28pm

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

Posts: 1,276

wcf.user.option.userOption53: Nein

  • Send private message

4

Sunday, June 24th 2012, 1:41pm

Hier ein Beispiel:

PHP Source code

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

Beginner

  • "xEpic-Team" started this thread

Posts: 10

Location: Neuburg a. D.

Occupation: SystemIntegrator

wcf.user.option.userOption53: Ja

  • Send private message

5

Sunday, June 24th 2012, 1:46pm

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

Posts: 1,276

wcf.user.option.userOption53: Nein

  • Send private message

6

Sunday, June 24th 2012, 1:49pm

Probier es doch einfach aus ;)

Source code

1
2
Line: 1
Line: 2


MfG
Impact

xEpic-Team

Beginner

  • "xEpic-Team" started this thread

Posts: 10

Location: Neuburg a. D.

Occupation: SystemIntegrator

wcf.user.option.userOption53: Ja

  • Send private message

7

Sunday, June 24th 2012, 2:08pm

Okei Danke, eine andere Frage:

Source code

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

Posts: 660

wcf.user.option.userOption53: Ja

  • Send private message

8

Sunday, June 24th 2012, 2:13pm

PrintToConsole("changelevel gg_tunnels_beta);

zu

PrintToConsole("changelevel gg_tunnels_beta");

Da fehlt einfach ein Anführungszeichen

xEpic-Team

Beginner

  • "xEpic-Team" started this thread

Posts: 10

Location: Neuburg a. D.

Occupation: SystemIntegrator

wcf.user.option.userOption53: Ja

  • Send private message

9

Sunday, June 24th 2012, 2:16pm

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

Posts: 1,056

Location: Österreich

Occupation: IT Systemadministrator

wcf.user.option.userOption53: Ja

  • Send private message

10

Sunday, June 24th 2012, 2:26pm

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

Beginner

  • "xEpic-Team" started this thread

Posts: 10

Location: Neuburg a. D.

Occupation: SystemIntegrator

wcf.user.option.userOption53: Ja

  • Send private message

11

Sunday, June 24th 2012, 2:37pm

Vielen Dank :)

MadMakz

Super Moderator

Posts: 1,878

Location: ~#

wcf.user.option.userOption53: Ja

  • Send private message

12

Sunday, June 24th 2012, 9:40pm

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

bsp:

Spoiler Spoiler

Source code

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");
}

This post has been edited 1 times, last edit by "MadMakz" (Jun 24th 2012, 9:48pm)


Used tags

CSS