Beiträge von Woozie

    Wieso wird der Spieler direkt gekickt? Außerdem erscheinen die Prints nicht..


    forward OnPlayerCBug(playerid);public OnPlayerCBug(playerid){CheckCrouch[playerid] = 0;cbugwarn[playerid]++;new string[144];format(string, sizeof(string),"{FFFFFF}Hör auf{FF0000} C-Bug {FFFFFF}zu benutzen. Warn {FF0000}%d/3", cbugwarn[playerid]);SendClientMessage(playerid, COLOR_RED, string);print("Cbug Warn aufgerufen");if(cbugwarn[playerid] == 3){new str2[128];format(str2, sizeof(str2), "{FF0000}System{FFFFFF} hat {%06x}%s{FFFFFF} für Cbug mit der Waffe {FF0000}(%s) gekickt.", GetPlayerColor(playerid) >>> 8, GetName(playerid), aWeaponNames[WeaponID[playerid]]);SendClientMessageToAll(COLOR_RED, str2);Kick(playerid);print("Kick aufgerufen");return 1;}return 1;}

    Sicher, daß diese Funktion bzw. Callback aufgerufen wird und nicht KickPlayer von woanderst passiert?

    Hm, okay. Dann ist das scripttechnisch so fest im Spiel drin. Du kannst es nur noch zumachen, sonst. Ansonsten lass ihn das Anzeigen und bau dennoch dein eigenes System rein.

    Was steht in deiner Public parksh?
    Ich rate jetzt mal: Wahrscheinlich das die Schranke nach 5 Sekunden wieder hoch geht? Niedriger Z Wert ist unten, höher ist oben! Z = 0 ist Wasserhöhe, alles unter 0 ist unter Wasserhöhe, über 0 ist Richtung Himmel; dumpf ausgedrückt! ^^
    Laut deinem Code müßte die Schranke beim betätigen des Befehls nach unten gehen und nach 5 Sekunden (Achtung: geraten!) nach oben gehen. Wie auch immer. der Code müßte so passen.

    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...

    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!

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

    } und return 1; müssen weg!

    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!

    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 ^^

    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.

    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.

    Nun ja, dein Testscript bringt leider nicht viel. Mir fiel allerdings auf, daß du keine Spawninformationen setzt (Stichwort: SetSpawnInfo). Denke mal, daß dort das Problem auch ist. Du musst, wie beim Spieler, NPC verbinden (connect), Spawninformation geben (SetSpawnInfo), Spawnanweisung geben (SpawnPlayer). Erst danach kannst und darfst du dem NPC eine Recording Datei zuweisen.