Gangzonen werden nicht erstellt / angezeigt

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 Morgen,
    ich bin dabei ein gangfight system zu schreiben aber sie werden nicht erstellt ;(



    Hir mein code:


    Spoiler anzeigen
    #include <a_samp>
    #include <mysql>
    #include <ocmd>
    #include <color>

    Spoiler anzeigen
    #define Function%0(%1) forward%0(%1); public%0(%1)

    Spoiler anzeigen
    #define MySQLHost "localhost"
    #define MySQLUser "root"
    #define MySQLPass ""
    #define MySQLData "samp_db"

    Spoiler anzeigen
    main()
    {
    print("\n----------------------------------");
    print(" Blank Gamemode by your name here");
    print("----------------------------------\n");
    }

    Spoiler anzeigen
    #define GangZonen 400

    Spoiler anzeigen
    enum gebiet {
    gOwner,
    Float:gMinX,
    Float:gMinY,
    Float:gMaxX,
    Float:gMaxY,
    // Float:flPOSX,
    // Float:flPOSY,
    Float:flPOSZ,
    gOn,
    gStand1,
    gStand2,
    gAngreifer,
    Gebiet
    };
    new GangfightGebiete[GangZonen][gebiet];

    Spoiler anzeigen
    new pLeader[MAX_PLAYERS];

    Spoiler anzeigen
    public OnGameModeInit()
    {
    // Don't use these lines if it's a filterscript
    Connect_To_Database();
    SetGameModeText("Blank Script");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);

    LoadGangFightZonen();
    SetTimer("UpdateGangFightZones",10000,1);
    return 1;
    }

    Spoiler anzeigen
    public OnGameModeExit()
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerConnect(playerid)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerDisconnect(playerid, reason)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerSpawn(playerid)
    {
    for(new i; i<sizeof(GangfightGebiete); i++)//Damit alle gebiete durchlaufen werden
    {
    new color;
    if(GangfightGebiete[i][gOwner] == 5){color=0x000000B2;}
    if(GangfightGebiete[i][gOwner] == 6){color=0xFFFFFFB2;}
    GangZoneShowForPlayer(playerid, GangfightGebiete[i][Gebiet], color);
    }
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerDeath(playerid, killerid, reason)
    {
    for(new i; i<sizeof(GangfightGebiete); i++)
    {
    GangZoneHideForPlayer(playerid,GangfightGebiete[i][Gebiet]);//Für wenn das Gebiet versteckt werden soll.... und welches Gebiet
    }
    return 1;
    }

    Spoiler anzeigen
    public OnVehicleSpawn(vehicleid)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnVehicleDeath(vehicleid, killerid)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerText(playerid, text[])
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/mycommand", cmdtext, true, 10) == 0)
    {
    // Do something here
    return 1;
    }
    return 0;
    }

    Spoiler anzeigen
    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerEnterCheckpoint(playerid)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerLeaveCheckpoint(playerid)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerLeaveRaceCheckpoint(playerid)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnRconCommand(cmd[])
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerRequestSpawn(playerid)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnObjectMoved(objectid)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerObjectMoved(playerid, objectid)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnVehicleMod(playerid, vehicleid, componentid)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnVehicleRespray(playerid, vehicleid, color1, color2)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerSelectedMenuRow(playerid, row)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerExitedMenu(playerid)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnRconLoginAttempt(ip[], password[], success)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerUpdate(playerid)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerStreamIn(playerid, forplayerid)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerStreamOut(playerid, forplayerid)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnVehicleStreamIn(vehicleid, forplayerid)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnVehicleStreamOut(vehicleid, forplayerid)
    {
    return 1;
    }

    Spoiler anzeigen
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerClickPlayer(playerid, clickedplayerid, source)
    {
    return 1;
    }

    Spoiler anzeigen
    forward UpdateZones();
    public UpdateZones()
    {
    for(new player; player < MAX_PLAYERS; player++)//Damit alle Spieler durchlaufen werden
    {
    for(new i; i<sizeof(GangfightGebiete); i++)//Damit alle Gebiete durchlaufen werden
    {
    GangZoneHideForPlayer(player,GangfightGebiete[i][Gebiet]);//Damit werden alle Gebiete für alle User versteckt
    new color;//Erstellt eine neue Variable
    if(GangfightGebiete[i][gOwner] == 5){color=0x000000B2;}//Fragt ab welcher Frak das Gebiet gehört
    if(GangfightGebiete[i][gOwner] == 6){color=0xFFFFFFB2;}
    GangZoneShowForPlayer(player, GangfightGebiete[i][Gebiet], color); //Zeigt die Zone f ür die Spieler wieder mit der neuen/alten Farbe
    if(GangfightGebiete[i][gOn] == 1)//Fragt ab ob Gangfight in einem Gebiet läuft
    {
    if(GangfightGebiete[i][gAngreifer] == 5){color=0x000000B2;}//Fragt ab welche Frak das Gebiet angreift und setzt die Farbe
    if(GangfightGebiete[i][gAngreifer] == 6){color=0xFFFFFFB2;}
    GangZoneFlashForPlayer(player,GangfightGebiete[i][Gebiet],color);//"Flasht die Zone" in der Angreifer Farbe und Owner Farbe
    }
    }
    }
    }

    Spoiler anzeigen
    stock IsPlayerInGebiet(playerid)//Funktion bennen mit den jeweiligen Variablen oder auch Parameter genannt.
    {
    for(new i;i<sizeof(GangfightGebiete);i++)//Damit wieder nach allen Zonen geschaut wird.
    {
    new Float:GetX,Float:GetY,Float:GetZ;//Neue Float Variablen erstellen, damit wir dort die Positionen des Spielers speichern können
    GetPlayerPos(playerid,GetX,GetY,GetZ);//Die Position des Spielers in den oben genannten Variablen speichern.
    if(GangfightGebiete[i][gMinX] < GetX && GangfightGebiete[i][gMaxX] > GetX && GangfightGebiete[i][gMinY] < GetY && GangfightGebiete[i][gMaxY] > GetY)//Hier wird abgefragt ob die Spielerkooridnanten in dem Bereich der Gangzone sind.
    {
    return i;//Hier wird die Gebietsid returned
    }
    return -1;//Wenn der nirgendwo drin ist wird halt -1 returned damit wir einen unterschied haben
    }
    return -1;//Siehe oben
    }
    ocmd:team1(playerid,params[]) {
    pLeader[playerid] = 6;
    return 1;
    }
    ocmd:team(playerid,params[]) {
    pLeader[playerid] = 5;
    return 1;
    }
    ocmd:gw(playerid,params[])
    {
    #pragma unused params
    if(pLeader[playerid] == 5||pLeader[playerid] == 6)//Hier wird abefragt welche Fraktion einen Gangfight starten darf
    {
    if(IsPlayerInGebiet(playerid) > -1)//Ob der Spieler in einem Gebiet ist.
    {
    new zone = IsPlayerInGebiet(playerid);//Die Gebietsid wird in der Variable zone gespeichert.
    if(GangfightGebiete[zone][gOn] == 1) return SendClientMessage(playerid,COLOR_LIGHTBLUE,"Das Gebiet wird schon Umkämpft!");//Hier wird abgefragt ob das Gebiet schon bekämpft wird
    if(GangfightGebiete[zone][gOwner] == pLeader[playerid]) return SendClientMessage(playerid,COLOR_LIGHTBLUE," Deine Fraktion ist im Besitzt dieses Gebietes");//Hier wird abgefragt ob die Fraktion schon im besitzt dieser Funktion ist
    GangfightGebiete[zone][gAngreifer] = pLeader[playerid];//Hier wird der Angreifer gesetzt.
    GangfightGebiete[zone][gOn] = 1;//Das der Gangfight für dieses Gebiet läuft
    SetTimerEx("GangFight",3600000,0,"i",zone); //Dies startet einen Timer der eine Stunde läuft , damit beenden wir den Gangifght. Die Zoneid wird mit übergeben
    for(new i; i<MAX_PLAYERS; i++)//Damit jeder Spieler abgefragt wird
    {
    if(pLeader[playerid] == GangfightGebiete[zone][gOwner] /*|| PlayerInfo[i][pMember] == GangfightGebiete[zone][gOwner]*/)//Ob spieler oder Leader in dieser Fraktion ist
    {
    SendClientMessage(playerid,COLOR_RED,"Eines ihrer Gebiete wird angegriffen.");//Sendet eine Mitteilung
    }
    if(pLeader[playerid] == GangfightGebiete[zone][gAngreifer] /*||PlayerInfo[i][pMember] == GangfightGebiete[zone][gAngreifer]*/)//siehe oben
    {
    SendClientMessage(playerid,COLOR_RED,"Dein Leader hat ein Gangwar gestartet!");
    }
    }
    }
    }
    return 1;
    }
    Function LoadGangFightZonen()
    {
    new id=0;
    mysql_query( "SELECT * FROM `GangFightGebiete`");
    mysql_store_result();
    while(mysql_retrieve_row())//lauf durch alle zeilen durch
    {
    new tmpa[128];
    mysql_fetch_field_row(tmpa, "Owner");
    GangfightGebiete[id][gOwner] = strval(tmpa);
    mysql_fetch_field_row(tmpa, "gMinX");
    GangfightGebiete[id][gMinX] = floatstr(tmpa);
    mysql_fetch_field_row(tmpa, "gMiniY");
    GangfightGebiete[id][gMinY] = floatstr(tmpa);
    mysql_fetch_field_row(tmpa, "gMaxX");
    GangfightGebiete[id][gMaxX] = floatstr(tmpa);
    mysql_fetch_field_row(tmpa, "gMaxY");
    GangfightGebiete[id][gMaxY] = floatstr(tmpa);
    GangfightGebiete[id][Gebiet] = GangZoneCreate(GangfightGebiete[id][gMinX],GangfightGebiete[id][gMinY],GangfightGebiete[id][gMaxX],GangfightGebiete[id][gMaxY]); // Hier wird eine Zone erstellt die in der Variable Gebiet gespeichert wird !
    id++;
    }
    mysql_free_result();
    return printf("* Es wurden %i Gangfight Gebiete geladen & erstellt. *", id);
    }

    Spoiler anzeigen
    stock Connect_To_Database()
    {
    mysql_connect(MySQLHost, MySQLUser, MySQLData,MySQLPass);
    if(mysql_ping() == 1)
    {
    print("<-| [MYSQL] Verbindung zur Datenbank wurde erfolgreich hergestellt!");
    return true;
    }
    else
    {
    print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
    print("<-| [MYSQL] Es wird erneut versucht eine Verbindung zur Datenbank herzustellen!");
    mysql_connect(MySQLHost, MySQLUser, MySQLData,MySQLPass);
    if(mysql_ping() == 1)
    {
    print("<-| [MYSQL] Es konnte im 2 Versuch eine Verbindung hergestellt werden!");
    return true;
    }
    else
    {
    print("<-| [MYSQL] Es konnte keine Verbindung zur Datenbank hergestellt werden!");
    print("<-| [MYSQL] Der Server wird nun beendet!");
    SendRconCommand("exit");
    return true;
    }
    }
    }


    Ich bedanke mich bei jeden der mir helfen kann :)

    Mit freundlichen Grüßen,


    Fabi.StaR :love::saint:


    2 Mal editiert, zuletzt von Fabi.StaR ()

  • Also versuch es mal so:


    new Gebiete[1][gebiet] = //Erstellt eine Variable mit der Anzahl der Gebiete in der ersten [] angegeben und in der zweiten wird das Enum von oben eingefügt. (Dient zur genaueren Beschreibnung)
    {
    {0,1045.1472,-1579.7272,1141.4376,-1665.4949,0,0,0,0}//Hier werden dann die Zonen erstellt, eigentlich alles auf 0 lassen, außer die Koordinaten...
    };