Tore für bestimmte Fraktionen

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 leute, lasst euch vom Titel nicht abschrecken.
    Ich wollte etwas Spaarender Scripten bzw ich habe es versucht und zwar wollte ich wenn man vor einem Tor ist, es mit der taste H öffnen kann, und dass aber auch nur wenn man dem jeweiligen Team angehört! Mittlerweile sieht das ganze so aus und ich check einfach nicht mehr weiter :/


    //Gate System
    forward CloseTor(playerid);
    forward CloseSchranke(playerid);
    //____Gates____________
    enum Gates {
    Float: OpenX,
    Float: OpenY,
    Float: OpenZ,
    Text[200],
    Float: CloseX,
    Float: CloseY,
    Float: CloseZ,
    Gateteam,
    TorID[2],
    Torart
    };


    //___________Gates und Tore usw_________________________________________________
    //X Y Z to Open, Text, X Y Z to Close, Team, TorID, Torart (1 = Tor / 2 = Schranke)
    new Float:Tore[][Gates] = {
    {-1522.80005, 482.5, -0.4,"Das Tor schließt sich Automatisch nach 8 Sekunden", -1522.80005, 482.5, 6.2, 0, 1, 1}
    //{-1522.80005, 482.5, 6.2,"Das Tor schließt sich Automatisch nach 8 Sekunden", -1522.80005, 482.5, -0.4, 0, 2, 2}
    };


    public OnGameModeInit()
    {
    for(new Gateid = 0; Gateid < sizeof(Tore); Gateid++)
    {
    Tore[Gateid][TorID][1] = CreateObject(987, -1522.80005, 482.5, 6.2, 0, 0, 180);//Army Oben
    }
    return 1;
    }


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
    if(oldkeys == 8)
    {
    if(IsPlayerInRangeOfPoint(playerid,Tore[playerid][CloseX],Tore[playerid][CloseY],Tore[playerid][CloseZ], 10.0)) {
    if(GetPVarInt(playerid, "Team") == Tore[playerid][Gateteam]) {
    if(Tore[playerid][Torart] == 1) {
    MoveObject(Tore[playerid][TorID], Tore[playerid][OpenX], Tore[playerid][OpenY], Tore[playerid][OpenZ], 5);
    SendClientMessage(playerid,COLOR_LIGHTBLUE, Tore[playerid][Text]);
    SetTimer("CloseTor", 8000, 0); }
    else if(Tore[playerid][Torart] == 2) {
    //Rotieren...
    SendClientMessage(playerid,COLOR_LIGHTBLUE, Tore[playerid][Text]);
    SetTimer("CloseSchranke", 8000, 0); }
    }
    }
    }
    return 1; }
    public CloseTor(playerid)
    {
    MoveObject(Tore[playerid][TorID], Tore[playerid][CloseX],Tore[playerid][CloseY],Tore[playerid][CloseZ],5.0);
    return 1;
    }
    public CloseSchranke(playerid)
    {
    //Rotieren...
    return 1;


    Wäre echt nett wenn ihr mir etwas helfenkönntet :)


    MfG



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)


  • Könntest du uns bisste sagen wo genau es hängt? Also was möchtest du gerne machen?

  • Versuch das mal:

    //Gate System
    forward CloseTor(playerid);
    forward CloseSchranke(playerid);
    //____Gates____________
    enum Gates {
    Float: OpenX,
    Float: OpenY,
    Float: OpenZ,
    Text[200],
    Float: CloseX,
    Float: CloseY,
    Float: CloseZ,
    Gateteam,
    TorID[2],
    Torart
    };


    //___________Gates und Tore usw_________________________________________________
    //X Y Z to Open, Text, X Y Z to Close, Team, TorID, Torart (1 = Tor / 2 = Schranke)
    new Float:Tore[][Gates] = {
    {-1522.80005, 482.5, -0.4,"Das Tor schließt sich Automatisch nach 8 Sekunden", -1522.80005, 482.5, 6.2, 0, 1, 1}
    //{-1522.80005, 482.5, 6.2,"Das Tor schließt sich Automatisch nach 8 Sekunden", -1522.80005, 482.5, -0.4, 0, 2, 2}
    };


    public OnGameModeInit()
    {
    for(new Gateid = 0; Gateid < sizeof(Tore); Gateid++)
    {
    Tore[Gateid][TorID][1] = CreateObject(987, -1522.80005, 482.5, 6.2, 0, 0, 180);//Army Oben
    }
    return 1;
    }


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
    if(newkeys & 8)
    {
    if(IsPlayerInRangeOfPoint(playerid,Tore[playerid][CloseX],Tore[playerid][CloseY],Tore[playerid][CloseZ], 10.0)) {
    if(GetPVarInt(playerid, "Team") == Tore[playerid][Gateteam]) {
    if(Tore[playerid][Torart] == 1) {
    MoveObject(Tore[playerid][TorID], Tore[playerid][OpenX], Tore[playerid][OpenY], Tore[playerid][OpenZ], 5);
    SendClientMessage(playerid,COLOR_LIGHTBLUE, Tore[playerid][Text]);
    SetTimer("CloseTor", 8000, 0); }
    else if(Tore[playerid][Torart] == 2) {
    //Rotieren...
    SendClientMessage(playerid,COLOR_LIGHTBLUE, Tore[playerid][Text]);
    SetTimer("CloseSchranke", 8000, 0); }
    }
    }
    }
    return 1; }
    public CloseTor(playerid)
    {
    MoveObject(Tore[playerid][TorID], Tore[playerid][CloseX],Tore[playerid][CloseY],Tore[playerid][CloseZ],5.0);
    return 1;
    }
    public CloseSchranke(playerid)
    {
    //Rotieren...
    return 1;



  • Wenn du es nicht rausfindet, debugge es doch einfach.


    Nach jeder Zeile die damit zu tun hat lässt du einfach printen ob der Vorgang erfolgreich war oder nicht.
    Dann siehst du woran es liegt :)

  • Habe es einigermaßen hinbekommen!
    Problem:
    Jetzt wird irgendwie ein neues Tor erstellt, dass zwar perfekt funktioniert aber es soll ja das vorhandene Tor runter gehen :/


    Und bei meiner Schranke hab ich gerade gemerkt, dass man da ja mit Rotation arbeitet und ich mit IsPlayerInRangeOfPoint abfrage ob er dort steht aber das funktioniert ja alles garnicht, weil ja bei der schranke nicht die XYZ Kords. "gespeichert" werden? Wie kann ich da jetzt am besten abfragen ob er in der nähe der schranke ist ?


    Hier aktueller code


    //___________Gates und Tore usw_________________________________________________
    //X Y Z to Open, Text, X Y Z to Close, Team, TorID, Torart (1 = Tor / 2 = Schranke)
    new Float:Tore[][Gates] = {
    {-1522.80005, 482.5, -0.4,"Das Tor schließt sich Automatisch nach 8 Sekunden", -1522.80005, 482.5, 6.2, 1, 1, 1},
    {-1631.7, 688.20001, 3.4,"Das Tor schließt sich Automatisch nach 8 Sekunden",-1631.7, 688.20001, 8.5, 1, 2, 1},
    {-0, 359.247, 90,"Das Tor schließt sich Automatisch nach 8 Sekunden", 0, 89.742, 90, 1, 3, 2}//Das ist die schranke da bekomme ich übrigens 5 Warns(Tag missachtet)
    };


    if(newkeys & KEY_CROUCH) {
    for(new Gateid = 0; Gateid < sizeof(Tore); Gateid++) {
    if(IsPlayerInRangeOfPoint(playerid,20.0, Tore[Gateid][CloseX],Tore[Gateid][CloseY],Tore[Gateid][CloseZ])) {
    if(Tore[Gateid][Torart] == 1) {
    if(SpielerInfo[playerid][pTeam] == Tore[Gateid][Gateteam]) {
    MoveObject(Tore[Gateid][TorID], Tore[Gateid][OpenX], Tore[Gateid][OpenY], Tore[Gateid][OpenZ], 5);
    SendClientMessage(playerid,tortext, Tore[Gateid][Text]); }
    SetTimer("CloseTor", 8000, 0); }
    else if(Tore[Gateid][Torart] == 2) {
    if(SpielerInfo[playerid][pTeam] == Tore[Gateid][Gateteam]) {
    SetObjectRot(Tore[Gateid][TorID], Tore[Gateid][OpenX],Tore[Gateid][OpenY],Tore[Gateid][OpenZ]);
    SendClientMessage(playerid,tortext, Tore[Gateid][Text]); }
    SetTimer("CloseSchranke", 8000, 0); }
    }
    }
    }


    und Publics


    //Gate
    public CloseTor(playerid) {
    for(new Gateid = 0; Gateid < sizeof(Tore); Gateid++) {
    MoveObject(Tore[Gateid][TorID], Tore[Gateid][CloseX],Tore[Gateid][CloseY],Tore[Gateid][CloseZ],5.0); }
    return 1; }
    public CloseSchranke(playerid) {
    for(new Gateid = 0; Gateid < sizeof(Tore); Gateid++) {
    SetObjectRot(Tore[Gateid][TorID], Tore[Gateid][CloseX],Tore[Gateid][CloseY],Tore[Gateid][CloseZ]); }
    return 1; }


    Würde sehr dankbar sein :)



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

    3 Mal editiert, zuletzt von ENEF ()

  • Ne habe kein TV und das meiste wo stört ist, dass sich die Tore duplizieren und ich sogesehen nicht durchs tor fahren kann weil das vorhandene Tor nicht runter geht, sondern irgendwie ein neues gemacht wird und das dann runter geht aber das normale bleibt zu! bei beiden...
    Und wie soll ich das mit der Schranke machen? Irgendwie check ich jetzt nicht mehr durch..



    //keiner eine lösung?



    Die heutigen Noobs, sind die Profis von morgen! :thumbup:


    Danke an Jeffry für seine ständige Hilfsbereitschaft und freundliche Art. 8)

    Einmal editiert, zuletzt von ENEF ()