Errors bei Befehl (Um in einen Job zugehen)

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
  • Hey Community.
    Ich habe mich an ein Jobsystem für mein Selfmade gemacht.
    Ich speichere alles mit Dini.
    Undzwar:
    Ich habe einen stock, der abfragt, welchen Job der Spieler hat:

    Code
    stock IsPlayerJob(playerid,jobid)
    {
    	if(GetPVarInt(playerid,"Job")==jobid)return 1;
    	return 1;
    }


    Dann mein Befehl damit man in einen Job halt reinkommt:


    Diesen habe ich in keinem Public und bekomme 10 Errors:


    Ich bin wirklich am verzweifeln :huh: .
    Ich hoffe ihr versteht das Problem.
    Danke für Antworten.
    MFG

  • Ich habe einen stock, der abfragt, welchen Job der Spieler hat:

    Code
    stock IsPlayerJob(playerid,jobid)
    {
    	if(GetPVarInt(playerid,"Job")==jobid)return 1;
    	return 1;
    }


    Gehen wir doch allle moeglichkeiten durch.
    - Jobid entspricht der pvar "Job" = return 1
    - Jobid entspricht nicht der pvar "Job" = return 1
    sieht korrekt aus.


    Dann mein Befehl damit man in einen Job halt reinkommt:


    Wenn job id 0 = kein Job ist, dann solltest du bei der ersten if Abfrage "IsPlayerJob(playerid,0) == 0" nutzern, sofern deine IsPlayerJob denn jemals 0 zurueckgeben sollte ;)
    Du kannst keine Befehle zwischen if() und elseif() nutzen. Ausserdem ergibt der code recht wenig sinn:

    Code
    Bsp mit position 2158, 936, 11 (wozu der letzte parameter bei IsPlayerInRangeOfPoint?)
    diese Abfrage ergibt false und die funktion beendet mit der SendClientMessage.
    		if(!IsPlayerInRangeOfPoint(playerid,5,2305.3315,1924.4269,10.9244,179.1598)) return SendClientMessage(playerid,COLOR_ROT,"Du bist nicht in der Nähe von einem Job!");
    		SetPVarInt(playerid,"Job",6);
    Diese Abfrage soll erreicht werden, da wir ingame an der position sind, wird sie aber nie, da bereits die Funktion bei der letzten abfrage beendet wurde.
    		else if(!IsPlayerInRangeOfPoint(playerid,5,2158.8188,936.2079,11.1016,93.4247)) return SendClientMessage(playerid,COLOR_ROT,"Du bist nicht in der Nähe von einem Job!");
    		SetPVarInt(playerid,"Job",1);
    	}
    }
  • Habe jetzt mal die SendClientMessage + Das "return" hinter den IsPlayerInRangeOfPoint entfernt.
    Habe nurnoch Warnings.
    Das ganze sieht so aus:
    ocmd:joinjob(playerid,params[])
    {
    if(IsPlayerJob(playerid,0)==0) return SendClientMessage(playerid,COLOR_ROT,"Du kannst nur einen Job zur selben Zeit haben!");
    {
    if(!IsPlayerInRangeOfPoint(playerid,5,2305.3315,1924.4269,10.9244,179.1598))
    SetPVarInt(playerid,"Job",6);
    else if(!IsPlayerInRangeOfPoint(playerid,5,2158.8188,936.2079,11.1016,93.4247))
    SetPVarInt(playerid,"Job",1);
    else if(!IsPlayerInRangeOfPoint(playerid,5,2854.7942,2619.7424,10.8203,180.7163))
    SetPVarInt(playerid,"Job",3);
    else if(!IsPlayerInRangeOfPoint(playerid,5,1931.1077,2441.7000,11.1782,252.1202))
    SetPVarInt(playerid,"Job",2);
    else if(!IsPlayerInRangeOfPoint(playerid,5,2216.3286,1838.2637,10.8203,4.3506))
    SetPVarInt(playerid,"Job",4);
    else if(!IsPlayerInRangeOfPoint(playerid,5,1920.8127,172.5458,37.2677,22.9508))
    SetPVarInt(playerid,"Job",5);
    }
    }


    Wie mach ich denn jetzt, dass wenn der Spieler in der Nähe ist, dass die Variable "job" auf die gewünschte Zahl gesetzt wird?

  • ocmd:joinjob(playerid,params[])
    {
    if(IsPlayerJob(playerid,0)==0)
    return SendClientMessage(playerid,COLOR_ROT,"Du kannst nur einen Job zur selben Zeit haben!");


    if(IsPlayerInRangeOfPoint(playerid,5,2305.3315,1924.4269,10.9244,179.1598))
    SetPVarInt(playerid,"Job",6);
    else if(IsPlayerInRangeOfPoint(playerid,5,2158.8188,936.2079,11.1016,93.4247))
    SetPVarInt(playerid,"Job",1);
    else if(IsPlayerInRangeOfPoint(playerid,5,2854.7942,2619.7424,10.8203,180.7163))
    SetPVarInt(playerid,"Job",3);
    else if(IsPlayerInRangeOfPoint(playerid,5,1931.1077,2441.7000,11.1782,252.1202))
    SetPVarInt(playerid,"Job",2);
    else if(IsPlayerInRangeOfPoint(playerid,5,2216.3286,1838.2637,10.8203,4.3506))
    SetPVarInt(playerid,"Job",4);
    else if(IsPlayerInRangeOfPoint(playerid,5,1920.8127,172.5458,37.2677,22.9508))
    SetPVarInt(playerid,"Job",5);
    else
    return SendClientMessage( .. "Sie muessen an einer Firma sein um einen Job zu bekommen." ..);
    SendClientMessage( .. "Sie haben nun einen Job." .. )
    return 1;
    }
    So duerfte es korrekt sein, wenn IsPlayerInRangeOfPoint so viele parameter zu laesst und jobid 0 = joblos ist.