Beiträge von Alex_Steward

    Fragt "if(TERRORIST)" bei dir auch nach der playerid ?


    Also wie im GF "if(PlayerInfo[PLAYERID][pTerrorist] == 1)" ? Also das eine playerid in Verbindung mit "TERRORIST" steht ?

    Kannst du mir sagen, wie ich
    das bei OnPlayerDeath hinkriege?


    Habe es noch nicht probiert,
    habe auch keine Vorstellung, wie ich es probieren soll.

    So nach dem Prinzip:
    new WarPointFraktionX; //oben im script


    Dann, wenn jemand eine Zone angreift und alles beginnt, setzt du eine Variable auf 1 oder so, das dann zeigt, dass ein Kampf gerade läuft.


    Diese Variable fragst du bei OnPlayerDeath ab und du fragst ab, ob einer in der Zone getötet wurde:
    //onplayerdeath
    if(WarStarted == 1) // also wenn der Kampf läuft
    {
    if( HIER FRAGEN OB 'Killerid' IN DER FRAKTION X IST)
    {
    if( HIER FRAGEN OB 'Playerid' IN DER FRAKTION Y IST)
    {
    if(IsPlayerInZone(playerid, minX, minY, maxX, maxY) && IsPlayerInZone(killerid, minX, minY, maxX, maxY)) // Koordinaten der Gangzone
    WarPointFraktionX ++;
    }
    }
    }


    So fragst du ab, ob killerid playerid in der bestimmten Zone getötet hat. Wenn ja, kriegt killerid ein Punkt.


    Falls der Server ausgeht oder du ihn zwischendurch restarten möchtest, kannst du diese Variablen auch direkt in eine Datei speichern und beim Serveranmachen sofort auslesen und den Timer weiter laufen lassen.


    Probiers, Übung macht den Meister ;)

    1. Du erstellst mit GangZoneCreate ein paar Zonen, die einnehmbar sind.
    2. Wenn jemand in der Zone steht, und die Zone mit einem Befehl einnehmen will, färbt sie sich in die Farbe der Fraktionsfarbe des Spielers.
    3. Wenn jemand diese Zone nun angreift, lässt du ein Timer starten und die Zone blinken: GangZoneFlashForPlayer(playerid, zoneid, color)
    4. Wenn jemand aus einer Fraktion den anderen aus einer anderen tötet, werden punkte gezählt: Passiert alles unter OnPlayerDeath
    5. Wenn der Timer zuende ist, vergleichst du die Punkte. Wer mehr hat, hat gewonnen und die Zone färbt sich in die Fraktionsfarbe: GangZoneShowForPlayer(playerid, zoneid, color)


    Wo kommst du genau nicht weiter ?

    1. Pickup:


    Unter OnGameModeInit erstellst du ein Pickup:
    CreatePickup(Pickupid, Typ, X, Y, Z); // Typ --> 1 ist nicht aufhebbar


    Dann fragst du bei OnPlayerPickupPickup, ob er ein Cop ist:
    if( HIER ABFRAGEN OB DER SPIELER EIN COP IST )
    {
    // wenn er ein cop ist und das pickup aufhebt, was soll dann passieren
    }



    2. Bestimmtes Auto:

    Zitat

    oder wie amcht mann das das nur z.B. cj ein bestimmtes auto fahreen kann ?

    So wie ich dich verstehe, darf nur die Skin-ID CJ ein bestimmtes Auto fahren ? Wenn so, dann so:


    Unter OnPlayerStateChange fragst du ab, ober ein eine bestimmte Skin-ID hat:
    if(newstate==PLAYER_STATE_DRIVER)
    {
    if(GetPlayerVehicleID(playerid) == FAHRZEUGID) //<-- FAHRZEUGID = das bestimmte Fahrzeug
    {
    if(GetPlayerSkin(playerid) == 0) // <-- CJ Skin-ID
    {
    }
    else // wenn er keine CJ Skin-ID hat
    {
    RemovePlayerFromVehicle(playerid);
    }
    }
    }



    Wenn du aber meinst, dass nur der NAME CJ ein bestimmtes Auto fahren darf, dann so:
    if(newstate == PLAYER_STATE_DRIVER)
    {
    if(GetPlayerVehicleID(playerid) == FAHRZEUGID) //<-- hier dasselbe mit dem bestimmten Fahrzeug
    {
    new plname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, plname, sizeof(plname));
    if(strcmp(plname, "CJ", true) == 0)
    {
    }
    else // wenn er nicht CJ heißt
    {
    RemovePlayerFromVehicle(playerid);
    }
    }
    }

    Zitat

    Ach, ich finds immer wieder geil wie die Leute über andere dingen sagen von den Sie überhaupt keine ahnung haben.
    Bevor ich zu jemanden sage das er Grundbasic gelernt hat und denkt ein Profie zu sein, wie du behauptest würd ich eher an mich selbst denken und nicht über andere blubbern,
    du hast bestimmt keine ahnung vom Scripten, only Copy & Past... :whistling:

    Bist ja ein ganz witziger Junge. Ich habe nie behauptet, dass ich ein Profi bin, nur, dass du denkst, du wärst einer, was ich lächerlich finde. Was solls, vielleicht bin ich kein Profi, dafür bin ich auch kein verklatschter Junge wie du, der sein Leben vorm PC auslöscht und 24 Stunden am Tag seine Sucht nicht unterdrücken kann.

    Ob der Spieler im Auto sitzt, fragst du so ab:


    if(IsPlayerInVehicle(playerid, fraktionscar[FRAKTIONSID][AUTOID]))
    {
    ...


    So fragst du nach einem bestimmten Fahrzeug.


    Wenn du aber abfragen willst, ob ein Member in einem seiner Fraktionsautos sitzt, machst du es so:


    if( HIER ABFRAGEN IN WELCHER FRAKTION DER MEMBER IST )
    {
    new fraktion = DIE OBIGE ABFRAGE;
    for(new i = 0; i<sizeof(fraktionscar); i++)
    {
    if(IsPlayerInVehicle(playerid, fraktionscar[fraktion][i]))
    {
    // was passiert dann
    }
    else
    {
    // was passiert, wenn er in keinem der Fahrzeuge sitzt, die zu seiner Fraktion gehören
    }
    }
    }

    Das muss so sein:


    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    if(SpielerInfo[i][pfraktion] = ??) //<--- da muss nicht playerid, sondern ' i ' hin, weil es ja der fahrer ist
    {
    ...


    Und beachte: Oben hast du PlayerInfo[...][Fraktion] und unten PlayerInfo[...][pfraktion], setz es richtig.


    Alles andere ist richtig. Das setzt du jetzt unter "public OnPlayerCommandText".

    Schaffst du selbst zu erstellen. Simple Abfrage:


    if(strcmp(cmd, "/kidnap", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if( HIER ABFRAGEN OB ER IN EINER FRAKTION IST )
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GREY, "Befehl: /kidnap [playerid] [Sitz: 0 = hinten links, 1 = hinten rechts]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if(IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != playerid)
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GREY, "Befehl: /kidnap [playerid] [Sitz: 0 = hinten links, 1 = hinten rechts]");
    return 1;
    }
    new sit = strval(tmp);
    if(sit < 0 || sit > 1) { SendClientMessage(playerid, COLOR_GREY, "Wähle den Sitzplatz nicht unter 0 oder über 1!"); return 1; }
    if(GetDistanceBetweenPlayers(playerid, giveplayerid) < 2)
    {
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    if( HIER ABFRAGEN OB ' i ' IN DER GLEICHEN FRAKTION IST )
    {
    if(GetPlayerState(i) == PLAYER_STATE_DRIVER)
    {
    if(GetDistanceBetweenPlayers(playerid, i) < 2)
    {
    new car = GetPlayerVehicleID(i);
    if(sit == 0)
    {
    PutPlayerInVehicle(giveplayerid, car, 2);
    }
    else if(sit == 1)
    {
    PutPlayerInVehicle(giveplayerid, car, 3);
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist nicht in der Nähe eines Fahrers mit einem Auto!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Der Spieler aus deiner Fraktion ist nicht am Steuer!");
    }
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Das Opfer ist nicht in deiner Nähe!");
    }
    }
    }
    }
    }
    }


    So in etwa geht es.


    (Ungetestet, eben mal schnell erstellt)

    Hmm, bei dir fragt er es so ab: Ist die Spieler ID 0 im Wagen ID 0, dann passiert nichts. Ist die Spieler ID 1 im Wagen ID 0, dann nichts, ansonsten respawnen. Ist die Spieler ID 2 im Wagen ID 0, dann nichts, ansonsten respawnen. Verstehst du es ? Ich denke, dass er es so abfragt. Bin mir nicht sicher, wie man das nun genau passend macht, aber probier es mal so:



    public vspawn2()
    {
    for(new v = 0; v<CAR_AMOUNT; v++)
    {
    if(!IsAnyInVehicle(v))
    {
    SetVehicleToRespawn(v);
    }
    }
    return 1;
    }


    stock IsAnyInVehicle(vehicleid)
    {
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerInVehicle(i, vehicleid);
    {
    return true;
    }
    }
    return false;
    }

    Du musst diese Funktion unter "OnVehicleStreamIn" setzen:


    public OnVehicleStreamIn(vehicleid, forplayerid)
    {
    if(IsACopCar(vehicleid))
    {
    if(!IsAState(forplayerid))
    {
    SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 1);
    }
    else
    {
    SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 0);
    }
    }
    ...