Beiträge von Akuba

    Hier mal eine Fehlerfreie Formatirung...Kopiert aus meinem eigenen Script...




    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);


    Dir ist klar das er das als MySQL abspeichern will oder?


    1. GetPlayerPos hat keinen Rückgabewert, genauso wie GetPlayerFacingAngle, das musst du vor dem Query anwenden das er das in Variablen schreibt, daher kommt auch der Fehler, da fehlen einfach mal 2 Erwartete Werte, nichts anderes sagt der Fehler da aus.


    So sollt es gehen:


    new Float:x, Float:y, Float:z, Float:a;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, a);
    format(query, sizeof(query), "pCash = '%i', pSkin = '%i', pAdminlevel ='%i', pLastx ='%f', pLasty ='%f', pLastz ='%f', pAngle ='%f'", sInfo[playerid][pCash], GetPlayerSkin(playerid), sInfo[playerid][pAdminlevel], x, y, z, a);

    Erstmal danke für das Beispiel, allerdings hab ich bis jetzt 2 Probleme gehabt:


    1. Das EndText immer überschrieben wurde, hab ich behoben.
    2. bleibt die Variable "t" unberüht im ersten Stock, vorgesehen war das diese direkt von sectostr_one mit bearbeitet wird. nun lässt sich in Pawn ja nur eine Variable returne, wie lös ich das ganze jetzt am besten?


    Derzeit kommt folgendes dabei raus:


    bei 300 Sekunden sollte eigendlich 5 Minuten Rauskommen.


    Spoiler anzeigen

    // in OnPlayerCommandText:
    if(strcmp(cmd, "/sectostr", true) == 0)
    {
    new tmp[128];
    tmp = strtok(cmdtext, idx);
    if(strlen(tmp)==0) return SendClientMessage(playerid, 0xFF0000FF, "FEHLER: {FFFFFF}/sectostr [Sekunden]");
    else return SendClientMessage(playerid, COLOR_GREEN, sectostr(strval(tmp), 1));
    }

    Spoiler anzeigen
    // Die überarbeiteten Stock funktionen:
    stock sectostr ( t, args=0 )
    {
    new EndText[128] = "\0";
    if(args == 1)
    {
    EndText = sectostr_one (31536000, "Jahr", "Jahre", "ein", t, EndText);
    EndText = sectostr_one (604800, "Woche", "Wochen", "eine", t, EndText);
    EndText = sectostr_one (86400, "Tag", "Tage", "einen", t, EndText);
    EndText = sectostr_one (3600, "Stunde", "Stunden", "eine", t, EndText);
    EndText = sectostr_one (60, "Minute", "Minuten", "eine", t, EndText);
    EndText = sectostr_one (1, "Sekunde", "Sekunden", "eine", t, EndText);
    } else {
    EndText = sectostr_one (31536000, "Jahr", "Jahre", "einem", t, EndText);
    EndText = sectostr_one (604800, "Woche", "Wochen", "einer", t, EndText);
    EndText = sectostr_one (86400, "Tag", "Tage", "einen", t, EndText);
    EndText = sectostr_one (3600, "Stunde", "Stunden", "einer", t, EndText);
    EndText = sectostr_one (60, "Minute", "Minuten", "einer", t, EndText);
    EndText = sectostr_one (1, "Sekunde", "Sekunden", "einer", t, EndText);
    }

    Spoiler anzeigen
    if(strlen(EndText) == 0)
    {
    format (EndText, sizeof(EndText), "0 Sekunden");
    }
    return EndText;
    }

    Spoiler anzeigen
    stock sectostr_one (x, cap[], cappl[], capone[], t, EndText[128])
    {
    new Float:num;
    if(t >= x)
    {
    num = floatround(t/x, floatround_ceil);
    num = floatround(num);
    t = t%x;
    if(strlen(EndText) == 0)
    {
    if (t > 0) format(EndText,sizeof(EndText), "%s, ", EndText);
    else format(EndText,sizeof(EndText), "%s und ", EndText);
    }
    if(num > 1) format(EndText,sizeof(EndText), "%s %i %s", EndText, num, cappl);
    else format(EndText,sizeof(EndText), "%s %s %s", EndText, capone, cap);
    }
    return EndText;
    }

    Bitteschön:
    ocmd:admins(player,params[])
    {
    new AdminList[1024];
    if(!IsPlayerConnected(playerid))return 1;
    format(AdminList,sizeof(AdminList),"Folgende Admins sind online:\n");
    for (new i = 0; i<MAX_PLAYERS; i++)
    {
    if(IsTPlayerAnAdmin(i,10))
    {
    format(AdminList,sizeof(AdminList),"%s\nServerOwner: %s",AdminList,SpielerName(i));
    }
    if(IsTPlayerAnAdmin(i,9))
    {
    format(AdminList,sizeof(AdminList),"%s\nScripter: %s",AdminList,SpielerName(i));
    }
    if(IsTPlayerAnAdmin(i,8))
    {
    format(AdminList,sizeof(AdminList),"%s\nServerManager: %s",AdminList,SpielerName(i));
    }
    if(IsTPlayerAnAdmin(i,7))
    {
    format(AdminList,sizeof(AdminList),"%s\nCommunityManager: %s",AdminList,SpielerName(i));
    }
    if(IsTPlayerAnAdmin(i,6))
    {
    format(AdminList,sizeof(AdminList),"%s\nHighAdmin: %s",AdminList,SpielerName(i));
    }
    if(IsTPlayerAnAdmin(i,5))
    {
    format(AdminList,sizeof(AdminList),"%s\nAdmin: %s",AdminList,SpielerName(i));
    }
    if(IsTPlayerAnAdmin(i,4))
    {
    format(AdminList,sizeof(AdminList),"%s\nModerator: %s",AdminList,SpielerName(i));
    }
    if(IsTPlayerAnAdmin(i,3))
    {
    format(AdminList,sizeof(AdminList),"%s\nSupporter: %s",AdminList,SpielerName(i));
    }
    if(IsTPlayerAnAdmin(i,2))
    {
    format(AdminList,sizeof(AdminList),"%s\nProbeModerator: %s",AdminList,SpielerName(i));
    }
    if(IsTPlayerAnAdmin(i,1))
    {
    format(AdminList,sizeof(AdminList),"%s\nEhrenmember: %s",AdminList,SpielerName(i));
    }
    }
    ShowPlayerDialog(playerid,DIALOG_INFO,DIALOG_STYLE_MSGBOX,"Admins",AdminList,"OK","");
    return 1;
    }


    sollte klappen

    es wäre hilfreich den Quellcode von fpark zu sehen.


    Ansonsten schau mal ob die Datei wo die Autos gespeichert werden, auch existiert oder ob diese auch richtig gespeichert und geladen werden.

    "longstr" scheint schon definiert zu sein, z.b. als Globale Variable. such die am Besten mal über "STRG + F"


    "playerid" musst du durch "player" ersetzen, weil "ocmd:admins(player,params[])". "player" ist in dem fall die playerid

    benutze einfach den root, und kein passwort, dann gehts auch.


    nicht jeder, eig. sogar kein MySQL Server hat den Nutzer "root" ohne Passwort, normalerweiße wird man wärend der Installation dazu aufgefordert root ein Password zu geben. Nur bei Xampp muss man dies später tun.


    DevdogVideos: Von welchen Host darf den der MySQL nutzer auf den Server connecten? Wenn du den Server Local testest, achte mal darauf das dann auch "localhost" als Host drinsteht. bei "%" als Host scheint MySQL seine probleme zu haben. "127.0.0.1" sollte auch funktionieren, bin ich mir aber gerade nichtmal sicher, obwohl es ja das selbe ist.

    Tach,
    bin mir nicht sicher ob der Titel zu diesen Problem passt, falls nicht, tuts mir leid.


    Mein Problem ist Folgdendes:


    Ich hab mir heute 2 stockfunctionen von TCL in Pawn übersetzt, nun weiß ich jedoch nicht ob Pawn Variablen in Stock funktionen übernehmen kann ohne diese direkt in das Stock einzuarbeiten.
    Dies ist in TCL mit upvar möglich Variablen ohne direkte angabe zu übernehmen.


    Hier der Code:

    Spoiler anzeigen
    stock sectostr ( t, args=0 )
    {
    new EndText[128];

    Spoiler anzeigen
    if(args == 1)
    {
    sectostr_one (31536000, "Jahr", "Jahre", "ein");
    sectostr_one (604800, "Woche", "Wochen", "eine");
    sectostr_one (86400, "Tag", "Tage", "einen");
    sectostr_one (3600, "Stunde", "Stunden", "eine");
    sectostr_one (60, "Minute", "Minuten", "eine");
    sectostr_one (1, "Sekunde", "Sekunden", "eine");
    } else {
    sectostr_one (31536000, "Jahr", "Jahre", "einem");
    sectostr_one (604800, "Woche", "Wochen", "einer");
    sectostr_one (86400, "Tag", "Tage", "einen");
    sectostr_one (3600, "Stunde", "Stunden", "einer");
    sectostr_one (60, "Minute", "Minuten", "einer");
    sectostr_one (1, "Sekunde", "Sekunden", "einer");
    }

    Spoiler anzeigen
    if(strlen(EndText) == 0)
    {
    format (EndText, sizeof(EndText), "0 Sekunden");
    }
    return EndText;
    }

    Spoiler anzeigen
    stock sectostr_one (x, cap[], cappl[], capone[])
    {
    new Float:num;
    if(t >= x)
    {
    num = floatround(time/x, floatround_ceil);
    num = floatround(num);
    t = t%x;
    if(strlen(EndText) == 0)
    {
    if (t > 0) format(EndText,sizeof(EndText), "%s, ", EndText);
    else format(EndText,sizeof(EndText), "%s und ", EndText);
    }
    if(floatint(num) > 1) format(EndText,sizeof(EndText), "%s %i %s", EndText, floatint(num), cappl);
    else format(EndText,sizeof(EndText), "%s %s %s", EndText, capone, cappl);
    }
    }


    Dazu die wie zu erwartenden Fehlermeldungen:

    Code
    C:\*Neu.pwn(1073) : warning 203: symbol is never used: "t"C:\*Neu.pwn(1073 -- 1104) : error 017: undefined symbol "t"C:\*Neu.pwn(1106) : error 017: undefined symbol "time"C:\*Neu.pwn(1108) : error 017: undefined symbol "t"C:\*Neu.pwn(1108) : error 017: undefined symbol "t"C:\*Neu.pwn(1108) : warning 215: expression has no effectC:\*Neu.pwn(1109) : error 017: undefined symbol "EndText"C:\*Neu.pwn(1111) : error 017: undefined symbol "t"C:\*Neu.pwn(1111) : error 017: undefined symbol "EndText"C:\*Neu.pwn(1111) : error 017: undefined symbol "EndText"C:\*Neu.pwn(1111) : fatal error 107: too many error messages on one line


    Ist dies in Pawn garnicht möglich oder muss dies wie in TCL mit einen Befehl aufgerufen werden?


    Liebe Grüße,
    Akuba

    Ich habe da ein Kleines problem mit MySQL, das Update funktioniert nicht. Die angegebenen Felder sind alle in der MySQL Datenbank vorhanden und Exakt so geschrieben. Ich habe leider keine Idee mehr :/


    new querystring[500];
    for(new x = 0; x < UC_MaxVehicles_Prem; x++)
    {
    if(UserCar[playerid][x] != 0)
    {
    format(querystring, sizeof(querystring), "UPDATE `uservehs` SET `Ownerid` = '%d', `Ownername` = '%s' WHERE `Id` = '%d'", UC_CarInfo[x][OwnerID], UC_CarInfo[x][Ownername], UC_CarInfo[x][DatabaseID]);
    mysql_query(querystring);


    format(querystring, sizeof(querystring), "UPDATE `uservehs` SET `Numberplate` = '%s', `Tank` = '%d', `Hybridtank` = '%d', `Kilometer` = '%d', `Lasttuev` = '%d', `Crashs` = '%d', `Totalcrashs` = '%d' WHERE `Id` = '%d'", UC_CarInfo[x][NumberPlate], UC_CarInfo[x][Tank], UC_CarInfo[x][HybridTank], UC_CarInfo[x][Kilometer], UC_CarInfo[x][LastTuev], UC_CarInfo[x][Crashs], UC_CarInfo[x][Totalcrashs], UC_CarInfo[x][DatabaseID]);
    mysql_query(querystring);


    format(querystring, sizeof(querystring), "UPDATE `uservehs` SET `SpawnX` = '%f', `SpawnY` = '%f', `SpawnZ` = '%f', `SpawnA` = '%f', `Color1` = '%d', `Color2` = '%d', `Paintjob` = '%d' WHERE `Id` = '%d'", UC_CarInfo[x][SpawnX], UC_CarInfo[x][SpawnY], UC_CarInfo[x][SpawnZ], UC_CarInfo[x][SpawnA], UC_CarInfo[x][Color1], UC_CarInfo[x][Color2], UC_CarInfo[x][PaintJob], UC_CarInfo[x][DatabaseID]);
    mysql_query(querystring);


    format(querystring, sizeof(querystring), "UPDATE `uservehs` SET `Nitro` = '%d', `Vents` = '%d', `Lamps` = '%d', `Wheel` = '%d', `Ausp` = '%f', `SideL` = '%d', `SideR` = '%d' WHERE `Id` = '%d'", UC_CarInfo[x][Nitro], UC_CarInfo[x][Vents], UC_CarInfo[x][Lamps], UC_CarInfo[x][Wheels], UC_CarInfo[x][Ausp], UC_CarInfo[x][SideL], UC_CarInfo[x][SideR], UC_CarInfo[x][DatabaseID]);
    mysql_query(querystring);


    format(querystring, sizeof(querystring), "UPDATE `uservehs` SET `FrontB` = '%d', `BackB` = '%d', `Spoiler` = '%d', `Roof` = '%d', `IsTow` = '%d', `Addons` = '%d', `Buytimestamp` = '%d' WHERE `Id` = '%d'", UC_CarInfo[x][FrontB], UC_CarInfo[x][BackB], UC_CarInfo[x][Spoiler], UC_CarInfo[x][Roof], UC_CarInfo[x][IsTow], UC_CarInfo[x][Addons], UC_CarInfo[x][BuyTime], UC_CarInfo[x][DatabaseID]);
    mysql_query(querystring);
    }
    }

    Ich hänge grad hierbei Fest:


    für ein gangwar system im GF möchte ich das Die Anzahl der Zonen in der "Stuff.ini" Gespiechert wird, das klappt auch, nur weiß ich nun nicht wie ich die Globale Variable unter Gamemodeinit erstelle.
    new GW_Zones[GangWarZones][GW_zones_e];
    new GW_Zone[GangWarZones];
    new GangWarZones; // wird durch "LoadStuff" gesetzt


    wie muss ich das umschreiben, das ich die Variable "GangWarZones" erst unter GameModeInit definieren kann, sie aber für alle aneren Global bleibt (schwer zu erklären)

    Hi,


    mir ist aufgefallen das bei meinen flock befehl nur die ersten 8 wagen jeder Fraktion Auf und zugeschlossen werden können, alles was darüber ist, lässt sich nicht auf/zuschliessen. ich habe schon mehrere varianten versucht dieses Problem zu lösen, leider bisher erfolglos, hoffe jemand kennt eine lösung


    dcmd_flock(playerid,params[]) {
    #pragma unused params
    if(PlayerInfo[playerid][fraktion])
    {
    for(new i = 0; i<sizeof(fraktionscar); i++)
    {
    if(IsPlayerInVehicle(playerid, fraktionscar[PlayerInfo[playerid][fraktion]][i]))
    {
    new string[128];
    if(CarInfo[fraktionscar[PlayerInfo[playerid][fraktion]][i]][locked] == 1)
    {
    CarInfo[fraktionscar[PlayerInfo[playerid][fraktion]][i]][locked] = 0;
    format(string, sizeof(string), "~w~Fahrzeug ~g~ Aufgeschlossen");
    new i2;
    for(i2=0;i2<MAX_PLAYERS;i2++)
    {
    if(PlayerInfo[i2][fraktion] == PlayerInfo[playerid][fraktion])
    {
    SetVehicleParamsForPlayer(fraktionscar[PlayerInfo[playerid][fraktion]][i],i2, 0, 0);
    }
    }
    GameTextForPlayer(playerid, string, 3000, 6);
    }
    else
    {
    CarInfo[fraktionscar[PlayerInfo[playerid][fraktion]][i]][locked] = 1;
    format(string, sizeof(string), "~w~Fahrzeug ~r~ Abgeschlossen");
    new i2;
    for(i2=0;i2<MAX_PLAYERS;i2++)
    {
    if(PlayerInfo[i2][fraktion] == PlayerInfo[playerid][fraktion])
    {
    SetVehicleParamsForPlayer(fraktionscar[PlayerInfo[playerid][fraktion]][i],i2, 0, 1);
    }
    }
    GameTextForPlayer(playerid, string, 3000, 6);
    }


    }
    }
    }
    return 1;
    }


    die Autos werden so eingebunden:
    fraktionscar[5][0] = AddStaticVehicleEx(560,1913.0,698.0,10.5,180.0,123,1,-1);

    Hiho,


    ich hab ein Dummes Problem. und zwar weigert sich sa-mp die Ini datein zu lesen. Ich kann ganz normal Connecten und meine Datei wird gefunden. doch wenn ich mich einloggen will kann er mein Passwort nicht lesen. Ich hab es mit ändern Der Rechte auf 777 und der Gruppe und Eigentümer auf Root/1001 (WinCP glaube) versucht, aber er kann sie einfach nicht lesen oder Anlegen. ich hoffe jemand kann mir dabei helfen das er sie aussliest :/


    mfg

    Du nutzt DCMD, das heißt du musst nicht cmd oder CMDtext verwenden im befehl (dcmd_*)(* = Befehlsname) sondern params. beispeil wie du es wohl hast:
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(xgoto, 5, cmdtext);
    }
    dcmd_xgoto(playerid, params[]) {
    new id;
    if(sscanf(cmd, "u", id)) return SendClientMessage(playerid, 0xFF0000AA, "nicht geportet");
    }

    die Zeile mit sscanf hat das cmd bei sich, dieses ist nicht definiert, du musst es in params ändern:
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(xgoto, 5, cmdtext);
    }
    dcmd_xgoto(playerid, params[]) {
    new id;
    if(sscanf(params, "u", id)) return SendClientMessage(playerid, 0xFF0000AA, "nicht geportet");
    }


    für Copi und Paster: der code ist total sinnlos und ohne bedeutung.


    ich hoffe ich konnte helfen.