Minigun wir nicht ausgestattet!

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
  • Guten Abend, Community.
    Also, ich habe ein Problem und hoffe, dass ihr mir helfen könnt:
    Ich möchte, dass der Spieler ab einer bestimmten Stelle eine Minigun kriegt, und ab einer bestimmten Stelle soll sie ihm auch wieder weggenommen werden.
    Ich möchte auch noch sagen, dass ich es bei public OnPlayerSpawn geschrieben habe, weil in nicht genau wusste wo es hinsollte, bin noch totaler Anfänger :(


    public OnPlayerSpawn(playerid)
    {
    if(IsPlayerInRangeOfPoint(playerid,10.0,-25.8013,1485.0842,28.4276))
    {
    GivePlayerWeapon(playerid,38,800);
    }

    if(IsPlayerInRangeOfPoint(playerid,10.0,-27.5612,1479.1787,15.2969))
    {
    RemovePlayerWeapon(playerid,38);
    }

    if(IsPlayerInRangeOfPoint(playerid,10.0,-51.3074,1504.4897,28.4294))
    {
    GivePlayerWeapon(playerid,38,800);
    }

    if(IsPlayerInRangeOfPoint(playerid,10.0,-27.5612,1479.1787,15.2969))
    {
    RemovePlayerWeapon(playerid,38);
    }
    return 1;
    }


    Hier ist noch der stock für RemovePlayerWeapon:
    stock RemovePlayerWeapon(playerid, weaponid)
    {
    new plyWeapons[12];
    new plyAmmo[12];


    for(new slot = 0; slot != 12; slot++)
    {
    new wep, ammo;
    GetPlayerWeaponData(playerid, slot, wep, ammo);


    if(wep != weaponid)
    {
    GetPlayerWeaponData(playerid, slot, plyWeapons[slot], plyAmmo[slot]);
    }
    }


    ResetPlayerWeapons(playerid);
    for(new slot = 0; slot != 12; slot++)
    {
    GivePlayerWeapon(playerid, plyWeapons[slot], plyAmmo[slot]);
    }
    }


    Also beim compilen bekomme ich keine Fehler, ich kriege halt nur die Minigun nicht :S


    Mit freundlichen Grüßen,
    Twonky


  • public RemovePlayerWeapon(playerid, weaponid)
    {
    new plyWeapons[12];
    new plyAmmo[12];


    for(new slot = 0; slot != 12; slot++)
    {
    new wep, ammo;
    GetPlayerWeaponData(playerid, slot, wep, ammo);


    if(wep != weaponid)
    {
    GetPlayerWeaponData(playerid, slot, plyWeapons[slot], plyAmmo[slot]);
    }
    }


    ResetPlayerWeapons(playerid);
    for(new slot = 0; slot != 12; slot++)
    {
    GivePlayerWeapon(playerid, plyWeapons[slot], plyAmmo[slot]);
    }
    }


    //OnGamemodeInit
    SetTimer("RemovePlayerWeapon", 1*3000, 1);

  • Danke, aber habe ein neues Problem.
    Ich habe eine Andere Lösung gefunden, da die Minigun ja auch ab einer bestimmten Personw ieder verschwinden soll.
    Jetzt habe ich diesen Code hier:
    public OnPlayerUpdate(playerid)
    {
    if(IsPlayerInZone(playerid,-51.1545,1502.7268,-56.7953,1500.9961))
    {
    GivePlayerWeapon(playerid,38,800);
    }
    else
    {
    ResetPlayerWeapons(playerid);
    }

    if(IsPlayerInZone(playerid,-25.4338,1484.1472,-31.2377,1482.2985))
    {
    GivePlayerWeapon(playerid,38,800);
    }
    else
    {
    ResetPlayerWeapons(playerid);
    }
    return 1;
    }


    Aber die Minigun wird nicht ausgestattet o_O

  • Doch, aber das jede Millisekunde! Und wenn deine Koodinaten falsch sind, kannst garnicht gehen! Schau mal, ob es so geht und ob in der Konsole nun steht ob die Spielerid eine Waffe bekommen hat wenn er rein geht. Wenn nicht, sind deine Koordinaten falsch!


    new bool:PlayerHaveMinigun[MAX_PLAYERS];
    public OnPlayerUpdate(playerid)
    {
    if(IsPlayerInZone(playerid,-51.1545,1502.7268,-56.7953,1500.9961)||IsPlayerInZone(playerid,-25.4338,1484.1472,-31.2377,1482.2985))
    {
    if(PlayerHaveMinigun[playerid]==false)
    {
    printf("%d hat eine Minigun erhalten!",playerid)
    GivePlayerWeapon(playerid,38,800);
    PlayerHaveMinigun[playerid]=true;
    }
    }
    else
    {
    if(PlayerHaveMinigun[playerid]==true)
    {
    ResetPlayerWeapons(playerid);
    PlayerHaveMinigun[playerid]=false;
    printf("%d wurden die Waffen weggenommen!",playerid)
    }
    }
    return 1;
    }

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • Wie aber schon gesagt, jede Millisekunde ist nicht wirklich Ressourcensparend, bau dir ein stock mit einem Timer oder so.
    Denn du musst ja nicht jede Millisekunde abfragen, ob der Spieler in diesem Bereich ist, jede Sekunde würde eigentlich vollkommen reichen.


  • Funktioniert auch nicht, aber an den Koordinaten kann es nicht liegen... die stimmen :S

  • Steht in der Konsole wenn du das Gebiet betrittst "0 hat eine Minigun erhalten!" oder "0 wurden die Waffen weggenommen!"? Wenn nicht, sind die Koordinaten falsch also überprüf das doch erstmal!

    Why do programmers always mix up Halloween and Christmas?
    Oct 31 == Dec 25

  • Das Problem ist das du Zwei abfragen hast, und zwei verschidende Coords ...


    Setzte für jede Waffe eine Variable, natärlich für jden Spieler.


    public OnPlayerUpdate(playerid)
    {
    if(IsPlayerInZone(playerid,-51.1545,1502.7268,-56.7953,1500.9961))
    {
    GivePlayerWeapon(playerid,38,800);
    }
    else if(IsPlayerInZone(playerid,-25.4338,1484.1472,-31.2377,1482.2985))
    {
    GivePlayerWeapon(playerid,38,800);
    }
    else
    {
    ResetPlayerWeapons(playerid);
    }
    return 1;
    }