Beiträge von Genetikk

    onGamemodeMapStart wird meines wissens von Mapmanager getriggert, sobald die Map Resource gestartet wird. Wenn ich das nun richtig überdenke könnte es da zu einem Problem kommen.
    Wenn die Resource gestartet wird, heißt es ja noch lange nicht das alle Spieler bereit sind. Während bei dem einen das Script schon läuft tut es das bei dem anderen noch nicht. Und bis der Countdown auf Go steht ist die Zeit wohl längst vorbei.

    Der Race Gamemode hat hierfür ein Event onRaceStateChanging. Jedoch nur Serverseitig verfügbar. Dies kannst du dir aber auch Clientseitig verfügbar machen, und zwar genau so wie Bonus es geschrieben hat. Habe ich für meine Zwecke ebenso gemacht.
    Das onClientVehicleDamage Event zu canceln ist eine gute Idee. Das würde ich aktivieren, sobald der Spieler gespawnt wurde. Sobald das Event onRaceStateChanging den Status "Running" ausspuckt, setzt du die Variable auf den aktuellen TickCount und fragst entsprechend ab um zu canceln.

    Aber alles Schritt für Schritt. Wenn das eine Funktioniert, kannst du zum nächsten gehen.

    Also Ich habe die ganzen Race Scripts mal überflogen und hab erstmals nach onGamemodeStart beim race_server gesucht und diese Stelle gefunden. triggerClientEvent have ich darunter hinzugefügt und

    Lua
    addEventHandler('onGamemodeStart', g_ResRoot,
        function()
            outputDebugString('Race onGamemodeStart')
            addRaceScoreboardColumns()
            if not g_GameOptions then
                cacheGameOptions()
            end
        end
    )
    triggerClientEvent ( "onClientGamemodeStart", root )


    bekomme beim debug die Fehlfunktion: "ERROR:Server triggered clientside Event onClientGamemodeStart, but Event is not added clientside."

    Das Ganze Clientseitig verfügbar zu machen? Wie meinst du das?
    Ich gib's zu, ich versuche die Schritte zu verstehen, aber ich bin halt ein Anfänger und bräuchte vielleicht eine etwas erweiterte Erklärung.

    Und das getTickCount... wie fragt man dies denn ab?

    Du solltest mal überprüfen ob das Event überhaupt getriggert wird. bzw. ob es ankommt. Du entfernst nach 5 Sekunden lediglich das Event. Das macht dein Auto nicht wieder verwundbar.
    Desweiteren hast du meine Fragen noch nicht komplett beantwortet. Ich möchte dir nicht alles aus der Nase ziehen um dir helfen zu können..

    Fang erst mal klein an, prüfe zuerst mal, ob das Event beim Mapstart ausgeführt wird:

    Lua
    function activategodmode()
        outputChatBox("Event wird getriggert!")
    end
    addEvent("onGamemodeMapStart")
    addEventHandler("onGamemodeMapStart", root, activategodmode)

    Ja, das Event wird getriggert.
    Und zu deiner Frage: Ich weiß nicht ob das der Spieler ist und ein addEvent habe ich nicht beachtet.


    Höchstwahrscheinlich gibt es auch einen clientseitiges "onGamemodeMapStart" Event.
    Dieses dann nutzen, um herauszufinden, wann die Runde beginnt.
    Die Zeit per getTickCount() einfach in eine Variable speichern.
    Die Variable ganz am Anfang außerhalb der Funktion mit einem local davor = 0 setzen.

    Dann in der Funktion für das Event "onClientVehicleDamage" einfach abfragen, ob diese vorher gespeicherte Variable + 5000 > getTickCount().
    Falls ja, cancelEvent() benutzen, um den Schaden zu canceln.
    So prüfst du dann ganz einfach, ob 5 Sekunden vorbei sind.

    So vermeidest du unnötige Timer :)

    Werde ich jetzt mal ausprobieren. Danke :)

    Hallo,


    Ich habe mit meinem eigenen Server begonnen und es ist anfangs nur ein Shooter Server. (Raketen an Autos)
    Ich bin ein Anfänger wenn es ums Scripten geht.
    Jetzt habe ich Probleme damit bekommen, die Spawnprotection für gespawnte Autos herzustellen. (Gamemode = Race)

    Ich habe wirklich Probleme mit dem setTimer Script und hoffe jemand kann mir dabei helfen, den Script so umzuschreiben, dass Leute erst nach 5 Sekunden nach dem Beginn der Map Schießen können.


    Hier ist der Shooter Script (Clientside):



    Alternativ: setVehicleDamageProof 5 Sekunden bis nach dem Beginn der Map wieder ausschalten.


    Mein Versuch: