Beiträge von Jeffry

    Willkommen im Forum!


    Tipps: Scripting-Probleme richtig erklären


    Du hast hier so ziemlich alles falsch gemacht, so wird und kann dir niemand helfen, da dein Code einfach unleserlich ist.


    1.) Beschreibe dein Thema richtig.
    2.) Poste nur nötigen Code.
    3.) Poste nicht alles in einer Zeile (füge es vorher in Word ein, oder scripte mit dem standard pawno.exe.
    4.) Nutze die Vorschau bevor du postest, dann siehst du wie es aussieht.

    Also bei mir klappt das wunderbar.


    Lass es mal so laufen, was wird da geprintet?
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    printf("World(%d) = %d | %d != %d", i, GetPlayerVirtualWorld(i), i, playerid);
    if(GetPlayerVirtualWorld(i) == 7 && i!=playerid)
    {
    printf("Verstecke Marker bei ID %d von ID %d", i, playerid);
    SetPlayerMarkerForPlayer(i, playerid, (GetPlayerColor(playerid) & 0xFFFFFF00));
    printf("Verstecke Marker bei ID %d von ID %d", playerid, i);
    SetPlayerMarkerForPlayer(playerid, i, (GetPlayerColor(i) & 0xFFFFFF00));
    }
    }

    falls noch etwas gebraucht wird, bitte melden.


    Bist du da denn schon eingeloggt? Weil registriert = 1 heißt ja nicht gleich eingeloggt, daher muss auch der Wert in der PVar noch nicht gesetzt sein.
    Prüfe das mal.


    Falls du nicht weiter kommst, poste bitte noch dein OnPlayerConnect und den Teil mit dem du den Spieler einloggst.
    Poste bitte die zwei Callbacks aus dem Pastebin (http://pastebin.com/FXq7YX53) auch nochmal dazu, dass es an einer Stelle ist.



    Apokrate: Alles klar, kein Problem. Super! :thumbup:

    Das sind wohl sich überschneidende IDs.
    Das kannst du ganz leicht beheben:


    DestroyDynamicPickup(pickupid);


    zu:
    DestroyDynamicPickup(pickupid);
    BF_WEAPON[10] = -1;


    natürlich auch bei den pickups 0-9 so machen.



    Außerdem ist der ganze Time falsch, das wird nicht klappen, für beide Timer:
    SetTimerEx("MinigunRespawn", 3*60*1000, false, "i", BF_WEAPON[i]);
    zu:
    SetTimerEx("MinigunRespawn", 3*60*1000, false, "i", i);



    Und:
    Bei den beiden Timern für den Respawn:
    if(pickupid == BF_WEAPON[0])
    zu:
    if(pickupid == 0)


    Du darfst nicht die pickupid übergeben, sondern die Index ID, weil die Pickup ID sich immer wieder ändert.
    Beispiel:


    0 erstellt
    1 erstellt
    2 frei


    => Erstelle 2
    0 erstellt
    1 erstellt
    2 erstellt


    => Lösche 1
    0 erstellt
    1 frei
    2 erstellt


    => Lösche 2
    0 erstellt
    1 frei
    2 frei


    => Erstelle 2
    0 erstellt
    1 erstellt ====>>> Index 2 hat jetzt die pickupid 1.
    2 frei

    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPlayerVirtualWorld(i) == 7 && i!=playerid) //wenn der gesehene und der "Seher" in vw 7 sind...
    {
    SetPlayerMarkerForPlayer(i, playerid, (GetPlayerColor(playerid) & 0xFFFFFF00)); //soll jeder playerid als unsichtbar ansehen
    SetPlayerMarkerForPlayer(playerid, i, (GetPlayerColor(i) & 0xFFFFFF00)); //soll playerid alle anderen als unsichtbar ansehen
    }
    }

    Jeffry please :D
    Die richtige Größe wäre 9 - nicht 8


    output,8, und was bedeutet das? ouput und 8?


    Er hat gefragt, was die Zahl 8 im Format bedeutet, das habe ich ihm erklärt. Es ging nicht darum, ob das jetzt in dem Fall richtig ist, oder nicht...
    Das hätte er sowieso nach der Erklärung auch selbst gemerkt, dass die Klammer dann hinten fehlt, und er es zu 9 ändern muss.
    Sei's drum.



    xSoldier: Wie sieht denn der Rest von dem Code aus der dazugehört?
    So macht der Code ja keinen Sinn, aber ich kann dir auch nicht sagen wie es richtig ist, da ich nicht weiß was du dahinter vor hast.

    output ist die Variable in die die Farbe gespeichert wird.


    new output[8];
    format = Formatierung
    output = wir geben an in welche Variable geschrieben werden soll
    8 = wie viele Zeichen reserviert werden, in "output". Man nimmt eigentlich immer die Größe des Strings.

    Siehste!


    Dann setze das verbuggte Textdraw doch einfach inaktiv, so dass du es keinem mehr anzeigst, und erstelle das Textdraw einfach nochmal, das zeigst du den Spielern dann an. Ist zwar keine schöne Lösung, aber hilft. ;)

    Jetzt sage ich dir zum dritten Mal, dass du den Code den ich dir gegeben habe versuchen sollst.


    public UpdateVehicleAnzeigeTimer(playerid)
    {
    new engine, lights, alarm, doors, bonnet, boot, objective, string[512], Float: health, vehicleid, enginestate[32], lightstate[32], carlockstate[32];
    vehicleid = GetPlayerVehicleID(playerid);
    if(vehicleid == 0) return 1;
    GetVehicleHealth(vehicleid,health);
    printf("playerid: %d | vehicleid: %d", playerid, vehicleid);
    GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
    format(string,sizeof(string),"Fahrzeugname: ~w~%s",VehicleNames[GetVehicleModel(vehicleid) - 400]);
    print(string);
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][0],string);
    print("Fahrzeuganzeige[playerid][0] gesetzt.");
    format(string,sizeof(string),"Geschwindigkeit: ~r~%i ~y~km/h~",GetVehicleSpeed(vehicleid));
    print(string);
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][1],string);
    print("Fahrzeuganzeige[playerid][1] gesetzt");
    printf("Tank: %d / %d", VehicleInfo[vehicleid][Tank],VehicleInfo[vehicleid][MaxTank]);
    format(string,sizeof(string),"%i%%~n~",VehicleInfo[vehicleid][Tank]/VehicleInfo[vehicleid][MaxTank]);
    print(string);
    PlayerTextDrawSetString(playerid,Fahrzeuganzeige[playerid][2],string);
    print("Fahrzeuganzeige[playerid][2] gesetzt");
    return 1;
    }


    Dort habe ich dir Rechnung bereits geändert.
    Wie soll ich dir denn helfen, wenn du nicht machst, was ich dir sage?