PaynSpray

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
  • Hallo liebe Leute,


    wie mache ich es möglich das er mir aus meiner Variable pMoney ausließt wieviel Geld der Spieler hat ?
    Jedesmal wenn ich in den PaynSpray reinfahre, heißt es ich habe nicht genug Geld weil ich ohne


    GivePlayerMoney


    arbeite.


    Ich habe schon etwas gegooglet aber nur das hier gefunden was mich nicht weiter bringt



    public OnVehicleRespray(playerid, vehicleid)
    {
    new string[48];
    format(string, sizeof(string), "You resprayed vehicle %d to colors %d and %d!", vehicleid);
    SendClientMessage(playerid, COLOR_GREEN, string);
    return 1;
    }

  • Code
    public OnPlayerUpdate(playerid)
    {
    	if (IsPlayerNPC(playerid)) return 1;
    	if (GetPlayerMoney(playerid) != pmoney[playerid])
    	{
    		ResetPlayerMoney(playerid); GivePlayerMoney(playerid, pmoney[playerid]);
    	}
    	return 1;
    }

    Bin jetzt davon ausgegangen, daß deine pmoney so lautet. Ansonsten änder pmoney[playerid] in den Namen, wie deine pmoney korrekt heisst. Das behebt dein Geldproblem und Bargeld wird beim Spieler ebenfalls korrekt angezeigt. Geldcheating ist so auch nicht möglich, da du intern mit einer eigenen Definition arbeitest und der Wert immer beim Spieler aktualisiert wird, sollte dieser nicht gleich sein.

  • Code
    public OnPlayerUpdate(playerid)
    {
    	if (IsPlayerNPC(playerid)) return 1;
    	if (GetPlayerMoney(playerid) != pmoney[playerid])
    	{
    		ResetPlayerMoney(playerid); GivePlayerMoney(playerid, pmoney[playerid]);
    	}
    	return 1;
    }

    Bin jetzt davon ausgegangen, daß deine pmoney so lautet. Ansonsten änder pmoney[playerid] in den Namen, wie deine pmoney korrekt heisst. Das behebt dein Geldproblem und Bargeld wird beim Spieler ebenfalls korrekt angezeigt. Geldcheating ist so auch nicht möglich, da du intern mit einer eigenen Definition arbeitest und der Wert immer beim Spieler aktualisiert wird, sollte dieser nicht gleich sein.

    Okay funktioniert soweit. Kann ich nun noch anpassen was der PaynSpray Kosten soll und einen Text anzeigen lassen der nicht Standardmäßig definiert ist ?

  • PnS ist fest im GTA SA Script drin, daran kannst du nichts ändern. Egal was PnS kostet, es wird dir nichts abgezogen, weil du ja intern im eigenem GM mit dem Geld arbeitest. Wenn also ein Spieler bei dir im PnS Geld bezahlen soll, musst du das im Callback (meine Empfehlung ist lieber im Timer und IsPlayerInRange abfragen) selber tun. Wie gesagt, Geld und Text werden standardmäßig vom Spiel so angezeigt. Teste das mal aus, auch wenn dort steht, PnS kostet dich 100$, dir wird nichts abgezogen, weil dein angezeigtes Bargeld immer synchron mit dem internen Geldwert gesetzt wird.


    Nachtrag:
    Du kannst aber folgendes tun. Entfern das Tor vom PnS, setz einen Checkpoint rein und wenn Spieler in CP fährt, automatisch in PnS Interiors porten samt Auto. Dort ein eigenes Menü anzeigen lassen und fertig. Nennt sich auch die Luxusvariante ^^

  • PnS ist fest im GTA SA Script drin, daran kannst du nichts ändern. Egal was PnS kostet, es wird dir nichts abgezogen, weil du ja intern im eigenem GM mit dem Geld arbeitest. Wenn also ein Spieler bei dir im PnS Geld bezahlen soll, musst du das im Callback (meine Empfehlung ist lieber im Timer und IsPlayerInRange abfragen) selber tun. Wie gesagt, Geld und Text werden standardmäßig vom Spiel so angezeigt. Teste das mal aus, auch wenn dort steht, PnS kostet dich 100$, dir wird nichts abgezogen, weil dein angezeigtes Bargeld immer synchron mit dem internen Geldwert gesetzt wird.


    Nachtrag:
    Du kannst aber folgendes tun. Entfern das Tor vom PnS, setz einen Checkpoint rein und wenn Spieler in CP fährt, automatisch in PnS Interiors porten samt Auto. Dort ein eigenes Menü anzeigen lassen und fertig. Nennt sich auch die Luxusvariante ^^

    Wo erstelle ich denn die Abfrage ob der Spieler in einem PaynSpray ist ?
    Hinzu nur Tore entfernen, entfernt ja noch nicht die Funktion das dass Fahrzeug nicht repariert wird.

  • Code
    -1904.8706,  284.8028
    -2426.1572, 1022.0980
      487.6712,-1740.2340
     1024.8167,-1023.8646
     2064.7759,-1831.9847
      -99.5188, 1119.5420
    -1420.5938, 2585.9119
     1973.9011, 2162.9788
      719.8412, -456.7941

    Wenn du die Tore bei den PnS entfernst, funktionieren sie nicht mehr, da das Script sie nicht schließen kann.
    Oben; dies sind alle PnS X,Y Koordinaten. Erstell Checkpoints oder MapIcons mit CP (Streamer wäre da nützlich) und nutz den entsprechenden Callback (OnPlayerEnterCheckpoint).


    Meine Empfehlung:
    Streamer von Incognito nutzen, dynamisches Gebiet (DynamicArea) und dynamisches MapIcon mit CP erstellen.



    Code
    CreateDynamicCircle(Float:x, Float:y, Float:size, worldid = -1, interiorid = -1, playerid = -1);
    CreateDynamicMapIcon(Float:x, Float:y, Float:z, type, color, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = STREAMER_MAP_ICON_SD, style = MAPICON_LOCAL);
    OnPlayerEnterDynamicArea(playerid, STREAMER_TAG_AREA areaid);

    Einfacher gehts nun nicht mehr...

  • Okay. Dann muss ich wohl mit den 100$ klar kommen.


    Dann will ich Ihm mal 100$ abziehen lassen. Aber irgendwas passt mit den Koordinaten nicht o.o ?
    Ich weiß die Abfrage fehlt ob der Spieler in einem Fahrzeug sitzt. Aber erstmal soll der Befehl ansatzweise funktionieren

    public OnPlayerEnterCheckpoint(playerid)
    {
    if(IsPlayerInRangeOfPoint(playerid,5,487.6605,-1741.7686,10.8587))
    {
    PlayerInfo[playerid][pMoney]-=100; // 100$ abziehen
    MoneyUpdate(playerid);
    SendClientMessage(playerid,-1,"Dein Fahrzeug wurde erfolgreich repariert. Preis: 100 $");
    }
    }