2 Fragen, bitte um Hilfe

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
  • Moin moin,


    ich habe da ein paar Fargen und Probleme.
    1. Weedsystem = Ich habe ein Weedsystem, welches sagt das die Pflanzen 10 Minuten brauchen. Aber wenn man vorher schon "/wernten" macht steht da
    die sind in 1 Minute reif (wenn ich 1 Minute warte steht immer noch du musst 1 Minute warten) . Es ist etwas zu komplieziert für mich, deswegen brauch ich eure Hilfe.


    Spoiler anzeigen


    if(strcmp(cmd, "/einpflanzen", true) == 0)
    {
    if (!Samen[playerid])
    return SendClientMessage(playerid, GRAU,"Du hast keine Samen.");
    if (!Duenger[playerid])
    return SendClientMessage(playerid, GRAU,"Du hast kein Dünger.");

    Spoiler anzeigen
    for(new weed = 0; weed < sizeof(wInfo); weed++)
    {
    if(wInfo[weed][WeedPlanted] == 0 && wInfo[weed][WeedTime] == 0)
    {
    if (GetPlayerState(playerid) != PLAYER_STATE_ONFOOT)
    return SendClientMessage(playerid, GRUEN, "Das geht nicht in einem Fahrzeug.");
    if (GetPlayerInterior(playerid) != 0)
    return SendClientMessage(playerid, GRUEN, "Das geht hier nicht.");
    if(IsPlayerInRangeOfPoint(playerid,80.0,-1107.2208,-986.7385,129.2188))
    {
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerid, X, Y, Z);
    ApplyAnimation(playerid, "BOMBER","BOM_Plant_In",4.0,0,0,0,0,0);
    weedObject[weed] = CreateObject(3409, X, Y, Z-2, 0, 0, 0);
    Weeder[playerid] = 1200;
    wInfo[weed][WeedX] = X;
    wInfo[weed][WeedY] = Y;
    wInfo[weed][WeedZ] = Z;
    wInfo[weed][WeedTime] = 1;
    wInfo[weed][WeedPlanted] = 1;
    SendClientMessage(playerid,GRUEN,"Du hast deine Samen eingepflanzt, bitte warte 10 Minuten bis du Sie ernten kannst.");
    SendClientMessage(playerid,GRUEN,"benutze zum ernten /wernten");
    Samen[playerid] = 0;
    Duenger[playerid] = 0;
    return 1;
    }
    else
    {
    SendClientMessage(playerid,GRUEN,"Du bist nicht in der nähe vom Weedfeld!");
    return 1;

    }
    }
    }
    return 1;
    }

    Spoiler anzeigen

    ocmd:wernten(playerid,cmdtext[])
    {
    for(new i = 0; i < sizeof(wInfo); i++)
    {
    new string[64];
    if (IsPlayerInRangeOfPoint(playerid,5.0,wInfo[i][WeedX],wInfo[i][WeedY],wInfo[i][WeedZ]))
    {
    if(wInfo[i][WeedTime] > 0)
    {
    format(string, sizeof(string), "Diese Planzen sind noch nicht reif %d Minuten dauert es noch.", wInfo[i][WeedTime]);
    SendClientMessage(playerid,GRUEN,string);
    return 1;
    }
    ApplyAnimation(playerid, "BOMBER","BOM_Plant_In",4.0,0,0,0,0,0);
    new level = PlayerInfo[playerid][pDrugsSkill];
    PlayerInfo[playerid][Weed] += 20;
    SendClientMessage(playerid,GRUEN,"Du hast die Pflanze geerntet und 20g Weed erhalten");
    DestroyObject(weedObject[i]);
    wInfo[i][WeedX] = 0.0;
    wInfo[i][WeedY] = 0.0;
    wInfo[i][WeedZ] = 0.0;
    wInfo[i][WeedPlanted] = 0;
    return 1;
    }
    }
    return 1;
    }


    2. Farmer = Ich möchte das der Spieler sich zur Ladefläche vom begibt und dort etwas ablädt, wie kann ich das abfragen ? also ob er da steht ?



    Mfg Saphire :S

  • Das liegt daran das du wInfo[weed][WeedTime]
    wInfo[weed][WeedTime] = 1;
    wie im code auf 1 setzt. Wenn dann auf 10 und das ganze mit einem Timer reduzieren der sich jede Minute wiederholt.
    Besser wären jedoch timestamps.


    Dazu gibt es ein codeschnipsel


    stock IsPlayerBehindVehicle(playerid,veh)
    {
    new Float:vcoord[3]; GetVehiclePos(veh,vcoord[0],vcoord[1],vcoord[2]);
    new Float:vangle; GetVehicleZAngle(veh,vangle);
    new Float:vinfo[3]; GetVehicleModelInfo(GetVehicleModel(veh),VEHICLE_MODEL_INFO_SIZE,vinfo[0],vinfo[1],vinfo[2]);
    new Float:lenge = floatdiv(vinfo[1],2.0);
    new Float:radius = floatdiv(vinfo[0],2.0);
    vcoord[0] = floatadd(vcoord[0],(-lenge * floatsin(-vangle,degrees)));
    vcoord[1] = floatadd(vcoord[1],(-lenge * floatcos(-vangle,degrees)));
    if(IsPlayerInRangeOfPoint(playerid,radius,vcoord[0],vcoord[1],vcoord[2]))return 1;
    else return 0;
    }
    Quelle:
    http://forum.sa-mp.de/gta-mult…eschnipsel-36#post1071405