Beiträge von Hagi

    Bitte, ich hab kein Plan, was ich machen muss.


    Ich versteh nur was mit Schleife nur was soll die durchgehn ?
    Help pls


    @dit:


    Es reicht auch, wenn ihr mir eine Anregung gebt, die ich verstehe


    @dit:


    Also ich bekomm das nicht hin, kann mir nicht jemand den Code geben ?


    @dit:


    Also ich habe das jetzt so probiert :
    Es funktioniert aber immer noch nicht. Gleiches Problem: Diese Waffe verkaufen wir nicht


    enum Waffenshop
    {
    Waffenname[50],
    Waffenid,
    Waffenpreis,
    Waffenmunitionspreis,
    };


    new WaffenAuswahl[][Waffenshop] =
    {
    {"M4" ,31, 1, 1},
    {"AK47",30,1,1},
    {"MP5",29,1,1},
    {"9mm",22,1,1},
    {"Deagle",24,1,1},
    {"Messer",4,1,1},
    {"Schlagstock",3,1,1},
    {"Shotgun",25,1,1},
    {"Spray",41,1,1}
    };


    dcmd_waffe(playerid, params[])
    {
    new waffe;
    new muni;


    if (sscanf(params, "su", waffe, muni))
    {
    return SendClientMessage(playerid, weiß, "Benutzung: /waffe [Name] [Anzahl]");
    }


    if(IsPlayerInRangeOfPoint(playerid,2.0,-2029.8009,157.5401,28.8359))
    {
    for(new i = 0;i<sizeof(WaffenAuswahl)+1;i++)
    if(waffe != WaffenAuswahl[i][Waffenid] || waffe != WaffenAuswahl[i][Waffenname])
    {
    SendClientMessage(playerid, rot, "Fehler: Diese Waffe verkaufen wir nicht");
    }
    else if (muni > 999)
    {
    SendClientMessage(playerid, 0xFF0000AA, "Maximal 999 Munition gleichzeitig kaufbar");
    }
    else
    {
    muni = WaffenAuswahl[1][Waffenid];


    if(GetPlayerMoney(playerid) > WaffenAuswahl[1][Waffenpreis]+WaffenAuswahl[1][Waffenmunitionspreis]*muni)
    {
    GivePlayerWeapon(playerid, waffe, muni);
    GivePlayerMoney(playerid, -WaffenAuswahl[1][Waffenpreis]+WaffenAuswahl[1][Waffenmunitionspreis]*muni);
    SendClientMessage(playerid, 0x00FF00AA, "Waffen gekauft");
    }
    else
    {
    SendClientMessage(playerid, 0x00FF00AA, "Du hast nicht genug Geld!");
    }
    }
    return 1;
    }
    else
    {
    SendClientMessage(playerid,rot,"Fehler: Du bist nicht am Waffenladen im Doherty");
    return 1;
    }
    }

    Hier nochmal zusammengefassst, da du mich per PN angeschreiben hast.


    Ganz oben
    static gTeam[MAX_PLAYERS];
    #define TEAM_ARMY 0
    #define TEAM_TERRORIST 1
    #define TEAM_ZIVI 2


    forward IsAArmyCar(carid);


    new ArmyCars[/*Anzhal wie viele du hinterher haben willst*/] // Z.B. new ArmyCars[3]


    Dann unter OnGameModeInit



    ArmyCars[0] = AddStaticVehicleEx(408,954.7928,-1183.5515,17.4995,179.0999,1,1,600000); // Hier definierst du diese Autos als Armycars. Ist zwar nicht die beste Methode , sollte aber funktioninere
    ArmyCars[1] = AddStaticVehicleEx(408,960.0809,-1183.6522,17.4940,179.7842,1,1,600000);
    ArmyCars[2] = AddStaticVehicleEx(408,960.0267,-1194.6895,17.5131,179.4697,1,1,600000);
    ArmyCars[3] = AddStaticVehicleEx(408,954.8535,-1195.0414,17.5205,178.9168,1,1,600000);


    Desweiteren ganz nach unten den IsAArmyCar Public


    public IsAArmyCar(carid) // Hier fragst du ab, ob das Auto ein ArmyCar ist
    {
    for(new i = 0; i < sizeof(ArmyCars); i++)
    {
    if(carid == ArmyCars[i])
    {
    return 1; // Sollte das Auto ein ArmyCar sein, wird 1 returnt
    }
    }
    return 0; // sollte dies nicht der Fall sein, wird 0 returnt
    }


    Nun noch abfragen, ob das Auto in welches man einsteigt ein ArmyCar ist.
    Das kann man unter OnPlayerEnterVehicle machen.
    Ich empfehle allerdings OnPlayerStateChange


    Also unter OnPlayerStateChange

    if(newstate == PLAYER_STATE_DRIVER)
    {
    new newcar = GetPlayerVehicleID(playerid);
    if(IsAArmyCar(newcar))
    {
    if(PlayerInfo[playerid][gTeam] == TEAM_ARMY)
    {
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY,"Du bist kein Soldat");
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    }


    return 1;
    }


    Probier das mal aus. Sollte aber eigentlich funktionieren

    Hab das jetzt mal ein bisschen ordentlicher aufgeschreiben, allerdings funktioniert der command nicht.
    Er sagt immer Waffe ausverkauft


    dcmd_waffe(playerid, params[])
    {
    new waffe;
    new muni;


    if (sscanf(params, "su", waffe, muni))
    {
    return SendClientMessage(playerid, weiß, "Benutzung: /waffe [Name] [Anzahl]");
    }


    if(waffe != WaffenAuswahl[6][Waffenid] || waffe != WaffenAuswahl[6][Waffenname])
    {
    SendClientMessage(playerid, 0xFF0000AA, "Waffenid/Waffenname ausverkauft!");
    }
    else if (muni > 999)
    {
    SendClientMessage(playerid, 0xFF0000AA, "Maximal 999 Munition gleichzeitig kaufbar");
    }
    else
    {
    muni = WaffenAuswahl[1][Waffenid];


    if(GetPlayerMoney(playerid) > WaffenAuswahl[1][Waffenpreis]+WaffenAuswahl[1][Waffenmunitionspreis]*muni)
    {
    GivePlayerWeapon(playerid, waffe, muni);
    GivePlayerMoney(playerid, -WaffenAuswahl[1][Waffenpreis]+WaffenAuswahl[1][Waffenmunitionspreis]*muni);
    SendClientMessage(playerid, 0x00FF00AA, "Waffen gekauft");
    }
    else
    {
    SendClientMessage(playerid, 0x00FF00AA, "Du hast nicht genug Geld!");
    }
    }
    return 1;
    }


    enum Waffenshop
    {
    Waffenname[50],
    Waffenid,
    Waffenpreis,
    Waffenmunitionspreis,
    };


    new WaffenAuswahl[7][Waffenshop] =
    {
    { "M4" ,31, 1, 1 },
    { "ak47",30,1,1 },
    { "mp5",29,1,1},
    { "9mm",22,1,1},
    { "deagle",24,1,1},
    { "messer",4,1,1},
    { "schlagstock",3,1,1}
    };

    Hallo Breadfisher,


    Ich hätte gerne einen Waffenladen mit dcmd bzw sscanf.


    Die Koordinaten, wo der command ausgeführt werden kann, editiere ich später selber in den cmd rein.


    Es sollte etwa so sein:


    /waffe [Name] [Anzahl]
    Wenn in einem der beiden oder auch in beiden Parametern nichts angegeben wird, soll eine Liste mit den möglichen Waffen returnt werden.
    Man soll die Waffen über den Namen der Waffe kaufen können also nicht:

    Zitat

    /waffe 31 999


    sondern

    Zitat

    /waffe m4 999


    Es soll ein Grundpreis pro Waffe berechnet werden + einen Preis für die Anzahl
    sprich:


    Beispiel M4: Grundpreis ( steht in der liste, die returnt wird s.o) + Anzahl*Anzahlpreis
    Beispiel M4: 200 + anzahl*2


    Wäre echt super, wenn ihr mir so ein cmd machen könntet, da ich momentan nicht so ganz dahinter steige.


    MFG
    Hagi

    Kann ein Carrespawn, bei dem nur die Autos in denen niemand drinsitzt respawnt werden, so funktionieren ?


    public respawn1()
    {
    for(new car=0; car<CAR_AMOUNT; car++)
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    if(!IsPlayerInVehicle(i,car))
    {
    SetVehicleToRespawn(car);
    }
    }
    return 1;
    }


    Ich habe das so ausprobiert.
    Allerdings, hat sich der Server erst 2 Minuten ein weggelagt und ist dann gecrasht.
    Habs nur auf meinem Homepc ausprobiert.


    @dit: Hab es jetzt nochmal probiert.
    Der Server hat sich nicht aufgehangen und ist auch nicht gelaggt, allerdings, wurde das Auto, in welchem ich saß auch respawnt

    Mit PlayerID wäre das so


    if (strcmp("/makefilm", cmdtext, true, 10) == 0)
    {
    new welt = playerid
    SetPlayerVirtualWorld(playerid,welt);
    new string[256];
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),"Spieler %s hat einen Film gestartet",playername,welt);
    SendClientMessageToAll(COLOR_LIGHTGREEN,string);
    return 1;
    }


    Probier mal ob das Funktioniert


    Wenn nicht probier mal das


    if (strcmp("/makefilm", cmdtext, true, 10) == 0)
    {
    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pname,sizeof(pname));
    welt = GetPlayerID(pname,1);
    SetPlayerVirtualWorld(playerid,welt);
    new string[256];
    format(string,sizeof(string),"Spieler %s hat einen Film gestartet",pname,welt);
    SendClientMessageToAll(COLOR_LIGHTGREEN,string);
    return 1;
    }

    Wofür machst du eigentlich 2 Tread auf ? http://forum.sa-mp.de/wbb/san-…-scriptfragen/#post218705
    Völlig unnötig



    if (strcmp("/makefilm", cmdtext, true, 10) == 0)
    {
    new welt = Random(50);
    SetPlayerVirtualWorld(playerid,welt);
    new string[256];
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),"Spieler %s hat einen Film gestartet",playername,welt);
    SendClientMessageToAll(COLOR_LIGHTGREEN,string);
    return 1;
    }


    Das verhindert aber nicht, dass nicht doch 2 Filme in der gleichen Welt spielen können.
    Es kann ja sein, dass in beiden Fällen der Random den gleichen Wert hat


    Bei dem Anderen Problem muss ich erstmal noch ein bisschen überlegen

    also ich bekomme keine errors.


    Bist du sicher, dass du


    dcmd(rauswerfen,10,cmdtext);
    In OnPlayerCommand


    und die Befehle außerhalb des Public hast ?


    Öhm ja das mit dem /annehmen kann ich machen aber wenn du /einladen machst, wird der doch sofort in die Virtual World gesetzt.
    Kannst ja theoretisch vorher absprechen bevor du jemanden einlädst.


    aber ich setzt mich mal ran

    "farbe" musst du durch die Farbdefinition oder den hex code ersetzten, indem der Text erscheinen soll.


    new tagaus;
    if (strcmp("/nametags", cmdtext, true, 10) == 0)
    {
    if(tagaus == 0)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    ShowPlayerNameTagForPlayer(playerid, i, false);
    GameTextForAll("~r~Namen aus",5000,3);
    tagaus = 1;
    }
    else
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    ShowPlayerNameTagForPlayer(playerid, i, false);
    GameTextForAll("~b~Namen an",5000,3);
    tagaus = 0;
    }
    }


    dcmd_makefilm(playerid,params[])
    {
    new welt;

    if(sscanf(params, "d",welt))
    {
    return SendClientMessage(playerid,weiß,"Benutzung: /makefilm [Welt]");
    }


    SetPlayerVirtualWorld(playerid,welt);
    new string[256];
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),"Spieler %s hat sich in die Virtual World %d gesetzt",playername,welt);
    SendClientMessageToAll(farbe,string);
    return 1;
    }


    dcmd_einladen(playerid,params[])
    {
    new zielid;

    if(sscanf(params, "u",zielid))
    {
    return SendClientMessage(playerid,weiß,"Benutzung: /Einladen [ID]");
    }


    new pworld = GetPlayerVirtualWorld(playerid);
    SetPlayerVirtualWorld(zielid,pworld);
    new string[256];
    new string2[256];
    new playername[MAX_PLAYER_NAME];
    new zielname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    GetPlayerName(zielid,zielname,sizeof(zielname));
    format(string,sizeof(string),"Spieler %s hat dich in die Virtual World %d eingeladen",playername,pworld);
    format(string,sizeof(string),"Du hast Spieler %s in die Wirtual World %d eingeladen",zielname,pworld);
    SendClientMessage(playerid,farbe,string2);
    SendClientMessage(zielid,farbe,string);
    return 1;
    }


    dcmd_rauswerfen(playerid,params[])
    {
    new zielid;

    if(sscanf(params, "u",zielid))
    {
    return SendClientMessage(playerid,weiß,"Benutzung: /rauswerfen [ID]");
    }

    new pworld = GetPlayerVirtualWorld(playerid);
    SetPlayerVirtualWorld(zielid,0);
    new string[256];
    new string2[256];
    new playername[MAX_PLAYER_NAME];
    new zielname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    GetPlayerName(zielid,zielname,sizeof(zielname));
    format(string,sizeof(string),"Spieler %s hat dich aus der Virtual World %d geworfen",playername,pworld);
    format(string,sizeof(string),"Du hast Spieler %s aus der Wirtual World %d geworfen",zielname,pworld);
    SendClientMessage(playerid,farbe,string2);
    SendClientMessage(zielid,farbe,string);
    return 1;
    }

    Erstes Problem



    new tagaus;
    if (strcmp("/nametags", cmdtext, true, 10) == 0)
    {
    if(tagaus == 0)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    ShowPlayerNameTagForPlayer(playerid, i, false);
    GameTextForAll("~r~Namen aus",5000,3);
    tagaus = 1;
    }
    else
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    ShowPlayerNameTagForPlayer(playerid, i, false);
    GameTextForAll("~b~Namen an",5000,3);
    tagaus = 0;
    }

    Zweites Problem


    Erstmal dcmd und sscanf definieren
    http://forum.sa-mp.de/wbb/san-…-commands-mit-parametern/


    Dann



    dcmd(makefilm,8,cmdtext);
    dcmd(einladen,8,cmdtext);
    dcmd(rauswerfen,10,cmdtext);



    dcmd_makefilm(playerid,params[])
    {
    new welt;

    if(sscanf(params, "d",welt))
    {
    return SendClientMessage(playerid,weiß,"Benutzung: /makefilm [Welt]");
    }


    SetPlayerVirtualWorld(playerid,welt);
    new string[256];
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),"Spieler %s hat sich in die Virtual World %d gesetzt",playername,welt);
    SendClientMessageToAll(farbe,string);
    }


    dcmd_einladen(playerid,params[])
    {
    new zielid;

    if(sscanf(params, "u",zielid))
    {
    return SendClientMessage(playerid,weiß,"Benutzung: /Einladen [ID]");
    }


    new pworld = GetPlayerVirtualWorld(playerid);
    SetPlayerVirtualWorld(zielid,pworld);
    new string[256];
    new string2[256];
    new playername[MAX_PLAYER_NAME];
    new zielname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    GetPlayerName(zielid,zielname,sizeof(zielname));
    format(string,sizeof(string),"Spieler %s hat dich in die Virtual World %d eingeladen",playername,welt);
    format(string,sizeof(string),"Du hast Spieler %s in die Wirtual World %d eingeladen",zielname,welt);
    SendClientMessage(playerid,farbe,string2);
    SendClientMessage(zielid,farbe,string);
    }


    dcmd_rauswerfen(playerid,params[])
    {
    new zielid;

    if(sscanf(params, "u",zielid))
    {
    return SendClientMessage(playerid,weiß,"Benutzung: /rauswerfen [ID]");
    }

    SetPlayerVirtualWorld(zielid,0);
    new string[256];
    new string2[256];
    new playername[MAX_PLAYER_NAME];
    new zielname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    GetPlayerName(zielid,zielname,sizeof(zielname));
    format(string,sizeof(string),"Spieler %s hat dich aus der Virtual World %d geworfen",playername,welt);
    format(string,sizeof(string),"Du hast Spieler %s aus der Wirtual World %d geworfen",zielname,welt);
    SendClientMessage(playerid,farbe,string2);
    SendClientMessage(zielid,farbe,string);
    }


    Drittes Problem


    dcmd(goto,4,cmdtext);


    dcmd_goto(playerid,params[])
    {
    new zielid;

    if(sscanf(params, "u",zielid))
    {
    return SendClientMessage(playerid,weiß,"Benutzung: /goto [ID]");
    }


    if(IsPlayerConnected(playerid) && !IsPlayerConnected(zielid))
    {
    SendClientMessage(playerid,rot,"Es existiert kein Spieler mit dieser ID");
    return 1;
    }
    else
    {
    if(playerid == zielid)
    {
    SendClientMessage(playerid,rot,"Fehler: Du kannst dich nicht zu dir selber porten");
    return 1;
    }
    else
    {
    new Float:x,Float:y,Float:z;
    new Float:angle;
    new vworld;
    new interior;
    new admin[MAX_PLAYER_NAME];
    new string[256];
    GetPlayerName(playerid,admin,sizeof(admin));
    format(string,sizeof(string),"Admin %s hat sich zu dir teleportiert",admin);
    SendClientMessage(zielid,grün,string);
    GetPlayerPos(zielid,x,y,z);
    GetPlayerFacingAngle(zielid,angle);
    vworld = GetPlayerVirtualWorld(zielid);
    interior = GetPlayerInterior(zielid);

    new zielname[MAX_PLAYER_NAME];
    new string2[256];
    GetPlayerName(zielid,zielname,sizeof(zielname));
    format(string2,sizeof(string2),"Du hast dich zu %s teleportiert",zielname);
    SendClientMessage(playerid,grün,string2);
    SetPlayerPos(playerid,x,y,z);
    SetPlayerFacingAngle(playerid,rot);
    SetPlayerVirtualWorld(playerid,vworld);
    SetPlayerInterior(playerid,interior);


    new string3[256];
    format(string3,sizeof(string3),"Admin: %s hat sich zu %s teleportiert",admin,zielname);
    print("-----");
    print(string3);

    return 1;
    }
    }
    }


    Sollte so funktionieren

    26 Errors ist so normalerweise ein Klemmerfehler also irgentwo { oder } vergessen


    Aber da alle Errors die selben nur auf verschiede Zeilen bezogen sind, ist was komisch dran.


    Poste mal alle Zeilen und der rest des Codes, worauf sich die Errors beziehen