Beiträge von Kaliber

    Ja klar, ich mein wer kennt es nicht, man downloadet sich ein Skript und will direkt einen Server starten.


    Ich frag mich wieso sich die Community hier wundert, wieso es nur noch 0815 Projekte gibt, wenn wir gerade hier mal ein Paradebeispiel von guter Konzeption und Planung haben, danke dafür :)


    Zu deinen Fehlern:


    • Du hast eine falsche Version vom MySQL Plugin
    • Dir fehlt das sscanf Plugin
    • Dir fehlt das streamer Plugin
    • Dir fehlt das Whirlpool Plugin
    • Dir fehlt das veraltete GeoIp Plugin

    Ohne Mist, würde man sich nur eine Sekunde minimal die fehlerhaften Funktions Namen anschauen, weswegen das nicht geht und diese 1:1 in google packen würde, würde man NIEMALS auf die oben genannte Liste kommen haha xD


    Viel Erfolg beim Projekt, genau sowas brauchen wir, ihr trefft damit genau das Bedürfnis der ganzen User hier :good:

    Auch wenn die Frage schon ne Ewigkeit alt ist, würde mich die antwort dennoch interessieren

    Okay, dann hier mal ein paar Infos:


    • Wenn man ein Jetpack hat und ENTER drückt ist dieses nicht für jeden zu haben, geschweige denn zu sehen.
      • Das ist client seitig und da wird auch kein Pickup erstellt für den Server oder sonst was. (Kann man auch nicht triggern mit OnPlayerPickUpPickup)
    • Die naive Herangehensweise wäre wahrscheinlich, man schaut unter OnPlayerKeyStateChange, ob man ENTER drückt und ob GetPlayerSpecialAction dem Jetpack entspricht und setzt ihn dann SPECIAL_ACTION_NONE. Hier liegen 2 Fehler:
      • Man kann nicht mehr mit GetPlayerSpecialAction prüfen, ob er ein Jetpack hat, da das bereits abgelegt wurde und somit schon 0 ist.
      • Hier sehen wir direkt den 2. Fehler, man kann ihm nicht das Jetpack mit SetPlayerSpecialAction wieder wegnehmen, da er ja schon in diesem State ist. (Deshalb bringt es auch für Part 1 nichts mit Variablen o.ä. zu arbeiten)
      • Da bringt auch SetPlayerPos o.ä. nichts xD (Immer mal wieder gesehen)
    • Also was tun?

    Die einzige Möglichkeit ihm das Jetpack zu entfernen ist es, wenn er dies auch auf dem Rücken hat, denn nur dann befindet er sich in der SpecialAction.
    Also musst du wenn du ihm ein Jetpack setzt, auch eine Variable setzen, dass du ihm das Jetpack gegeben hast.
    Dann prüfst du unter OnPlayerKeyState Change, ob er ENTER gedrückt hat und diese Variable gesetzt wurde.
    Wenn ja, dann setzt du eine weitere oder zählst diese Variable hoch (hier packst du das in den Timer, der über alle Spieler läuft) und prüfst wenn die Variable diesen State hat und er wieder ein Jetpack an hat, dann setzt du SPECIAL_ACTION_NONE und kannst die Variable resetten.


    Zudem kannst du die Variable nach glaube 1ner Minute oder so auch resetten, da dann das Jetpack client seitig entfernt wurde, also diese halten nicht ewig ^^


    Hoffe ich konnte ein wenig Klarheit verschaffen :)

    Meteoritenhagel (Kannst du zu dem Wetter hinzufügen / Wäre sowas überhaupt möglich? ^^)

    Das kommt darauf an, wie du dir das vorstellst.


    Aber gerade in 0.3.8 mit selbst designten Objekten sollte das sehr gut möglich sein ^^


    Was mir fehlt sind immer Wissenschaftler oder sowas, die forschen, Dinge entdecken können und eventuell eine Rakete und ein Mond, das wäre mal nice ^^

    Das ist zwar in der Java Welt ganz nett, aber wirklich zu empfehlen ist das in Pawn nicht.


    Man kann sowas basteln, aber Performanz technisch betrachtet ist das nicht so dolle, da ja immer der String erst aufgelöst werden müsste und je nachdem wie lang der ist...dauert das ein bisschen :rolleyes:


    Allerdings funktionieren die PVar Variablen so ;)


    [wiki]SetPVarInt[/wiki]

    if(IsAMemberFromFraktion(GetPlayerVehicleID(playerid)) != SpielerInfo[playerid][pMember] && IsAMemberFromFraktion(GetPlayerVehicleID(playerid)) != SpielerInfo[playerid][pLeader])return SendClientMessage(playerid, -1, "Du hast die Autoschlüssel nicht!");

    Also hier musst du || verwenden, sonst heißt es ja, dass er Member und Leader sein muss ^^


    Kannst ja mal wenn das nicht gehen sollte einen print Debug machen und schauen, was er da ausgibt :)

    Mein Problem ist jetzt aber, OnPlayerStateChange fragt es ja nur bei sich selbst ab, nicht per "pID" die ich Spectaten möchte, wie ich kann es dies nun anpassen?

    Da wo du den Spectate Befehl startest, musst du so eine Zeile machen:


    PS: Unter OnPlayerConnect solltest du sInfo[playerid][sSpectate] = -1; machen, damit da nichts passiert oder INVALID_PLAYER_ID.


    sInfo[playerid][sSpectate] = pID; //pID = Die Person die du spectaten willst


    Dann kannst du unter OnPlayerStateChange abfragen:


    C
    for(new i=GetPlayerPoolSize(); i!=-1; i--) //Loopst durch alle Spieler
    {
        if(IsPlayerConnected(i) && sInfo[i][sSpectate] == playerid)
        {
            //Hier entspricht i=der playerid, die den Spieler spectatet und playerid entspricht der pID, also der, der spectatet wird :)
        }
    }

    Kennt einer ne Seite wo ich mehrere Namen eintrage und sie random ausgewählt werden?

    Da brennt mein Informatiker Herz xD


    Drück F12 klick auf Console und gib ein:


    JavaScript
    //Hier alle Namen reinschreiben
    var names = ["Albert","Rocky","Balbo","Test"]; //dann enter drücken
    //und dann gib folgendes ein:
    names[Math.round(Math.random()*1000)%names.length]; //Das gibt dir einen zufälligen Namen aus der Liste xD

    Das ist kein Bug in dem Sinne...das ist Absicht von GTA SA.


    Deshalb kannst du meistens keine NRG auf einem Server kaufen, weil du durch den Glitch einfach unglaublich schnell wirst :whistling:


    Kann natürlich durch gewisse Abfragen in SA:MP verhindert werden..oder auch durch n Mod xD

    Das ist keine triviale Aufgabe.
    Man muss hier schon einige Dinge beachten.


    Als Tipp eventuell du solltest nicht versuchen das einfach random irgendwo zwischen zu quetschen, bei so "komplexen" Aufgaben, solltest du das gezielt auslagern, so entstehen weniger Fehler.
    Am besten baust du die Aufgabe als Include auf, worauf du vereinzelnd zugreifst für die jeweiligen Funktionen.


    Du brauchst auf jeden Fall die [wiki]gettime[/wiki] Funktion und die [wiki]getdate[/wiki] Funktion.


    • gettime als Timestamp, wenn sich der Spieler einloggt x[playerid] = gettime(), wenn er sich ausloggt pTimestamp[playerid] += (gettime()-x[playerid])
    • Lager das alles aus, sonst verlierst du nur den Überblick
    • Hat er heute schon mal den Bonus bekommen.
    • Beim einloggen am besten prüfen, wie lange ist sein letzter Bonus her, musst Daten (Plural von Datum = Daten) Differenzen bilden.
    • Brauchst einen Spieler Timer, der prüft ob er 120 Minuten erreicht hat.

      • Denk hier daran, dass gettime in Sekunden zählt. Für die Abfrage brauchst du also sowas wie:
      • if(pTimestamp[playerid]+(gettime()-x[playerid]) >= 60*120) //Dann Bonus
      • Vergiss nicht, dass da noch eine Abfrage rein muss, ob er heute schon den Bonus hatte
    • Dann wieder zu beachten, dass wenn er von 23:59 auf 00:00 durchzockt, x[playerid] = gettime() zu setzen.

    Also das ist eine ziemlich komplexe Angelegenheit und in meinen Augen für einen Neuling etwas zu komplex.


    Kannst du ja mal daran versuchen und deinen Zwischenstand mal posten.


    Auf jeden Fall wie gesagt am Besten auslagern, wenn du das alles so in deinen Code schreibst kommt nur Chaos dabei raus ^^

    @hav0K~ Ab jetzt gibt es die Möglichkeit deinen Avatar zu heiraten :lach:


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.