Beiträge von Quetai

    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)
    ....

    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.

    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;
    }

    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;
    }

    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.

    Ich arbeite gerade an einem Schwarzmark. Zurzeit hab' ich das so gemacht, dass man sich Heroin kaufen kann.
    Man bekommt beim kauf 10Stück.


    Wie kann ich das so machen, dass man sich erst dann wieder welche kaufen kann, wenn die Anzahl des Heroins auf 0 ist?


    if(dialogid == DIALOG_SMARKT)
    {
    if(response)
    {
    if(listitem == 0)
    {
    new price = 20 * CRACKPREIS;
    format(strieeng, sizeof(strieeng), "* Du hast dir Heroin für $%d gekauft. 10 Stück.",price);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, strieeng);
    PlayerInfo[playerid][pCrack] = 10;
    GivePlayerMoney(playerid, - price);
    return 1;
    }
    }
    return 1;
    }

    public OnPlayerEnterDynamicCP(playerid, checkpointid)
    {
    for(new i = 0;i<MAX_BUSS;i++)
    {
    if(checkpointid == BusinessInfo[i][CP])
    {
    cpid[playerid] = i;
    format(file,sizeof(file),"Business/%i.ini",i);
    if(dini_Int(file, "HasOwner") == 0)
    {
    ShowPlayerDialog(playerid,219,DIALOG_STYLE_MSGBOX,"Business","Möchtest du dieses Business kaufen?","Kaufen","Abbrechen");
    }
    }
    }
    return 1;
    }


    enum Business
    {
    CP,
    Text3D:bLabel,
    Cost,
    Payout,
    bName[128],
    }


    Das und halt das sind die einzigen Sachen mit den Checkpoint...


    BusinessInfo[busid][CP] = CreateDynamicCP(X,Y,Z,1.0,GetPlayerVirtualWorld(playerid),GetPlayerInterior(playerid),-1,50.0);
    format(Label, sizeof(Label), "Business: %s\nBesitzer: Niemand\nKosten: $%i\nGewinn: $%i", name,cost,payout);

    BusinessInfo[busid][CP] = CreateDynamicCP(X,Y,Z,1.0,GetPlayerVirtualWorld(playerid),GetPlayerInterior(playerid),-1,50.0);
    format(Label, sizeof(Label), "Business Name: %s\nOwner: No Owner\nCost: $%i\nPayout: $%i", name,cost,payout);


    Momentan kommt diese Standart rote Checkpoint, wenn ich ein Business mache.
    Wie kann ich diese Checkpoint zum Pickup 1274 (Money Icon) ändern?

    Hey Leute.
    Ich hab' 2 Probleme, bei denen ich nicht mehr weiter weiß.


    Das eine:
    Wo muss ich das einfügen, damit man den Befehl nur halt da einsetzen kann.


    Koordinaten: 684.7404,-1695.9199,3.1810


    CMD:tierkaufen(playerid,params[])
    {
    if(GetPVarInt(playerid,"havepets") != 1)
    {
    if(GetPVarInt(playerid,"havepet") != 1)
    {
    ShowPlayerDialog(playerid,101,DIALOG_STYLE_LIST,"Tiere","Schildkröte\nReh","Kaufen", "Abbrechen");
    }
    }
    return 1;
    }


    Und das zweite ist:
    Ich hab' mir ein /inventar System gemacht, bei den man zurzeit Green und Zigaretten abgeben kann, nur das Problem ist, wenn eine Person jemanden etwas abgibt bekommt die Person die was abgegeben hat beide Texte.
    PlayerInfo[greenid][pDrugs] += strval(GreenInfo[1]);
    PlayerInfo[playerid][pDrugs] -= strval(GreenInfo[1]);
    format(strieng, 256, "Du hast %s %d Gramm Drogen abgegeben.", (playerid), strval(GreenInfo[1]));
    SendClientMessage(playerid, COLOR_LIGHTGREEN, strieng);
    format(strieng, 256, "%s hat dir %d Gramm Drogen abgegeben.",(playerid), strval(GreenInfo[1]));
    SendClientMessage(playerid, COLOR_LIGHTBLUE, strieng);


    Kann mir da jemand helfen?

    if(strcmp(cmd, "/suspect", true) == 0 || strcmp(cmd, "/su", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(OnDuty[playerid] != 1)
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist nicht im Dienst!");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GREY, "Benutzung: /su [Playerid/Name] [Wanteds] [Verbrechen]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GREY, "Benutzung: /su [Playerid/Name] [Wanteds] [Verbrechen]");
    return 1;
    }
    new WantedAnzahl;
    WantedAnzahl = strval(tmp);
    if (IsACop(playerid) && OnDuty[playerid] ==1)
    {
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    if(PlayerInfo[giveplayerid][pJailed] > 0)
    {
    SendClientMessage(playerid, COLOR_GREY, "Der Spieler ist im Gefängnis!");
    return 1;
    }
    if (gTeam[giveplayerid] != 2 && !IsACop(giveplayerid))
    {
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, COLOR_GREY, "Benutzung: /su [Playerid/Name] [Wanteds] [Verbrechen]");
    return 1;
    }
    WantedLevel[giveplayerid] += WantedAnzahl;
    format(string, sizeof(string), "Du hast ein Verbrechen begangen (%s). Reporter: %s.",result,sendername);
    SendClientMessage(giveplayerid, COLOR_LIGHTRED, string);
    format(string, sizeof(string), "Aktuelles Wantedlevel: %d", WantedLevel[giveplayerid]);
    SendClientMessage(giveplayerid, COLOR_YELLOW, string);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsACop(i))
    {
    format(string, sizeof(string), "** %s gibt %s, %d Wanteds.**",sendername,giveplayer, WantedAnzahl);
    SendClientMessage(i, COLOR_YELLOW, string);
    format(string, sizeof(string), "** Verbrechen: %s ** Gesamt: %d **",result, WantedLevel[giveplayerid]);
    SendClientMessage(i, COLOR_YELLOW, string);
    }
    }
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Du kannst keinen Beamten anzeigen!");
    }
    }
    }
    else
    {
    format(string, sizeof(string), "%d ist kein aktiver Spieler.", giveplayerid);
    SendClientMessage(playerid, COLOR_GREY, string);
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist kein Beamter!");
    }
    }
    return 1;
    }


    Das ist der aktuelle Befehl um Wanteds zu vergeben. Wie kann ich das machen, dass der Befehl mit Wantedpunkten funktioniert, sprich:
    - /suspect [name][wantedpunkte][grund]
    - 10wantedpunkte = 1Wantedlevel(1Stern^^)
    -20wantedpunkte = 2Wantedlevel
    etc...

    Verbesserungsvorschlag: Wenn man sich eine Waffe gekauft hat, wäre es gut, wenn man dann selber entscheiden könnte wie viel Munition man zu der Waffe kaufen möchte. Der Preis einer Munition könnte irgendwie $2 oder so betragen.
    Wenn das ginge, dass perfekt!
    Ansonsten schon gut 9/10.

    if (strcmp(cmdtext, "/bibomben", true) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid,10.0,4567.0459,-1868.7660,13.0454))
    {
    if(BombeStatus == 1)
    {
    SendClientMessage(playerid, COLOR_GREY, "Du kannst nur jede 5 Stunden eine Bombe legen!");
    }
    SendClientMessage(playerid, COLOR_LIGHTRED,"Text");
    SendClientMessage(playerid, COLOR_LIGHTRED,"Text");
    GetPlayerPos(playerid, PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1]);
    bombe = CreateObject(1252, PlayerExplosionX[1], PlayerExplosionY[1], PlayerExplosionZ[1]-0.85, 0.0000, 0.0000, 0.0000);
    ClearAnimations(playerid);
    OnePlayAnim(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0); // Place Bomb
    SetTimer("Explosions", 30000, 0);
    SetTimer("Abklinge", 1000*60*60*5, 0);
    BombeStatus = 1;
    return 1;
    }
    }


    forward Abklinge(playerid);
    public Abklinge(playerid)
    {
    BombeStatus = 0;
    }


    new BombeStatus;


    Ich hab versucht, dass man die bombe nur alle 5 Stunden legen kann, aber man kann das immer wieder machen. Wie kann ich das ändern?
    Ich leg die Bombe, warte bis alles ende explodiert ist und dann mach ich wieder den Befehl, welcher eigentlich nicht gehen sollte aber geht...
    Halt, kann mir einer helfen?

    if (strcmp(cmdtext, "/bibomben", true) == 0)
    SetTimer("benzinpreise", 2000*60, 0);


    public benzinpreise(OldFuel, i, playerid, price)
    {
    new str[50];
    if ( OldFuel < MAXFULL ) {
    if (IsAtGasStation(playerid) && Motor[i] == false ) {
    format(str, sizeof str, "Du hast nicht genug Geld dabei!(Kosten: %d$)", price);
    if ( GetPlayerMoney(playerid) >= OEL ) {
    Tank[i] ++;
    SetTimerEx("benzinpreise", TANKDAUER * 1, 0, "iiii", Tank[i], i, playerid, price + OEL);
    GivePlayerMoney(playerid, -OEL);
    }
    else { SendClientMessage(playerid,error, str); }
    }
    else { format(str, sizeof str, "Das Tanken wurde beendet. (Kosten: %d$)", price); SendClientMessage(playerid,error, str); }
    }
    else { format(str, sizeof str, "Aufgrund der erhöhten Benzinpreise wurde dein Fahrzeug für $%d betankt!", price); SendClientMessage(playerid, info, str); }
    return 1;
    }


    dcmd_fillcars(playerid, params[]) {
    #pragma unused params
    if(IsPlayerInAnyVehicle(playerid)) {
    if(IsAtGasStation(playerid)) {
    new vehicle = GetPlayerVehicleID(playerid); new price = MAXFULL; price -= Tank[vehicle];
    if ( Motor[vehicle] == true ) { SendClientMessage(playerid, COLOR_GREY, "Du kannst nicht tanken, wenn der Motor noch an ist."); }
    else {
    if(GetPlayerMoney(playerid) > price*OEL) {
    TogglePlayerControllable(playerid, 1);
    new OldFuel = Tank[vehicle], t = price * TANKDAUER;
    SetTimerEx("benzinpreise", 1000, 0, "iiii", OldFuel, vehicle, playerid, 0);
    GameTextForPlayer(playerid, "~w~~n~~n~~n~~n~~n~~n~~n~~n~Das Fahrzeug wird betankt.",t,3);
    }
    else { SendClientMessage(playerid, COLOR_GREY, "Du hast nicht genug Geld dabei!"); }
    }
    }
    else { SendClientMessage(playerid, COLOR_GREY, "Du bist an keiner Tankstelle."); }
    }
    return 1;
    }


    Wie kann ich das machen, dass man den Befehl "fillcars" halt nur diese Zeit lang benutzen kann...und den normalen /tanken Befehl "nicht benutzbar" machen kann?
    Weil im moment kann man einfach beide benutzen...Ich will aber halt, dass wenn man /bibomben gemacht hat, man nur /fillcars machen kann.