Waffendealer

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Hey,


    ich habe ein Problem wen ich jetzt /materials get 15 eingebe wird der befehl nicht ausgeführt warum?

  • Versuchs mal so.


    @Dr. Frauenarzt

  • Sicher, dass du an den Koordinaten 597.0846,-1248.3699,18.2641 im Radius von 3.0 Units bist? Ggf. mal eine Fehlermeldung hinzufügen, wenn man sich nicht in der Nähe befindet, um diese Eventualität ausschließen zu können. Zusätzlich wird der Code in Zeile 14 nicht funktioniert (ich weiß ist ausgeklammert, möchte ich nur hinweisen). Da musst du dann noch vor dem i ein s setzen ("s[30]i"), da logischerweise in params weiterhin "get" enthalten ist und somit dein sscanf eine ungültige Syntax zurückgibt.

  • Wen ich jetzt /materials get 15 eingebe spuckt er ganze zeit das aus:


    Du hast zwei Optionen. Entweder get oder deliver.


    obwohl ich am Punkt bin das mit den samen hat sich erledigt hab das in ein anderen Befehl rein gemacht

  • Okay, dann lass dir mal bitte mal den Inhalt von befehl ausgeben (per printf()).



    Zwar hast du einen Größenunterschied zwischen angegebener Größe innerhalb von sscanf und der Deklaration => erklärt aber nicht den Fehler. Wie gesagt, lass dir mal den Inhalt ausgeben.

  • //edit etwas gegooglet



    CMD:materials(playerid,params[])
    {
    new string[128], befehl[25];
    if(sscanf(params, "s[30]",befehl)) return SendClientMessage(playerid, COLOR_GREY, "Benutze /materials [get/deliver]");
    if(!strcmp(befehl, "get", true) == 0)
    {
    new menge;
    if(IsPlayerInRangeOfPoint(playerid, 3.0, 597.0846,-1248.3699,18.2641))
    {
    //if(sscanf(params, "i", menge))return SendClientMessage(playerid, COLOR_GREY, "Benutze /getpaket [1-15]");
    if(menge<1||menge>15)return SendClientMessage(playerid, COLOR_GREY, "Wähle eine Menge zwischen 1 bis 15 aus!");
    if((pPacketsWD[playerid]+menge) > 15)return SendClientMessage(playerid, COLOR_GREY, "Soviele Pakete kannst du nicht mitnehmen.");
    new preis = (menge*200);
    if(GetMoney(playerid) < preis)return SendClientMessage(playerid, COLOR_GREY, ERROR_MONEY);
    pPacketsWD[playerid] += menge;
    GiveMoney(playerid, -preis);
    format(string, sizeof(string), "Du hast %d Pakete für $%d gekauft. Bringe diese nun schnell nach San Fierro!", menge, preis);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    SetPlayerCheckpointEx(playerid, -2109.5037,-0.4467,34.8972, 4.0, CP_GETPAKET_WD, INVALID_CHECKPOINT_TYPE);
    }
    }
    else if(!strcmp(befehl, "deliver", true) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, -2109.5037,-0.4467,34.8972))
    {
    if(pPacketsWD[playerid] == 0)return SendClientMessage(playerid, COLOR_GREY, "Du hast keine Pakete zum abgeben.");
    new mats = (pPacketsWD[playerid]*50);
    format(string, sizeof(string), "Du hast %d Pakete abgegeben und %d Materialien dafür erhalten.", pPacketsWD[playerid], mats);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    pPacketsWD[playerid] = 0;
    Spieler[playerid][pEisen] += mats;
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, -1, "Du hast zwei Optionen. Entweder get oder deliver.");
    }
    return 1;
    }


    Eventuell klappt das so

    Einmal editiert, zuletzt von robbi2304 ()

  • Funktioniert nicht,


    server log spuckt auch nichts aus

  • Führ bitte einmal diesen Code aus und gib uns die Daten, die im serverlog stehen.

  • Wie wäre es spontan mit dem ersten sscanf ganz oben in das hier zu ändern:
    new menge;
    if(sscanf(params, "s[30]i",befehl, menge)) return SendClientMessage(playerid, COLOR_GREY, "Benutze /materials [get/deliver] [menge]");


    Dann sollte es auch gehen .. :)


  • CMD:seed(playerid,params[])
    {
    new Option[25], string[128], Float:Pos[3];
    if(IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, COLOR_GREY, "Du kannst diesen Befehl in keinem Fahrzeug verwenden.");
    if(sscanf(params, "s[30]i",Option)) return SendClientMessage(playerid, COLOR_GREY, "Benutze /seed [buy/plant/harvest]");
    if(strcmp(Option, "buy", true) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, -2109.5037,-0.4467,34.8972))
    {
    new preis = (2*1500);
    if(GetMoney(playerid) < preis)return SendClientMessage(playerid, COLOR_GREY, ERROR_MONEY);
    if((Spieler[playerid][pDrogenSamen]+2) > 2)return SendClientMessage(playerid, COLOR_GREY, "So viele Samen kannst du nicht mitnehmen.");
    Spieler[playerid][pDrogenSamen] = 2;
    GiveMoney(playerid, -preis);
    format(string, sizeof(string), "Du hast 2 Samen für %d$ gekauft.", preis);
    SendClientMessage(playerid, COLOR_GREEN, string);
    SendClientMessage(playerid, COLOR_GREEN, "Die Samen können nun mit ´/seed plant´ verwendet werden.");
    SendClientMessage(playerid, COLOR_GREEN, "Bitte beachte. Samen dürfen nicht an unerreichbaren/unrealistischen Stellen gepflanzt werden; bspw.");
    SendClientMessage(playerid, COLOR_GREEN, "in der Luft, auf Objekte/Bäume/Häuser, auf einer unrealistischen Stelle (keine Grünfläche).");


    }
    return 1;
    }
    if(strcmp(Option, "plant", true) == 0)
    {
    if(Spieler[playerid][pDrogenSamen] != 2)return SendClientMessage(playerid, COLOR_GREY, "Du benötigst mindestens 2 Samen, um eine Pflanze zu züchten.");
    if(Spieler[playerid][pGepflanzt] == 1)return SendClientMessage(playerid, COLOR_GREY, "Du hast bereits eine Pflanze angepflanzt.");
    if(GetPlayerInterior(playerid) != 0)return SendClientMessage(playerid, COLOR_GREY, "Du kannst keine Pflanzen in einem Interior anbauen.");
    GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
    for(new i=1;i<MAX_PFLANZEN;i++)
    {
    if(Drogen[i][dErstellt] != 1)
    {
    new query[128];
    format(query, sizeof(query), "INSERT INTO `script_drogen` (id) VALUES ('%d')", i);
    mysql_function_query(myCon, query, false, "", "");
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Du hast 2 Samen gepflanzt. Mit ´/seed harvest´ kannst du den aktuellen Stand sowie die Position einsehen.");
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "Der Mindestertrag an Drogen ist abhängig von der Zeit, mindestens jedoch werden 30 Minuten benötigt.");
    Drogen[i][dPflanzeObject] = CreateDynamicObject(19473, Pos[0], Pos[1], Pos[2]-1.0, 0, 0, 0, 0);
    Drogen[i][dID] = i;
    Drogen[i][dPflanzeX] = Pos[0];
    Drogen[i][dPflanzeY] = Pos[1];
    Drogen[i][dPflanzeZ] = Pos[2];
    Drogen[i][dErstellt] = 1;
    Spieler[playerid][pDrogenSamen] = 0;
    Spieler[playerid][pGepflanzt] = 1;
    new value = gettime()+(1200);
    Drogen[i][dPflanzenTimer] = value;
    format(Drogen[i][dBesitzer], 16, "%s", GetName(playerid));
    new pYear, pMonth, pDay, pHour, pMinute, pSecond;
    TimestampToDate(Drogen[i][dPflanzenTimer], pYear, pMonth, pDay, pHour, pMinute, pSecond, 1, 0);
    Drogen[i][dPflanzeText] = CreateDynamic3DTextLabel(" ",COLOR_WHITE,Drogen[i][dPflanzeX],Drogen[i][dPflanzeY],Drogen[i][dPflanzeZ],5.0);
    return 1;
    }
    }
    return SendClientMessage(playerid, COLOR_GREY, "Maximale Anzahl an Drogenpflanzen erreicht!");
    }
    if(strcmp(Option, "harvest", true) == 0)
    {
    if(Spieler[playerid][pGepflanzt] == 0)return SendClientMessage(playerid, COLOR_GREY, "Du hast keine Pflanze angepflanzt.");
    for(new i=1;i<MAX_PFLANZEN;i++)
    {
    if(Drogen[i][dErstellt] != 0)
    {
    if(!strcmp(GetName(playerid), Drogen[i][dBesitzer], false))
    {
    if(!IsPlayerInRangeOfPoint(playerid, 5.0, Drogen[i][dPflanzeX], Drogen[i][dPflanzeY], Drogen[i][dPflanzeZ]))
    {
    SetPlayerCheckpointEx(playerid, Drogen[i][dPflanzeX], Drogen[i][dPflanzeY], Drogen[i][dPflanzeZ], 3.0, CP_DROGEN, INVALID_CHECKPOINT_TYPE);
    return SendClientMessage(playerid, COLOR_GREY, "Du bist nicht an deiner Pflanze.");
    }
    if(gettime() < Drogen[i][dPflanzenTimer])return SendClientMessage(playerid, COLOR_GREY, "Die Pflanze ist noch nicht reif!");
    new marihuana = randomex(1, 6), query[128];
    format(string, sizeof(string), "Du hast deine Pflanze geerntet und %d Gramm Marihuana erhalten.", marihuana);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    Spieler[playerid][pGepflanzt] = 0;
    Spieler[playerid][pMarihuana] += marihuana;
    format(query, sizeof(query), "DELETE FROM `script_drogen` WHERE `id`='%d'", Drogen[i][dID]);
    mysql_function_query(myCon, query, false, "", "");
    mysql_free_result();
    DestroyDynamicObject(Drogen[i][dPflanzeObject]);
    DestroyDynamic3DTextLabel(Drogen[i][dPflanzeText]);
    Drogen[i][dPflanzeText] = Text3D:INVALID_3DTEXT_ID;
    return 1;
    }
    }
    }
    }
    return 1;
    }



    Hey,


    Ich hab noch ein Problem wen ich /seed buy eingebe wird das nicht automatisch gekauft funktioniert garnicht führt nicht aus.


    wen ich /seed plant oder harvest eingebe funktioniert es einwand frei was hab ich falsch gemacht :/?