Beiträge von 5Gum

    stock VehicleOccupied(vehicleid)
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerInVehicle(i,vehicleid)) return 1;
    }
    return 0;
    }


    Wenn das ein stock ist, muss man auch stock vorschreiben, und nicht public :thumbup:

    public OnPlayerRequestClass(playerid, classid)
    {
    new skin,Spielerdatei[64];
    skin = dini_Int(Spielerdatei,"Skin");
    SetSpawnInfo(playerid,0,skin,-326.2475,1079.6031,19.7422,0,0,0,0,0,0,0);
    SpawnPlayer(playerid);
    return 1;
    }
    Versuch das mal.

    Kannst es bei OnPlayerRequestClass ja mal ändern, irgendeinen von den ersten beiden Nullen ist das.


    Zu den Bool:
    Ich zeige dir das Bool mal anhand eines Beispieles:
    new bool:baum;


    if(baum == false)
    {
    baum = true;
    }
    else
    {
    baum = false;
    }
    So, du kannst mit einem bool eine Variable nur auf true/false stellen. Möchtest du eine Variable aber z.B. auf 3 stellen, dann bekommst du einen Error, dann musst du das bool: weglassen.
    new baum;
    if(baum == 0)
    {
    baum = 1;
    }
    else if(baum == 1)
    {
    baum = 2;
    }
    else if(baum == 2)
    {
    baum = 3;
    }
    Das würde alles ohne ein bool gehen, mit einem bool aber nicht, da du das bool nicht über 1 setzen kannst.
    Ich hoffe ich konnte dir helfen. Wenn nicht, so melde dich bitte noch einmal ;)

    Versuch das mal so:
    MoveDynamicObject(marctor,6,-952, 2707.8000488281, 47.799999237061-10);


    "-10" ist die Reichweite, die nach unten in den Boden gehen soll. Ich habe nach den ersten Parameter eine "6" hingeschrieben, für die Geschwindigkeit. Wenn dies Error verursacht, musst du am Ende einfach eine "0" anhängen.

    Du hast das bestimmt mit SetTimerEx angeschaut. Dort hast du bestimmt Parameter vergessen.
    SetTimerEx("NAME",MILLISEKUNDEN,true/false,"d",playerid);
    Das ist nun ein Beispiel. Das funktioniert genauso wie SetTimer außer die beiden Parameter am Ende sind dazu gekommen.
    (Offtopic: Funktioniert Google bei euch?^^).

    Und das bringt was?
    Wenn das Tor sich nicht mal nach unten bewegt, dann wird das nicht am Timer liegen.


    COMMAND:marctor(playerid,params[])
    {
    print("1");
    MoveDynamicObject(marctor,-952, 2707.8000488281, 47.799999237061, 0, 0, 6);
    print("2");
    SetTimer("Closemarctor", 5000, 0);
    print("3");
    SendClientMessage(playerid, 0xBC0000C8,"Willkommen Zuhause Marc !");
    print("4");
    return 1;
    }
    forward Closemarctor();
    public Closemarctor()
    {
    MoveDynamicObject(marctor,-952, 2707.8000488281, 45.799999237061, 0, 0, 6);
    return 1;
    }
    Mach das so mal, starte den Server neu, und versuch das noch einmal. Das wird jetzt zwar nicht gehen, aber dann schau mal in der Konsole, welche Zahlen drin stehen.

    1:
    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    dini_IntSet(Spielerdatei,"Level",GetPlayerScore(playerid));
    dini_IntSet(Spielerdatei,"Geld",GetPlayerMoney(playerid));
    dini_IntSet(Spielerdatei,"Skin",GetPlayerSkin(playerid));
    dini_IntSet(Spielerdatei,"Paytime",GetPVarInt(playerid,"Paytime"));
    dini_IntSet(Spielerdatei,"Wantedlevel",GetPlayerWantedLevel(playerid));
    dini_IntSet(Spielerdatei,"Fraktion",GetPVarInt(playerid,"Fraktion"));
    dini_IntSet(Spielerdatei,"Fraktionsrang",GetPVarInt(playerid,"Fraktionsrang"));
    dini_IntSet(Spielerdatei,"Adminlevel",GetPVarInt(playerid,"Adminlevel"));
    dini_IntSet(Spielerdatei,"Job",GetPVarInt(playerid,"Job"));
    dini_IntSet(Spielerdatei,"JobAktiv",0);
    dini_IntSet(Spielerdatei,"JobBisPayday",GetPVarInt(playerid,"JobBisPayday"));
    dini_IntSet(Spielerdatei,"Knast",GetPVarInt(playerid,"Knast"));
    dini_IntSet(Spielerdatei,"KnastTime",GetPVarInt(playerid,"KnastTime"));
    dini_IntSet(Spielerdatei,"aKnast",GetPVarInt(playerid,"aKnast"));
    dini_IntSet(Spielerdatei,"Baned",GetPVarInt(playerid,"Baned"));
    dini_IntSet(Spielerdatei,"timeban",GetPVarInt(playerid,"timeban"));
    }
    return 1;
    }


    stock LoadAccount(playerid)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",name);
    SetPlayerScore(playerid,dini_Int(Spielerdatei,"Level"));
    GivePlayerMoney(playerid,dini_Int(Spielerdatei,"Geld"));
    SetPlayerSkin(playerid,dini_Int(Spielerdatei,"Skin")); // Wenn ich hier SetPlayerSkin mache passiert nichts ---------------------------------
    SetPVarInt(playerid,"Paytime",dini_Int(Spielerdatei,"Paytime"));
    SetPlayerWantedLevel(playerid,dini_Int(Spielerdatei,"Wantedlevel"));
    SetPVarInt(playerid,"Fraktion",dini_Int(Spielerdatei,"Fraktion"));
    SetPVarInt(playerid,"Fraktionsrang",dini_Int(Spielerdatei,"Fraktionsrang"));
    SetPVarInt(playerid,"Adminlevel",dini_Int(Spielerdatei,"Adminlevel"));
    SetPVarInt(playerid,"Knast",dini_Int(Spielerdatei,"Knast"));
    SetPVarInt(playerid,"KnastTime",dini_Int(Spielerdatei,"KnastTime"));
    SetPVarInt(playerid,"Job",dini_Int(Spielerdatei,"Job"));
    SetPVarInt(playerid,"JobAktiv",dini_Int(Spielerdatei,"JobAktiv"));
    SetPVarInt(playerid,"JobBisPayday",dini_Int(Spielerdatei,"JobBisPayday"));
    SetPVarInt(playerid,"Baned",dini_Int(Spielerdatei,"Baned"));
    if(GetPVarInt(playerid,"Baned")==1)
    {
    SendClientMessage(playerid,ROT,"Du bist vom Server gebannt.");
    Kick(playerid);
    }
    SetPVarInt(playerid,"aKnast",dini_Int(Spielerdatei,"aKnast"));
    SetPVarInt(playerid,"loggedin",1);
    return 1;
    }
    Du musst mit der vorprogrammierten Funktion GetPlayerSkin und SetPlayerSkin arbeiten. Schau dir das an, wie ich das gemacht habe.


    2:
    ocmd:suspect(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,1) || !isPlayerInFrakt(playerid,6))return SendClientMessage(playerid,ROT,"Du bist kein Beamter."); // Ich weiß , dass das an dieser Zeile Liegt hab aber kA wie man das jetzt genau macht -----------------------------------------------------------------------------------------------
    new otherid,string[128],reason[64],amount;
    if(sscanf(params,"uds",otherid,amount,reason))return SendClientMessage(playerid,GRÜN,"Benutzung: /suspect [ID] [Wanteds] [Grund]");
    if(otherid == INVALID_PLAYER_ID)return SendClientMessage(playerid,DUNKELROT,"Der Spieler ist nicht Online.");
    SetPlayerWantedLevel(otherid,GetPlayerWantedLevel(otherid)+amount);
    format(string,sizeof(string),"Beamter %s hat dir %d Wanteds gegeben. Grund: %s",SpielerName(playerid),amount,reason);
    SendClientMessage(otherid,DUNKELROT,string);
    format(string,sizeof(string),"Du hast %s %d Wanteds gegeben. Grund: %s",SpielerName(otherid),amount,reason);
    SendClientMessage(playerid,GELB,string);
    return 1;
    }
    Ich hoffe du meinst das so, denn nach "||" und "&&" muss man immer wieder "!isPlayerInFrakt" anwenden, und kann nicht einfach if(!isPlayerInFrakt(playerid,1) || 6)machen.


    3:
    Dort musst du mit Variablen arbeiten. Du machst oben im Script z.B. so etwas:
    new bool:Tor;(Bool bedeutet, das du die Variable "Tor" nur auf true/1 und false/0 setzen kannst!)
    Dann beim runterfahren des Tores, einfach die Variable "Tor" auf 1 setzen.
    Dann machst du im gleichen Befehl eine "if" Abfrage rein:
    if(Tor == 1)
    {


    }
    In der Abfrage setzt du das Bool wieder auf 0, und fährst das Tor wieder nach oben.


    Ich hoffe du hast alles verstanden, wenn nicht melde dich noch einmal.

    SD[playerid][Sicherheitsfrage] = cache_get_field_content(64,"SFrage",SD[playerid][Sicherheitsfrage],dbhandle);
    SD[playerid][Sicherheitsantwort] = cache_get_field_content(64,"SAntwort",SD[playerid][Sicherheitsantwort],dbhandle);


    Versuch das mal so, ich habe da die "destination" noch eingefügt.

    cache_get_field_content
    Ist für Strings.


    Aber warum benutzt du das für das Speichern? Eigentlich kann man das damit doch nur auslesen aus der Datenbank 8o