GTAvision.com - Forum - Grand Theft Auto News, Downloads, Community and more...

Position: Grand Theft Auto: San Andreas » Multiplayer » Gangs saven und loaden » Druckansicht
G4M3R, 15.06.2009, 16:07
Hi,

habe eine Frage.
Ich möchte gerne die Gangs, wo man selbst erstellen kann mit /gang create speichern.

wenn man /gang create schreibt, werden die Gangs so gesavt:

Code:
1
2
3
4
5
6
7
8
9
10
new player[MAX_PLAYER_NAME];
   GetPlayerName(playerid,player,sizeof(player));
   new entry[256];
   new File: file;
   format(gangload, sizeof(gangload), "Gangs/%s_Gang.txt",player);
   file = fopen(gangload, io_write);
   format(entry, 128, "%s,%d \r\n",gangNames[i], gangInfo[i][0]=1);
   fwrite(file, entry);
   fclose(file);
    return 1;


und wenn der server startet, sollen sie so geladen werden:#

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
stock LoadGangs()
{
   new Argument[9][70];
   new entry[512];
   new gangs[256];
   new name[256];
   format(gangs, sizeof(gangs), "Gangs/%s_Gang.txt",name);
   strmid(gangload, name, 0, strlen(name), 255);
   new File: file = fopen(gangs, io_read);
   if (file)
   {
   for(new i = 1; i < MAX_GANGS; i++)
   {
    fread(file, entry);
    split(entry, Argument, ',');
    format(gangNames[i], 16, "%s", Argument[0]);
   gangInfo[i][0] = strval(Argument[1]);
   fclose(file);
   }
   }
   return 1;
   }


ongamemodeinit:

Code:
1
LoadGangs();



Doch es werden die Gangs beim Serverstart nicht geladen, also ich kann mir eine neue Gründen sogar
mit gleichem Name und ID.

Ich weiß nicht woran das liegt, nach dem Problem gesucht habe ich auch, aber nichts gefunden.
Rafioso, 15.06.2009, 23:46
Hi,

ZitatG4M3R hat folgendes geschrieben:
Code:
1
2
3
4
5
6
7
8
9
10
new player[MAX_PLAYER_NAME];
    GetPlayerName(playerid,player,sizeof(player)); //////////////// hier playerid ?
    new entry[256];
    new File: file;
    format(gangload, sizeof(gangload), "Gangs/%s_Gang.txt",player);
    file = fopen(gangload, io_write);
    format(entry, 128, "%s,%d \r\n",gangNames[i], gangInfo[i][0]=1); ////////////////// hier i ?
    fwrite(file, entry);
    fclose(file);
     return 1;


ZitatG4M3R hat folgendes geschrieben:
Doch es werden die Gangs beim Serverstart nicht geladen

Werden die Dateien eigentlich erstellt? Stimmt der Inhalt?

ZitatG4M3R hat folgendes geschrieben:
ich kann mir eine neue Gründen sogar mit gleichem Name und ID.

Du fragst beim erstellen ja auch nicht ab, ob die Datei bereits erstellt wurde.

MfG
Rafioso
G4M3R, 16.06.2009, 11:53
Hi,

ja die Datein werden erstellt, also "User_Gang.txt"

aber geladen werden sie nicht, habe mal propeweise eine printf erstellt mit dem inhalt "Test", das
erschien es nicht.

dann habe ich meinen usernamen genommen und dort wurden die gangs geladen, aber war verbuggt, z.b
gab es dann 2000 gangs weil max gangs 2000 sind, aber so müsste es doch stimmen oder?
Rafioso, 16.06.2009, 15:47
Hi,

ich würde zum Test generell mal alle Variablen in der Konsole, oder Ingame im Chat ausgeben lassen
- als Debug.

Btw. Hast du dir oben in meinem Beitrag dein Code mal angesehen? Ich hab dort zwei Dinge kommentiert.

MfG
Rafioso
G4M3R, 16.06.2009, 15:50
Hi,
achso meinst du das? "Du fragst beim erstellen ja auch nicht ab, ob die Datei bereits erstellt
wurde."

Also es sollte gehen, da ich ja manuell meinen Nickname eingegebn hatte, wenn ich aber den ordner
durchsuchen lasse und er alle datein laden soll, geht es nicht.

und da ich einen neuen mode erstellen wollte, habe ich nur ein rohes script, also keine skin
auswahl etc. und werde in lv auf diesem rollband gespawnt.

ist halt nix drinne auser dieses gangscript.
Rafioso, 16.06.2009, 16:07
Hi,

das ist wieder ein anderes Problem xD Ist aber fürs laden der Gangsaves irrelevant.

Ich meinte eigentlich das hier:.

ZitatRafioso hat folgendes geschrieben:
ZitatG4M3R hat folgendes geschrieben:
Code:
1
2
3
4
5
6
7
8
9
10
new player[MAX_PLAYER_NAME];
    GetPlayerName(playerid,player,sizeof(player)); //////////////// hier playerid ?
    new entry[256];
    new File: file;
    format(gangload, sizeof(gangload), "Gangs/%s_Gang.txt",player);
    file = fopen(gangload, io_write);
    format(entry, 128, "%s,%d \r\n",gangNames[i], gangInfo[i][0]=1); ////////////////// hier i ?
    fwrite(file, entry);
    fclose(file);
     return 1;



Man beachte die Kommentare.
G4M3R, 16.06.2009, 16:09
achso sorry habe das überlesen :o

naja also ich zeige mal meinen haupstächlichen "/gang create" command:


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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
    //------------------- /gang

   if(strcmp(cmd, "/gang", true) == 0)
   {
   new gangcmd, gangnum;
   tmp = strtok(cmdtext, idx);
   giveplayerid = strval(tmp);
   if(strcmp(tmp, "create", true)==0)
   gangcmd = 1;
   else if(strcmp(tmp, "invite", true)==0)
   gangcmd = 2;
   else if(strcmp(tmp, "join", true)==0)
   gangcmd = 3;
   else if(strcmp(tmp, "leave", true)==0)
   gangcmd = 4;
   tmp = strtok(cmdtext, idx);
   if(gangcmd < 3 && !strlen(tmp))
   {
    if(gangcmd==0)
   SendClientMessage(playerid, 0x83BFBFFF, "Type /ganghelp for gangcommands.");
   else if(gangcmd==1)
   SendClientMessage(playerid, 0x83BFBFFF, "Type: /gang create [Name]");
   else if(gangcmd==2)
   SendClientMessage(playerid, 0x83BFBFFF, "Type: /gang invite [PlayerID]");
   return 1;
   }
   //Create Gang//
   if(gangcmd==1)
   {
    if(playerGang[playerid]>0)
    {
   SendClientMessage(playerid, 0x83BFBFFF, "You are already in a gang!");
   return 1;
    }
   for(new i = 1; i < MAX_GANGS; i++)
   {
   if(gangInfo[i][0]==0) {
   //name gang
   format(gangNames[i], MAX_GANG_NAME, "%s", tmp);
   //Gang exists
   gangInfo[i][0]=1;
   //There is one member
   gangInfo[i][1]=1;
   //Gang color is player's color
   gangInfo[i][2]=playerColors[playerid];
   //Player is the first gang member
   gangMembers[i][0] = playerid;
   format(string, sizeof(string),"You have created the gang '%s' (id: %d)", gangNames[i], i);
   SendClientMessage(playerid, 0x83BFBFFF, string);
   playerGang[playerid]=i;
   new gangnum2 = playerGang[playerid];
//--------SAVEGANG----------------------------------------
   new player[MAX_PLAYER_NAME];
   GetPlayerName(playerid,player,sizeof(player));
   new File:GangFile;
   format(gangload, sizeof(gangload), "Gangs/%s_Gang.txt",player);
    GangFile = fopen(gangload, io_write);
    new var[100];
    format(var, 100, "%s,%d \r\n",gangNames[i],gangInfo[i][0]=1);
    fwrite(GangFile, var);
   fclose(GangFile);
   //-------SAVEGANG-------------------------------------------
    return 1;
   }
   }
   return 1;
   }
Rafioso, 16.06.2009, 16:32
Du hast nicht zufällig alle benötigten Variablen xD
Sonst muss ich alle selbst erstellen...
G4M3R, 16.06.2009, 16:42
am besten ist, ich schicke dir das script ^^

wäre einfacher und so ... xD

pm.
GTAvision.com :: Forumregeln :: FAQ :: Impressum :: Kontakt :: RDRvision.com :: LANOIREvision.com :: MaxPayneVision.com
NetVisionWork.NET
.: © 2006-2014 by GTAvision.com :.

Rockstar GamesTake-Two Interactive Deutschland

Free Grand Theft Auto Downloads