Beiträge von Kaliber

    Schreib es so:


    Info: Waffe und Munition sind keine Strings, sondern Integer ;)


    ocmd:weapon(playerid, params[]) {
    new waffe,ammu;
    if(sscanf(params, "ii", waffe, ammu)) return SendClientMessage(playerid, COLOR_INFO, "> Benutzung: /weapon <WeaponID> <Munition>");
    if(waffe <= 0 || waffe> 46) return SendClientMessage(playerid,COLOR_INFO,"Bitte geben sie eine gültige Waffenid ein!");
    return GivePlayerWeapon(playerid, waffe, ammu);
    }


    mfg. :thumbup:

    Das ist der Komplette befehl


    Schreib das so, dann funktioniert es auch :D


    static bool:freeze[MAX_PLAYERS char]; //Oben global deklarieren


    dcmd_freeze(playerid, params[])
    {
    if(!IstSpielerAdmin(playerid, 3)) return SendClientMessage(playerid, ROT,"Du bist kein Admin, oder hast nicht die benörigten Rechte!");
    if(!params[0]) return SendClientMessage(playerid, ROT,"Verwendung: /freeze [playerid]!");
    if(!IsPlayerConnected(strval(params))) return SendClientMessage(playerid, ROT,"Dieser Spieler ist nicht Online!");
    if(freeze{strval(params)}) return SendClientMessage(playerid, ROT,"Dieser Spieler ist bereits gefreezed. Du kannst ihn m it /unfreeze[playerid] unfreezen!");
    new string[64];
    format(string,sizeof string, "Du wurdest von %s gefreezed!",getPlayerName(playerid));
    SendClientMessage(strval(params), GRÜN,string);
    format(string,sizeof string, "Du hast %s erfolgreich gefreezed!",getPlayerName(strval(params)));
    SendClientMessage(playerid, GRÜN, string);
    return TogglePlayerControllable(strval(params),false),freeze{strval(params)} = true,1;
    }
    dcmd_unfreeze(playerid, params[])
    {
    if(!IstSpielerAdmin(playerid, 3)) return SendClientMessage(playerid, ROT,"Du bist kein Admin, oder hast nicht die benörigten Rechte!");
    if(!params[0]) return SendClientMessage(playerid, ROT,"Verwendung: /unfreeze [playerid]!");
    if(!IsPlayerConnected(strval(params))) return SendClientMessage(playerid, ROT,"Dieser Spieler ist nicht Online!");
    if(!freeze{strval(params)}) return SendClientMessage(playerid, ROT,"Dieser Spieler ist nicht gefreezed! Du kannst ihn mit /freeze [playerid] freezen!");
    new string[64];
    format (string, sizeof string,"Du wurdest von %s geunfreezed!",getPlayerName(playerid));
    SendClientMessage(strval(params), GRÜN,string);
    format (string,sizeof string,"Du hast %s erfolgreich geunfreezed!",getPlayerName(strval(params)));
    SendClientMessage(playerid, GRÜN, string);
    return TogglePlayerControllable(strval(params),true),freeze{strval(params)} = false,1;
    }


    mfg. :thumbup:

    das in dieser Zeile ein unrechable Code ist:


    Poste mal ein paar Zeilen drüber :P


    //Edit: btw da steht "us"...das heißt du brauchst 2 Attribute...1x sID für die spielerid und dann noch einen String.. :rolleyes:


    mfg. :rolleyes:

    ausserdem müssen die Floats: weg wenn du das anwendest die müssen nur bei der Variablendeklarieung hinb!


    Naja "müssen" sie nicht.


    Damit würde er nur die Floats in Floats casten. Grundsätzlich kann man das machen, macht aber in diesem Fall gar keinen Sinn, da es schon Floats sind :D


    Aber bei Integer Variablen z.B. ist dies eine gute Methode:


    printf("%f",Float:0); //Output: 0.000000


    mf. :thumbup:

    Du hast so wie ich das gesehen habe die Z-Angel vergessen


    Ja in der Tat, dass hat er, allerdings ist das kein Tag mismatch Error, sondern wäre nur ein warning 202: number of arguments does not match definition ;)


    mfg. :thumbup:

    Hey. Ich weiß nicht wo hier ein Tag missmatch ist.


    Eine Zeile wäre von Vorteil :rolleyes:


    //Edit:

    Foat:X,Float:Y,Float:Z


    Du hast bei dem X Foat: geschrieben und das gibt es nichts..lösch überall das Foat bzw Float ;)



    Aber hier einige Tipps & Möglichkeiten:


    GetPlayerPos(playerid, Float:X,Float:Y,Float:Z);


    Die Variablen sind schon Floats, in den Funktionen wo du sie verwendest musst du den Tag nicht nocheinmal angeben außer du willst sie casten ;)


    carid = GetPlayerVehicleID(playerid);


    Wofür diese Zeile...du machst mit dem Wert doch nichts? :huh:


    vehCar[carid] = true;


    Vielleicht ist vehCar kein boolean?


    strval(inputtext)


    Du solltest oben erstmal abfragen ob er überhaupt einen inputtext eingegeben hat...falls man sich mal verklickt oder so..zudem würde dann CreateVehicle einen Fehler ausgeben, also checken ob die modelid von dem Fahrzeug im validen Bereich liegt (400 - 611) ;)


    mfg. :thumbup:

    Wie könnte man das machen, wenn man alle Waffen abfragen will?
    Halt wenn man irgendeine Waffe hat, dass dann irgendeine Nachricht kommt?


    So könntest du das machen:


    new Waffen[13][2],tmp[27 + 32];
    for (new i; i<13; i++) {
    GetPlayerWeaponData(playerid, i, Waffen[i][0], Waffen[i][1]);
    if(Waffen[i][0] <= 0) continue;
    GetWeaponName(Waffen[i][0],tmp,32);
    format(tmp,sizeof tmp,"Der Spieler besitzt eine %s!",tmp);
    SendClientMessage(playerid,Rot,tmp);
    }


    mfg. :thumbup:

    Die Nachricht kommt nicht, obwohl ich die Waffe besitze


    Warum machst du es nicht einfach so?


    new Waffen[13][2];
    for (new i; i < 13; i++) {
    GetPlayerWeaponData(playerid, i, Waffen[i][0], Waffen[i][1]);
    if(Waffen[i][0] == 24) return SendClientMessage(playerid,Rot,"Du besitzt eine Deagle!");
    }


    mfg. :thumbup:

    Vielleicht weil du 52.272x eine Variable mit 200 Cells und dann noch 726x eine Variable mit 256 Celles erstellst...und das den Server einfach überlastet?! :huh:


    Wenn du mit MySQL arbeitest, wieso nutzt du dann .ini Dateien?! :huh:


    Mach doch keine halbe Sachen, sondern benutze in dieser Hinsicht ruhig MySQL oder SQLite.


    Probiere es mal so, da ist die Auslastung wesentlich geringer:


    if(!strcmp("/sellcars0",cmd,true)) {
    new WERT[4],data[32],tmp[11];
    for(new i=1; i<726; i++) {
    format(string, sizeof(string), "cars/%dAutoNR0.ini", i);
    if(!fexist(string)) continue;
    format(data,32,dini_Get(string,"AH_Typ")),WERT[0] = strval( data );
    for(new e = 1; e<72; e++){
    if(WERT[0] != Autoverkauf[e][ModelID]) continue;
    valstr(tmp,i);
    WERT[1] = mysql_GetInt("users", "Bank", "SQLid", tmp);
    WERT[2] = Autoverkauf[e][CarPreis]+WERT[1];
    mysql_SetInt("users","Bank",WERT[2],"SQLid",tmp);
    }
    }
    SendClientMessage(playerid,COLOR_WHITE,"Fertig!");
    return 1;
    }


    mfg. :thumbup:

    Interessant, hast du mal nach "Schlag / Golf" Animationen geschaut...wäre cool, wenn man das noch einfügen würde, das sähe authentischer aus :)


    PS: Das mit dem "Loch-Bug" mach doch einfach das der Ball da stehen bleibt und der Timer gekillt wird für das Objekt, der überprüft ob es im Loch ist oder nicht.


    Wie hast du es gemacht, dass die Z-Koordinate von dem Objekt immer am Boden bleibt, MapAndreas Plugin? ;)


    mfg. :thumbup:

    Danke für die schnelle Antwort, ich dachte mir immer das OnPlayerRequestClass der F4 Modus ist?


    Das ist er ja auch :D Du willst doch auch diesen Auswahl Modus oder nicht?! :huh:


    Ich habe diese ForceClassSelection(playerid); Funktion unter OnPlayerRquestClass gepackt und das geht leider nicht.


    Das macht doch auch keinen Sinn, da ist er ja schließlich schon im Auswahl Modus drinnen, nur wenn er draußen ist musst du ihn in diesen Modus erst wieder "zwingen".


    Könntest du mir vielleicht das ganze etwas erklären?


    Schau dir doch mal die Wiki Seite an, da ist unten in Beispiel wie du den Spieler per CMD in diesen Auswahl Modus bringst, das machst du jetzt einfach nach dem Login bzw Register ;)


    mfg. :thumbup: