Beiträge von Jeffry

    Cheevy.Shakur: Steht das vor oder nach GangZoneCreate? Es muss danach stehen, also in dem Callback in dem du die Zonen erstellst.
    Außerdem erstellst du so an jeder der drei Stellen MAX_GANGFIGHT's Labels, da die Positionen fest angegeben sind, sprich für jeden Durchlauf ist es dieselbe Position.

    Du musst es zum Beispiel so schreiben:
    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(SpielerInfo[playerid][pDuty] == 1)
    {
    if(pickupid == Polizeipick[0])
    {
    if(Polizeihat[playerid][0] == 0)
    {
    GivePlayerMoney(playerid, 1000);
    Polizeihat[playerid][0] = 1;
    }
    }
    else if(pickupid == Polizeipick[1])
    {
    if(Polizeihat[playerid][1] == 0)
    {
    SetPlayerHealth(playerid, 100);
    Polizeihat[playerid][1] = 1;
    }
    }
    else if(pickupid == Polizeipick[2])
    {
    if(Polizeihat[playerid][2] == 0)
    {
    GivePlayerWeapon(playerid, 38, 1000);
    Polizeihat[playerid][2] = 1;
    }
    }
    }
    return 1;
    }

    Ahhh, na klar!
    new GangfightZone[MAX_GANGFIGHT];
    zu:
    new GangfightZone[MAX_GANGFIGHT] = {-1,...};


    Und:
    printf("Vor der Anzeige: %d", playerid);
    for(new i;i<MAX_GANGFIGHT;i++)
    {
    if(GangfightZone[i] == -1) continue;
    printf("Zone: %d | Besitzer: %d | Farbe: %d", GangfightZone[i], Gangfight[i][gBesitzer], GetZoneColor(Gangfight[i][gBesitzer]));
    GangZoneShowForPlayer(playerid, GangfightZone[i], GetZoneColor(Gangfight[i][gBesitzer]));
    }
    printf("Alle angezeigt");


    Dann geht's.

    Du hattest immer eine Klammer-Zu am Ende zu viel.


    Schreibe es aber besser so:
    ocmd:amiadmin(playerid,params[])
    {
    switch(GetPVarInt(playerid,"Adminlevel"))
    {
    case 1: SendClientMessage(playerid,COLOR_ADMIN,"Du bist ein Volunteer(Rang1).");
    case 2: SendClientMessage(playerid,COLOR_ADMIN,"Du bist ein Moderator(Rang2).");
    case 3: SendClientMessage(playerid,COLOR_ADMIN,"Du bist ein Administrator(Rang3).");
    case 4: SendClientMessage(playerid,COLOR_ADMIN,"Du bist ein Server-Manager(Rang4).");
    }
    return 1;
    }

    Also, der Code an sich, um die Zone anzuzeigen funktioniert ohne Probleme. Das heißt, es kann eigentlich nur sein, dass die Zone nicht angezeigt wird, weil der Code nicht ausgeführt wird.
    Hier der Test-Code:

    Spoiler anzeigen
    #include <a_samp>

    Spoiler anzeigen
    public OnFilterScriptInit()
    {
    a = GangZoneCreate(-2232.45,949.109,-2139.75,1039.84);
    return 1;
    }

    Spoiler anzeigen
    public OnPlayerSpawn(playerid)
    {
    GangZoneShowForPlayer(playerid, a, GetZoneColor(1));
    return 1;
    }

    Spoiler anzeigen
    stock GetZoneColor(faction)
    {
    if(faction == 1) return 0xA349A466;
    else if(faction == 2) return 0xFF7BFFFF;
    else return 0;
    }

    Kannst ja mal testen ob das bei dir tut, falls das andere noch immer nicht tut.



    Schreibe den Teil hier mal um:
    for(new i;i<MAX_GANGFIGHT;i++)
    {
    GangZoneShowForPlayer(playerid, GangfightZone[i], GetZoneColor(Gangfight[i][gBesitzer]));
    }

    zu:
    printf("Vor der Anzeige: %d", playerid);
    for(new i;i<MAX_GANGFIGHT;i++)
    {
    printf("Zone: %d | Besitzer: %d | Farbe: %d", GangfightZone[i], Gangfight[i][gBesitzer], GetZoneColor(Gangfight[i][gBesitzer]));
    GangZoneShowForPlayer(playerid, GangfightZone[i], GetZoneColor(Gangfight[i][gBesitzer]));
    }
    printf("Alle angezeigt");


    Die Zone ist irgendwo in San Fierro. Wenn du dich zu "-2232.45, 949.109, 100.0" teleportierst, dann bist du direkt dort.
    Poste dann, wenn du dich gespawnt hast, das was im Server Log steht (die prints).

    Dann schreibe es so:
    WBB_AddThread (SpielerName(pID),Erfolge,"","Erfolg: Zum Leader benannt!",string1, 0 , ERFOLG_CLOSE , ERFOLG_DISABLE , 0 , 1 , 0 , 1 , 4 );


    Falls es nicht geht, poste bitte wie du Erfolge deklariert hast (Code-Zeile(n)).

    new Float:health;
    GetPlayerHealth(playerid,health)
    dini_FloatSet(Spielerdatei,"HP",health);


    Variablen zu casten ist meistens keine gute Idee, das sollte man nur machen, wenn es nicht anders geht.

    Wie hast du getPlayerName und Erfolge deklariert?
    Deine Variable Prefix macht nicht wirklich Sinn, da nichts drin steht und es nur eine Größe von 1 hat, sprich es wird wegen dem EOS Zeichen immer leer sein.

    Dann füge das bei OnGameModeInit ein:
    SetTimer("CreateZombieExplosions", 50000, true);


    Und das ganz unten im Gamemode:
    forward CreateZombieExplosions();
    public CreateZombieExplosions()
    {
    new Float:x,Float:y,Float:z;
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    GetPlayerPos(i,x,y,z);
    CreateExplosion(x+random(75)+25, y+random(75)+25, z, 12, 10.0);
    }
    }
    return SendClientMessageToAll(C_RED,"[ACHTUNG]: Es fand eine Explosion statt. Zombies sind möglicherweise Ausgebrochen begib dich in Schutz!");
    }


    Das andere Zeug machst du weg.

    Und wie oft soll eine Explosion stattfinden (Anzahl / Differenz zwischen zwei Explosionen)?
    Soll das für jeden Spieler (im jeweiligen Umkreis) erzeugt werden, oder nur für bestimmte? Falls bestimmte, unter welchen Bedingungen?

    Wenn du den Timer unter OnPlayerSpawn startest, dann erhöht sich die Anzahl der Aufrufe des Timers bei jedem Spawn um 1, sprich wenn du 10 mal stirbst, werden 11 Explosionen pro Sekunde erstellt.
    Wann soll denn diese Nachricht überhaupt kommen? Und wann sollen die Explosionen erstellt werden, und wie lange?


    Der Code, wie er momentan ist macht keinen Sinn, da er linear wachsend an Aufrufen ist.
    (Ich hab dir zu dem Code noch gar nichts gesagt :huh: Von mir kommt sowas nicht.).