Beiträge von Pille

    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?