Beiträge von Jeffry

    Nyu_x3:
    Diese Warnung kommt, wenn kein Wert mit einem return zurückgegeben wird, obwohl einer erwartet wird.
    Beispiel:
    ocmd:hallowelt(playerid,params[])
    {
    SendClientMessage(playerid,0xFFFFFFFF,"Hallo Welt");
    }
    Das würde eine 209-er Warnung geben.


    So wäre es richtig:
    ocmd:hallowelt(playerid,params[])
    {
    SendClientMessage(playerid,0xFFFFFFFF,"Hallo Welt");
    return 1;
    }


    "should return a value" deutet immer auf ein fehlendes return hin. ;)

    aber auch wenn ich z.B. im Spiel /givemoney 0 10 eingebe, wird mir die SendClientMessage ausgegeben.
    Bei anderen Befehlen funktioniert alles einwandfrei.


    Wenn du das sscanf Plugin nicht verwendest, schreibe es so:
    ocmd:givemoney(playerid,params[])
    {
    new receiverid, moneyvalue;
    if(sscanf(params,"ii",receiverid,moneyvalue))return SendClientMessage(playerid,COLOR_RED,"/givemoney [playerid] [Wert]");
    GivePlayerMoney(receiverid,moneyvalue);
    return SendClientMessage(playerid,COLOR_GREEN,"Geld erfolgreich gegeben.");
    }

    Kannst du schon machen, aber das macht keinen Sinn, da die Datei dann jedes mal geöffnet, ausgelesen, und wieder geschlossen werden muss. Das geht auf die Ressourcen und laggt irgendwann.
    Mit den PVars lädst du es ja einmal (beim Login) und speicherst es beim ausloggen wieder, sprich du hast nur zwei mal Dateibewegungen.


    Kannst du machen, solltest du aber nicht.

    Cheevy.Shakur:
    for(new slot=0;slot<MAX_PLAYER_VEHICLES;slot++)
    {
    if(veh == PrivateVehicle[playerid][slot][vehID])
    {
    if(vehicleid != PrivateVehicle[playerid][slot][vehID]) continue;
    GetVehiclePos(veh, pos[0], pos[1], pos[2]);
    GetVehicleParamsEx(PrivateVehicle[playerid][slot][vehID], engine, lights, alarm, doors, bonnet, boot, objective);
    if(doors == VEHICLE_PARAMS_OFF || doors == VEHICLE_PARAMS_UNSET)
    {
    LockVehicle(PrivateVehicle[playerid][slot][vehID]);
    GameTextForPlayer(playerid, "~w~Privat-Fahrzeug~n~~r~Abgeschlossen", 3000, 6);
    PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
    return 1;
    }
    else
    {
    UnlockVehicle(PrivateVehicle[playerid][slot][vehID]);
    GameTextForPlayer(playerid, "~w~Privat-Fahrzeug~n~~g~Aufgeschlossen", 3000, 6);
    PlaySoundInRange(pos[0], pos[1], pos[2], 10.0, 1027, 0, 0);
    return 1;
    }
    }
    }
    return SendClientMessage(playerid,COLOR_GREY,"** Dies ist nicht dein Fahrzeug.");



    @TVPikachu:
    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    if (IsPlayerInAnyVehicle(playerid))
    {
    if (GetVehicleModel(GetPlayerVehicleID(playerid)) == 560)
    {
    if(Praxis[playerid] == 1)
    {
    CheckpointStatus[playerid]++;
    if(CheckpointStatus[playerid] < sizeof(racecheckpoints))
    {
    DisablePlayerRaceCheckpoint(playerid);
    SetPlayerRaceCheckpoint(playerid,0,racecheckpoints[CheckpointStatus[playerid]][0],racecheckpoints[CheckpointStatus[playerid]][1],racecheckpoints[CheckpointStatus[playerid]][2],racecheckpoints[CheckpointStatus[playerid]+1][0],racecheckpoints[CheckpointStatus[playerid]+1][1],racecheckpoints[CheckpointStatus[playerid]+1][2],3.0);
    }
    else
    {
    Praxis[playerid]= 0;
    CheckpointStatus[playerid] = 0;
    DisablePlayerRaceCheckpoint(playerid);
    SendClientMessage(playerid, erfolg, "Du hast bestanden test");
    }
    }
    }
    }
    return 1;
    }

    Falls das so nicht geht, poste bitte wie du die Checkpoint-Daten in racecheckpoints einträgst.

    Ich schätze das ist, was du möchtest:


    CMD:gangfight(playerid)
    {
    for(new i;i<MAX_GANGFIGHT;i++)
    {
    if(GangfightZone[i] == -1) continue;
    if(IsPlayerInArea(playerid,Gangfight[i][minX],Gangfight[i][minY],Gangfight[i][maxX],Gangfight[i][maxY]))
    {
    if(Gangfight[i][gBesitzer] == Spieler[playerid][pFraktion])return SendClientMessage(playerid,COLOR_GREY,"** Dieses Gangfight Gebiet gehörts bereits euch.");
    if(Gangfight[i][gAngriff] == 1)return SendClientMessage(playerid,COLOR_GREY,"** Es läuft bereits ein Gangfight.");
    }
    }
    return SendClientMessage(playerid,COLOR_GREY,"** Du bist in keinem Gangfight Gebiet.");
    }

    Bei den anderen fehlt nach der IsPlayerInRangeOfPoint Abfrage dieses return:
    return SendClientMessage(playerid, error, "Du kannst hier nicht Duty gehen!");


    So einen stock kannst du machen, aber was würde das bringen? Du brauchst die Nachricht ja nur hier, das wäre im Prinzip der gleiche Aufwand.

    Mit dem Plugin direkt kenne ich mich nicht aus, aber bei dem Makeleader Befehl ist ein Fehler:
    SetPVarInt(pID,"getpID",pID);
    zu:
    SetPVarInt(pID,"getpID",playerid);


    Und hier musst du pID und playerid umdrehen:
    format(string1,sizeof(string1),"Der Spieler %s wurde von %s zum Leader der Fraktion %s benannt\nDatum: %02d/%02d/%d\nUhrzeit: %02d/%02d/%d\n Individueller Satz: %s",SpielerName(pID),SpielerName(playerid),fInfo[fID][f_name],Year, Month, Day,Hour, Minute, Second,inputtext);
    WBB_AddThread (SpielerName(playerid),Erfolge," ","Erfolg: Zum Leader benannt!",string1, 0 , ERFOLG_CLOSE , ERFOLG_DISABLE , 0 , 1 , 0 , 1 , playerid);
    zu:
    format(string1,sizeof(string1),"Der Spieler %s wurde von %s zum Leader der Fraktion %s benannt\nDatum: %02d/%02d/%d\nUhrzeit: %02d/%02d/%d\n Individueller Satz: %s",SpielerName(playerid),SpielerName(pID),fInfo[fID][f_name],Year, Month, Day,Hour, Minute, Second,inputtext);
    WBB_AddThread (SpielerName(pID),Erfolge," ","Erfolg: Zum Leader benannt!",string1, 0 , ERFOLG_CLOSE , ERFOLG_DISABLE , 0 , 1 , 0 , 1 , playerid);


    Wenn du das ganze ohne individuellen Satz machst, dann wird kein Thread erstellt, da du ja da ein return hast. Ist das gewollt?


    Teste ggf. einfach mal mit einem einfachen Befehl ob du überhaupt einen Thread erstellen kannst, oder ob du vielleicht falsch/gar nicht vebunden bist.

    Dann funktioniert das so aber nicht, weil du erstellst die drei Flaggen ja immer an derselben Stelle, heißt du hast nachher zum Beispiel 5 Flaggen auf der gleichen Stelle. Die Position der Flaggen muss ja für jede Zone anders sein, sprich du musst diese Positionen auch am besten über die Datenbank laden.
    Dann passt das auch mit der Schleife, nur dass du eben die 9 Koordinaten (3 pro Flagge) über die Datenbank eingibst.