Plantage

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
  • Zurzeit ist es so, dass man Wasser und Samen für die Plantage braucht.
    Wenn man diese 2 Sachen hat, kann man per /plantweed die Plantage "starten".
    Diese ist dann hinter dem Haus an der Grove Street Base.


    Ich wollte fragen, wie ich das machen kann, dass die Plantage dann dort ist, wo ich den Befehl benutzt habe...
    Und dann per /pickupweed die Plantage ernten kann.
    if(strcmp("/plantweed", cmdtext, true, 15) == 0)
    {
    if(wBusy[playerid] == 1) return SendClientMessage(playerid, ADMIN_RED, "<!> You are already planting Weed");
    if(Weed[playerid] >= 1 && Water[playerid] >= 1)
    {
    SetPlayerCheckpoint(playerid, 2461.7163,-1714.4058,13.5238, 5.0);
    DrugTimer[playerid] = SetTimerEx("pDrug", 60000, 0, "i", playerid);
    Weed[playerid] -=1;
    Water[playerid] -=1;
    SendClientMessage(playerid, GREEN, "<!> Check your Weed at the Backyard.");
    }
    else
    {
    SendClientMessage(playerid, ADMIN_RED, "<!> You need at least a Weed Seed and a Pot of Water.");
    }
    return 1;
    }


    public OnPlayerEnterCheckpoint(playerid)
    {
    if(pWeed[playerid] == 1)
    {
    SendClientMessage(playerid, GREEN, "<> You harvested your weed. You can now do /useweed to use.");
    PlayerInfo[playerid][pLsd]+=200; <------------------
    DisablePlayerCheckpoint(playerid);
    pWeed[playerid] = 0;
    }
    else if(pWeed[playerid] == 0)
    {
    SendClientMessage(playerid, ADMIN_RED, "<!> Your weed is not ready yet.");
    }
    return 1;

    Und hier wollte ich noch wissen, wie man dann nicht nur Lsd bekommt sondern zwischen mehreren Sachen eine, halt dass man beim ernten eines der verfügbaren Drogen per Zufall bekommt.

  • Das mit dem /plantweed hab' ich jetzt geschafft. Die Plantage wird dort angeplanzt wo man den Befehl benutzt.
    Wie kann ich das jetzt mit dem /takeweed machen?


    new Float:bushx,Float:bushy,Float:bushz;
    GetPlayerPos(playerid, bushx, bushy, bushz);
    Bush = CreateObject(3409,bushx, bushy, bushz-2,0.0,0.0,0.0);


    Das ist das vom /plantweed...


    Hier /takeweed Befehl.


    if(strcmp(cmd, "/takeweed", true) == 0)
    {
    if(IsAMember(playerid) || PlayerInfo[playerid][pFMember] < 255)
    {
    if(pWeed[playerid] == 1)
    {
    new Float:bushx,Float:bushy,Float:bushz;
    GetPlayerPos(playerid, bushx, bushy, bushz);
    SendClientMessage(playerid, COLOR_LIGHTGREEN, "Die Plantage wurde geerntet.");
    PlayerInfo[playerid][pLsd]+=200;
    DisablePlayerCheckpoint(playerid);
    pWeed[playerid] = 0;
    SetTimer("DestroyBush",2000,false);
    }
    else if(pWeed[playerid] == 0)
    {
    SendClientMessage(playerid, COLOR_GREY, "Die Plantage ist noch nicht fertig!");
    }
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GREY,"Du bist in keiner Gang/Mafia!");
    }
    return 1;
    }

  • Einfach Positionen per Array abspeichern ;)


    Du erstellst ganz oben ein Array
    new Float:plantPos[3];


    und der Befehl hier soll so aussehen:

    new Float:plantPos[0], Float:plantPos[1], Float:plantPos[2];
    GetPlayerPos(playerid, plantPos[0], plantPos[1], plantPos[2]);
    Bush = CreateObject(3409,bushx, bushy, bushz-2,0.0,0.0,0.0);


    Und so fragst du dann ab, ob er sich auf der Plantage befindet;


    if(IsPlayerInRangeOfPoint(playerid,5.0,plantPos[0], plantPos[1], plantPos[2]))
    //...

  • Danke dir.
    Eins noch. Jetzt klappt alles wunderbar, jedoch möchte ich es so machen, dass jede Fraktion nur eine Plantage gleichzeitig pflanzen kann...
    Wie geht das?
    if(strcmp("/plantweed", cmdtext, true, 15) == 0)
    {
    if(IsAMember(playerid) || PlayerInfo[playerid][pFMember] < 255)
    {
    if(wBusy[playerid] == 1) return SendClientMessage(playerid, COLOR_GREY, "Deine Fraktion hat bereits eine Plantage!");
    if(Seed[playerid] >= 1 && Water[playerid] >= 1)
    {
    new Float:bushx,Float:bushy,Float:bushz;
    GetPlayerPos(playerid, bushx, bushy, bushz);
    gras = CreateDynamicObject(3409,bushx, bushy, bushz-1.5,0.0,0.0,0.0);
    DrugTimer[playerid] = SetTimerEx("pDrug", 1000*60*60*5, 0, "i", playerid);
    Seed[playerid] -=1;
    Water[playerid] -=1;
    SendClientMessage(playerid, COLOR_LIGHTGREEN, "Die Plantage wurde gepflanzt. Komm in 5 Stunden wieder um sie zu ernten!");
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Für die Plantage brauchst du Wasser und Samen!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist in keiner Gang/Mafia!");
    }
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Also müsste ich sozusagen new wBusy[MAX_PLAYERS]; 
    if(wBusy[playerid] == 1) return SendClientMessage(playerid, COLOR_GREY, "Deine Fraktion hat bereits eine Plantage!");
    das hier umändern? Wie schaff ich das mit den Id's der Fraktionen...? Ich hab's versucht und nicht geschafft.


    Nebenbei, danke dir, dass du mir die ganze Zeit hilfst.

  • Also müsste ich sozusagen new wBusy[MAX_PLAYERS]; 
    if(wBusy[playerid] == 1) return SendClientMessage(playerid, COLOR_GREY, "Deine Fraktion hat bereits eine Plantage!");
    das hier umändern? Wie schaff ich das mit den Id's der Fraktionen...? Ich hab's versucht und nicht geschafft.


    Nebenbei, danke dir, dass du mir die ganze Zeit hilfst.


    Nein, dann könnte JEDER Spieler einmal planten ;)

  • Ich hab's so versucht...Ich schaff die kacke einfach nicht^^


    if(IsAMember(playerid) || PlayerInfo[playerid][pFMember] < 255)
    {
    if(wBusy[playerid] == 1) return SendClientMessage(playerid, COLOR_GREY, "Deine Fraktion hat bereits eine Plantage!");
    ---->if(Planted[IsPlayerInFrac(playerid,5)] == 1) return SendClientMessage(playerid, COLOR_GREY, "Deine Fraktion hat bereits eine Plantage!!");<----------
    if(Seed[playerid] >= 1 && Water[playerid] >= 1)
    ....