Beiträge von Jeffry

    Ich würde sagen du updatest es genau dann, wenn ein Produkt abgezogen werden soll. Das wird ja sicher nicht 10 mal in der Sekunde sein.
    Ich verstehe aber noch immer nicht den Sinn, warum du das ganze löschen und wieder erstellen willst, nur weil sich was ändert. Das könntest du doch z.B. mit der Update-Funktion der 3D Labels machen.
    Und was hat das damit zu tun, wie oft du das machen willst? "On Demand" (Auf Befehl) würde ich sagen, so mache ich es bei meinen Häusern. Wenn sich da Position/Preis/etc ändert, dann wird das sofort gespeichert, die aktuellen Besitzerdaten (Zeit, etc) werden einmal alle 5 Minuten an die MySQL Datenbank gemirrort.

    Was hast du eigentlich vor da zu machen, das gibt ja hinten und vorne keinen Sinn.


    {
    if(file_exists(Carname)) //Hier KEIN Semikolon
    {


    }
    else
    {


    }
    }
    if(Bearbeiten)
    {
    if(file_exists(carname)) //Hier KEIN native
    {


    }
    else
    {


    }
    }

    Habe in meinem Script n dynamisches Bizsystem und möchte mal von euch wissen, wie oft ich dieses Biz updaten soll, da, wenn jemand etwas kauft, die Produkte ja auch abgezogen werden sollen..


    Was meinst du mit updaten? Speichern? Laden? Aktualisieren? Senden? ...
    Etwas mehr an Informationen wäre hier sicher angebracht.

    Auf leer prüfen:
    OnPlayerUpdate


    new w,a;
    for(new i; i < 13; i++)
    {
    GetPlayerWeaponData(playerid, i, w, a);
    if(a == 0) pWaffen[playerid][i] = 0;
    }


    Beim Geben der Waffe:
    pWaffen[playerid][GetWeaponSlot(weaponID)] = weaponID; (GetWeaponSlot: http://pastebin.com/qz56UCRe)



    Und beim Timer kannst du dann fragen:
    new w,a;
    for(new i; i < 13; i++)
    {
    GetPlayerWeaponData(playerid, i, w, a);
    if(pWaffen[playerid][i] != 0 && pWaffen[playerid][i] != w && a > 0) //Ban


    Das wären so die Grundzüge.

    Auf Anfrage in PM:


    Zu dem Problem mit den drei Autos:
    VehicleData[id][vID] = SetVehicleNumberPlate(CreateVehicle(modelid, x, y, z, r, colorid1, colorid2, -1), kennzeichen);
    das ist falsch so. (Das Gleiche bei SpawnPlayerVehicles).


    So ist es richtig:
    VehicleData[id][vID] = CreateVehicle(modelid, x, y, z, r, colorid1, colorid2, -1);
    SetVehicleNumberPlate(VehicleData[id][vID], kennzeichen);


    Warum? SetVehicleNumberPlate gibt nur 1 oder 0 zurück.



    Dann teste es nochmal.
    Wenn noch Probleme da sind, dann füge bitte zu deinem Code mehr prints dazu und füre die jeweiligen Schritte aus. Dann postest du den Log hier und beschreibst zu den Log Abschnitten was du jeweils ingame gemacht hast.
    Der MySQL Log wäre dazu auch sinnvoll.

    Auf Anfrage in PM:


    Zeig bitte die Funktion GivePlayerWeaponEx noch, damit wir sehen, wie du die Variable befüllst, sonst können wir nicht wissen, wie die if-Abfrage richtig wäre.

    pierre65: Auf Anfrage in PM:
    Also es ist tatsächlich so, dass Fahrzeuge nicht respawnen, wenn kein Spieler im Fahrzeug war, da OnVehicleDeath nicht aufgerufen wird. Steigst du ein und wieder aus hast du das Problem nicht.


    Du könntest sie wie folgt respawnen lassen, so in der Art mache ich es auch:
    http://forum.sa-mp.com/showpost.php?p=3010268&postcount=381
    Timer => Loop durch alle Fahrzeuge => GetVehicleSpawnPos => GetVehiclePos => Distanz zwischen den beiden Punkten => Wenn größer als 5 und kein Spieler im Fahrzeug => Respawn

    Was ist denn der Unterschied?


    Es gibt nicht wirklich einen. Du könntest "OnGameModeInit" mit "CallRemoteFunction" aufrufen, da es public ist, oder per Timer. Das wäre das Einzige was mir dazu einfällt. Ob es sinnvoll ist, OnGameModeInit per Timer aufzurufen, sei mal dahingestellt.
    Ansonsten ist es eben so, das beim Starten des Servers zuerst OnGameModeInit und dann main() aufgerufen wird. Die main()-Methode ist also das allerletzte das geladen wird wenn der Server startet, nach allen Filterscripts und dem Gamemode.


    OnGameModeInit kannst du weg lassen, main() nicht. Wäre noch ein Unterschied, wobei auch hier wenig Sinn drin steckt.

    Scheint mir ganz so, als hättest du nicht die richtige Version der Include (und damit auch das Plugin) im Server.
    Lade dir mal die neue Version runter, von dem Plugin das du hast.

    GetVehicleZAngle(GetVehicleTrailer(GetPlayerVehicleID(playerid)), z_rot);


    EDIT: Für die Berechnung nimmst du dir ein paar Beispiel-Positionen und schaust wie du es voneinander abziehen musst, dass es passt. Kommt drauf an wie die Rotationen gewertet werden. Wenn gleich, dann so:
    differenz = rot_auto - rot_trailer;


    if(differenz > 70 || differenz < 70) ...

    Was hat das denn damit zu tun und wofür ist dieses main überhaupt nötig?


    Diese ist zwangsläufig nötig um den GameMode und damit den Server zu laden. Das ist wie bei Java, dort gibt es auch eine main-Methode, die aufgerufen wird wenn du den Programm-Code ausführst. So ist es hier auch. Der Server startet nur, wenn er diese main-Methode finden kann. Ist eine Regel, gibt's nichts dran zu ändern. Muss man haben, sonst geht's nicht. (Die Füße des Servers. Ohne Füße kann er nicht laufen... :wacko: )

    Zu Problem Nummer 3:
    if(!strcmp(cmdtext, "/veh", true, 4))
    {
    if(!strlen(cmdtext[5]) || cmdtext[4] != ' ') return SendClientMessage(playerid, 0xFF0000FF, "Usage: /veh [Model-ID]");
    new model = strval(cmdtext[5]);
    if(model < 400 || model > 611) return SendClientMessage(playerid, 0xFF0000FF, "ERROR: Invalid Vehicle Model");
    new Float:x, Float:y, Float:z, Float:a;
    GetPlayerPos(playerid, x,y,z);
    GetPlayerFacingAngle(playerid, a);
    new id = CreateVehicle(model, x, y, z, a, random(256), random(256), -1);
    PutPlayerInVehicle(playerid, id, 0);
    return 1;
    }