Beiträge von Bluescreen

    Ich glaube so ganz flüssig bekommst du das nicht hin, aber du kannst einen Timer starten der bspw. alle 802 ms aufgerufen wird, dann erstellst du eine Globale Variable für alle Spieler als bool Deklariert und prüfst ob der Spieler in der nähe ist falls ja lässt du den Sound abspielen und den bool auf true setzen (hierbei prüfen ob die Variable von dem Spieler nicht schon auf true ist, falls ja nicht nochmal starten da das ganze sich dauerhaft unterbricht und zu laggs führt) und gleichzeitig lässt du für alle Spieler die nicht in der nähe sind den bool auf false setzen. Das Problem an dem ganzen ist das wenn du mehrere Audio Streams hast die sich überschneiden könnten und dann die anderen immer gestoppt werden, hierbei wäre das Audio Plugin von Incognito von Vorteil damit könntest du das ganze besser realisieren, bedenke aber wenn du das Audio Plugin nicht zur Pflicht machst das dann immer noch manche User das Probleme mit der Überschneidung der Streams haben werden.

    Du hast zurzeit das falsche Plugin sonst würden diese Fehler nicht kommen:


    Code
    [22:00:40] Error: Function not registered: 'cache_get_data'
    [22:00:40] Error: Function not registered: 'cache_get_field_content'
    [22:00:40] Error: Function not registered: 'mysql_function_query'
    [22:00:40] Error: Function not registered: 'cache_get_row'


    Ich würde dir empfehlen ein Plugin R8 oder höher zu benutzen und drauf achten das die Includes die zur Version vom Plugin sind dabei sind und auch mit Script kompiliert sind.

    Du machst eine globale Variable für alle Autos


    new bool:admincar[MAX_VEHICLES];
    Bei deinem Befehl wenn du die Autos Ingame erstellst setzt du die Variable auf true


    new acar = CreateVehicle(400, 0, 0, 0, 0, -1, -1, -1);
    admincar[acar] = true;
    Dan bei deinem Befehl abfragen ob die Variable bei dem Auto auf true ist falls ja löschen:


    ocmd:scardel(playerid,params[])
    {
    if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,Rot,"Dein Adminlevel ist zu niedrig");
    for(new i = 0; i < CarID; i++)
    {
    if(admincar[i] == true)
    {
    DestroyVehicle(i);
    admincar[i] = false;//Nach der löschung wieder zurücksetzen auf false
    }
    }
    return 1;
    }

    Ich möchte ein Dynamische Fraktionscarsystem machen.
    Man soll als Admin eine Klassen Angabe machen, wie zb Sultan.
    Alle Autos die die Gruppe Sultan in der Datenbank haben, sollen aber nur 1 mal beim Leader im Controlpanal auftauchen.
    Da ich als Index gerne vehicleid zum Abfragen verwenden möchte, muss ich das iregndwie so hinbekommen :p
    Wie gesgat meine CPU steigt, wenn ich den Code drin habe auf 50% (von 8%).


    L.G. ;)


    Wenn ich es richtig verstehe möchtest du das Sultan dann eine bestimmte Zahl hat oder wie? Sorry, aber wirklich verstehen tue ich das nicht so.


    Aber ich versuche es mal:


    1. Du möchtest das jedes Auto seine eigene Klasse hat, wie meinst du das genau?
    2. Du möchtest das jedes Fahrzeug in der Datenbank die Vehicle ID auf dem Server eingetragen hat oder wie?


    Wenn du mir die Zwei Sachen etwas ausführlicher erklären könntest kann ich dir bestimmt helfen, ist halt schwer zu helfen wenn man das genaue vorhaben nicht kennt, falls du das nicht hier öffentlich schreiben willst, dann schreib es per PN. Auf den Teamspeak kann ich leider nicht kommen.

    Ich weiß nicht was das für ein Sinn hat:


    Zitat

    for(new i = 0; i < MAX_VEHICLES; i++)
    {
    FCarInfo[i][dbid] = cache_get_field_content_int(0, "id", mysql);
    FCarInfo[i][model] = cache_get_field_content_int(0, "model", mysql);
    }


    Da gehst du 2000 mal den Code durch und und lässt in alle 2000 Variablen die gleichen Daten eintragen, so würde ich denke es richtig aussehen:


    new Rows, Fields, r, car;
    cache_get_data(Rows, Fields);
    for(r=0; r < Rows; ++r)
    {
    car = CreateVehicleEx(cache_get_field_content_int(r, "model", mysql), 0, 0, 0, 0, -1, -1, -1);
    FCarInfo[car][dbid] = cache_get_field_content_int(r, "id", mysql);
    FCarInfo[car][model] = cache_get_field_content_int(r, "model", mysql);
    }


    Hiermit lässt du in FCarInfo (vom erstellten Fahrzeug) bei model die model id eintragen und bei dbid die id.


    Du hast es fast richtig gemacht leider ein paar denk Fehler, einmal holst du alle Daten aus der Tabelle, in Rows steht drin wie viele Einträge in der Tabelle vorhanden sind, dann geht er alle Einträge mit der Schleife durch und (wahrscheinlich willst du damit Autos aus der Datenbank laden) du musst dann als erstes ein Fahrzeug erstellen damit du ein Fahrzeug eine variable zuordnen kannst, ich hoffe du verstehst was ich versuche zu erklären.


    In meinem Beispiel müsste es eigentlich so wie du in deinem Code es willst funktionieren.


    Zu dem Problem evtl. alle RemoveBuildings entfernen den das lässt es glaube ich crashen bzw. verpasst dir ein Standbild, denn wenn du einmal RemoveBuilding benutzt ist es bis zum Neustart des Clientes gelöscht, heißt nach Neustart (ohne Client neustart) wird versucht nochmal die Objekte zu Löschen da aber keine vorhanden sind kann er auch keine nochmal Löschen, das lässt glaube ich manchmal dein Game aufhängen. Bin mir aber nicht wirklich sicher.

    Mach doch die DB ID über eine Automatische Eingabe? Ist auch nicht die Welt =)


    /edit
    Du kannst auch einen Count machen, und dann weiß er wie viele Geschenke in der Datenbank sind.
    Dann hast du deine ID :D


    Wie meinst du das mit Automatische Eingabe, könntest du mir evtl. das irgendwie erklären?


    Auf die Idee mit dem Count bin ich nicht gekommen, danke für den Tipp werde ich demnächst mal umsetzen.

    Ich habe mal ein wenig daran herumgebastelt und habe es so weiter geschrieben das man jetzt ingame die Geschenke Lösche und erstellen kann, das kleine Problem bei der Erstellung ist, das wenn man das erstellten Geschenk löschen will es keine db ID gibt deshalb habe ich es so gemacht wenn ihr Geschenke erstellt das nochmal alle Geschenke gelöscht werden und neu geladen werden. Dadurch das jetzt via Datenbank geladen wird müsst ihr bei MAX_GIFTS die Zahl an eure aktuellen Geschenke anpassen, ansonsten habe ich keine Bugs beim testen gefunden wäre nett wenn ihr welche findet und mir diese melden würdet.


    Das ganze läuft nun über das MySql Plugin R33 deshalb lasse ich die erste Version auch noch erhalten.


    Was ihr nun benötigt: zcmd include, mysql r33 plugin + include und incognitio streamer plugin + include


    Pastebin MySql Version: https://dl.dropboxusercontent.…71829320/MySql_giftfs.txt
    Download MySql Version: https://dl.dropboxusercontent.…71829320/MySql_giftfs.rar
    Sql Datei: https://dl.dropboxusercontent.com/u/71829320/gifts.sql

    hey,


    da ich ein wenig Langeweile hatte und dachte das bald Weihnachten ist hab ich mir gedacht Schreib ich mal ein kleines Script wo man Geschenke suchen muss und dafür verschiedene Preise bekommt.
    Insgesammt sind momentan 74 Geschenke in ganz Los Santos verteilt natürlich könnt ihr selbst welche noch hinzufügen ihr müsst einfach nur eure Koordinaten bei "GiftSpawns" hinzufügen, mehr nicht der Rest wird dann schon automatisch gemacht. Falls keine Geschenke mehr da sind sollte eine Nachricht kommen das keine mehr da sind und das die Aktion vorbei ist.


    Falls ihr das ganze wirklich benutzen wollte, empfehle ich euch die Preise bzw. die Funktionen mit denen die Preise gegeben werden auf euer Script anzupassen nicht das dann am Ende der Spieler gebannt wird, ich habe als Preise nichts besonderes genommen sondern einfach die Sachen die von sa:mp aus schon zur Verfügung stehen.


    Falls ihr Bugs oder Verbesserungsvorschläge habt meldet diese bitte ich werde mir diese dann anschauen bzw. fixxen.


    Ich weiß das dass ganze nichts großes/schweres ist, aber vielleicht ist es für einige nützlich oder für die anderen auch nicht. :)



    Pastebin: https://dl.dropboxusercontent.com/u/71829320/giftfs.txt
    Download: https://dl.dropboxusercontent.com/u/71829320/giftfs.rar



    Arbeitszeit inkl. Koordinaten: 20 Minuten

    Ich kann dir die Lösung für dein Problem nicht geben, aber ich kann dir sagen wieso die Autos nicht explodieren. Ich denke das das Script irgendwas mit Fahrzeugen zu tun hat die gespeichert werden, deshalb werden diese für extra direkt beim Aufruf des Callbacks OnVehicleDeath Gelöscht, da wenn sie bis zum Ende bleiben und explodieren ist das Auto für eine Zeit lang vom Server gelöscht und wenn in dem Moment ein neues Auto erstellt wird gibt es eine ID Verschiebung des Fahrzeugs und du kannst dieses nicht mehr Speichern, bzw. mit der ID ansprechen da diese ID jetzt ein anderes Fahrzeug hat.

    Dein Beispiel war richtig den wenn du den ersten String benutzt hast kannst du ja den gleichen neu Formatieren das ist kein Problem da Pawn alles nacheinander abarbeitet und nicht gleichzeitig. Bloß solltest du den String größer machen.


    new query[240], pname[24];
    GetPlayerName(playerid, pname, 24);
    format(query, sizeof(query), "UPDATE nsar_main SET eintrag1=%d,eintrag2=%d,eintrag3=%d, WHERE Name='%s'", PlayerInfo[playerid][peintrag1]PlayerInfo[playerid][peintrag2]PlayerInfo[playerid][peintrag3],pname);
    mysql_query(query);


    format(query, sizeof(query), "UPDATE nsar_main SET eintrag4=%d,eintrag5=%d,eintrag6=%d, WHERE Name='%s'", PlayerInfo[playerid][peintrag4]PlayerInfo[playerid][peintrag5]PlayerInfo[playerid][peintrag6],pname);
    mysql_query(query);


    format(query, sizeof(query), "UPDATE nsar_main SET eintrag7=%d,eintrag8=%d,eintrag9=%d, WHERE Name='%s'", PlayerInfo[playerid][peintrag4]PlayerInfo[playerid][peintrag5]PlayerInfo[playerid][peintrag6],pname);
    mysql_query(query);
    Sonst ist alles richtig und es müsste funktionieren so wie du es in deinem Beispiel gezeigt hast.
    Einfach fortsetzen wie ich es gemacht habe falls es Probleme gibt melde dich einfach nochmal.