Beiträge von Jeffry

    Wie sieht es so aus?
    format(string,sizeof(string),"{FFFFFF}Hier findest du deinen Personalausweis, wenn du ihn jemanden zeigen willst schreibe /showperso.\n\n\n{FFA600}Allgemeine Daten{FFFFFF}\n\nName: %s\nAlter: %d\nHerkunft: %s\nGeschlecht: %s\n",name,age,otext,atext);
    format(string,sizeof(string),"%sVerheiratet mit %s\nTelefonnummer:\n\nBankkonto: $%d\nGeld auf Hand: $%d\n\n\n{FFA600}Allgemeine Informationen{FFFFFF}\n\nLevel: %d\nLevelUp-Kosten: $%d\nRespektpunkte: %d von %d\n",string,married,pnumber,account,cash,level,costlevel,exp,expamount);
    format(string,sizeof(string),"%sDonatorrang: %s\nWanteds: %d\nDrogen: %d\nMaterialien: %d\n\n\n{FFA600}Sonstige Daten & Informationen{FFFFFF}\n\nVerbrechen: %d\nGefängnise: %d\nKills: %d\nTode: %d\nKrankheit: %s",string,drank,wanted,drugs,mats,crimes,arrests,kills,deaths,dtext);


    Dann sollte der Error aus jeden Fall mal weg sein.

    Tatsächlich, habe es grade getestet, ist bei mir auch so.
    Füge das hier unter die Includes ein:


    stock ex_CreateVehicle(modelid, Float:x, Float:y, Float:z, Float:angle, color1, color2, respawn_delay)
    {
    new engine,lights,alarm,doors,bonnet,boot,objective;
    new vID = CreateVehicle(modelid, x, y, z, angle, color1, color2, respawn_delay);
    GetVehicleParamsEx(vID,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vID,engine,lights,alarm,0,bonnet,boot,objective);
    return vID;
    }


    #if defined _HOOK_CreateVehicle
    #undef CreateVehicle
    #else
    #define _HOOK_CreateVehicle
    #endif
    #define CreateVehicle ex_CreateVehicle



    Ich nehme mal an, du erstellst die Fahrzeuge mit CreateVehicle.
    Dann geht es.

    ocmd:lock(playerid,params[])
    {
    if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)return SendClientMessage(playerid,COLOR_RED,"Du musst der Fahrer eines Fahrzeugs sein um dein Auto auf/abzuschliessen");
    new vID=GetPlayerVehicleID(playerid),
    tmp_engine,
    tmp_lights,
    tmp_alarm,
    tmp_doors,
    tmp_bonnet,
    tmp_boot,
    tmp_objective;
    //an/aufschliessen
    GetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
    if(tmp_doors==0){
    tmp_doors =1;
    SendClientMessage(playerid, 0xF3CA00FF, "*Du hast das Fahrzeug abgeschlossen*");
    }else{
    tmp_doors = 0;
    SendClientMessage(playerid, 0xF3CA00FF, "*Du hast das Fahrzeug aufgeschlossen*");
    }
    SetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
    return 1;
    }


    1 = zu
    0 = offen



    EDIT:
    Welchen Befehl verwendest du eigentlich? Den von Silvio.Castro oder den von Kaliber? :rolleyes:

    new ttext[20];
    zu:
    new ttext[40];
    der ist zu kurz.


    Für drank sehe ich keine Deklaration, die fehlt womöglich.


    Möglicherweise ist auch der string zu lang, kürze die Zeile mal so:
    format(string,sizeof(string),"{FFFFFF}Hier findest du deinen Personalausweis, wenn du ihn jemanden zeigen willst schreibe /showperso.\n\n\n{FFA600}Allgemeine Daten{FFFFFF}\n\nName: %s\nAlter: %d\nHerkunft: %s\nGeschlecht: %s\n\
    Verheiratet mit %s\nTelefonnummer:\n\nBankkonto: $%d\nGeld auf Hand: $%d\n\n\n{FFA600}Allgemeine Informationen{FFFFFF}\n\nLevel: %d\nLevelUp-Kosten: $%d\nRespektpunkte: %d von %d\nDonatorrang: %s\nWanteds: %d\nDrogen: %d\nMaterialien: \
    %d\n\n\n{FFA600}Sonstige Daten & Informationen{FFFFFF}\n\nVerbrechen: %d\nGefängnise: %d\nKills: %d\nTode: %d\nKrankheit: %s",name,age,otext,atext,married,pnumber,account,cash,level,costlevel,exp,expamount,drank,wanted,drugs,mats,crimes,arrests,kills,deaths,dtext);


    Wenn das nichts hilft:
    Kannst du kompilieren, wenn du den gesamten Befehl auskommentierst?


    Wenn ja, dann kommentiere den Befehl wieder ein und kommentiere nur Abschnitte, so lange bis du wieder kompilieren kannst. So kannst du dich an den Fehler (bzw. die Fehlerzeile) hinarbeiten.

    Einfach zwischen den Parametern, da ist es kein Problem:
    format(query, sizeof(query), "UPDATE accounts SET Geld='%i',Level='%i',Adminlevel='%i',IP='%i',Banned='%i',Bangrund='%i',Banadmin='%s',Fraktion='%i',Rang='%i',FPunkte='%i' WHERE Name='%s'",
    GetPlayerMoney(playerid), GetPlayerScore(playerid), SpielerInfo[playerid][pAdminlevel], SpielerInfo[playerid][pIP], SpielerInfo[playerid][pBanned],
    SpielerInfo[playerid][pBangrund], SpielerInfo[playerid][pBanadmin], SpielerInfo[playerid][pFraktion], SpielerInfo[playerid][pRang], SpielerInfo[playerid][pFscheinPunkte], NamePlayer(playerid));
    mysql_tquery(mysqlHandle, query);

    @[GeD]Max:
    Das playerid in der Klammer beim public StatsUpdateTimer kann weg, das brauchst du nicht.
    Dann zu deinem Problem: Es ist ja generell nicht verboten einen Timer mit 300ms zu machen, aber einen Timer der mehr als 3x pro Sekunde MAX_PLAYERS * MAX_PLAYERS (!), das werden wohl noch die 500 sein, durchgeht und zwischen 250000 und 1000000 (je nach dem ob das else-if aufgerufen wird) Anfragen an die Datenbank schickt, dass ist dann doch ein klein bisschen sehr viel zu viel.


    Selbst wenn du eine der beiden Schleifen weg machst (was ja an sich schonmal Sinn macht, da du ja sonst jeden Spieler MAX_PLAYERS mal aktualisierst), werden noch zwischen 500 und 1000 Anfragen gesendet, pro Sekunde also mehr als 1500 - 3000 Anfragen, das ist immer noch viel zu viel. Mach das mit dem MySQL Zeugs da weg, und nimm eine Variable, die du beim Login auf 1 setzt, so weißt du ob der Spieler ein Konto hat oder nicht, und mach auf jeden Fall eine der beiden Schleifen weg.


    @FerienFreak:
    Wer auch immer dir gesagt hat, dass es besser ist alles in eine Zeile zu schreiben gehört geschlagen (sorry, ist aber so ;) ). Unter Programmieren gilt allgemein eine ungeschriebene Regel: Eine Anweisung pro Zeile.
    An der Performance ändert es nämlich gar nichts, im Gegenteil, du kannst es nur nicht mehr lesen.
    ocmd:punkte(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,2))return SendClientMessage(playerid,ROT,"Du bist nicht beim Ordnungsamt!");
    new pID,reason[64],string[144],punkte;
    if(sscanf(params,"uis[64]",pID,punkte,reason))return SendClientMessage(playerid,GELB,"Tippe: /punkte [ID][Anzahl][Grund]");
    format(string,144,"Ordnungsbeamter %s hat dir %d Strafpunkte eingetragen! Grund: %s",NamePlayer(playerid),punkte,reason);
    SendClientMessage(pID,BLUTROT,string);
    format(string,144,"Du hast %s %d Strafpunkte eingetragen! Grund: %s",NamePlayer(pID),punkte,reason);
    SendClientMessage(playerid,BABYBLAU,string);
    format(string,144,"(( HQ: %s hat %s %d Strafpunkte eingetragen! Grund: %s ))",NamePlayer(playerid),NamePlayer(pID),punkte,reason);
    for(new i;i<GetMaxPlayers();i++)
    {
    if(!IsPlayerConnected(i) || SpielerInfo[i][pFraktion] != SpielerInfo[playerid][pFraktion])continue;
    SendClientMessage(i,BLAU,string);//244
    }
    SpielerInfo[pID][pFscheinPunkte]+=punkte;
    SpielerSpeichern(pID);
    return 1;
    }


    ocmd:clearpunkte(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,2))return SendClientMessage(playerid,ROT,"Du bist nicht beim Ordnungsamt!");
    if(SpielerInfo[playerid][pRang] < 5)return SendClientMessage(playerid,ROT,"Du bist nicht Rank 5!");
    new pID,reason[64],string[144],punkte;
    if(sscanf(params,"uis[64]",pID,punkte,reason))return SendClientMessage(playerid,GELB,"Tippe: /clearpunkte [ID][Anzahl][Grund]");
    format(string,144,"Ordnungsbeamter %s hat dir %d Strafpunkte gelöscht! Grund: %s",NamePlayer(playerid),punkte,reason);
    SendClientMessage(pID,BLUTROT,string);
    format(string,144,"Du hast %s %d Strafpunkte gelöscht! Grund: %s",NamePlayer(pID),punkte,reason);
    SendClientMessage(playerid,BABYBLAU,string);
    format(string,144,"(( HQ: %s hat %s %d Strafpunkte gelöscht! Grund: %s ))",NamePlayer(playerid),NamePlayer(pID),punkte,reason);
    for(new i;i<GetMaxPlayers();i++)
    {
    if(!IsPlayerConnected(i) || SpielerInfo[i][pFraktion] != SpielerInfo[playerid][pFraktion])continue;
    SendClientMessage(i,BLAU,string);//259
    }
    SpielerInfo[pID][pFscheinPunkte]-=punkte;
    SpielerSpeichern(pID);
    return 1;
    }

    Die Autos werden dadurch möglicherweise nicht gespeichert, da das query nicht ausgeführt wird, wenn Syntaxfehler vorhanden sind (die ja zwangsläufig entstehen, wenn es nicht komplett ist).
    Es sei denn es sind noch andere Fehler im query.

    Scheint so, als wird das guide Menü nicht richtig erstellt. Wie du siehst, ist das Menü, das du verlässt die ID 4 und guide ist dir ID 0.
    Was mich wundert ist, dass es beim Auswählen geht. Poste mal, wie du das guide Menü erstellst.


    Kannst ja nebenbei auch zuerst mal selbst versuchen, ob du es hinbekommst, dass die beiden Nummern hinten gleich sind.


    Wurdest du jetzt eigentlich entfreezt?