Postboten Checkpoint

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 com,
    ich wollte bei meinem Job System ein Random Checkpoint System machen aber kein Normales sondern man soll jeden Checkpoint nur 1 mal Nutzen können aber Irgenwie komme ich nicht klar.



    Dort bekomme ich den Fehler


    C:\Users\Tobias\Desktop\Neues Script\gamemodes\script.pwn(3202) : error 028: invalid subscript (not an array or too many subscripts): "p_benutzt"
    C:\Users\Tobias\Desktop\Neues Script\gamemodes\script.pwn(3202) : warning 215: expression has no effect
    C:\Users\Tobias\Desktop\Neues Script\gamemodes\script.pwn(3202) : error 001: expected token: ";", but found "]"
    C:\Users\Tobias\Desktop\Neues Script\gamemodes\script.pwn(3202) : error 029: invalid expression, assumed zero
    C:\Users\Tobias\Desktop\Neues Script\gamemodes\script.pwn(3202) : fatal error 107: too many error messages on one line


    Code
    for(new p = 0; p < sizeof(Postfuhr_Stationen); p++)
    										    {
    										        Postfuhr_Stationen[p][p_benutzt[playerid]] = 1;										    }






    Mit freundlichen Grüßen
    reaL.

  • Beitrag von YaBroo ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Ok danke das Funktioniert habe es direkt danach auch selber hinbekommen aber iwie wird immer an der gleichen stelle der Cp gesetzt ?


    Code
    new id = NextPostCp(playerid);
    				SetPlayerCheckpoint(playerid,Postfuhr_Stationen[id][P_fx],Postfuhr_Stationen[id][P_fy],Postfuhr_Stationen[id][P_fz],Postfuhr_Stationen[id][P_fRad]);
  • Beitrag von YaBroo ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: I give up ().
  • Funktioniert nicht ?



    Beim Starten vom Job alle auf 0 setzten

    Code
    for(new p = 0; p < sizeof(Postfuhr_Stationen); p++)
    										    {
    										        Postfuhr_Stationen[p][p_benutzt][playerid] = 1;
    										    }



    Wenn ich den Cp betrete


    Code
    DisablePlayerCheckpoint(playerid);
    		        SetPlayerSpecialAction(playerid,SPECIAL_ACTION_NONE);
    		        RemovePlayerAttachedObject(playerid,1);
    			 	postinfo[playerid][post_packete] --;
    			 	new id = NextPostCp(playerid),string[200];
    				SetPlayerCheckpoint(playerid,Postfuhr_Stationen[id][P_fx],Postfuhr_Stationen[id][P_fy],Postfuhr_Stationen[id][P_fz],Postfuhr_Stationen[id][P_fRad]);
                    format(string,sizeof(string),"%d/%d Packete~n~Job Fahrzeugid %d~n~Trage nun die Packete aus",postinfo[playerid][post_packete],GetPackete(playerid),postinfo[playerid][post_jobcar]);
    				PlayerTextDrawSetString(playerid,Job1[playerid], string);
    				return 1;


    Funktion


  • Das kannst du dann so machen:
    NextPostCp(playerid)
    {
    new r = random(sizeof(Postfuhr_Stationen)), count;
    while(Postfuhr_Stationen[r][p_benutzt][playerid] == 1 && count < 1000)
    {
    r = random(sizeof(Postfuhr_Stationen));
    count++;
    }
    if(Postfuhr_Stationen[r][p_benutzt][playerid] == 0) return r;
    r = random(sizeof(Postfuhr_Stationen));
    for(new p = r; p < sizeof(Postfuhr_Stationen); p++)
    {
    if(Postfuhr_Stationen[p][p_benutzt][playerid] == 0)
    {
    return p;
    }
    }
    for(new p = 0; p < r; p++)
    {
    if(Postfuhr_Stationen[p][p_benutzt][playerid] == 0)
    {
    return p;
    }
    }
    return -1;
    }


    Das sollte dann auch verhindern, dass er in einer Endlos-Schleife landet.
    Beachte aber, dass du dort, wo du NextPostCp ausliest abfragen musst, ob es -1 zurück gegeben hat, wenn ja konnte kein neuer CP gefunden werden.

  • Ok habe es bisschen anders gelöst und funktioniert aber meine Briefe funktionieren nicht


    wenn ich es so mache geht es nicht

    Code
    Brief = CreateDynamicObject(19482,0,0,-1000,0,0,0,-1,-1,-1,200.0,100);
    				Brief1 = CreateDynamicObject(19482,0,0,-1000,0,0,0,-1,-1,-1,200.0,100);
    				SetDynamicObjectMaterialText(Brief,0 ,"+", OBJECT_MATERIAL_SIZE_256x128, "Wingdings", 100, 0, 0x00000000, 0, 0);
    				SetDynamicObjectMaterialText(Brief1,0 ,"+", OBJECT_MATERIAL_SIZE_256x128, "Wingdings", 100, 0, 0x00000000, 0, 0);
    				AttachDynamicObjectToVehicle(Brief, Jobc[c][v_ID], -1.2380,0.6000,0.85000,0.000000,0.000000,0.099983);
    				AttachDynamicObjectToVehicle(Brief1, Jobc[c][v_ID], 1.2380,0.6000,0.85000,0.000000,0.000000,0.099983);



    aber so funktioniert es nicht


    Code
    Brief = CreateDynamicObject(19482,0,0,-1000,0,0,0,-1,-1,-1,200.0,100);
    				Brief1 = CreateDynamicObject(19482,0,0,-1000,0,0,0,-1,-1,-1,200.0,100);
    				SetDynamicObjectMaterialText(Brief,0 ,"+", OBJECT_MATERIAL_SIZE_256x128, "Wingdings", 100, 0, 0xffffff00, 0, 0);
    				SetDynamicObjectMaterialText(Brief1,0 ,"+", OBJECT_MATERIAL_SIZE_256x128, "Wingdings", 100, 0, 0xffffff00, 0, 0);
    				AttachDynamicObjectToVehicle(Brief, Jobc[c][v_ID], -1.2380,0.6000,0.85000,0.000000,0.000000,0.099983);
    				AttachDynamicObjectToVehicle(Brief1, Jobc[c][v_ID], 1.2380,0.6000,0.85000,0.000000,0.000000,0.099983);