Parkplatz Reinfahren kostet Rausfahren nicht

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 Breadfishler,


    Ich will gerne einen Befehl erstellen bzw hab ich den schon nur ich will halt das so machen....
    Also ich hab einen Parkplatz.. und will das er beim Reinfahren Geld zahlen muss und beim Rausfahren soll er kein Geld zahlen.


    Das ist der Befehl ohne der "Funktion" wenn es diese überhaupt ist...


    if (strcmp("/shpark",cmdtext, true, 10) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid,7.0,1561.33008, -1792.06274, 13.36100))
    {
    SendClientMessage(playerid,GELB,"Du hast dir ein Parkticket für 50$ gekauft.");
    MoveDynamicObject(shpark,1561.33008, -1792.06274, 13.36100-10,2.0);
    GivePlayerMoney(playerid,-50);
    SetTimer("parksh",5000,false);
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du bist nicht in der nähe des Tors´s");
    }
    return 1;
    }
    return SendClientMessage(playerid,ROT,"Dieser Befehl konnte nicht gefunden werden!");
    }


    so und ich wollte es so machen habe bei mir ganz oben im Script dies hier hinzugefügt:


    new Shpark[playerid][MAX_PLAYERS];


    so bekomme aber diese Errors:
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(33) : error 017: undefined symbol "playerid"
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2860) : warning 203: symbol is never used: "Shpark"


    da dachte ich mir mal am Anfang nichts bei und nun habe einfach mal weiter gemacht habe dann den Befehl "umgeschrieben" und zwar so:


    if (strcmp("/shpark",cmdtext, true, 10) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid,7.0,1561.33008, -1792.06274, 13.36100))
    {
    SendClientMessage(playerid,GELB,"Du hast dir ein Parkticket für 50$ gekauft.");
    MoveDynamicObject(shpark,1561.33008, -1792.06274, 13.36100-10,2.0);
    GivePlayerMoney(playerid,-50);
    SetTimer("parksh",5000,false);
    Shpark[playerid] = 1;
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du bist nicht in der nähe des Tors´s");
    }
    return 1;
    }
    return SendClientMessage(playerid,ROT,"Dieser Befehl konnte nicht gefunden werden!");
    }


    so aber da müsste ich ja dann noch einmal einer Koordinate einfügen oder nicht?


    Und bei OnPlayerConnect habe ich das eingefügt:


    Shpark[playerid] = 0


    Aber wie könnte ich das nun so machen das, ich dass mache das wenn ich den Befehl 1x fürs reinfahren benutzt habe 50$ Zahlen muss und beim 2x Kostenlos rausfahren kann aber wie erkennt das script dann das er schon rausgefahren ist und es sich wieder auf 0 setzt?


    Wäre nett wenn mir einer sagen kann wenn ich Die Komplette "Funktion" mit einbaue diese Errors kriege :):


    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(33) : error 017: undefined symbol "playerid"
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2317) : error 033: array must be indexed (variable "Shpark")
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2579) : error 033: array must be indexed (variable "Shpark")
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    3 Errors.


    Vielen Dank im Vorraus! :):)

  • Mach mal aus dem

    Code
    new Shpark[playerid][MAX_PLAYERS];


    dies

    Code
    new Shpark[MAX_PLAYERS];


    Wenn du nur einen Parkplatz wie diesen hast, kannst du beim Rausfahren abfragen, ob Shpark[playerid] = 1 ist. Ansonsten arbeite mit ID's. Heisst, Parkplatz #1 hat ID1 und in Shpark[playerid] speicherst du die ID.

  • Änderer


    new Shpark[playerid][MAX_PLAYERS];


    zu


    new Shpark[MAX_PLAYERS];


    Zu Nummer 2



    if (strcmp("/shpark",cmdtext, true, 10) == 0)
    {
    if(Shpark[playerid]== 0 && IsPlayerInRangeOfPoint(playerid,7.0,1561.33008, -1792.06274, 13.36100))
    {
    SendClientMessage(playerid,GELB,"Du hast dir ein Parkticket für 50$ gekauft.");
    MoveDynamicObject(shpark,1561.33008, -1792.06274, 13.36100-10,2.0);
    GivePlayerMoney(playerid,-50);
    SetTimer("parksh",5000,false);
    Shpark[playerid] = 1;
    }
    if(Shpark[playerid]== 1 && IsPlayerInRangeOfPoint(playerid,7.0,1561.33008, -1792.06274, 13.36100))
    {
    SendClientMessage(playerid,GELB,"Fahre schnell durch sonst kostet es dich weiter 50$.");
    MoveDynamicObject(shpark,1561.33008, -1792.06274, 13.36100-10,2.0);
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du bist nicht in der nähe des Tors´s");
    }
    return 1;
    }
    return SendClientMessage(playerid,ROT,"Dieser Befehl konnte nicht gefunden werden!");
    }


    //Edit Code fehler

  • @robbi2304


    Ich habe Shpark[playerid]=0; bei OnPlayerConnect



    Aber.....



    Wenn ich nun /shpark eingebe kriege ich z.B 2x die Nachricht du hast dir ein Parkticket für 50$ gekauft und ich will wenn er raus fährt wieder zahlen muss also hab ich es auf Shpark[playerid]=0 gesetzt nachdem er raus will..


    aber wie mach ich das ich die Message nur einmal bekomme?

  • @Woozie


    Bekomme leider errors:


    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2590) : warning 217: loose indentation
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2590) : error 029: invalid expression, assumed zero
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2590) : error 004: function "OnPlayerEnterVehicle" is not implemented
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2595) : warning 225: unreachable code
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2595) : error 029: invalid expression, assumed zero
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2595) : error 004: function "OnPlayerExitVehicle" is not implemented
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2600) : warning 225: unreachable code
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2600) : error 029: invalid expression, assumed zero
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2600) : error 004: function "OnPlayerStateChange" is not implemented
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2605) : warning 225: unreachable code
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2605) : error 029: invalid expression, assumed zero
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2605) : error 004: function "OnPlayerEnterCheckpoint" is not implemented
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2610) : warning 225: unreachable code
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2610) : error 029: invalid expression, assumed zero
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2610) : error 004: function "OnPlayerLeaveCheckpoint" is not implemented
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2615) : warning 225: unreachable code
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2615) : error 029: invalid expression, assumed zero
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2615) : error 004: function "OnPlayerEnterRaceCheckpoint" is not implemented
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2620) : warning 225: unreachable code
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2620) : error 029: invalid expression, assumed zero
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2620) : error 004: function "OnPlayerLeaveRaceCheckpoint" is not implemented
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2625) : warning 225: unreachable code
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2625) : error 029: invalid expression, assumed zero
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2625) : error 004: function "OnRconCommand" is not implemented
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2630) : warning 225: unreachable code
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2630) : error 029: invalid expression, assumed zero
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2630) : error 004: function "OnPlayerRequestSpawn" is not implemented
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2635) : warning 225: unreachable code
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2635) : error 029: invalid expression, assumed zero
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2635) : error 004: function "OnObjectMoved" is not implemented
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2640) : warning 225: unreachable code
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2640) : error 029: invalid expression, assumed zero
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2640) : error 004: function "OnPlayerObjectMoved" is not implemented
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2645) : warning 225: unreachable code
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2645) : error 029: invalid expression, assumed zero
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2645) : error 004: function "OnPlayerPickUpPickup" is not implemented
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2647) : error 017: undefined symbol "pickupid"
    C:\Users\User\Desktop\SERVER\gamemodes\NGR.pwn(2656) : error 017: undefined symbol "pickupid"


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    26 Errors.

  • Kleiner Tipp schau dir mal den Code von @Woozie an und dann mal dein alten Code.


    Es fehlt ein Teil.


    Hier



    if (strcmp("/shpark",cmdtext, true, 10) == 0)
    {
    if (IsPlayerInRangeOfPoint(playerid,7.0,1561.33008, -1792.06274, 13.36100))
    {
    if (!Shpark[playerid])
    {
    MoveDynamicObject(shpark,1561.33008, -1792.06274, 13.36100-10,2.0);
    GivePlayerMoney(playerid,-50);
    SetTimer("parksh",5000,false);
    Shpark[playerid] = 1;
    return SendClientMessage(playerid,GELB,"Du hast dir ein Parkticket für 50$ gekauft.");
    }
    MoveDynamicObject(shpark,1561.33008, -1792.06274, 13.36100-10,2.0);
    Shpark[playerid] = 0;
    return SendClientMessage(playerid,GELB,"Fahre schnell durch sonst kostet es dich weiter 50$.");
    }
    return SendClientMessage(playerid,ROT,"Du bist nicht in der nähe des Tors´s");
    }
    return 1;
    }
    return SendClientMessage(playerid,ROT,"Dieser Befehl konnte nicht gefunden werden!");
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ja, der Teil unten fehlt. Ich habe dir nur den CMD Satz erstellt bzw. modifiziert. Wäre auch besser, wenn du dies in Zukunft so tun würdest.



    Viel Spass!

  • } und return 1; müssen weg!

  • Zeile 13: MoveDynamicObject ... Z Wert ... -10 entfernen, dann gehts auch ;)


  • if (strcmp("/shpark",cmdtext, true, 10) == 0)
    {
    if (IsPlayerInRangeOfPoint(playerid,7.0,1561.33008, -1792.06274, 13.36100))
    {
    if (!Shpark[playerid])
    {
    MoveDynamicObject(shpark,1561.33008, -1792.06274, 13.36100-10,2.0);
    GivePlayerMoney(playerid,-50);
    SetTimer("parksh",5000,false);
    Shpark[playerid] = 1;
    return SendClientMessage(playerid,GELB,"Du hast dir ein Parkticket für 50$ gekauft.");
    }
    MoveDynamicObject(shpark,1561.33008, -1792.06274, 13.36100,2.0);
    SetTimer("parksh",5000,false);
    Shpark[playerid] = 0;
    return SendClientMessage(playerid,GELB,"Fahre schnell durch sonst kostet es dich weiter 50$.");
    }
    return SendClientMessage(playerid,ROT,"Du bist nicht in der nähe des Tors´s");
    }
    return SendClientMessage(playerid,ROT,"Dieser Befehl konnte nicht gefunden werden!");
    }

  • Hast du den Code aus meinem vorherigen Beitrag #15 genutzt?


    Zur Erklärung des Codes:


    Zeile 1: sollte klar sein. Hier wird abgefragt, ob ein Spieler /shpark eingibt.
    Zeile 3: befindet sich der Spieler in der Nähe (7 Meter) von Koordinate x,y,z
    Zeile 5: parkt dieser Spieler noch nicht auf diesem Parkplatz, dann Zeilen 7 - 11 ausführen; Zeile 7 beweg das Objekt (Tor/Schranke) von x,y,z nach x,y,z - 10 mit der Geschwindigkeit 2.0
    Zeile 13: Spieler parkt bereits hier, dann Schranke Richtung Position x,y,z mit der Geschwindigkeit 2.0 bewegen, Variable Shpark auf 0 setzen und Meldung ausgeben
    Zeile 17: Spieler führt zwar den Befehl /shpark aus, aber befindet sich nicht in der Nähe der Koordinate x,y,z (Zeile 3)


    Soll heissen, für die Schranke sind die Zeilen 7 und 13 wichtig. Zeile 7 bewegt Schranke nach unten (warum auch immer -10, k.A.), Zeile 17 bewegt sie wieder zurück.
    Geht also die Schranke nicht, prüfe diese zwei Zeilen, ob die Koordinaten korrekt sind!


    Nachtrag:
    Was passiert eigentlich bei parksh? Du nutzt ja einen Timer (5 Sekunden bzw. 5000 Millisekunden). Zeig uns mal bitte diesen Code!