[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
  • weiß jemand wie man ein Aktivitätsbonus macht. Z.b


    Tag 1 1000$ usw.


    Der Aktovitäts bonus soll nicht weiter laufen wen er ESC ist.


    Man soll jeden Tag 2 Stunden maximal spielen.
    Wen man ein tag nicht online ist wird das wider resettet.


    Heißt


    Du hast den Aktivitätsbonus noch nicht erhalten ( Tag 1)


    Du hast bereits den Aktivitätsbonus erhalten (tag 1)


    DER Aktivitäts Bonus wurde zurückgesetzt weil du dich nicht eingeloggt hast.


    Mit /activity soll man sehn wielang er online ist und wv Minuten noch bis zum bonus sind.


    Wen er den bonus bekommt:


    Du hast den Aktivitätsbonus erhalten (.....) egal ob geld oder rp


    E:
    Würde mich sehr freuen mit jemand helfen kann :)

  • @Dr. Frauenarzt
    Du speicherst in der Datenbank einen Timestamp (gettime()) wann er zuletzt den Bonus bekommen hat. Dann noch eine Variable in der steht wie oft er den Bonus schon in Folge bekommen hat. Und dann musst du nurmehr regelmäßig prüfen ob der letzte Bonus zwischen 24 und 48 Stunden her ist. Wenn ja erhält er den nächsten Bonus. Wenns früher ist kann er noch keinen erhalten weil er ihn schon hatte. Und wenns später ist wird der Zähler resettet und er bekommt wieder den ersten Bonus.


    Hoffe das hilft dir n bisschen.
    Ps.: Wenn du noch möchtest das er ihn an jedem Tag einmal erhält (egal ob das letzte mal um 8 Uhr abends war und er jetzt schon um 14 Uhr online ist) dann musst du über getdate den Tag speichern und kannst dann zusätzlich zu der überprüfung ob es unter 24 Stunden her ist eine überprüfung ob es noch der gleiche Tag ist hinzufügen bzw in dem Fall ob es nichtmehr der gleiche Tag ist aber unter 24 Stunden her ist.


    Mfg

  • Hey,


    if(GetPlayerVehicleCount(playerid) == 0) -> Hat kein Schlüssel


    so ich wollte /givecarkey einfügen heißt.


    /givecarkey [playerid (Fraktion)


    also der Spieler hat die Auswahl entweder er gibt den schlüssel für die Fraktion für sein Auto
    oder nur an ein gewissen Spieler.


    z.b /givecarkey 123 z.b aber er muss den schlüssel bei /carkey ausgewählt haben.




    CMD:carkey(playerid)
    {
    if(!IsLoggedIn(playerid))return 1;
    new string1[64], string2[64], string3[64], string4[64];
    if(GetPlayerVehicleCount(playerid) == 0)return SendClientMessage(playerid, COLOR_GREY, "Du besitzt keine Autoschlüssel.");
    if(PrivateVehicle[playerid][0][modelid] >= 400 && PrivateVehicle[playerid][0][modelid] <= 611) // Erster Slot
    {
    format(string1, sizeof(string1), "{FFFFFF}%s\n", VehicleName[PrivateVehicle[playerid][0][modelid]-400]);
    }
    else
    {
    format(string1, sizeof(string1), "{FFFFFF}-\n");
    }


    if(PrivateVehicle[playerid][1][modelid] >= 400 && PrivateVehicle[playerid][1][modelid] <= 611) // Zweiter Slot
    {
    format(string2, sizeof(string2), "{FFFFFF}%s\n", VehicleName[PrivateVehicle[playerid][1][modelid]-400]);
    }
    else
    {
    format(string2, sizeof(string2), "{FFFFFF}-\n");
    }


    if(PrivateVehicle[playerid][2][modelid] >= 400 && PrivateVehicle[playerid][2][modelid] <= 611) // Dritter Slot
    {
    format(string3, sizeof(string3), "{FFFFFF}%s\n", VehicleName[PrivateVehicle[playerid][2][modelid]-400]);
    }
    else
    {
    format(string3, sizeof(string3), "{FFFFFF}-\n");
    }


    if(PrivateVehicle[playerid][3][modelid] >= 400 && PrivateVehicle[playerid][3][modelid] <= 611) // Vierter Slot
    {
    format(string4, sizeof(string4), "{FFFFFF}%s\n", VehicleName[PrivateVehicle[playerid][3][modelid]-400]);
    }
    else
    {
    format(string4, sizeof(string4), "{FFFFFF}-\n");
    }
    strdel(DialogString, 0, sizeof(DialogString));
    format(DialogString, sizeof(DialogString), "%s%s%s%s", string1, string2, string3, string4);
    ShowPlayerDialog(playerid, DIALOG_CARKEYS, DIALOG_STYLE_LIST, "Deine Autoschlüssel", DialogString, "Orten", "Schließen");
    return 1;
    }


    ist der Befehl für /carkey.


    und mit /carkeywithdraw wider den schlüssel entziehen


    wen man /givecarkey playerid soll erscheinen.


    Du hast %s den Zweitschlüssel für dein %s gegeben.


    bei /carkeywithdraw


    Du hast deinen Zweitschlüssel von %s entzogen.
    Du kannst deinen Zweitschlüssel nun neu vergeben.


    wen der Spieler /carkeywithdraw eingibt und er den schlüssel nicht vergeben hat soll die nachricht


    Du kannst deinen Zweitschlüssel nun neu vergeben.


    wäre geil wen ihr mir helfen könnt

  • Hey wieso kann ich dieses Bos nicht anklicken ?
    @Jeffry:

  • Hey wieso kann ich dieses Bos nicht anklicken ?
    @Jeffry:

    hat jemand ein Plan ?


  • public OnVehicleSirenStateChange(playerid, vehicleid, newstate)
    {
    new fV = IsAFraktionsVeh(vehicleid);
    if(IsAFraktionsVeh(vehicleid))
    {
    if(fVehicle[fV][vehSiren] == 1)
    {
    if(newstate)
    {
    FlashTime[vehicleid] = SetTimerEx("OnLightFlash", flashtime, true, "d", vehicleid);
    fVehicle[fV][vehSiren1] = CreateDynamicObject(19419, 0, 0, 0, 0, 0, 0, 0);
    AttachDynamicObjectToVehicle(fVehicle[fV][vehSiren1], fVehicle[fV][vehID], 0.000000, 0.000000, 0.829999, 0.000000, 0.000000, 0.000000);
    GameTextForPlayer(playerid, "~w~Sirene ~g~an", 5000, 1);
    }


    if(!newstate)
    {
    new panels, tuer, licht, reifen;
    KillTimer(FlashTime[vehicleid]);
    GetVehicleDamageStatus(vehicleid, panels, tuer, licht, reifen);
    UpdateVehicleDamageStatus(vehicleid, panels, tuer, 0, reifen);
    DestroyDynamicObject(fVehicle[fV][vehSiren1]);
    GameTextForPlayer(playerid, "~w~Sirene ~r~aus", 5000, 1);
    }
    }
    }
    return 1;
    }



    forward OnLightFlash(vehicleid);
    public OnLightFlash(vehicleid)
    {
    new panels, tuer, licht, reifen;
    new fV = IsAFraktionsVeh(vehicleid);
    GetVehicleDamageStatus(vehicleid, panels, tuer, licht, reifen);
    if(IsAFraktionsVeh(vehicleid))
    {
    if(fVehicle[fV][vehSiren] == 1)
    {
    switch(Flash[vehicleid])
    {
    case 0: UpdateVehicleDamageStatus(vehicleid, panels, tuer, 2, reifen);


    case 1: UpdateVehicleDamageStatus(vehicleid, panels, tuer, 5, reifen);


    case 2: UpdateVehicleDamageStatus(vehicleid, panels, tuer, 2, reifen);


    case 3: UpdateVehicleDamageStatus(vehicleid, panels, tuer, 4, reifen);


    case 4: UpdateVehicleDamageStatus(vehicleid, panels, tuer, 5, reifen);


    case 5: UpdateVehicleDamageStatus(vehicleid, panels, tuer, 4, reifen);
    }
    if(Flash[vehicleid] >=5) Flash[vehicleid] = 0;
    else Flash[vehicleid] ++;
    }
    }
    return 1;
    }


    Hey,


    Ich hab eine frage warum kann nur Fraktion ID 6 das ausführen und Fraktion ID 3 nicht :o?

  • Hey wieso kann ich dieses Bos nicht anklicken ?

    So rum klappt es:
    Register[2] = TextDrawCreate(244.000000, 126.566665, "usebox");
    TextDrawLetterSize(Register[2], 1.000000, 1.964812);
    TextDrawTextSize(Register[2], 382.500000, 16.000000);
    TextDrawAlignment(Register[2], 0);
    TextDrawColor(Register[2], 0);
    TextDrawUseBox(Register[2], true);
    TextDrawBoxColor(Register[2], 102);
    TextDrawSetShadow(Register[2], 0);
    TextDrawSetOutline(Register[2], 0);
    TextDrawFont(Register[2], 1);
    TextDrawSetSelectable(Register[2], 1);



    Zur Info:
    Du musst die Größe das anklickbaren Bereiches mit TextDrawTextSize anpassen. https://wiki.sa-mp.com/wiki/TextDrawTextSize Der X Wert ist die Position PLUS die Größe des nach rechts anklickbaren Bereiches. Der Y Wert ist die geschätzte Höhe.
    Angenommen du erstellst dein Textdraw bei X = 120 und Y = 90. Dann machst du den Text "Hallo Welt" da rein. Sagen wir, der Text ist so groß, dass er in etwa über ein Zehntel deines Bildschirmes geht (musst du abschätzen, oder mit einem Lineal abmessen), dann heißt das 640 durch 10, das wäre 64. Somit ist TextDrawTextSize-X = 120 + 64 = 184.


    Nun misst, bzw. schätzt, du die Höhe des Textdraws, sagen wir mal du bekommst den Text in etwa 20 mal untereinander hin, bis dein Bildschirm von oben nach unten voll damit wäre. Heißt also: 480 durch 20, das gibt 24. Somit wäre TextDrawTextSize-Y = 24.

  • C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(9772) : error 029: invalid expression, assumed zeroC:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(9772) : warning 215: expression has no effectC:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(9772) : error 001: expected token: ";", but found ")"C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(9772) : error 029: invalid expression, assumed zeroC:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(9772) : fatal error 107: too many error messages on one line



    //E:


    @Jeffry

  • So:if(Spieler[playerid][pWaffenSkill] == 1 && if(pPacketsWD[playerid]+menge) > 5)
    Ein ; gehört da nicht hin

    So:if(Spieler[playerid][pWaffenSkill] == 1 && if(pPacketsWD[playerid]+menge) > 5)
    Ein ; gehört da nicht hin


    C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(9772) : warning 217: loose indentation
    C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(9772) : error 029: invalid expression, assumed zero
    C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(9772) : warning 215: expression has no effect
    C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(9772) : error 001: expected token: ";", but found ")"
    C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(9772) : error 029: invalid expression, assumed zero
    C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\German\gamemodes\German.pwn(9772) : fatal error 107: too many error messages on one line


    es bleibt aber gleich?

  • Jeffry:
    Kaliber:
    Wo liegt da mein Problem ?
    Ich habe es versucht aber bekomme es nicht hin habe die anderen vom Registrieren hinbekommen aber beim Login nicht.


  • es bleibt aber gleich?

    ..du kannst kein if..in einem if Verwenden :S



    Wo liegt da mein Problem ?

    Ja..das Frage ich mich auch...wo liegt denn dein Problem...beschreibe doch mal was nicht funktioniert?


    Zeigst du die TextDraws..auch dem Spieler an...wo..und was willst du machen?


    und dir ist klar, dass ~n~ einfach nur ein Zeilenumbruch ist..und du da nichts sehen wirst? :huh:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • ..du kannst kein if..in einem if Verwenden :S


    Ja..das Frage ich mich auch...wo liegt denn dein Problem...beschreibe doch mal was nicht funktioniert?
    Zeigst du die TextDraws..auch dem Spieler an...wo..und was willst du machen?


    und dir ist klar, dass ~n~ einfach nur ein Zeilenumbruch ist..und du da nichts sehen wirst? :huh:


    bleibt aber trd gleich?!