... Problem mit beweglich gemachter Schranke ...

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo Breadfisch,
    Ich betreibe derzeit einen Reallife-Server und ich wollte für unser Polizei-Kommissariat bewegliche Schranken machen.
    Ich habe sie dazu einfach in unseren /mv Befehl der mit strcmp erstellt wurde reingepackt, jedoch funktioniert das nicht so wie wir es uns gedacht haben.
    Ich habe schon einmal eine Schranke annimiert, die ging zu schnell auf, trotz 0.01 Geschwindigkeit. Heute aber habe ich mich für das Include von Beavis
    entschieden, der die Schranken leicht und Sanft rotieren lassen soll. Dies funktioniert nicht. Immer wenn ich /mv eingebe kommt SERVER: Unknown Command.


    Ich habe die Schranke versucht so zu erstellen.
    if(IsPlayerInRangeOfPoint(playerid,10,699.0999800,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    SetSchranke(pdschranke[0],true);
    PlayerHearMusicInRange(x,y,z,1035,5,1,500);
    tor[playerid]=1;
    }
    }
    if(IsPlayerInRangeOfPoint(playerid,10,715.7999900,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    SetSchranke(pdschranke[1],true);
    PlayerHearMusicInRange(x,y,z,1035,5,1,500);
    tor[playerid]=1;
    }
    }


    Und ich habe auch versucht sie so zu rotieren.


    if(IsPlayerInRangeOfPoint(playerid,10,699.0999800,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    MoveSchranke(pdschranke[0]);
    PlayerHearMusicInRange(x,y,z,1035,5,1,500);
    tor[playerid]=1;
    }
    }
    if(IsPlayerInRangeOfPoint(playerid,10,715.7999900,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    MoveSchranke(pdschranke[1]);
    PlayerHearMusicInRange(x,y,z,1035,5,1,500);
    tor[playerid]=1;
    }
    }


    Nichts von den beiden Funktioniert, aber auch gar nichts, Errors im Script oder im include gibt es nicht ;)
    Ich hoffe ihr könnt mir helfen
    Liebe Grüße iMontreal

    Ich suche (Beta) Server-Tester für meinen Server.
    Bei Intresse bitte bei mir per PN melden.

  • Funktioniert es, wenn du "PlayerHearMusicInRange" auskommentierst? Die Funktion sieht mir ihrem Namen entsprechend nicht ganz richtig aus, so wie du sie aufrufst.
    Wenn es dann auch nicht geht, kommentiere das SetSchranke jeweils aus, geht es dann? Wenn nicht, poste dein "tor"-Array.
    Wenn es nach einem der beiden Kommentierungen geht, poste entweder die PlayerHearMusicInRange-Funktion, oder, wenn es am SetSchranke liegt, mache es wieder mit MoveObject und poste den Code wie er dann aussieht, dann zeige ich dir wie du es machen musst, damit es nicht so extrem schnell geht.

  • Hallo Jeffry,
    Danke das du dich diesen Fall annimmst, und mir geantwortet hast. Bisher, haben deine Idee'n immer sehr gut funktioniert, deshalb habe ich große
    zuversicht darin, dass es auch diesmals klappt. Nun aber mal Back to Topic.


    1. Versuch: PlayerHearMusicInRange auskommentieren
    Ergebnis = Erfolglos


    Codex von PlayerHearMusicInRange:


    stock PlayerHearMusicInRange(Float:x,Float:y,Float:z,musicid,Float:radius,Takecount,Stopmusictime)
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i)&&!IsPlayerNPC(i))
    {
    if(SpielerInfo[i][Eingeloggt]==1)
    {
    if(IsPlayerInRangeOfPoint(i,radius,x,y,z))
    {
    PlayerPlaySound(i,musicid,0.0,0.0,0.0);
    if(Takecount == 1)
    {
    SetTimerEx("StopPlayerPlaySound",Stopmusictime,0,"i",i);
    }
    }
    }
    }
    }
    return 1;
    }


    Die Funktion hat immer prima funktioniert.


    -----------------------------------------------------------------------------------------------------------------------------------------------


    2. Versuch: SetSchranke auskommentieren
    Ergebnis: Erfolgreich


    Sobald SetSchranke oder MoveSchranke draußen ist, funktioniert alles Prima, ich habe es sicherheitshalber mit eine SendClientMessage gedebuggt.
    Um näheres zu erfahren.


    -------------------------------------------------------------------------------------------------------------------------------------------------


    3. Versuch: MoveObject versuchen
    Ergebnis: Schranke geht zu schnell auf


    Sobald ich /mv eingebe, geht die Schranke zu schnell auf. Es ist wie ich es befürchtet habe, trotz richtiger Einstellung, meiner Meinung nach.
    Aber dem Script hat meine Meinung ja noch nie intressiert.


    Der Code sieht wie folgt aus.


    Definierung =
    new pdschranke[2];


    OnGameModeInit
    pdschranke[0]=CreateObject(968,699.0999800,-1384.8000000,14.4000000,0.0000000,90.0000000,0.0000000); //object(barrierturn) (1)
    pdschranke[1]=CreateObject(968,715.7999900,-1384.8000000,14.4000000,0.0000000,90.0000000,180.0000000); //object(barrierturn) (2)



    Wenn auf geht =
    if(IsPlayerInRangeOfPoint(playerid,10,699.0999800,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    MoveObject(pdschranke[0],699.0999800,-1384.8000000,14.4000000,0.01,0.0000000,0.0000000,0.0000000);
    tor[playerid]=1;
    }
    }
    if(IsPlayerInRangeOfPoint(playerid,10,715.7999900,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    MoveObject(pdschranke[1],715.7999900,-1384.8000000,14.4000000,0.01,0.0000000,0.0000000,180.0000000);
    tor[playerid]=1;
    }
    }



    Wenn zu geht =
    if(IsPlayerInRangeOfPoint(playerid,10,699.0999800,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    MoveObject(pdschranke[0],699.0999800,-1384.8000000,14.4000000,0.01,0.0000000,90.0000000,0.0000000);
    tor[playerid]=0;
    }
    }
    if(IsPlayerInRangeOfPoint(playerid,10,715.7999900,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    MoveObject(pdschranke[1],715.7999900,-1384.8000000,14.4000000,0.01,0.0000000,90.0000000,180.0000000);
    tor[playerid]=0;
    }
    }


    Liebe Grüße iMontreal

    Ich suche (Beta) Server-Tester für meinen Server.
    Bei Intresse bitte bei mir per PN melden.

  • Ok, super. :)


    Das liegt daran, dass du das Objekt ein ganz klein wenig bewegen musst, wenn du es rotieren lassen willst.


    Versuch es mal so:
    if(IsPlayerInRangeOfPoint(playerid,10,699.0999800,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    MoveObject(pdschranke[0],699.0999800,-1384.8000000,14.4100000,0.001,0.0000000,0.0000000,0.0000000);
    tor[playerid]=1;
    }
    }
    if(IsPlayerInRangeOfPoint(playerid,10,715.7999900,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    MoveObject(pdschranke[1],715.7999900,-1384.8000000,14.4100000,0.001,0.0000000,0.0000000,180.0000000);
    tor[playerid]=1;
    }
    }



    if(IsPlayerInRangeOfPoint(playerid,10,699.0999800,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    MoveObject(pdschranke[0],699.0999800,-1384.8000000,14.3900000,0.001,0.0000000,90.0000000,0.0000000);
    tor[playerid]=0;
    }
    }
    if(IsPlayerInRangeOfPoint(playerid,10,715.7999900,-1384.8000000,14.4000000))
    {
    if(IsPlayerInFrakt(playerid,1)||IsPlayerInFrakt(playerid,6)||IsPlayerInFrakt(playerid,16)||IsPlayerAnAdmin(playerid,4))
    {
    MoveObject(pdschranke[1],715.7999900,-1384.8000000,14.3900000,0.001,0.0000000,90.0000000,180.0000000);
    tor[playerid]=0;
    }
    }

  • Hallo Jeffry,
    Danke dir, es hat funktioniert, allerdings sind die Schranken jetzt etwas zu langsam.
    In Reallife sind sie auch schneller :), ich weiß nicht wie viel höher ich den Wert jetzt stezen soll...
    Liebe Grüße iMontreal

    Ich suche (Beta) Server-Tester für meinen Server.
    Bei Intresse bitte bei mir per PN melden.

  • Halllo Lifestyler,
    Danke für deine Antwort, ja ich habe den Wert erhöht. Ich hab ein bisschen rumprobiert, ich habe jetzt 0,005 genommen.
    Jetzt gehts, habe bissl rumprobiert.


    Hallo Almero,
    Danke für deine Antwort. Hast du das obere richtig gelesen ? - Dann wüsstest du das ich dieses Include habe und da Fehler bei hatte,
    das funktioniert bei mir kein Stück. Also, geh mir mit den Ding weg :) Ach neee :(


    Halllo Jeffry,
    Danke Danke für deine Antwort, ja, das habe ich in 0,005 geändert, das funktioniert nun richtig gut. Nur bin ich der Meinung, das sie etwas langsamer zu gehen, als sie sollten. Ich habe sie trotzdem auf beiden Seiten angepasst.


    Liebe Grüße iMontreal

    Ich suche (Beta) Server-Tester für meinen Server.
    Bei Intresse bitte bei mir per PN melden.