Beiträge von Kaliber

    Bei mir erstellt er nur 1 Explosion nach 50 Sekunden, dann kommt nichts mehr. Ist da was Falsch? Oder wie mache ich dass, das sich der Timer immer wiederholt?


    50 Sekunden? :huh:


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


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


    Dann erstellt er jede Sekunde eine Explosion :)

    Schreib es so:


    CMD:motor(playerid)
    {
    if(!IsLoggedIn(playerid))return 1;
    new string[128];
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, COLOR_GREY, "** Du befindest dich in keinem Fahrzeug.");
    new vehicleid = GetPlayerVehicleID(playerid);
    if(pRefillVehicle[playerid] == 1)return SendClientMessage(playerid, COLOR_GREY, "** Du kannst den Motor nicht anschalten während du das Fahrzeug tankst!");
    if(IsAFahrrad(GetVehicleModel(vehicleid)))return SendClientMessage(playerid, COLOR_GREY, "** Dieses Fahrrad hat keinen Motor!");
    if(Vehicle[vehicleid][vehFuel] <= 0.0)return SendClientMessage(playerid, COLOR_GREY, "** Das Fahrzeug hat kein Benzin mehr!");
    if(!(IsAFraktionsVeh(vehicleid) == INVALID_VEHICLE_ID))
    {
    if(IsValidVehicle(vehicleid))
    {
    new fV = IsAFraktionsVeh(vehicleid);
    if(Spieler[playerid][pFraktion] == fVehicle[fV][vehFraktion])
    {
    if(Vehicle[fVehicle[fV][vehID]][vehMotor] == false)
    {
    Vehicle[fVehicle[fV][vehID]][vehMotor] = true;
    GetVehicleParamsEx(fVehicle[fV][vehID], engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(fVehicle[fV][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[fVehicle[fV][vehID]][VehicleTimer] = SetTimerEx("OnVehicleTimer", 1136, 1, "i", fVehicle[fV][vehID]);
    return 1;
    }
    else if(Vehicle[fVehicle[fV][vehID]][vehMotor] == true)
    {
    Vehicle[fVehicle[fV][vehID]][vehMotor] = false;
    GetVehicleParamsEx(fVehicle[fV][vehID], engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(fVehicle[fV][vehID], VEHICLE_PARAMS_OFF, lights, alarm, doors, bonnet, boot, objective);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"Du stellst den Motor ab.");
    KillTimer(Vehicle[fVehicle[fV][vehID]][VehicleTimer]);
    return 1;
    }
    }
    return SendClientMessage(playerid, COLOR_GREY, "** Du besitzt keine Schlüssel für dieses Fahrzeug.");
    }
    }
    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;
    }
    if(vehicleid == Spieler[playerid][pBusID])
    {
    if(Vehicle[Spieler[playerid][pBusID]][vehMotor] == false)
    {
    Vehicle[Spieler[playerid][pBusID]][vehMotor] = true;
    GetVehicleParamsEx(Spieler[playerid][pBusID], engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(Spieler[playerid][pBusID], 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[Spieler[playerid][pBusID]][VehicleTimer] = SetTimerEx("OnVehicleTimer", 1136, 1, "i", Spieler[playerid][pBusID]);
    return 1;
    }
    else if(Vehicle[Spieler[playerid][pBusID]][vehMotor] == true)
    {
    Vehicle[Spieler[playerid][pBusID]][vehMotor] = false;
    GetVehicleParamsEx(Spieler[playerid][pBusID], engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(Spieler[playerid][pBusID], VEHICLE_PARAMS_OFF, lights, alarm, doors, bonnet, boot, objective);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"Du stellst den Motor ab.");
    KillTimer(Vehicle[Spieler[playerid][pBusID]][VehicleTimer]);
    return 1;
    }
    }
    if(vehicleid == Spieler[playerid][pBike])
    {
    if(Vehicle[Spieler[playerid][pBike]][vehMotor] == false)
    {
    Vehicle[Spieler[playerid][pBike]][vehMotor] = true;
    GetVehicleParamsEx(Spieler[playerid][pBike], engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(Spieler[playerid][pBike], 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[Spieler[playerid][pBike]][VehicleTimer] = SetTimerEx("OnVehicleTimer", 1136, 1, "i", Spieler[playerid][pBike]);
    return 1;
    }
    else if(Vehicle[Spieler[playerid][pBike]][vehMotor] == true)
    {
    Vehicle[Spieler[playerid][pBike]][vehMotor] = false;
    GetVehicleParamsEx(Spieler[playerid][pBike], engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(Spieler[playerid][pBike], VEHICLE_PARAMS_OFF, lights, alarm, doors, bonnet, boot, objective);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"Du stellst den Motor ab.");
    KillTimer(Vehicle[Spieler[playerid][pBike]][VehicleTimer]);
    return 1;
    }
    }
    if(vehicleid == Spieler[playerid][pFSVehicle])
    {
    if(IsValidVehicle(Spieler[playerid][pFSVehicle])){
    if(Vehicle[Spieler[playerid][pFSVehicle]][vehMotor] == false)
    {
    Vehicle[Spieler[playerid][pFSVehicle]][vehMotor] = true;
    GetVehicleParamsEx(Spieler[playerid][pFSVehicle], engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(Spieler[playerid][pFSVehicle], 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[Spieler[playerid][pFSVehicle]][VehicleTimer] = SetTimerEx("OnVehicleTimer", 1136, 1, "i", Spieler[playerid][pFSVehicle]);
    return 1;
    }
    else if(Vehicle[Spieler[playerid][pFSVehicle]][vehMotor] == true)
    {
    Vehicle[Spieler[playerid][pFSVehicle]][vehMotor] = false;
    GetVehicleParamsEx(Spieler[playerid][pFSVehicle], engine, lights, alarm, doors, bonnet, boot, objective);
    SetVehicleParamsEx(Spieler[playerid][pFSVehicle], VEHICLE_PARAMS_OFF, lights, alarm, doors, bonnet, boot, objective);
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"Du stellst den Motor ab.");
    KillTimer(Spieler[playerid][pFSVehicle]);
    return 1;
    }
    }
    }
    return SendClientMessage(playerid, COLOR_GREY, "** Du besitzt keine Schlüssel für dieses Fahrzeug.");
    }

    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: