In Range of Point - Problem (Gate)

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
  • Guten Tag liebe Breadfish Leute.^_^


    Ich habe folgendes Problem:
    Da ich mal etwas kleines wieder Scripten wollte,
    also ein Tor-System, ist es nur blöd, dass ich folgendes nicht weiß und auch etwas nicht stimmt.


    - Was ich nicht kann:
    Mit einem Befehl ein Tor auf & Zu zumachen, statt per 2 Befehle Einzelnd.


    - Was ich für ein Problem habe im Script bei dem System:


    Bei mir ist es so, dass wenn ich dann "/open" eingebe,
    im Interior nur das erste mit IsPlayerInRangeOfPoint definiert wird und
    es sich auch nur bewegt, bei den anderen Gates/Toren ist es nicht der fall,
    auch wenn ich 2cm davor stehe es tut sich nix. :(


    Hier der Code:

    Spoiler anzeigen


    if (strcmp("/closed", cmdtext, true, 10) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid,5.0,239.62052917,118.44550323,1008.85559082) || IsPlayerInRangeOfPoint(playerid,5.0,253.22761536,109.94210052,1008.85559082)) { return 1; }
    else if(IsPlayerInRangeOfPoint(playerid,5.0,249.06152344,119.30839539,1008.00000000) || IsPlayerInRangeOfPoint(playerid,5.0,243.69314575,119.30907440,1008.00000000)) { return 1; }
    else if(IsPlayerInRangeOfPoint(playerid,5.0,253.08631897,117.69239044,1005.61218262) || IsPlayerInRangeOfPoint(playerid,5.0,239.79766846,112.07182312,1005.61218262)) { return 1; }
    {
    //PDgates
    MoveObject(pdgate,249.06152344,119.30839539,1005.00000000,3.0);
    MoveObject(pdgate,243.69314575,119.30907440,1005.00000000,3.0);
    MoveObject(pdgate,253.08631897,117.69239044,1005.61218262,3.0);
    MoveObject(pdgate,239.79766846,112.07182312,1005.61218262,3.0);
    //Other PD Gates
    MoveObject(pdtor,239.62052917,118.44550323,1004.85559082,3.0);
    MoveObject(pdtor,253.22761536,109.94210052,1004.85559082,3.0);
    SendClientMessage(playerid,Grün,"Du hast das Tor geschlossen.");
    return 1;
    }
    }
    if (strcmp("/open", cmdtext, true, 10) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid,5.0,239.62052917,118.44550323,1008.85559082) || IsPlayerInRangeOfPoint(playerid,5.0,253.22761536,109.94210052,1008.85559082)) { return 1; }
    else if(IsPlayerInRangeOfPoint(playerid,5.0,249.06152344,119.30839539,1008.00000000) || IsPlayerInRangeOfPoint(playerid,5.0,243.69314575,119.30907440,1008.00000000)) { return 1; }
    else if(IsPlayerInRangeOfPoint(playerid,5.0,253.08631897,117.69239044,1005.61218262) || IsPlayerInRangeOfPoint(playerid,5.0,239.79766846,112.07182312,1005.61218262)) { return 1; }
    {
    MoveObject(pdgate,249.06152344,119.30839539,1008.00000000,3.0);
    MoveObject(pdgate,243.69314575,119.30907440,1008.00000000,3.0);
    MoveObject(pdgate,253.08631897,117.69239044,1008.61218262,3.0);
    MoveObject(pdgate,239.79766846,112.07182312,1008.61218262,3.0);
    MoveObject(pdtor,239.62052917,118.44550323,1004.85559082,3.0);
    MoveObject(pdtor,253.22761536,109.94210052,1004.85559082,3.0);
    SendClientMessage(playerid,Grün,"Du hast das Tor geöffnet.");
    return 1;
    }
    }


    Hoffe es kann gelöst werden und mir die Oben genannten Hilfe-Tipps zum Befehl mit einem = Schließen/Öffnen gesagt bekommen.


    //edit:
    Durch das einfügen, ist einiges verrückt.
    Hoffe dennoch, dass es nicht's großes anrichtet bei eurer Analyse. ^^

  • Probier es mal mit einem enum


    enum gates{
    Float:TorZUX,
    Float:TorZUY,
    Float:TorZUZ,
    Float:TorZUANGELX,
    Float:TorZUANGELY,
    Float:TorZUANGELZ,
    Float:TorAUFX,
    Float:TorAUFY,
    Float:TorAUFZ,
    Float:TorAUFANGELX,
    Float:TorAUFANGELY,
    Float:TorAUFANGELZ,
    bool:statuts,
    fraction,

    };
    new Tore[][gates] = {

  • Öhm, wie genau kann ich das bitte verstehen DonVito? ^^
    Eine wirkliche Fraktion will ich ja nicht machen,
    einfach nur einen Befehl für die Gates die sich Bewegen sollen,
    wenn man z.B. einen einzigen Befehl eingibt, in der nähe der Position dieser Objekte.


    Ein Fraktion oder gar ein Script zu machen, hatte ich nicht vor,
    falls ich es falsch verstehe Korrigiere mich bitte. ^^

  • Ehm ein 'return' bricht einen Code ab.


    Du returnst wenn der Spieler in der nähe ist, auch sinnvoll.

  • 8|


    Also für das alles in einem Befehl, musst du den Toren je eine Variable zuweisen und diese beim öffnen/schließen ändern & beim befehl abfragen.
    Das mit deinen if-Abfragen ist total durcheinander.

    the ones who are crazy enough to think that they can change the world, are the ones who do
    - Steve Jobs

  • Öhm, wie genau kann ich das bitte verstehen DonVito? ^^
    Eine wirkliche Fraktion will ich ja nicht machen,
    einfach nur einen Befehl für die Gates die sich Bewegen sollen,
    wenn man z.B. einen einzigen Befehl eingibt, in der nähe der Position dieser Objekte.


    Ein Fraktion oder gar ein Script zu machen, hatte ich nicht vor,
    falls ich es falsch verstehe Korrigiere mich bitte. ^^


    Also mach es am besten einfach mit
    else if
    Bsp:

    if(strcmp(cmd,"/mv", true) == 0)
    {
    if(!IsPlayerInFrac(playerid, 19))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du bist kein Red Soldier!");
    return 1;
    }
    if(RSTor1 == false)
    {
    MoveDynamicObject(RS1, 1283.94921875,-1652.19042969,5.32026672, 5.0);
    SendClientMessage(playerid, COLOR_GREEN, "Tor geöffnet.");
    RSTor1 = true;
    }
    else if(RSTor1 == true)
    {
    MoveDynamicObject(RS1, 1283.94921875,-1652.19042969,15.32026672, 5.0);
    SendClientMessage(playerid, COLOR_RED, "Tor geschlossen.");
    RSTor1 = false;
    }
    else if(IsPlayerInFrac(playerid, 8))
    {
    if(HTorvar == 0)
    {
    MoveDynamicObject(HTor, 1830.80737305,-1316.49157715,4.01356697, 5.0);
    SendClientMessage(playerid, COLOR_GREEN, "Tor geöffnet");
    HTorvar = 1;
    }
    else if(HTorvar == 1)
    {
    MoveDynamicObject(HTor, 1830.80737305,-1316.49157715,14.01356697, 5.0);
    SendClientMessage(playerid, COLOR_RED, "Tor geschlossen");
    HTorvar = 0;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Kein Mitglied der Hitmen Agency!");
    }
    return 1;
    }


    wenn du mit meiner ersten Idee nicht zurecht kommst mit einem enum