Pickups nur für bestimmtes Team zugänglich machen

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
  • Jo servus und sorry wenn ich nerve :)
    Habe mir überlegt das Pickup system etwas zu bearbeiten(bin leider noch ein noob)
    nun ich habe gedacht, dass der Waffenschrank nur für das Team Staatsdiener zugänglich gemacht wird, und habe mich auch dran versucht doch irgendwie scheint es nicht zu klappen :P


    Also hier mal die news :)


    enum InteriorEnum
    {
    ....
    Frakid
    ...
    }


    dann da wo die Pickups sind


    new IntInt[MAX_INTERIORS][InteriorEnum]=
    {
    {-2034.5829,148.7563,28.8359, 1519.9705,-1155.4916,1013.0959 ,0 ,0 ,"Waffenschrank",0xFFFA00FF, 1},//Float (Enter) XYZ, Float (Exit) XYZ, Int ID, Int Virtuell World, Text, Farbcode, Frakid(Team)
    ...


    und dann wenn er Enter drückt


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys & 16)
    {
    new player = GetInteriorEnter(playerid);
    if(GetPVarInt(playerid, "Team") == IntInt[player][Frakid]) {
    if(player!=-1)
    {
    SetPlayerPos(playerid,IntInt[player][exitX],IntInt[player][exitY],IntInt[player][exitZ]);
    SetPlayerInterior(playerid,IntInt[player][InteriorID]);
    SetPlayerVirtualWorld(playerid,IntInt[player][InteriorVirtualWorld]); }
    }
    player = GetInteriorExit(playerid);
    if(GetPVarInt(playerid, "Team") == IntInt[player][Frakid]) {
    if(player!=-1)
    {
    SetPlayerPos(playerid,IntInt[player][enterX],IntInt[player][enterY],IntInt[player][enterZ]);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0); }
    }
    }
    return 1;
    }


    ich weiss damit jetzt alle bei denen ich keine Frakid eingebe irgendwie dann auch nicht rein können? also ich muss ja abfragen ob eine frakid abgefragt wird, wenn ja ob er in diesem team ist und wenn keine abgefragt wird alle rein können?
    wie mach ich das :)


    MfG Pikachu :thumbup:



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Da player negativ werden kann solltest du das andersherum schreiben:
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys & 16)
    {
    new player = GetInteriorEnter(playerid);
    if(player!=-1) {
    if(GetPVarInt(playerid, "Team") == IntInt[player][Frakid])
    {
    SetPlayerPos(playerid,IntInt[player][exitX],IntInt[player][exitY],IntInt[player][exitZ]);
    SetPlayerInterior(playerid,IntInt[player][InteriorID]);
    SetPlayerVirtualWorld(playerid,IntInt[player][InteriorVirtualWorld]); }
    }
    player = GetInteriorExit(playerid);
    if(player!=-1) {
    if(GetPVarInt(playerid, "Team") == IntInt[player][Frakid])
    {
    SetPlayerPos(playerid,IntInt[player][enterX],IntInt[player][enterY],IntInt[player][enterZ]);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid,0); }
    }
    }
    return 1;
    }


    Falls es so auch nicht klappt sind wohl deine Variablen falsch. Lass dir dann mit printf einfach mal die Werte von player, Frakid, und Team ausgeben, dann weißt du wo es hängt.

  • Hey cool! Es funktionier ;)
    Noch eine kleine Frage undzwar werden meine Pickups(Weiße Pfeile) in Interiors nicht angezeigt :)
    Hier mal meine OneGamemodeinit zeilen..


    for(new g;g<MAX_INTERIORS;g++)
    {
    CreatePickup(1318,1,IntInt[g][enterX],IntInt[g][enterY],IntInt[g][enterZ],0);
    Create3DTextLabel(IntInt[g][InteriorLabel],IntInt[g][Farbcode],IntInt[g][enterX],IntInt[g][enterY],IntInt[g][enterZ],10.0,0,1);
    CreatePickup(1318,1,IntInt[g][exitX],IntInt[g][exitY],IntInt[g][exitZ],0);
    Create3DTextLabel("Ausgang",IntInt[g][Farbcode],IntInt[g][exitX],IntInt[g][exitY],IntInt[g][exitZ],10.0,0,1);
    }


    Muss man eventuell noch dem Pickup sagen in welchem Interior es sich befindet damit man es sehen kann :)?


    Danke für jede Hilfe!


    MfG :thumbup:



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • So müsste es gehen :)

  • Hehe danke, doch leider wird der 3D Text jetzt nicht mehr angezeigt :)



    for(new g;g<max_interiors;g++)
    {
    CreatePickup(1318,1,IntInt[g][enterX],IntInt[g][enterY],IntInt[g][enterZ],-1);
    Create3DTextLabel(IntInt[g][InteriorLabel],IntInt[g][Farbcode],IntInt[g][enterX],IntInt[g][enterY],IntInt[g][enterZ],10.0,IntInt[g][vW],1);
    CreatePickup(1318,1,IntInt[g][exitX],IntInt[g][exitY],IntInt[g][exitZ],-1);
    Create3DTextLabel("Ausgang",IntInt[g][Farbcode],IntInt[g][exitX],IntInt[g][exitY],IntInt[g][exitZ],10.0,IntInt[g][vW],1);
    }



    hier bitte =)

  • Create3DTextLabel("Ausgang",IntInt[g][Farbcode],IntInt[g][exitX],IntInt[g][exitY],IntInt[g][exitZ],10.0,0,1);
    Dann solltest du das so machen
    Create3DTextLabel("Ausgang",IntInt[g][Farbcode],IntInt[g][exitX],IntInt[g][exitY],IntInt[g][exitZ],10.0,IntInt[g][vW],1);//da wo vW steht einfach dein Enum Variabel Namen eintragen

  • Gut leute jetzt funktioniert soweit alles, blos ist es immer noch so dass wenn ich im Team 3 bin, und wo rein möchte wo eigentlich ALLE teams rein können es nicht geht..
    das heisst dafür muss ich mich wieder fraktionslos machen und das sollte eigentlich nicht der sinn sein :(



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

  • Gut leute jetzt funktioniert soweit alles, blos ist es immer noch so dass wenn ich im Team 3 bin, und wo rein möchte wo eigentlich ALLE teams rein können es nicht geht..
    das heisst dafür muss ich mich wieder fraktionslos machen und das sollte eigentlich nicht der sinn sein :(


    schick mir nochmal das aktuelle dann schau ich rüber =)