Beiträge von Jeffry

    Versuche es so:
    new Spieler[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname,sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Accounts/%s.txt",Sname);
    new skin = GetPVarInt(playerid,"Skin");
    SetPlayerSkin(playerid, skin);
    if(IstSpielerInFraktion(playerid,0)) // ZIVI SPAWN
    {
    SetSpawnInfo(playerid,0,skin,1766.2850,-1895.8571,13.5629,273.2245,0,0,0,0,0,0);
    SpawnPlayer(playerid);
    SetPlayerColor(playerid, weiß);
    return 1;
    }
    if(IstSpielerInFraktion(playerid,2)) //LSPD SPAWN
    {
    SetPlayerPos(playerid,1535.9575,-1623.2018,13.3828);
    SetPlayerColor(playerid, blau);
    SendClientMessage(playerid,blau,"Du bist beim LSPD gespawnt!");
    return 1;
    }
    return 1;

    Da haben wir doch den Fehler. Du hast ein public in der Funktion stehen.
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_GUTSCHEIN)
    {
    if(!response)return 1;
    if(!inputtext[0]) return ocmd_gutschein(playerid);
    new code[40];
    format(code, sizeof(code), "/codes/%s.txt", inputtext);
    if(!fexist(code)) return SendClientMessage(playerid, 0xFF0000FF, "Code existiert nicht.");
    new typ = dini_Int(code, "typ");
    new wert = dini_Int(code, "wert");
    new str[50];
    switch(typ)
    {
    case 1:
    {
    GivePlayerMoney(playerid, wert);
    format(str,sizeof(str),"Code eingelöst: %i$ bekommen.",wert);
    SendClientMessage(playerid,-1,str);
    }
    case 2:
    {
    PlayerInfo[playerid][pExp] = wert;
    format(str,sizeof(str),"Code eingelöst: %i Respektpunkte bekommen.",wert);
    SendClientMessage(playerid,-1,str);
    }
    case 3:
    {
    PlayerInfo[playerid][pDonateRank] = wert;
    format(str,sizeof(str),"Code eingelöst: Du hast Premium Level %i bekommen.",wert);
    SendClientMessage(playerid,-1,str);
    }
    case 4:
    {
    PlayerInfo[playerid][pAllowNeon] = 1;
    SendClientMessage(playerid,-1,"Code eingelöst: Du hast einen Neon Gutschein eingelöst.");
    ShowPlayerDialog(playerid, DIALOG_GUTSCHEINCARTAKE, DIALOG_STYLE_LIST, "Autoauswahl - Gutscheinsystem","~>~ Neon Fahrzeug ~<~\n","Auswählen", "Schlissen");
    }
    }
    fremove(code);
    }
    return 1;
    }
    Das hast du in der Funktion stehen.
    Ändere das zu:
    if(dialogid == DIALOG_GUTSCHEIN)
    {
    if(!response)return 1;
    if(!inputtext[0]) return ocmd_gutschein(playerid);
    new code[40];
    format(code, sizeof(code), "/codes/%s.txt", inputtext);
    if(!fexist(code)) return SendClientMessage(playerid, 0xFF0000FF, "Code existiert nicht.");
    new typ = dini_Int(code, "typ");
    new wert = dini_Int(code, "wert");
    new str[50];
    switch(typ)
    {
    case 1:
    {
    GivePlayerMoney(playerid, wert);
    format(str,sizeof(str),"Code eingelöst: %i$ bekommen.",wert);
    SendClientMessage(playerid,-1,str);
    }
    case 2:
    {
    PlayerInfo[playerid][pExp] = wert;
    format(str,sizeof(str),"Code eingelöst: %i Respektpunkte bekommen.",wert);
    SendClientMessage(playerid,-1,str);
    }
    case 3:
    {
    PlayerInfo[playerid][pDonateRank] = wert;
    format(str,sizeof(str),"Code eingelöst: Du hast Premium Level %i bekommen.",wert);
    SendClientMessage(playerid,-1,str);
    }
    case 4:
    {
    PlayerInfo[playerid][pAllowNeon] = 1;
    SendClientMessage(playerid,-1,"Code eingelöst: Du hast einen Neon Gutschein eingelöst.");
    ShowPlayerDialog(playerid, DIALOG_GUTSCHEINCARTAKE, DIALOG_STYLE_LIST, "Autoauswahl - Gutscheinsystem","~>~ Neon Fahrzeug ~<~\n","Auswählen", "Schlissen");
    }
    }
    fremove(code);
    return 1;
    }

    Anhand dem Log sehe ich aber nicht, dass das Feuer erneut gestartet wird.
    Was mir allerdings aufgefallen ist:
    [01:26:18] Spieler 0: fwduty: 1
    [01:26:18] Erstelle Feuer.
    [01:27:10] DUTYCHANGEOFF: Spieler 1 -> 0


    1. Meldung: Spieler ist playerid = 0
    3. Meldung: Spieler ist playerid = 1


    => Er erkennt Spieler 0 als OnDuty, du bist aber ID 1 gewesen. Wer ist Spieler ID 0?

    Eigentlich passt es dann.
    Schreibe es so, und poste dann was im Server Log steht:
    public Bustimer(playerid)
    {
    new playercp = Busfahrer[playerid][bus_Checkpoint];
    new route = Busfahrer[playerid][bus_Route];
    printf("BusTimer: %d", playerid);
    if(IsPlayerInRangeOfPoint(playerid,2.5,Bus_Stationen[route][playercp][bus_x],Bus_Stationen[route][playercp][bus_y],Bus_Stationen[route][playercp][bus_z]))
    {
    printf("InRange: %d", Busfahrer[playerid][bust]);
    if(Busfahrer[playerid][bust] > 0)
    {
    KillTimer(buswt[playerid]);
    buswt[playerid] = SetTimerEx("Bustimer",1000,false,"i",playerid);
    new string[20];
    PlayerTextDrawHide(playerid,Textdraw0);
    format(string,sizeof(string),"Haltestelle %d/10",Busfahrer[playerid][bust]);
    PlayerTextDrawSetString(playerid,Textdraw0, string);
    PlayerTextDrawShow(playerid,Textdraw0);
    Busfahrer[playerid][bust] --;
    return 1;
    }
    else
    {
    printf("playercp: %d | sizeof-1: %d", playercp, sizeof(Bus_Stationen[])-1);
    if(playercp == sizeof(Bus_Stationen[])-1)
    {
    printf("Route beendet.");
    DisablePlayerCheckpoint(playerid);
    KillTimer(buswt[playerid]);
    PlayerTextDrawHide(playerid,Textdraw0);
    new veh = GetPlayerVehicleID(playerid);
    SetVehicleToRespawn(veh);
    if(route == 0)
    {
    new string[128],skill = randomEx(1, 2);
    format(string,sizeof(string),"Du hast deine Route beendet, 1750€ und %d Bus-EXP erzhalten!",skill);
    SendClientMessage(playerid,0x33CCFFAA,string);
    GivePlayerMoney(playerid, 1750);
    Busfahrer[playerid][bus_Aktiv]=false;
    sInfo[playerid][busskill] += skill;
    Checkbuslevel(playerid);
    return 1;
    }
    else if(route == 1)
    {
    new string[128],skill = randomEx(1, 3);
    format(string,sizeof(string),"Du hast deine Route beendet, 2750€ und %d Bus-EXP erhalten!",skill);
    SendClientMessage(playerid,0x33CCFFAA,string);
    GivePlayerMoney(playerid, 2750);
    Busfahrer[playerid][bus_Aktiv]=false;
    sInfo[playerid][busskill] += skill;
    Checkbuslevel(playerid);
    return 1;
    }

    }
    else
    {
    printf("Nächster CP.");
    DisablePlayerCheckpoint(playerid);
    KillTimer(buswt[playerid]);
    Busfahrer[playerid][bus_Checkpoint]++;
    new playercp1 = Busfahrer[playerid][bus_Checkpoint];
    PlayerTextDrawHide(playerid,Textdraw0);
    SendClientMessage(playerid,0xFFFF00FF,"Auf zur nächsten Haltestelle!");
    SetPlayerCheckpoint(playerid,Bus_Stationen[route][playercp1][bus_x],Bus_Stationen[route][playercp1][bus_y],Bus_Stationen[route][playercp1][bus_z],Bus_Stationen[route][playercp1][bus_g]);
    Busfahrer[playerid][bust] = 10;
    return 1;
    }
    }
    }
    else
    {
    KillTimer(buswt[playerid]);
    buswt[playerid] = SetTimerEx("Bustimer",1000,false,"i",playerid);
    Busfahrer[playerid][bust] = 10;
    PlayerTextDrawHide(playerid,Textdraw0);
    return 1;
    }
    return 1;
    }

    ocmd:efa(playerid,params[])
    {
    new str[128],Spielerdatei[64],frakname[25],vID,color1,color2,frakt,Float:fxpos,Float:fypos,Float:fzpos,Float:fapos,spielername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,spielername,sizeof(spielername));
    if(IsPlayerConnected(playerid))
    if(IsPlayerAdminLevel(playerid, 3))
    {
    if(GetPVarInt(playerid,"loggedin") == 0)return SendClientMessage(playerid,Grau,"Bitte logge dich zuerst ein.");
    if(sscanf(params,"dddd",vID,color1,color2,frakt))return SendClientMessage(playerid,Grau,"Benutze: /efa [VehicleID] [Farbe 1] [Farbe 2] [Fraktion]");
    if(frakt < 1 || frakt > 6)return SendClientMessage(playerid,Grau,"Diese Fraktion existiert nicht! (1-6)");
    if(color1 < 0 || color1 > 255)return SendClientMessage(playerid,Grau,"Diese Farb ID existiert nicht! (0-255)");
    if(color2 < 0 || color2 > 255)return SendClientMessage(playerid,Grau,"Diese Farb ID existiert nicht! (0-255)");
    if(vID < 400 || vID > 611)return SendClientMessage(playerid,Grau,"Diese Fahrzeug ID existiert nicht! (400-611)");
    if(frakt == 1) { frakname = "RussenMafia"; }
    else if(frakt == 2) { frakname = "LVPD"; }
    else if(frakt == 3) { frakname = "Triaden"; }
    else if(frakt == 4) { frakname = "CNNNews"; }
    else if(frakt == 5) { frakname = "Hitman"; }
    else if(frakt == 6) { frakname = "Sanitäter"; }
    for(new fc;fc<sizeof(FactionCars);fc++)
    {
    if(FactionCars[fc][fcarid] != 0) continue;
    FactionCars[fc][fcarid] = 1 + random(10000000);
    GetPlayerPos(playerid,fxpos,fypos,fzpos); GetPlayerFacingAngle(playerid,fapos);
    format(Spielerdatei,sizeof(Spielerdatei),"/FraktionAutos/%d.txt",fc);
    dini_Create(Spielerdatei);
    FactionCars[fc][fvehid] = vID;
    FactionCars[fc][fcolor1] = color1;
    FactionCars[fc][fcolor2] = color2;
    FactionCars[fc][xpos] = fxpos;
    FactionCars[fc][ypos] = fypos;
    FactionCars[fc][zpos] = fzpos;
    FactionCars[fc][apos] = fapos;
    FactionCars[fc][ffrak] = frakt;
    format(FactionCars[fc][fplate],25,frakname);
    SetVehicleNumberPlate(CreateVehicle(vID,fxpos,fypos,fzpos,fapos,color1,color2,-1),FactionCars[fc][fplate]);
    SaveCar();
    SendClientMessage(playerid,Grün,"Fahrzeug erfolgreich erstellt.");
    SendClientMessage(playerid,Weiss,"Vergiss es nicht mit /fpark zu parken.");
    format(str,sizeof(str),"[AdmCmd]: %s %s hat ein Fahrzeug (%d) für die Fraktion %s erstellt.",Adminrang(playerid),spielername,vID,frakname);
    printf("%s",str);
    return true;
    }
    }
    return 1;
    }


    stock SaveCar()
    {
    new Spielerdatei[64],frakt;
    for(new fc;fc<sizeof(FactionCars);fc++)
    {
    format(Spielerdatei,sizeof(Spielerdatei),"/FraktionAutos/%d.txt",fc);
    dini_IntSet(Spielerdatei,"VehicleID",FactionCars[fc][fvehid]);
    dini_IntSet(Spielerdatei,"VehicleColour1",FactionCars[fc][fcolor1]);
    dini_IntSet(Spielerdatei,"VehicleColour2",FactionCars[fc][fcolor2]);
    dini_IntSet(Spielerdatei,"FrakID",FactionCars[fc][ffrak]);
    dini_IntSet(Spielerdatei,"fcarid",FactionCars[fc][fcarid]);
    dini_FloatSet(Spielerdatei,"VehicleX",FactionCars[fc][xpos]);
    dini_FloatSet(Spielerdatei,"VehicleY",FactionCars[fc][ypos]);
    dini_FloatSet(Spielerdatei,"VehicleZ",FactionCars[fc][zpos]);
    dini_FloatSet(Spielerdatei,"VehicleA",FactionCars[fc][apos]);
    dini_Set(Spielerdatei,"Numberplate",FactionCars[fc][fplate]);
    }
    return 1;
    }
    stock LoadCar()
    {
    new Spielerdatei[64],frakt;
    for(new fc;fc<sizeof(FactionCars);fc++)
    {
    format(Spielerdatei,sizeof(Spielerdatei),"/FraktionAutos/%d.txt",fc);
    FactionCars[fc][fvehid] = dini_Int(Spielerdatei,"VehicleID");
    FactionCars[fc][fcolor1] = dini_Int(Spielerdatei,"VehicleColour1");
    FactionCars[fc][fcolor2] = dini_Int(Spielerdatei,"VehicleColour2");
    FactionCars[fc][xpos] = dini_Float(Spielerdatei,"VehicleX");
    FactionCars[fc][ypos] = dini_Float(Spielerdatei,"VehicleY");
    FactionCars[fc][zpos] = dini_Float(Spielerdatei,"VehicleZ");
    FactionCars[fc][apos] = dini_Float(Spielerdatei,"VehicleA");
    format(FactionCars[fc][fplate], 25, dini_Get(Spielerdatei,"Numberplate"));
    FactionCars[fc][ffrak] = dini_Int(Spielerdatei,"FrakID");
    FactionCars[fc][fcarid] = dini_Int(Spielerdatei,"fcarid");
    SetVehicleNumberPlate(CreateVehicle(FactionCars[fc][fvehid],FactionCars[fc][xpos],FactionCars[fc][ypos],FactionCars[fc][zpos],FactionCars[fc][apos],FactionCars[fc][fcolor1],FactionCars[fc][fcolor2],-1),FactionCars[fc][fplate]);
    }
    return 1;
    }


    Versuche es so.

    Ändere mal
    if(Busfahrer[playerid][bust] > 0)
    zu:
    if(Busfahrer[playerid][bust] < 9)


    und:
    Busfahrer[playerid][bust] --;
    zu:
    Busfahrer[playerid][bust] ++;
    Und setze es vor das format.

    In OnPlayerSpawn:
    SetPVarInt(playerid,"Skin",skin);
    zu:
    SetPVarInt(playerid,"Skin",skin);
    SetPlayerSkin(playerid, skin);


    Wenn das nichts hilft, poste die Register Funktion.

    Aber bei der Definition von "nicht dürfen" würdest du es verbieten.


    Öh, der Compiler "verbietet" es so gesehen :P


    Wie dem auch sei, sagen wir so: Um die Funktionsfähigkeit des Codes zu garantieren darf man direkt nach einer if-Abfrage kein Semikolon haben ^^

    Schick mir doch in PN mal deine TeamViewer Daten, ich will mir das mal kurz selbst anschauen, vielleicht lässt sich etwas umbiegen.



    EDIT:
    Erledigt.
    Er hat ShowLoginOrRegisterDialog mit einem Timer aufgerufen, allerdings mit SetTimer anstatt SetTimerEx.


    TheOneBehindYou1: Setze den Thread bitte noch auf erledigt. Danke :)

    Wenn du noch etwas warten kannst, dann warte bis Ende nächster Woche, dann kann ich das auf dini umschreiben und dazu ein Tutorial posten, das hatte ich ja im Threads bereits zugesagt, bin bis jetzt aber noch nicht dazu gekommen.

    Ouuhh, das bezieht sich gar nicht auf einen Spieler. Ja, dann ist es klar.
    Du arbeitest mit PVars, das geht nicht. Die funktionieren nur für Spieler und nur wenn diese online sind.


    Schau dir mal mein Tutorial an: [ SCRIPTING ] [jTuT] Fraktions-Fahrzeug-System mit MySQL R39-2
    Das bezieht sich zwar auf MySQL, aber das kannst du ziemlich ähnlich auch mit dini machen (cache Funktionen -> dini).


    Weil ich kann dir da kaum erklären was falsch ist, da das ganze Vorhaben so nicht klappen wird.