Beiträge von Kaliber

    Danke aber was muss ich dann auf 1 setzen, damit angezeigt wird das sie belegt ist?


    Wenn mich nicht alles täuscht gibt es durch die Funktion kein Limit, ich bin mir nicht ganz sicher...musst du mal ausprobieren, falls doch, dann liegt es wahrscheinlich bei 8.


    //Hier wäre sie dann voll:
    if(GetFreeSeatInHydra(vehicleid) > 8) return SendClientMessage(playerid,-1,"Die Hydra ist voll besetzt!");


    mfg. :thumbup:

    Wie kann ich Abfragen, ob man neben ner Hydra ist?


    Hier eine kleine Hilfestellung:


    //Die Funktion returnt die Vehicleid von dem Spieler, der sich in der Nähe einer Hydra befindet...wenn nicht -1!
    stock IsInRangeOfHydra(playerid) {
    static Float:p[3];
    for(new v; v<MAX_VEHICLES; v++) {
    if(GetVehicleModel(v) != 520) continue;
    GetVehiclePos(v,p[0],p[1],p[2]);
    if(IsPlayerInRangeOfPoint(playerid,7.5,p[0],p[1],p[2])) return v;
    }
    return -1;
    }


    //returnt die seatid von einem freien Platz in der Hydra
    stock GetFreeSeatInHydra(vehicleid) {
    static pos=1;
    for(new i; i<MAX_PLAYERS; i++) {
    if(!IsPlayerConnected(i) || !IsPlayerInVehicle(i,vehicleid)) continue;
    if(pos == GetPlayerVehicleSeat(i)) pos++;
    else if(pos < GetPlayerVehicleSeat(i)) pos = GetPlayerVehicleSeat(i)+1;
    }
    return pos;
    }


    mfg. :thumbup:

    @ Kaliber
    Ich wil wie oben steht wenn man g drückt im Veh sein und wenn man Enter drückt drausen reicht es wenn cih einfach Abfrag ob er Enter drückt oder muss ich das mit dem normalen aussteigen ausm Veh verzögern?


    Du kannst über den Callback OnPlayerKeyStateChange abfragen, ob er g drückt und in der Nähe der Hydra ist.


    Dann prüfst du ob da schon einer Sitzt auf dem Platz, wenn nicht, dann setzt du die Person mit PutPlayerInVehicle auf einen freien Platz ;)


    mfg. :thumbup:

    Hallo,
    ich hab mal ein Script gesehen, wo Hydra ein zweisitzer war. Wie geht das? Und bugt der Server dann bissel rum?


    Das kann man wirklich umsetzen, aus jedem Auto einen Mehrsitzer machen.


    Das geht mit folgender Funktion: PutPlayerInVehicle


    und dann kannst du z.B. für die seatid 1 nehmen, dann sitzt er hinter dem Fahrer.
    Allerdings ist das natürlich nicht im Sinne des Erfinders, deshalb sobald die Person aussteigen will oder stirbt, crasht der Client.
    Man muss ihn wieder scripttechnisch mit z.B. SetPlayerPos aus der Hydra holen.


    Nein, den Server beeinflusst das nicht, nur den Client ;)


    mfg. :thumbup:

    Ich finde da einfach keinen Fehler, hier wird immer die erste ID geprinted die es gibt, dennoch ist der Spieler an einer anderen Firmenid.


    Machs doch mal so und schau dir die prints an:


    stock GetBuroIDInRange(playerid,Float:Range) {
    for(new i; i < MAX_FIRMS; i++) {
    if(FirmInfo[i][inuse] != true) continue;
    printf("%d | %.02f , %.02f , %.02f | %d",i,FirmInfo[i][burox],FirmInfo[i][buroy],FirmInfo[i][buroz],MAX_FIRMS);
    if(IsPlayerInRangeOfPoint(playerid,Range,FirmInfo[i][burox],FirmInfo[i][buroy],FirmInfo[i][buroz])) return i;
    }
    return -1;
    }


    //Edit: Lass das mit dem Wort stock...es ist eine Funktion, stock hat eine andere Funktion :wacko:


    mfg. :thumbup:

    Ich will kein großes Script..
    Nur ein Script wo man sich waffen geben kann und sich Fahrzeuge spawnen kann, und paar Kleinigkeiten.


    Merk dir, genau sowas in den Startpost zu schreiben, der ja dazu dienen soll zu informieren.


    mfg. :wacko:

    Bekomme leider in den folgenden Zeilen noch Tag Mismatches:


    Ups :D


    Ja, schreibs so:


    stock ConvertToEuler(Float: qw, Float: qx, Float:qy, Float:qz, &Float:heading, &Float:attitude, &Float:bank) {
    new Float: sqw = qw*qw,Float: sqx = qx*qx,Float: sqy = qy*qy,Float: sqz = qz*qz,Float: unit = sqx + sqy + sqz + sqw,Float: test = qx*qy + qz*qw;
    if (test > 0.499*unit) return heading = 2*atan2(qx,qw),attitude = 3.141592653/2,bank = 0,1;
    if (test < -0.499*unit) return heading = -2*atan2(qx,qw),attitude = -3.141592653/2,bank = 0,1;
    return heading = atan2(2*qy*qw - 2*qx*qz, sqx - sqy - sqz + sqw),attitude = asin(2*test/unit),bank = atan2(2*qx*qw - 2*qy*qz, -sqx + sqy - sqz + sqw),1;
    }


    mfg. ^^

    Hier, damit sollte es klappen:


    stock ConvertToEuler(Float: qw, Float: qx, Float:qy, Float:qz, &Float:heading, &Float:attitude, &Float:bank) {
    new Float: sqw = qw*qw,Float: sqx = qx*qx,Float: sqy = qy*qy,Float: sqz = qz*qz,Float: unit = sqx + sqy + sqz + sqw,Float: test = qx*qy + qz*qw;
    if (test > 0.499*unit) return heading = 2*atan2(qx,qw),attitude = 3.141592653/2,bank = 0;
    if (test < -0.499*unit) return heading = -2*atan2(qx,qw),attitude = -3.141592653/2,bank = 0;
    return heading = atan2(2*qy*qw - 2*qx*qz, sqx - sqy - sqz + sqw),attitude = asin(2*test/unit),bank = atan2(2*qx*qw - 2*qy*qz, -sqx + sqy - sqz + sqw);
    }
    stock GetVehicleRotation(vehicleid,&Float:heading, &Float:attitude, &Float:bank) {
    new Float:quat_w,Float:quat_x,Float:quat_y,Float:quat_z;
    GetVehicleRotationQuat(vehicleid,quat_w,quat_x,quat_y,quat_z);
    ConvertToEuler(quat_w,quat_x,quat_z,quat_y, heading, attitude, bank);
    return bank = -1*bank,1;
    }


    mfg. :thumbup:

    ich hab ein Dcmd Befehl gexriptet und wenn ich den in meinem Server eingeb mit dem richtigwen zeug passiert nix


    Da kann auch nichts passieren, da u einen Integer Wert zurückgibt...
    Zudem arbeitest du hier auch völlig falsch...dir fehlen noch so einige Grundkenntnisse...


    Schreib es so, dann macht es mehr Sinn:


    dcmd_textdraw(playerid,params[])
    {
    new buffer[32];
    if(sscanf(params,"s[32]s[32]", buffer, Name)) return SendClientMessage(playerid,0xAFAFAFAA,"Benutze: /textdraw [Aufrufen/Bearbeiten] [Name des TextDraws]");
    if(!strcmp(buffer,"Aufrufen",true)) {
    if(fexist(Name)) SendClientMessage(playerid, black, "Benütze zum schliesen des Testdraws /clostextdraw");
    else SendClientMessage(playerid,black,"Diese Datei existiert nicht!");
    return 1;
    } else if(!strcmp(buffer,"Bearbeiten",true)) {
    SendClientMessage(playerid,black,"Hier kannst du nun was bearbeiten!");
    return 1;
    }
    return SendClientMessage(playerid,black,"Bitte geben Aufrufen oder Bearbeiten ein!");
    }


    mfg. :rolleyes:

    Was passiert denn, wenn man einen Stuntbonus bekommt? Da bekommt man ja auch Geld vom Client....


    Das hast du gut erkannt...und wenn man sich 1+1 zusammen rechnet, erkennt man, dass es mit dieser Variante nicht geht.


    Man müsste halt ein eigenes Stunt System schreiben, genauso wie man eigene Casino Systeme o.ä. schreiben müsste.


    Wusste nicht genau wie ich diesen Block nenen soll sind ja keine Variablen sind mehrere verschiedene Sachen, das schaut sehr kompliziert aus und ist definitiv nix für Neulinge Aber wie gesagt sieht gut aus


    Das erste ist ein forward...public Funktionen oder Funktionen mit einem Header-Typ muss/kann man forwarden.
    Das sind eigentlich basics.
    Und dann halt die Variable Geld.
    Und eine neue native Funktion für den Hook.
    und das @ vor dem MonyTimer steht im Prinzip nur für forward, also auch eigentlich basics.
    ...also sooo kompliziert ist das nun nicht :rolleyes:


    mfg. :thumbup:

    Das man Socket Verbindungen aufbauen kann, zu jemand anderem und man dann an einem Script schreiben kann...halt so Live Scripting, wurde ja schon oft besprochen.


    Dann vielleicht noch, was cool wäre die Farbe von bestimmten Wörtern ändern, z.B. das state blau angezeigt wird etc..


    Hole dir doch Inspiration von Haukes Editor, da wurde das alles schon mal besprochen :rolleyes:


    mfg. :thumbup: