Nur Beladen wenn Objekt auch da ist

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,


    ich habe nun die Funktion etwas geändert.


    Undzwar habe ich sie nun so gemacht, dass man mit Num 2 die Müllsäcke Aufgeben kann.
    D.h.


    if(newkeys == KEY_ANALOG_DOWN) //NUM 2
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    new carid = GetPlayerVehicleID(i);
    if(!IsASweeper(carid)) continue;
    if(checkpointee[i] == 3)
    {
    SendClientMessage(i, COLOR_WHITE, "Limit Erreicht");
    SetPlayerCheckpoint(i,1533.8406,-1474.2155,9.1087,5.0);
    checkpointee[i]++;
    continue;
    }
    if(checkpointee[i] < 4)
    {
    for(new o = 0;o<sizeof(Muell);o++)
    {
    if(muellobject[maxmuellobjects]);
    {
    if(IsPlayerInRangeOfPoint(i,5.0,Muell[o][XPoss],Muell[o][YPoss],Muell[o][ZPoss]))
    {
    DestroyObject(muellobject[o]);
    checkpointee[i]++;
    new string[64];
    format(string,sizeof(string),"%d Dreck weggeräumt",checkpointee[i]);
    SendClientMessage(i,COLOR_WHITE,string);
    }
    }
    else
    {
    SendClientMessage(i,COLOR_GREY,"Du musst schon auf einem Dreckhaufen stehen");
    }
    }
    }
    }
    return 1;
    }


    So sieht mein Befehl aus.


    Ich will aber, das man nur Num 2 Drücken kann wenn das Objekt "2677" dort auch ist.


    Wie mache ich demnach die if abfrage?

    2 Mal editiert, zuletzt von Shoxx () aus folgendem Grund: Thema nochmal komplett geändert!

  • Ich will aber, das man nur Num 2 Drücken kann wenn das Objekt "2677" dort auch ist.


    Es gibt leider kein GetObjectModel(objectid); Zwar kann man diese Funktion neu schreiben, musst nur CreateObject etc hooken, dennoch brauchst du das in dem Fall nicht.


    Gib dem Objekt 2677 also, wenn du es erstellt eine id, sprich new obj = CreateObject(2677,...); so und nun fragst du ab ob er in der Nähe von obj ist, mit GetObjectPos und IsPlayerInRangeOfPoint, kannst du das gut machen ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • GetObjectPos



    Also müsste die if(abfrage dann so aussehen?
    if(GetObjectPos(2677,Muell[o][XPoss],Muell[o][YPoss],Muell[o][ZPoss]) && IsPlayerInRangeOfPoint(i,5.0,Muell[o][XPoss],Muell[o][YPoss],Muell[o][ZPoss]))


    Weil die Objekte werden ja so gespeichert:
    muellobject[i] = CreateObject(2677, Muell[i][XPoss],Muell[i][YPoss],Muell[i][ZPoss]-0.25, 0.0, 0.0, 96.0, 100.0);

  • isPlayerNearMuell(playerid)
    {
    for(new i = 0;i<sizeof(Muell);i++)
    {
    if(!IsValidObject(muellobject[i]) continue;
    if(IsPlayerInRangeOfPoint(i,5.0,Muell[i][XPoss],Muell[i][YPoss],Muell[i][ZPoss]))
    {
    return 1;
    }
    }
    return 0;
    }


    if(newkeys == KEY_ANALOG_DOWN) //NUM 2
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    new carid = GetPlayerVehicleID(i);
    if(!IsASweeper(carid)) continue;
    if(isPlayerNearMuell(i) == 0) continue;


    PS: Eigentlich brauchst du hier die for für alle Spieler nicht, da ja nur ein Spieler für sich die Taste drücken kann.


  • Ich bekomme hier bei diesem Script irgendwie Warnings..
    IsPlayerNearMuell(playerid)
    {
    for(new i = 0;i<sizeof(Muell);i++)
    {
    if(!IsValidObject(muellobject[i])) continue;
    if(IsPlayerInRangeOfPoint(i,5.0,Muell[i][XPoss],Muell[i][YPoss],Muell[i][ZPoss]))
    {
    return 1;
    }
    }
    return 0;
    }


    Warnings:
    warning 203: symbol is never used: "playerid"