Beiträge von Red_Romeo

    Nach einem Restart werden alle Werte resettet.


    Desweiterem funktioniert dein System bisher so:
    Spieler 1: connected.
    Spieler 2: connected.
    Spieler 1: disconnected.
    Spieler 2: reconnected und Spawn an der Stelle wo sich Spieler 1 ausgeloggt hat.


    Du musst die Daten bei OnPlayerDisconnect/OnGameModeExit speichern und löschen und beim Login laden




    //edit


    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    new filnemae[64], name[MAX_PLAYER_NAME], Float:pX, pY, pZ;
    GetPlayerName(playerid, name, sizeof(name));
    format(filename, sizeof(filename), "Pfad/%s.???", name);
    GetPlayerPos(playerid, pX, pY, pZ);
    dini_FloatSet(filename, "logoutx", pX);
    dini_FloatSet(filename, "logouty", pY);
    dini_FloatSet(filename, "logoutz", pZ);
    dini_IntSet(filename, "interior", GetPlayerInterior(playerid));
    }
    return 1;
    }


    if(pInfo[playerid][pSpawn] == 1)
    {
    SetTimerEx("SpielerUnfreeze", 5000, 0, "playerid", playerid);
    FreezePlayer(playerid);

    new filnemae[64], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    format(filename, sizeof(filename), "Pfad/%s.???", name);
    SetPlayerPos(playerid,dini_Float(filename, "logoutx"),dini_Float(filename, "logouty"),dini_Float(filename, "logoutz"));
    SetPlayerInterior(playerid,dini_Int(filename, "interior"));
    }

    Hier aktualisierst du die Koordinaten
    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    pInfo[playerid][pInterior] = GetPlayerInterior(playerid);

    GetPlayerPos(playerid, pX, pY, pZ);
    pInfo[playerid][pTx] = pX;
    pInfo[playerid][pTy] = pY;
    pInfo[playerid][pTz] = pZ;
    }
    return 1;
    }
    aber du speicherst Sie nicht in der Datenbank oder in einer Datei ab.
    Dementsprechend werden die Daten nach einem restart nicht geladen.


    //edit1 bzw. lädst du die Daten überhaupt nach einem restart/wenn man sich einloggt ?
    //edit2 Und welche Speicherart verwendest du ?

    ocmd:schranke(playerid)
    {
    if(!IsPlayerInFrac(playerid, 24))return SendClientMessage(playerid, -1, "Du bist nicht in der Fraktion");
    static bool:schrankeStatus;
    if(!schrankeStatus)MoveDynamicObject(meineSchranke, 2255.72876, 2032.46387+0.05, 10.78,0.10,0,0,0); //auf
    else MoveDynamicObject(meineSchranke, 2255.72876, 2032.46387, 10.78,0.10,0,90,0); //Zu
    schrankeStatus = !schrankeStatus;
    return 1;
    }

    Dafür musst du den Code unter OnPlayerStateChange oder OnPlayerExitVehicle ändern.
    Dort müsstest du soetwas (StopAudioStreamForPlayer(playerid);) entfernen, damit der Stream weiter läuft.
    Falls du nicht weißt was du entfernen muss Poste den mal den Code.

    Hast du mal deinen Code mit meinem verglichen ...?
    Siehst du in meinem Code in irgendeinem Timer oder forward wo ein Parameter übergeben wird ? Ich nicht!

    ???
    Wie soll dieser Timer SetTimer("TresorTuer", 1000*60*1, false); dieses public Aufrufen ?public TransportGmbH(playerid)

    Du hast nun 3 Möglichkeiten dein Problem zu lösen:
    Möglichkeit 1

    forward TransportGmbH(playerid);
    zu
    forward TransportGmbH();
    _________________________________________________________________
    public TransportGmbH(playerid);
    zu
    public TransportGmbH()
    _________________________________________________________________
    SetTimer("TresorTuer", 1000*60*1, false);
    zu
    SetTimer("TransportGmbH", 1000*60*1, false);
    Möglichkeit 2

    forward TransportGmbH(playerid);
    zu
    forward TresorTuer();
    _________________________________________________________________
    public TransportGmbH(playerid)
    zu
    public TresorTuer()
    Möglichkeit 3

    Alles löschen und den Code erneut einfügen
    new sprenung;
    new trsodoor;

    Möglichkeit 3
    public OnGameModeInit(){
    trsodoor = CreateObject(2634, 1551.63159, -1801.69556, 26.47590, 0.00000, 0.00000, 0.00000);//tresortür
    return 1;
    }

    Möglichkeit 3
    forward Explosion();
    public Explosion()
    {
    CreateExplosion(1551.63159, -1801.69556, 26.47590, 0, 3);
    DestroyObject(sprenung);
    DestroyObject(trsodoor);
    sprenung = -1;
    trsodoor = -1;
    SetTimer("TresorTuer", 1000*60*3, false);
    return 1;
    }

    Möglichkeit 3
    forward TresorTuer();
    public TresorTuer(){
    if(IsValidObject(trsodoor))return 1;
    trsodoor = CreateObject(2634, 1551.63159, -1801.69556, 26.47590, 0.00000, 0.00000, 0.00000);
    return 1;
    }

    Möglichkeit 3
    ocmd:transporttresorsprengen(playerid,params[])
    {
    if(IsValidObject(sprenung))return SendClientMessage(playerid, -1, "Die Tür wird bereits gesprengt.");
    if(!IsValidObject(trsodoor))return SendClientMessage(playerid, -1, "Die Tür steht offen.");
    sprenung=CreateObject(1654, 1550.78955, -1801.41882, 26.45240, 0.00000, 0.00000, -180.00000);
    SendClientMessage(playerid,-1,"Achtung geht in Deckung das TNT geht in 2 sekunden hoch!");
    SetTimer("Explosion", 2000, false);
    return 1;
    }


    //edit Besser Formatiert

    @Jorska: Hast du auch das Public im Script ?


    public SpielerinnaeheTextZwei(Float:radi, Float:x, Float:y, Float:z, string[],col1,col2,col3,col4,col5)
    {
    return 1;
    }


    //edit bzw. wenn es eine Abfrage werden soll brauchst du kein forward sondern einen 'stock'
    Wie soll die Funktion den Funktionieren, bzw. was soll Sie machen ?

    public OnPlayerCommandText(playerid, cmdtext[]){
    if (strcmp("/cuff", cmdtext, true, 5) == 0){
    SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CUFFED);
    SetPlayerAttachedObject(playerid, 0, 19418, 6, -0.011000, 0.028000, -0.022000, -15.600012, -33.699977, -81.700035, 0.891999, 1.000000, 1.168000);
    // Do something here
    return 1;
    }
    return 0;
    }

    Lies doch mal dein Anderes Thema durch! Da habe ich dir schon geantwortet bevor du dieses Thema erstellt hast!
    http://forum.sa-mp.de/gta-mult…2104-problem-mit-command/



    //edit malE war schneller :D

    for(new player = 0; player <= GetPlayerPoolSize(); player++){
    if(!IsPlayerConnected(player))continue;
    if(!IsPlayerInAnyVehicle(player))continue;
    if(IsPlayerInVehicle(player, veh)){
    //Was soll passieren wenn der Spieler im Fahrzeug ist ?
    }
    }

    if(listitem ==0)
    {
    new veh = GetPlayerVehicleID(playerid);
    if(dialogid==DIALOG_BUSFAHRER)
    {
    for(new i = 0; i<sizeof(bus); i++)
    {
    if(veh == bus[i])
    {
    Busfahrer[playerid][bus_Route] = 0;
    Busfahrer[playerid][bus_Checkpoint]=0;
    Busfahrer[playerid][bus_Aktiv]=true;
    new route = Busfahrer[playerid][bus_Route];
    SetPlayerCheckpoint(playerid,Bus_Stationen[route][0][b_x],Bus_Stationen[route][0][b_y],Bus_Stationen[route][0][b_z],Bus_Stationen[route][0][b_g]);
    SendClientMessage(playerid,0xFFFF00FF,"Du hast den Dienst als Busfahrer begonnen!");
    SendClientMessage(playerid,0xFFFF00FF,"Fahre nun die Checkpoint's ab!");
    Busfahrer[playerid][bust] = 10;
    Update3DTextLabelText(Busl[i], Blau, "LS 1");//i und nich veh
    return 1;
    }
    }
    }
    }

    Probier das mal:



    for(new veh = 0; veh < sizeof(bus); veh++){
    if(bus[veh] != GetPlayerVehicleID(playerid))continue;
    Update3DTextLabelText(Busl[veh], Blau, "LS 1.");
    break;
    }


    //edit Sonst zeig mal bitte wie du deine Busse erstellst.

    new sprenung;
    new trsodoor ;


    public OnGameModeInit(){
    trsodoor = CreateObject(2634, 1551.63159, -1801.69556, 26.47590, 0.00000, 0.00000, 0.00000);//tresortür
    return 1;
    }


    forward Explosion();
    public Explosion()
    {
    CreateExplosion(1551.63159, -1801.69556, 26.47590, 0, 3);
    DestroyObject(sprenung);//tnt
    DestroyObject(trsodoor);//tresortür
    sprenung=-1;//tnt
    trsodoor = -1;
    SetTimer("TresorTuer", 1000*60*3, false);
    return 1;
    }


    forward TresorTuer();
    public TresorTuer(){
    if(IsValidObject(trsodoor))return 1;
    trsodoor = CreateObject(2634, 1551.63159, -1801.69556, 26.47590, 0.00000, 0.00000, 0.00000);//tresortür
    return 1;
    }


    ocmd:transporttresorsprengen(playerid,params[])
    {
    if(IsValidObject(sprenung))return SendClientMessage(playerid, -1, "Die Tür wird bereits gesprengt.");
    if(!IsValidObject(trsodoor))return SendClientMessage(playerid, -1, "Die Tür steht offen.");
    sprenung=CreateObject(1654, 1550.78955, -1801.41882, 26.45240, 0.00000, 0.00000, -180.00000);//tnt
    SendClientMessage(playerid,-1,"Achtung geht in Deckung das TNT geht in 2 sekunden hoch!");
    SetTimer("Explosion", 2000, false);
    return 1;
    }


    //edit1 Abfrage hinzugefügt ob die Tür existiert
    //edit2 Abfrage hinzugefügt ob die Tresortür bereits gesprengt wird
    //edit3 Hatte vergessen an einer stelle die Objectid einzutragen :)
    //edit4 CreateExplosion hinzugefüt

    Ungetestet, sollte aber funktionieren.


    ocmd:carrespawn(playerid, params[]){
    if(SpielerInfo[playerid][Adminlevel] < 5)return SendClientMessage(playerid,ROT,"Du darfst diesen Befehl nicht verwenden.");
    for(new veh = 1; veh <= GetVehiclePoolSize(); veh++){
    if(!IsValidVehicle(veh))continue;
    for(new player = 0; player <= GetPlayerPoolSize()+1; player++){
    if(player == GetPlayerPoolSize()+1)SetVehicleToRespawn(veh);
    if(!IsPlayerConnected(player))continue;
    if(!IsPlayerInAnyVehicle(player))continue;
    if(IsPlayerInVehicle(player, veh))break;
    }
    }
    new string[128];
    format(string,sizeof(string),"Alle unbenutzen Fahrzeuge wurden von %s respawnet!",GetName(playerid));
    SendClientMessageToAll(ROSA,string);
    Adminlog(string);
    return 1;
    }


    Solltest du einen Fehler wegen diesem (IsValidVehicle) befehl haben so füge folgendes oben ins Script ein.
    native IsValidVehicle(vehicleid);

    Du benötigst diesen (https://wiki.sa-mp.com/wiki/CreatePickup) Befehl um Pickups zu erstellen.
    Abfragen ob er Enter drückt kannst du mit diesem (http://wiki.sa-mp.com/wiki/OnPlayerKeyStateChange) Callback,
    dort musst du dann Abfragen ob er die Taste (KEY_SECONDARY_ATTACK) drückt.


    Um das Tor zu erstellen benötigst du diesen (https://wiki.sa-mp.com/wiki/CreateObject) Befehl,
    um anschliesend abzufragen ob er H (KEY_CTRL_BACK) drückt benötigst du wieder dieses (http://wiki.sa-mp.com/wiki/OnPlayerKeyStateChange) Callback.


    Alles Keys findest du hier (http://wiki.sa-mp.com/wiki/Keys).