Beiträge von Tom Sunder

    Gott, bau es dir doch selber... Für was gibt es Keystate abfragen in SA-MP?


    Du weißt wie lange es dauert die richtige Position von der Stelle wo ich es haben will rauszufinden? Oder meinste das in dem Link? ( http://forum.sa-mp.com/showthread.php?t=403143 ) Wenn ja dann: das versuch ich ja gerade aber schau ersten Satz ;) Hat wer noch ein anderes Filterscript oder Programm, womit man das ohne Raten bestimmen kann?


    genau ^^


    Neues Problem:
    Wenn ich nun Enter zum verlassen drück crasht es mich (hab es unter KeyStateChange mit remove...) und kann cih das mit
    ispassenger
    (bzw sowas ähnlcihes) auch bei ExitVehicle machen damit es mcih net crasht?
    Niemand ne idee wie das geht?
    EDIT: Hab nun ne Idee: ich mach es mit SetPlayerPos. Aber Warnings:

    if(strcmp(cmdtext, "/exithydra", true) == 0)
    {
    new hpposx, hpposy, hpposz;
    if(Hydrabeifahrer[playerid] == 1)
    {
    2524 GetPlayerPos(playerid, hpposx, hpposy, hpposz);
    SetPlayerPos(playerid, hpposx, hpposy+3.0, hpposz);
    Hydrabeifahrer[playerid] = 0;
    SendClientMessage(playerid, COLOR_GREY, "Du hast die Hydra verlassen. Um wieder als Beifahrer einzusteigen drücke G.");
    }
    }

    C:\Users\Timo\Desktop\Script\gamemodes\script.pwn(2524) : warning 213: tag mismatch
    C:\Users\Timo\Desktop\Script\gamemodes\script.pwn(2524) : warning 213: tag mismatch
    C:\Users\Timo\Desktop\Script\gamemodes\script.pwn(2524) : warning 213: tag mismatch


    if(ispassenger) { //Hier hat er g gedrückt }


    Soll cih dann wo steht //hier hat er g gedrückt
    das
    new veh = IsInRangeOfHydra(playerid);
    if(veh == -1) return 0; //Ist nicht in der Nähe einer Hydra
    new seat = GetFreeSeatInHydra(veh);
    if(seat > 4) return 0; //Die Hydra ist voll belegt
    PutPlayerInVehicle(playerid, veh, seat);


    hab nochmal ein "Problem":
    Die Taste "G" gibt es net alsMacro nur als OnFoot aber das funkt net da kommt undefined symbol obwohl cih genau das von WIKI hab. Was muss cih bei OnPlayerKeyStateChange bei if( eintragen damit das mit OnFoot geht?
    Darum cih hab es so:

    public OnPlayerKeySateChange(playerid)
    {
    if(GROUP_CONTROL_FWD)



    (Nicht vollständig)
    (WIki: http://wiki.sa-mp.com/wiki/OnPlayerKeyStateChange )


    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:


    Ok. Haben die dann ale hintereinander Platz oder sind die auch nebeneinander bzw schweben in der Luft?


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


    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:


    Wie kann ich Abfragen, ob man neben ner Hydra ist? Und wie kann cih die Abfrage mache ob der Platz bereits belegt ist?



    Flashboot
    Wie geht das mit der for Schleife? kannste mir das machen oder ein Beispiel zeigen? (nicht das Beispiel wo for für i (ersatz für playerid) genützt wird da ich da fast nix kapier)

    Ich würde einfach PutPlayerInVehicle benutzen. Und wichtig ist, dass beim Aussteigen RemovePlayerFromVehicle benutzt wird sonst crasht der Client.


    Darum meinste jetzt ich soll machen wenn g gedrückt wird soll abgefragt werden ob er in der Nähe von ner Hydra ist (wie kann man das machen?) in das hintere Teil von der Hydra geportet werden und wenn er Enter drückt das abgefragt wird ob man in ner Hydra als Beifahrer ist und dann soll er removet werden... oder?


    @ 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?

    Über der letzten Klammer noch ein return 1;.
    Die Abfrage sollte so lauten: if(pInfo[playerid][fraktion] == 3)


    Danke hab cih gerade selbst bemerkt.
    Ich glaube das wird net wiederholt oder?

    dcmd_hboost(playerid,params[])
    {
    new HGeschwindigkeit;
    if(sscanf(params,"i", HGeschwindigkeit)) { return SendClientMessage(playerid,COLOR_RED,"Benutze: /hboost [Anzahl die mit der momentanigen Geschwindigkeit mal gerechnet wird"); }
    {
    if(GetVehicleModel(playerid) == 520)
    {
    if(HGeschwindigkeit > 20) { return SendClientMessage(playerid, COLOR_RED, "Die maximale Anzahldie mit der Geschwindigkeit multipliziert wird beträgt 20!"); }
    {
    if(pInfo[playerid][fraktion] == 3)
    {
    SetVehicleSpeed(GetPlayerVehicleID(playerid), HGeschwindigkeit);
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Nur Mitglieder der Army dürfen diesen Boost benützen, da diese gut ausgebildet sind!");
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du musst in einer Hydra sitzen!");
    }
    }
    return 1;
    }



    stock SetVehicleSpeed(vehicleid, Float:speed)
    {
    new Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2, Float:a;
    GetVehicleVelocity(vehicleid, x1, y1, z1);
    GetVehiclePos(vehicleid, x2, y2, z2);
    GetVehicleZAngle(vehicleid, a); a = 360 - a;
    x1 = (floatsin(a, degrees) * (speed/100) + floatcos(a, degrees) * 0 + x2) - x2;
    y1 = (floatcos(a, degrees) * (speed/100) + floatsin(a, degrees) * 0 + y2) - y2;
    SetVehicleVelocity(vehicleid, x1, y1, z1);
    }


    Wenn es net wiederholt wird: Kann mir wer machen dass es solange wiederholt wird bis man aussteigt? Klappt bei mir net hab cihs chon versucht

    Du musst Geschwindigkeit einen neuen Namen zuweisen, da es im Script schon mal verwendet wird.


    Hab nun alles richtig. Aber ich glaube das wird net wiederholt wenn ich es so mach:



    dcmd_hboost(playerid,params[])
    {
    new HGeschwindigkeit;
    if(sscanf(params,"i", HGeschwindigkeit)) { return SendClientMessage(playerid,COLOR_RED,"Benutze: /hboost [Anzahl die mit der momentanigen Geschwindigkeit mal gerechnet wird"); }
    {
    if(GetVehicleModel(playerid) == 520)
    {
    if(HGeschwindigkeit > 20) { return SendClientMessage(playerid, COLOR_RED, "Die maximale Anzahldie mit der Geschwindigkeit multipliziert wird beträgt 20!"); }
    {
    if(pInfo[playerid][fraktion] == 3)
    {
    SetVehicleSpeed(GetPlayerVehicleID(playerid), HGeschwindigkeit);
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Nur Mitglieder der Army dürfen diesen Boost benützen, da diese gut ausgebildet sind!");
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du musst in einer Hydra sitzen!");
    }
    }
    return 1;
    }



    stock SetVehicleSpeed(vehicleid, Float:speed)
    {
    new Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2, Float:a;
    GetVehicleVelocity(vehicleid, x1, y1, z1);
    GetVehiclePos(vehicleid, x2, y2, z2);
    GetVehicleZAngle(vehicleid, a); a = 360 - a;
    x1 = (floatsin(a, degrees) * (speed/100) + floatcos(a, degrees) * 0 + x2) - x2;
    y1 = (floatcos(a, degrees) * (speed/100) + floatsin(a, degrees) * 0 + y2) - y2;
    SetVehicleVelocity(vehicleid, x1, y1, z1);
    }