Beiträge von Pille

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums

    if(strcmp(cmdtext,"/kick",true,5)==0)
    {
    if(cmdtext[5]!=' ') return 1;
    new string[128];
    new find=strfind(cmdtext," ",false,6);
    strmid(string,cmdtext,6,find);
    if(!IsNumeric(string)) return SendClientMessage(playerid,-1,"Fehler!");
    if(cmdtext[find+1]==EOS) return SendClientMessage(playerid,-1,"Fehler!");
    new pID=strval(string);
    format(string,sizeof(string),"Du wurdest gekickt, Grund: %s",cmdtext[find]);
    SendClientMessage(pID,-1,string);
    SetTimerEx("KickPlayer",100,false,"i",pID);
    return 1;
    }


    forward KickPlayer(playerid);
    public KickPlayer(playerid)
    {
    Kick(playerid);
    }


    Mal recht einfach gemacht, ein /kick Befehl,
    falls du Fragen hast oder etwas nicht verstehst,
    frag einfach ;)

    Problem erklärt sich denke ich ziemlich leicht:



    // OnGameModeInit
    CheckStatusTimer=SetTimer("CheckStatus", 500, 1);


    public CheckStatus()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IsPlayerInAnyVehicle(i))
    {
    new vvid=GetPlayerVehicleID(i);
    new model=GetVehicleModel(vvid);
    if(model<400||model>611)
    {
    printf("#CheckStatus ERROR 01: %s (%i) ist in (k)einem Fahrzeug (%i): ID (%i) Model (%i)",PlayerInfo[i][pName],i,IsPlayerInAnyVehicle(i),vvid,GetVehicleModel(vvid));
    continue;
    }
    }
    }
    }
    return 1;
    }


    Serverlog:


    Code
    [22:36:36] #CheckStatus ERROR 01: Pille (12) ist in (k)einem Fahrzeug (1): ID (705) Model (0)
    [22:36:38] #CheckStatus ERROR 01: Pille (12) ist in (k)einem Fahrzeug (1): ID (705) Model (0)
    [22:36:39] #CheckStatus ERROR 01: Pille (12) ist in (k)einem Fahrzeug (1): ID (705) Model (0)
    [22:36:40] #CheckStatus ERROR 01: Pille (12) ist in (k)einem Fahrzeug (1): ID (705) Model (0)
    [22:36:41] #CheckStatus ERROR 01: Pille (12) ist in (k)einem Fahrzeug (1): ID (705) Model (0)
    [22:36:42] #CheckStatus ERROR 01: Pille (12) ist in (k)einem Fahrzeug (1): ID (705) Model (0)
    [22:36:43] #CheckStatus ERROR 01: Pille (12) ist in (k)einem Fahrzeug (1): ID (705) Model (0)


    Warum passiert sowas?

    Guten Abend,


    ich stehe vor folgender unlösbaren Aufgabe:


    Ich möchte bei einer Funktion bei Fertigstellung eine eigene Funktion aufrufen,
    die der Scripter angeben kann, mit allen Parametern die er möchte.


    Beispiel: MySQL, BlueG, R7:
    mysql_function_query(1,"SELECT * FROM Accounts WHERE Name = 'Pille'",false,"MyOwnFunction","iif",5,923,-2378.000


    // -----> Sobald Query fertig ist wird MyOwnFunction aufgerufen, also:


    forward MyOwnFunction(playerid,var,Float:fvar);
    publi MyOwnFunction(playerid,var,Float:fvar)
    {
    print("Test");
    return 1;
    }


    Wie scripte ich das, wenn ich nach Ausführen einer Funktion eine eigene Funktion aufrufe?



    So habe ich es bereits probiert:
    PlayerDoThat("OnPlayerDidThat","iii",playerid,GetPlayerMoney(playerid),GetPlayerWantedLevel(playerid));


    stock PlayerDoThat(string[],format[], {Float,_}:...) // {Float,_}:... für unendliche Parameter
    {
    CallLocalFunction(string,format,/* Hier komm ich nicht weiter. Irgendwas mit getarg vlt.? */);
    return 1;
    }



    forward OnPlayerDidThat(playerid,money,wanted);
    public OnPlayerDidThat(playerid,money,wanted)
    {
    printf("Succesfull: %i with %i$ and Wantedlevel %i",playerid,money,wanted);
    return 1;
    }



    Für Fragen stehe ich gerne bereit.

    oamtcar[0]=SetVehicleNumberPlate(CreateVehicle(525,891.8258,-1206.0679,16.8505,180.0830,18,20,-1),"Ordnungsamt"); // oamt
    oamtcar[1]=SetVehicleNumberPlate(CreateVehicle(525,896.3113,-1205.8975,16.8655,180.2625,36,43,-1),"Ordnungsamt"); // oamt
    oamtcar[2]=SetVehicleNumberPlate(CreateVehicle(525,907.6694,-1206.1782,16.8532,179.5450,17,20,-1),"Ordnungsamt"); // oamt
    oamtcar[3]=SetVehicleNumberPlate(CreateVehicle(525,911.5038,-1206.1317,16.8526,178.5295,52,54,-1),"Ordnungsamt"); // oamt
    oamtcar[4]=SetVehicleNumberPlate(CreateVehicle(525,873.3668,-1206.2256,16.8632,182.1840,22,30,-1),"Ordnungsamt"); // oamt
    oamtcar[5]=SetVehicleNumberPlate(CreateVehicle(525,877.4447,-1206.0367,16.8525,180.2811,44,51,-1),"Ordnungsamt"); // oamt
    oamtcar[6]=SetVehicleNumberPlate(CreateVehicle(560,920.2418,-1235.3826,16.6823,358.6281,21,1,-1),"Ordnungsamt"); // oamt
    oamtcar[7]=SetVehicleNumberPlate(CreateVehicle(560,906.1796,-1233.9564,16.2866,358.6272,37,0,-1),"Ordnungsamt"); // oamt


    Ändern zu:



    oamtcar[0]=CreateVehicle(525,891.8258,-1206.0679,16.8505,180.0830,18,20,-1);
    oamtcar[1]=CreateVehicle(525,896.3113,-1205.8975,16.8655,180.2625,36,43,-1);
    oamtcar[2]=CreateVehicle(525,907.6694,-1206.1782,16.8532,179.5450,17,20,-1);
    oamtcar[3]=CreateVehicle(525,911.5038,-1206.1317,16.8526,178.5295,52,54,-1);
    oamtcar[4]=CreateVehicle(525,873.3668,-1206.2256,16.8632,182.1840,22,30,-1);
    oamtcar[5]=CreateVehicle(525,877.4447,-1206.0367,16.8525,180.2811,44,51,-1);
    oamtcar[6]=CreateVehicle(560,920.2418,-1235.3826,16.6823,358.6281,21,1,-1);
    oamtcar[7]=CreateVehicle(560,906.1796,-1233.9564,16.2866,358.6272,37,0,-1);
    for(new i=0;i<8;i++) SetVehicleNumperPlate(oamtcar[i],"Ordnungsamt");

    Zitat

    Arbeite mit einem Stock ;) Ist
    einfach,flexibler,geht schneller ^^


    Falsch, geht nicht schneller.
    Nur vom Arbeitsaufwand her ist es einfacher.


    Zitat

    new pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName,sizeof(pName));


    format(string,sizeof(string),"Dein Name %s\n Dein Level %d\n Dein Geld %d\n Dein Beruf %s",SpielerName(playerid),sSpieler[playerid][Level],GetPlayerMoney(playerid),ftext);


    Jetzt hast du pName erstellt, mit deinem Namen gefüllt, und benutzt ihn garnicht ^^
    Entweder du löscht das, oder du schreibst statt SpielerName(playerid) pName ;)

    Ich habe nicht die Lösung geschrieben sondern einen Denkansatz,
    der dir helfen soll selber auf die Lösung zu kommen.


    Das &1 brauchst du übrigens nicht, das kannst du weglassen.

    Du hast einen Denkfehler da drin, mach am besten mal mit einer Beispielsituation das ganze etwas veranschaulicher.


    ID 3 kommt auf den Server. Er ist Leader in der Fraktion 5.

    PlayerInfo[3][pMember] = 0;
    PlayerInfo[3][pLeader] = 5;


    Jetzt denk mal scharf nach:
    Was stimmt daran nicht?


    if(PlayerInfo[playerid][pLeader] != 3||PlayerInfo[playerid][pMember] != 3) return RemovePlayerFromVehicle(playerid),SendClientMessage(playerid, Rot, "Du hast keinen Schlüssel für dieses Auto.") & 1;


    Übrigens, was macht das & 1 da?