Beiträge von Kaliber

    Ist der return falsch gesetzt?


    Ja...schon, das macht so keinen Sinn..schreib das mal so:


    for(new slot,i=playerid; slot<MAX_PLAYER_VEHICLES; slot++)
    {
    if(vehicleid != PrivateVehicle[i][slot][vehID]) continue;
    GetVehicleParamsEx(PrivateVehicle[i][slot][vehID], engine, lights, alarm, doors, bonnet, boot, objective);
    if(Vehicle[PrivateVehicle[i][slot][vehID]][vehMotor] == false)
    {
    Vehicle[PrivateVehicle[i][slot][vehID]][vehMotor] = true;
    SetVehicleParamsEx(PrivateVehicle[i][slot][vehID], VEHICLE_PARAMS_ON, lights, alarm, doors, bonnet, boot, objective);
    format(string, sizeof(string), "%s startet den Motor seines Fahrzeuges", GetName(playerid));
    SetPlayerChatBubble(playerid, string, COLOR_PURPLE, 25.0, 7500);
    Vehicle[PrivateVehicle[i][slot][vehID]][VehicleTimer] = SetTimerEx("OnVehicleTimer", 1136, 1, "i", PrivateVehicle[i][slot][vehID]);
    return 1;
    }
    Vehicle[PrivateVehicle[i][slot][vehID]][vehMotor] = false;
    SetVehicleParamsEx(PrivateVehicle[i][slot][vehID], VEHICLE_PARAMS_OFF, lights, alarm, doors, bonnet, boot, objective);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"Du stellst den Motor ab.");
    KillTimer(Vehicle[PrivateVehicle[i][slot][vehID]][VehicleTimer]);
    return 1;
    }
    return SendClientMessage(playerid, COLOR_GREY, "** Du besitzt keine Schlüssel für dieses Fahrzeug.");


    Schreibe es mal so ;)


    mfg. :thumbup:

    Also das ein Paar Explosionen automatisch Hochgehen, ohne das der Spieler betroffen ist


    Dann mach einfach sowas:


    //z.B. unter OnPlayerSpawn
    SetTimerEx("explode",1000,0,"i",playerid);


    forward explode(playerid);
    public explode(playerid) {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    return CreateExplosion(x+random(75)+25, y+random(75)+25, z, 12, 10.0); //würde den Spieler zum explodieren bringen xD
    }


    Dann finde zufällig um den Spieler herum Explosionen statt ;)

    arum geht das Tor bitte nicht auf?


    Achte auf die returns!


    Schreib es so:


    CMD:auf(playerid)
    {
    if(IsPlayerInRangeOfPoint(playerid, 10.0, 244.11, 72.45, 1002.00))
    {
    if(Spieler[playerid][pFraktion] != 1)return SendClientMessage(playerid,-1,"Sie dürfen das Tor nicht öffnen!");
    MoveDynamicObject(LSPDObj[1], 247.5598, 72.4479, 1002.0016, 3);
    SetTimer("LSPDTor2",5000,0);
    printf("Tor 2-2");
    }
    return 1;
    }


    mfg. :thumbup:

    Guten Morgen euch allen.


    Mir war mal langweilig und mir ist aufgefallen, dass die Funktion TextDrawGetText nicht existiert, also habe ich sie mal kurz implementiert.


    Funktionen:


    native TextDrawGetText(Text:id);
    native PlayerTextDrawGetText(PlayerText:id);


    Beispiel:
    Obwohl eigentlich der Name schon sagt was diese Funktion macht, hier nochmal ein Beispiel:


    new Text:x = TextDrawCreate(50.0,666.0,"Hallo");
    printf("Im TextDraw mit der ID %d steht: %s",_:x,TextDrawGetText(x));
    /*
    Output:
    Im TextDraw mit der ID 0 steht: Hallo
    */


    Im Filterscript nutzbar?
    Ja, auch im Filterscript ist die Include nutzbar, aber bitte gebt das an:


    #define FILTERSCRIPT
    #include <text>


    Download:
    Source-Code: Pastebin
    Direkter-Download: MediaFire


    Ich nutze über 512 TextDraws oder Texte länger als 128

    Um den Speicherbedarf der Include so klein wie möglich zu halten, hatte ich es auf diese zwei Maße reduziert.

    Ich nutze über 512 TextDraws oder Texte länger als 128
    Allerdings könnt ihr diese auch erhöhen:

    Ich nutze über 512 TextDraws oder Texte länger als 128
    #define MAX_TEXT_DRAWS (1024)
    #define MAX_TEXT (256)
    #include <text>
    Jetzt könntet ihr zum Beispiel 1024 TextDraws mit jeweils 256 Zeichen Text verenden ;)


    Schlusswort:
    Hoffe ein paar Leute können es gebrauchen :D
    Habe alle Funktionen getestet gehabt und keine Fehler sind aufgetreten, falls ihr aber was findet, gebt mir bescheid ;)
    Freue mich natürlich über jede Art von Kommentar.


    mfg. :thumbup:

    Kann man per Timer Explosionen erstellen mit einem eigenen Public?


    Natürlich :)


    //z.B. unter OnPlayerSpawn
    SetTimerEx("explode",1000,0,"i",playerid);


    forward explode(playerid);
    public explode(playerid) {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    return CreateExplosion(x, y, z, 12, 10.0); //würde den Spieler zum explodieren bringen xD
    }


    mfg. :thumbup:

    Nun, wenn du AddPlayerClass nutzt, dann returnt das eine Klasse.


    #define TEAM_COP 0
    #define TEAM_BALLAS 1
    #define TEAM_GROVE 2
    #define MAX_TEAMS 3


    new team[MAX_TEAMS];


    //Unter OnGameModeInit
    team[TEAM_COP] = AddPlayerClass(280,...);
    AddPlayerClass(281,...);
    AddPlayerClass(282,...);
    AddPlayerClass(283,...);
    AddPlayerClass(284,...);
    team[TEAM_BALLAS] = AddPlayerClass(102,...);
    AddPlayerClass(103,...);
    AddPlayerClass(104,...);
    team[TEAM_GROVE] = AddPlayerClass(105,...);
    AddPlayerClass(106,...);
    AddPlayerClass(107,...);


    public OnPlayerRequestClass(playerid,classid)
    {
    if(classid < team[TEAM_BALLAS])
    {
    TextDrawShowForPlayer(playerid, team_cop); //Hier zum beispiel wäre er Cop
    }
    else if(classid < team[TEAM_GROVE])
    {
    TextDrawShowForPlayer(playerid, team_Ballas); //Hier zum beispiel wäre er Ballas
    }
    else
    {
    TextDrawShowForPlayer(playerid, team_Grove); //Hier zum beispiel wäre er Grove
    }
    return 1;
    }


    Hoffe das hilft dir ein wenig ^^


    mfg. :thumbup:

    Nutze bitte mysqli ;)


    Schreibe es mal so:



    mfg. :thumbup:

    Ok jetzt gibt es noch ein Problem. Ich kann jetzt unbegrenzt auf die Funktion Sitzplatz drücken, bis ich schließlich auf einen Milionenbetrag komme.


    Daran habe ich gar nicht gedacht :D



    Schreibe es so, aber bedenke, dass man über die Konsole das alles verändern könnte und falsche Ergebnisse schicken kann.


    Also checke in PHP auch, ob die Werte valide sind ;)


    mfg. :thumbup:

    Der Wert wird nun als 14,5 dargestellt, nicht als 14,50


    Achso, ja schreib die add function so:


    function add() {
    for(var i=0,doc=document.getElementById("content"); i<5; i++) {
    doc.options[""+i].value = (parseFloat(doc.options[""+i].value) + euro).toFixed(2);
    doc.options[""+i].text = doc.options[""+i].text.slice(0,doc.options[""+i].text.indexOf("|")) + " | " + doc.options[""+i].value.replace(/\./g, ",") + "€";
    }
    return 1;
    }


    mfg. :thumbup: