Need Help pls|PayDay und /einbuchten

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo liebes Forum,
    ich habe 2 Probleme...


    Problem 1 PayDay:


    Ich habe ein PayDay-System gescriptet das auch soweit funktioniert..
    Also man bekommt immoment nach 2 min. einen PayDay (nur zum Test 2 min.)


    public Timerpayday(playerid)
    {
    SendClientMessage(playerid,WEIß,"|____PayDay/Zahltag____|");
    SendClientMessage(playerid,ROT,"Steuern: -500$");
    GivePlayerMoney(playerid,-500);
    if(!HatSpielerKrankenversicherung(playerid,0))
    {
    SendClientMessage(playerid,ROT,"Krankenversicherung: -500$");
    GivePlayerMoney(playerid,-500);
    }
    if(!IstSpielerInFraktion(playerid,0))
    {
    SendClientMessage(playerid,GRÜN,"Fraktionsgehalt:1500$");
    GivePlayerMoney(playerid,1500);
    }
    if(!IstSpielerInTeam(playerid,0))
    {
    SendClientMessage(playerid,GRÜN,"Jobgehalt: 750$");
    GivePlayerMoney(playerid,750);
    }
    return 1;
    }


    Nun habe ich aber das Problem,dass der Spieler weder den Fraktionsgehalt noch den Jobgehalt bekommt obwohl er in einer Fraktion bzw in einem Job ist...
    Ich habe jetzt schon ewig daran rumgescriptet und allmögliches probiert aber es funktioniert einfach nicht ;(



    Problem 2 /einbuchten:

    Ich habe außerdem für Cops/FBI und Army einen befehl gemacht um Wantedler einzubuchten...
    ocmd:einbuchten(playerid,params[]) //Einbuchten für LSPD,FBI und Army
    {
    if(!IstSpielerInFraktion(playerid,1) && (!IstSpielerInFraktion(playerid,2)) && (!IstSpielerInFraktion(playerid,3)))return SendClientMessage(playerid,ROT,"Du bist kein LSPD/FBI oder Armysoldat!");
    {
    if(!IsPlayerInRangeOfPoint(playerid,15,1798.1405,-1584.4061,13.4781))return SendClientMessage(playerid,ROT,"Du musst am Knast sein!");
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    if(IsPlayerConnected(i))
    {
    new pID;
    new test = GetPlayerVehicleID(playerid);
    GetPlayerVehicleID(pID);
    if(!IsPlayerInVehicle(pID,test))return SendClientMessage(playerid,ROT,"Der Spieler sitzt nicht in deinem Auto!");
    {
    new w = GetPlayerWantedLevel(pID);
    if(!HatSpielerWanted(pID,w<1))return SendClientMessage(playerid,ROT,"Dieser Spieler hat keine Wanteds!");
    {
    new wantedlevel = GetPlayerWantedLevel(pID);
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,BLAU,"/einbuchten [ID]");
    SetPlayerPos(pID,1771.8785,-1547.4343,9.9117);
    SendClientMessage(playerid,BLAU,"Du hast den Spieler erfolgreich eingebuchtet!");
    SendClientMessage(pID,BLAU,"Du wurdest eingebuchtet und musst nun eine gewisse Zeit im Knast einsitzen!");
    GivePlayerMoney(playerid,500*wantedlevel);
    Frei[pID] = 10*wantedlevel;
    SetPlayerWantedLevel(pID,0);
    }
    }
    }
    }
    }
    return 1;
    }


    So nun habe ich aber wieder 1 Problem undzwar kann ich jede beliebige ID einbuchten egal ob sie connected ist oder nicht...
    Auch hier habe ich schon vieles probiert aber finde nicht heraus woran es liegt -.-


    Hoffe ihr könnt/wollt mir helfen...
    MFG Flashrex

  • Beim 1. hab ich beim Überfliegen keinen Fehler gefunden, aber Nummer 2 ist doch offensichtlich. Du nutzt eine For-Schleife, die überhaupt keinen Sinn hat. Du gehst alle Spieler durch, und wenn die aktuelle ID connected ist sperrst du den Spieler weg, den du mit der Funktion ausgewählt hast. Mach die Schleife weg und das if(IsPlayerConnected(i)) zu if(IsPlayerConnected(pID)). Außerdem musst du 2 Klammern wegmachen, da du einerseits mit der Rangeabfrage die Nachricht returnst und andererseits direkt mit dem Code darunter weitermachst.

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • Padarom Ich verstehe nicht ganz genau was ich jezt twie verändern soll bin noch nicht so lang am scripten...


    @Killer_Kater Ja aber wo sind die dnen ich finde sie nicht -.-


    /Edit
    Ich hab den 2 Befehl jetzt so:
    ocmd:einbuchten(playerid,params[]) //Einbuchten für LSPD,FBI und Army
    {
    if(!IstSpielerInFraktion(playerid,1) && (!IstSpielerInFraktion(playerid,2)) && (!IstSpielerInFraktion(playerid,3)))return SendClientMessage(playerid,ROT,"Du bist kein LSPD/FBI oder Armysoldat!");
    {
    if(!IsPlayerInRangeOfPoint(playerid,15,1798.1405,-1584.4061,13.4781))return SendClientMessage(playerid,ROT,"Du musst am Knast sein!");
    new pID;
    if(IsPlayerConnected(pID))
    {
    new test = GetPlayerVehicleID(playerid);
    GetPlayerVehicleID(pID);
    if(!IsPlayerInVehicle(pID,test))return SendClientMessage(playerid,ROT,"Der Spieler sitzt nicht in deinem Auto!");
    {
    new w = GetPlayerWantedLevel(pID);
    if(!HatSpielerWanted(pID,w<1))return SendClientMessage(playerid,ROT,"Dieser Spieler hat keine Wanteds!");
    {
    new wantedlevel = GetPlayerWantedLevel(pID);
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,BLAU,"/einbuchten [ID]");
    SetPlayerPos(pID,1771.8785,-1547.4343,9.9117);
    SendClientMessage(playerid,BLAU,"Du hast den Spieler erfolgreich eingebuchtet!");
    SendClientMessage(pID,BLAU,"Du wurdest eingebuchtet und musst nun eine gewisse Zeit im Knast einsitzen!");
    GivePlayerMoney(playerid,500*wantedlevel);
    Frei[pID] = 10*wantedlevel;
    SetPlayerWantedLevel(pID,0);
    }
    }
    }
    }
    return 1;
    }


    Ist das so wie du meinst?


    /Edit 2 PayDay geht nun aufeinmal^^Obwohl ich eigentlich nichts weiter verändert habe
    Aber /einbuchten noch nicht kann immernoch jede beliebige ID eingeben egal ob sie on oder off ist -.-

    Einmal editiert, zuletzt von Flashrex ()

  • mir schmecken die returns nicht... bzw das sich dansch nochmal ne klammer aufmacht...
    ich mach das eben mal ordentlich...


    edit:solltest die connect abfrage wie alles ander was über der definition der patameter ist eventuell unter die definition machen?!?
    also zuerst sscanf und dann die ganzen abfragen...
    wenns immernochnicht geht kanns nur eins sein:
    klammerfehler,also von der anzahl stimmt zwar alles, aber von der reihenfolge nicht...

    Einmal editiert, zuletzt von [CoS]Tom () aus folgendem Grund: codechange

  • Könntest du mir das mal in einer
    sowashier
    geben?


    Ich blick nämlich jetzt irgendwie überhaupt nicht mehr durch xD


    /Edit oder meinst du es so?
    ocmd:einbuchten(playerid,params[]) //Einbuchten für LSPD,FBI und Army
    {
    new pID;
    new wantedlevel = GetPlayerWantedLevel(pID);
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,BLAU,"/einbuchten [ID]");
    if(!IstSpielerInFraktion(playerid,1) && (!IstSpielerInFraktion(playerid,2)) && (!IstSpielerInFraktion(playerid,3)))return SendClientMessage(playerid,ROT,"Du bist kein LSPD/FBI oder Armysoldat!");
    {
    if(!IsPlayerInRangeOfPoint(playerid,15,1798.1405,-1584.4061,13.4781))return SendClientMessage(playerid,ROT,"Du musst am Knast sein!");
    new test = GetPlayerVehicleID(playerid);
    GetPlayerVehicleID(pID);
    if(!IsPlayerInVehicle(pID,test))return SendClientMessage(playerid,ROT,"Der Spieler sitzt nicht in deinem Auto!");
    {
    new w = GetPlayerWantedLevel(pID);
    if(!HatSpielerWanted(pID,w<1))return SendClientMessage(playerid,ROT,"Dieser Spieler hat keine Wanteds!");
    {
    if(IsPlayerConnected(pID))
    {
    SetPlayerPos(pID,1771.8785,-1547.4343,9.9117);
    SendClientMessage(playerid,BLAU,"Du hast den Spieler erfolgreich eingebuchtet!");
    SendClientMessage(pID,BLAU,"Du wurdest eingebuchtet und musst nun eine gewisse Zeit im Knast einsitzen!");
    GivePlayerMoney(playerid,500*wantedlevel);
    Frei[pID] = 10*wantedlevel;
    SetPlayerWantedLevel(pID,0);
    }
    }
    }
    }
    return 1;
    }


    PS: Natürlich alles ordentlich eingerückt^^

  • @ Killer_Kater Ich danke dir vielmals es geht endlich! :D
    Er fragt jetzt ab ob er on ist oder nicht :D
    danke dir Jetzt kann es endlich richtig weitergehen :D


    LG Flashrex