[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
  • Hab es damit probiert allerdings ohne Erfolg. Suche weiterhin Hilfe.


    Aktueller Stand:

    Code
    ocmd:vcam(playerid,params[])
    {
    new pID, Float:x, Float:y, Float:z;
    if(sscanf(params,"i",pID))return SendClientMessage(playerid,COLOR_GREY,"/vcam [playerid]");
    GetPlayerCameraPos(pID, x, y, z);
    SetPlayerCameraPos(playerid, x, y, z);
    
    return 1;
    }
  • Ohne SetPlayerCameraLookAt geht es nicht. Außerdem sollten beide Funktionen nicht auf die gleiche Position zeigen, sonst macht es auch wenig Sinn.

    Habe das jetzt so gemacht:

    Allerdings ist die Kamera durchgehend nach Westen fokusiert.

    Und wie genau mache ich das dass ich das bei OnPlayerUpdate einfüge und dass sich das selber aktualisiert?

  • Du hast jetzt genau das gemacht, was ich gesagt habe, sollst du nicht machen.

    SetPlayerCameraPos und SetPlayerCameraLookAt dürfen NICHT die gleichen Positionen haben.


    Wenn du es in OnPlayerUpdate aktualisieren willst, benötigst du eine Spieler Variable, die die ID des anzuschauenden Spielers enthält und entsprechend die Positionen aktualisiert, für denjenigen der den Spieler anschaut.

  • Du hast jetzt genau das gemacht, was ich gesagt habe, sollst du nicht machen.

    SetPlayerCameraPos und SetPlayerCameraLookAt dürfen NICHT die gleichen Positionen haben.


    Wenn du es in OnPlayerUpdate aktualisieren willst, benötigst du eine Spieler Variable, die die ID des anzuschauenden Spielers enthält und entsprechend die Positionen aktualisiert, für denjenigen der den Spieler anschaut.

    Habe das jetzt so versucht dass ich mit GetVehiclePos die Fahrzeugposition abfage und dann mit SetPlayerCameraPos die Sicht auf die Position des Fahrzeuges gesetzt. Allerdings ohne Erfolg. Er guckt immernoch nach Westen

  • Ioannis20x

    Du solltest das hier nutzen:



    Das aktualisiert sich von selbst, da musst du kein OnPlayerUpdate o.ä. nutzen.


    PS: Er respawnt jetzt, wenn er den Befehl noch einmal eingibt, wenn er wieder dahin gelangen soll, wo er war, müsstest du seine Position, Interior & VW zwischenspeichern und dann wieder setzen.

    ast2ufdyxkb1.png


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

  • Danke dir für den Code und deine Hilfsbereitschaft. Allerdings gibt es auf dem Server auf dem das System später drauf soll folgendes Problem:

    Die Leute die den Befehl benutzen werden haben keine Berechtigung um zu spectaten. Was bedeutet dass wenn dieser Code ins Script implementiert wird, wird der Spieler, der den Befehl ausführt, direkt vom ACS weggehauen.

    Deswegen will ich das mit SetPlayerCameraPos etc. machen.

  • Was bedeutet dass wenn dieser Code ins Script implementiert wird, wird der Spieler, der den Befehl ausführt, direkt vom ACS weggehauen.

    Deswegen will ich das mit SetPlayerCameraPos etc. machen.

    Wie ist denn das Anti-Cheat aufgebaut? Theoretisch kannst ja einfach prüfen, ob diese PVar existiert und ob der Spieler auch diesen Spieler beobachten darf.

    Ist denke ich deutlich schöner gelöst, als bestimmte Funktionen gänzlich auszuschließen. Schließlich bietet der Spectate Modus auch die Möglichkeit sich umzusehen etc. Es ist halt deutlich angenehmer als eine Fixxe Position auf das Fahrzeug, wenn man nicht mal sieht, was drum herum passiert.


    Also kommt halt darauf an, was du mit dem Befehl erreichen magst. Kannst natürlich auch nur die Position von dem Fahrzeug abfragen und dem Spieler anzeigen lassen oder sonst was xD

    ast2ufdyxkb1.png


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

  • Wie ist denn das Anti-Cheat aufgebaut? Theoretisch kannst ja einfach prüfen, ob diese PVar existiert und ob der Spieler auch diesen Spieler beobachten darf.

    Ist denke ich deutlich schöner gelöst, als bestimmte Funktionen gänzlich auszuschließen. Schließlich bietet der Spectate Modus auch die Möglichkeit sich umzusehen etc. Es ist halt deutlich angenehmer als eine Fixxe Position auf das Fahrzeug, wenn man nicht mal sieht, was drum herum passiert.


    Also kommt halt darauf an, was du mit dem Befehl erreichen magst. Kannst natürlich auch nur die Position von dem Fahrzeug abfragen und dem Spieler anzeigen lassen oder sonst was xD

    Das System soll dazu beitragen Races zu verfolgen. Sprich: Dass wir die Spieler beobachten können und im Live-Chat die Platzierungen durchgeben können. Ich hatte das System auch so wie du vorgeschlagen(mehr oder weniger xD). Aber da kam der ServerOwner zu mir und sagte mir dass er das mit dem Spectatemode nicht macht. Und wenn ich will solle ich mir eine andere Idee einfallen lassen dies umzusetzen. Aufs AntiCheat habe ich 0 Zugriff und kann dir dadurch nicht viel sagen.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
    • Offizieller Beitrag

    Wie ein Filterscript mit Datenbankverbindungen funktioniert kannst du dir in den zahlreichen Veröffentlichungen hier anschauen, als Beispiel nenne ich mal [MySQL] Betakey System [v1.0.0]

  • Code
    [debug] Run time error 4: "Array index out of bounds"
    [debug]  Attempted to read/write array element at negative index -1
    [debug] AMX backtrace:
    [debug] #0 0002a7cc in public OnDialogResponse (0, 18, 1, -1, 7494512) in GER.amx


    Mahlzeit weiß jemand woran das liegt.

    Bin schon lange drann werden langsam müde :D

  • OnDialogResponse (0, 18, 1, -1, 7494512) in GER.amx

    Das listitem (Parameter 4) ist -1.

    Das du über "id" (=listitem) im Array auf diese -1 zugreifst, bricht das Ganze ab.


    Code
    if(!response) return 1;

    zu:

    Code
    if(!response || id == -1) return 1;


    Und

    Code
    if(response == 0)return ocmd_carkey(playerid);

    zu:

    Code
    if(response == 0 || id == -1)return ocmd_carkey(playerid);
  • Danke,


    Meine Frage ist dazu wen ich das erste Fahrzeug anklicke wird mit der Dialog wieder angezeigt bzw meine Autoschlüssel.


    Habe nun folgendes Problem habe nun 2 slots belegt mir Fahrzeugen und versuche somit die Fahrzeug auszuwählen.

    Wähle ich z.b den Sultan aus und Drücke danach auf Auswählen wird mir keiner Nachricht ausgegeben nur wieder der Dialog mit mein Fahrzeugschlüsseln.


    https://imgur.com/UR5gBRP

  • Code
    [debug] Run time error 4: "Array index out of bounds"
    [debug]  Attempted to read/write array element at negative index -1
    [debug] AMX backtrace:
    [debug] #0 0002a898 in public OnDialogResponse (0, 18, 1, -1, 7508976) in GER.amx


    Wen ich das tausche dann kommt dieser fehler weiterhin.

  • Code
    DIALOG_CARKEY Wird das Fahrzeug gewählt und unter DIALOG_CARKEY2 wird das Bestätigt und gewählt.


    //E:


    So herum ist es nicht richtig.


    Dein listitem ist weiterhin -1. Liegt es ggf. daran, dass du oben im Code noch DIALOG_STYLE_MSGBOX nutzt? Korrekt wäre DIALOG_STYLE_LIST.

    Prüfe das bitte.


    Das mit der Box ist schon korrekt sobald ich auf ein Fahrzeug in der Liste draufklicke öffnet sich die MSGBOX mit den Fahrzeuginfomationen dann kann man alles bestätigen.