Beiträge von Haxler

    Zitat

    new Reason[256],

    ressourcenfressend :/ Im Chat können eh nur 128 Zeichen geschrieben werden und der Befehl /kick hat mir Leerzeichen schon 6 ^^ Dann wären es noch 122 (wenn ich richtig gerechnet habe :D ist schon ein bisschen spät).

    Von aufschließen haste im 1. Post nichts gesagt :O Hab dir jetzt extra ein kleines Beispiel gemacht ^^ Nur ohne aufschliessen... Gucks dir mal an, vielleicht verstehste dann wie du es machen musst.

    new roller[MAX_PLAYERS],bool:erstellt[MAX_PLAYERS];


    // beim Befehl:
    if(erstellt[playerid] == false) // wenn der Spieler keinen Roller erstellt hat
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z); // position speichern
    roller[playerid]= CreateVehicle(ROLLER_ID,x,y,z,0,0,0,-1); // roller an dieser position erstellen
    erstellt[playerid] = true; // jetzt hat er einen Roller erstellt
    }


    // nun bei OnPlayerStateChange abfragen ob der Spieler Roller fährt und ob es sein Roller ist.
    if(newstate == PLAYER_STATE_DRIVER) // wenn der Spieler fahrer ist
    {
    new vid = GetPlayerVehicleID(playerid);
    for(new i;i<MAX_PLAYERS;i++)
    {
    if(vid == roller[i] && i == playerid) //wenn das Fahrzeug ein Roller ist und es der Roller vom Spieler ist
    {
    return SendClientMessage(playerid,FARBE,"Du darfst fahren!");
    }
    else
    {
    SendClientMessage(playerid,FARBE,"Du nicht!");
    return RemovePlayerFromVehicle(playerid);
    }
    }
    }


    so in der Art dürfte es gehen :D
    edit: schreibfehler ^^ heute schreibe ich echt viele edits xD

    Fast richtig. Nur noch


    AddPlayerClass(0,1471.4653,-1706.5201,14.0469,198.9198,0,0,0,0,0,0); // ID : 0
    AddPlayerClass(299,1471.4653,-1706.5201,14.0469,198.9198,0,0,0,0,0,0); // ID : 299
    AddPlayerClass(28,1471.4653,-1706.5201,14.0469,198.9198,0,0,0,0,0,0); // ID : 28
    AddPlayerClass(29,1471.4653,-1706.5201,14.0469,198.9198,0,0,0,0,0,0); // ID : 29
    AddPlayerClass(12,1471.4653,-1706.5201,14.0469,198.9198,0,0,0,0,0,0); // ID : 12


    zu OnGameModeInit verschieben ^^

    Zitat

    Bei If Abfragen nicht, bei allem anderen schon...


    Bei Switch-Anweisungen auch nicht ^^


    edit: Bei einem Befehl gibt es auch noch den Text der nach dem Befehl eingegeben wird. Dieser wird bei OnPlayerCommandText in der Variable cmdtext gespeichert. Am leichtesten (finde ich) geht das mit DCMD + sscanf. Such mal hier im Forum nach Command mit Parametern

    Du musst natürlich bei OnPlayerSpawn die Funktion aufrufen. Einfach GivePlayerWeapons(playerid); einfügen
    edît: schreibfehler 8|

    Wie wärs wenn du mir die Fehler zeigst? Ist nur ein Beispiel wie sowas aufgebaut werden könnte
    edit: ok es muss if(!params[0])return SendClientMessage(playerid,DEINE_FARBE,"Verwendung: /freez [playerid]"); heißen. zufrieden?

    Ich bin ja eher für OCMD^^ Hier mal ein Beispiel:


    ocmd:freez(playerid,params[])
    {
    if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid,DEINE_FARBE,"Du bist kein Admin!");
    if(!params)return SendClientMessage(playerid,DEINE_FARBE,"Verwendung: /freez [playerid]");
    new id = strval(params);
    if(!IsPlayerConnected(id))return SendClientMessage(playerid,DEINE_FARBE,"Spieler nicht online!");
    TogglePlayerControllable(id,0);
    SendClientMessage(playerid,DEINE_FARBE,"Spieler gefreezt!");
    return 1;
    }
    Weiß nicht obs tut habs hier im Editor gescriptet ^^


    edit: " vergessen
    edit2: hab freeze command draus gemacht

    oder mit switch:



    stock GivePlayerWeapons(playerid)
    {
    switch(PlayerInfo[playerid][pLeader])
    {
    case 5,6,7,13,14,15,16,17,18,19,20:
    {
    GivePlayerWeapon(playerid,3,1);
    GivePlayerWeapon(playerid,29,900);
    GivePlayerWeapon(playerid,31,900);
    GivePlayerWeapon(playerid,41,900);
    GivePlayerWeapon(playerid,22,900);
    SetPlayerArmour(playerid,100.0);
    }
    }
    switch(PlayerInfo[playerid][pMember])
    {
    case 5,6,7,13,14,15,16,17,18,19,20:
    {
    GivePlayerWeapon(playerid,3,1);
    GivePlayerWeapon(playerid,29,900);
    GivePlayerWeapon(playerid,31,900);
    GivePlayerWeapon(playerid,41,900);
    GivePlayerWeapon(playerid,22,900);
    SetPlayerArmour(playerid,100.0);
    }
    }
    return 1;
    }
    oder so ähnlich ^^

    Da wäre das Problem das er GF verwendet... Ich würd einfach OnPlayerSpawn das Team abfragen und dann Waffen geben (so wie die 1. Antwort es zeigt)
    edit: klar du kannst natrülich noch mehr Teams zur Abfrage hinzufügen. Ist ja nur ein Beispiel

    Das ist ne eigene Funktion und kann daher auch GivePlayerWeapons heißen.


    stock GivePlayerWeapons(playerid)
    {
    //SetPlayerSkillLevel(playerid, WEAPONSKILL_PISTOL, 1); // 1 ist das level 1 999 ds nur wen du es willst ;)


    if (PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)
    {
    GivePlayerWeapon(playerid,3,1);
    GivePlayerWeapon(playerid,29,900);
    GivePlayerWeapon(playerid,31,900);
    GivePlayerWeapon(playerid,41,900);
    GivePlayerWeapon(playerid,22,900);
    SetPlayerArmour(playerid,100.0);
    }
    return 1;
    }

    Wieso hast du beim letzte return 0;? ^^


    EDIT: probiers mal so...
    if(pickupid == 0)
    {
    if(gTeam[playerid] != TEAM_Cop)return SendClientMessage(playerid, 0x3C00FFFF, "Du bist kein Cop!");
    if(GetPlayerMoney(playerid) <250) return SendClientMessage(playerid, 0x3C00FFFF, "Du hast zuwenig Geld um dir Munition zu kaufen![250$]"); //Wenn Spieler zu wenig Geld hat, soll er durch das "return" den Vorgang abbrechen!
    GivePlayerMoney(playerid, -250); //Entzieht dem Spieler 100$ als Kaufpreis!
    GivePlayerWeapon(playerid, 24, 20); //Gibt dem Spieler die Waffe wenn er das Pickup betritt und genug Geld besitzt!
    SendClientMessage(playerid, 0x3C00FFFF, "Du hast deine Munition um 20 Schuss wieder augefüllt!");
    }
    else
    if(pickupid == 1)
    {
    if(gTeam[playerid] != TEAM_Cop)return SendClientMessage(playerid, 0x3C00FFFF, "Du bist kein Cop!");
    if(GetPlayerMoney(playerid) <1000) return SendClientMessage(playerid, 0x3C00FFFF, "Du hast zuwenig Geld um dir ein Waffenpack zu kaufen![1000$]"); //Wenn Spieler zu wenig Geld hat, soll er durch das "return" den Vorgang abbrechen!
    GivePlayerMoney(playerid, -1000); //Entzieht dem Spieler 100$ als Kaufpreis!
    GivePlayerWeapon(playerid, 24, 250); //Gibt dem Spieler die Waffe wenn er das Pickup betritt und genug Geld besitzt!
    GivePlayerWeapon(playerid, 25, 250); //Gibt dem Spieler die Waffe wenn er das Pickup betritt und genug Geld besitzt!
    GivePlayerWeapon(playerid, 28, 250); //Gibt dem Spieler die Waffe wenn er das Pickup betritt und genug Geld besitzt!
    SendClientMessage(playerid, 0x3C00FFFF, "Du hast ein Waffenpack erhalten!");
    }
    else
    if(pickupid == 2)
    {
    if(gTeam[playerid] != TEAM_Army)return SendClientMessage(playerid, 0x3C00FFFF, "Du bist kein Army Member!");
    GameTextForPlayer(playerid,"Du wurdest Teleportiert",5000,6);
    SetPlayerPos(playerid,2506.2234,1688.9886,19.3468);
    SendClientMessage(playerid,0xD7FF00FF,"gtaSelfIde: Du wurdest durch den Pickup Teleportiert.");
    }
    else
    if(pickupid==plenter)
    {
    if(gTeam[playerid] != TEAM_Cop)return SendClientMessage(playerid,0xD7FF00FF,"Du bist kein Cop!");
    SetPlayerPos(playerid,271.884979,306.631988,999.148437);
    SetPlayerInterior(playerid,2);
    }


    edit2^^: zeig mal wie du die Pickups erstellt hast. Wenn du nur CreatePickup verwendet hast könnte es daran liegen. Ich würde es wie bei plenter machen. Also
    new testpickup;


    testpickup = CreatePickup ...


    if(pickupid == testpickup)

    if(pickupid==plenter)
    {
    if(gTeam[playerid] != TEAM_Cop)return SendClientMessage(playerid,0xD7FF00FF,"Du bist kein Cop!");
    SetPlayerPos(playerid,271.884979,306.631988,999.148437);
    SetPlayerInterior(playerid,2);
    return 0;
    }


    :) so müsste könnte es gehen


    edît: text geändert ^^