Beiträge von JustMe.77

    Achso habe mich nicht gut ausgedrückt, die Frage hat weniger mit dem Timern zu tun. Ich habe ja ein Befehl womit ich mit per Schuss teleportieren kann, hier z.B. siehst du das ID 24 (Deagle) definiert wurde. if(weaponid ==24) //Deagle


    Doch anstatt jetzt die Funktion jedes mal neu zu erstellen mit einer Waffen ID, möchte ich das in einem machen und dort angeben mit welchen Waffen das erlaubt wird.
    Beispielsweise von ID 24 - 30.

    @Jeffry


    Achso, nun funktioniert's perfekt. Du hattest mich verwirrt weil das oben gefehlt hat, deswegen hatte ich gefragt wofür dieses Public gut ist :whistling:


    Noch eine kleine Frage, ich möchte das mit mehreren Waffen ermöglichen können, aber ich möchte ungerne immer wieder die Funktion dafür neu erstellen. Kann ich das nicht irgendwie besser umsetzen, irgendwie mit case 24..35 (Waffe 24-35) ? Oder vielleicht auch eine andere Methode

    Klappt nicht Ganz, habe wohl was falsch gemacht.


    Error:



    /*
    forward OldWeapon(playerid);
    public OldWeapon(playerid)
    {


    return 1;
    }
    */



    public SetWeaponAgain(playerid, weapon)
    {

    SetPlayerArmedWeapon(playerid,weapon);
    return 1;

    }



    public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
    {
    new Float:FloatValue;
    new Value = 0;
    FloatValue = float(Value);



    if(fX != FloatValue && hittype == 0)
    {
    if(Teleportgun[playerid] == 1)
    if(weaponid == 24) //Deagle
    {
    if(fX == 0.0 || fY == 0.0 || fZ == 0.0) return 1;
    GetPlayerWeapon(playerid);
    SetPlayerArmedWeapon(playerid,0);
    SetPlayerPos(playerid,fX,fY,fZ+1);
    SetTimerEx("SetWeaponAgain", 1500, false, "dd",playerid, GetPlayerWeapon(playerid));
    }

    }
    else
    {
    //SendClientMessage(playerid, 0xFF0000FF, "nonexistent coordinates!");
    }
    return 1;

    }

    @Jeffry Hmm, also ich habe das nicht komplett verstanden. Ich schieße mit meiner Waffe => frage ab welche ich habe => setze sie auf 0 => und mit dem Timer gebe ich ihn die alte Waffe zurück, richtig?


    Wofür ist der Public public SetWeaponAgain(playerid, weapon) da?


    Habe zurzeit den Code so aufgebaut:



    forward OldWeapon(playerid);
    public OldWeapon(playerid)
    {
    //Hier ist irgendwas falsch.
    SetWeaponAgain(playerid, weapon);
    return 1;
    }



    public SetWeaponAgain(playerid, weapon)
    {

    //Was mache ich hier?

    }



    public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
    {
    new Float:FloatValue;
    new Value = 0;
    FloatValue = float(Value);



    if(fX != FloatValue && hittype == 0)
    {
    if(Teleportgun[playerid] == 1)
    if(weaponid == 24) //Deagle
    {
    if(fX == 0.0 || fY == 0.0 || fZ == 0.0) return 1;
    GetPlayerWeapon(playerid);
    SetPlayerArmedWeapon(playerid,0);
    SetPlayerPos(playerid,fX,fY,fZ+1);
    SetTimerEx("OldWeapon", 1500, false, "playerid",playerid);
    }

    }
    else
    {
    //SendClientMessage(playerid, 0xFF0000FF, "nonexistent coordinates!");
    }
    return 1;

    }

    @Jeffry


    Dankesehr, funktioniert gut. Ich habe nun versucht abzufragen ob das Health über 995 ist und dann den Spieler kicken lassen, das kommt aber jedes mal wenn ich in ein Fahrzeug einsteige.
    (Habe ich ein falsches Callback benutzt ? )



    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    new Float:health;
    new name[MAX_PLAYER_NAME], string[50+MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    if(health > 995)
    format(string, sizeof(string), "%s has been banned by the System for Vehicle Health Hack.", name);
    SendClientMessageToAll(RED,string);
    GetVehicleHealth(vehicleid, health);
    SetVehicleHealth(vehicleid, 995);
    Kick(playerid);
    return 1;
    }

    @Jeffry


    Kannst du mir noch bitte einmal zeigen wie ich Gettime in einem Befehl benutze? Sprich den Befehl erst nach einiger Zeit wieder erlauben zu benutzen.
    Als Beispiel ein einfacher Teleport Befehl



    CMD:teleport(playerid,params[])
    {
    SetPlayerPos(playerid, 815.5878,-3582.2156,61.7797);


    return 1;


    }


    @Jeffry


    Hi Jeffry, habe mal eine kleine Frage. Habe ein Befehl womit man das Teleportieren mit der Waffe aktiviert und deaktiviert. Nur das Problem ist das dass Ganze anbleibt auch wenn der Spieler offline geht.


    Dafür habe ich dann einfach einen Bool erstellt, doch es scheint nicht zu helfen.



    Bool: new Teleportgun[MAX_PLAYERS];



    public OnPlayerConnect(playerid)
    {

    Teleportgun[playerid] = 0;

    }



    public OnPlayerDisconnect(playerid)
    {
    Teleportgun[playerid] = 0;

    return 1;

    }




    [hide]


    CMD:teleportgun(playerid,params[])
    {
    new str[64];
    {
    if(Teleportgun[playerid] == 1)
    {
    format(str, sizeof(str), "Teleportgun {FF0000}disbaled{FFFFFF}.");
    Teleportgun[playerid] = 0;
    SendClientMessage(playerid, 0xFFFFFFFF, str);
    }
    else
    {
    format(str, sizeof(str), "Teleportgun {00FF00}enabled{FFFFFF}.");
    Teleportgun[playerid] = 1;
    SendClientMessage(playerid, 0xFFFFFFFF, str);
    }
    }
    return 1;
    }
    [/hide]

    @Jeffry


    Woran liegt es das wenn mehrere Leute auf dem Server sind, und Spieler A den Befehl ausführt Spieler B in die Luft geslappt wird und nicht Spieler A?


    @Jeffry


    Ja, daran lag wohl das Problem, halb so schlimm ^^


    Wie muss ich denn eine definierte Nachicht in jedem Case eintragen? Erhalte komischweweise Errors:



    //5%
    switch(random(3))
    {
    case 0:
    {
    SetPlayerArmour(playerid, 100);
    SetPlayerHealth(playerid, 100);
    GivePlayerMoney(playerid,50000);
    GivePlayerWeapon(playerid,WEAPON_DEAGLE,750);
    SendClientMessage(playerid,WHITE,"You got 50.000$, Deagle(750), HP(100) & Armour(100) !");
    return GMSG(playerid);

    }
    case 1:
    {
    SetPlayerArmour(playerid, 100);
    SetPlayerHealth(playerid, 100);
    GivePlayerMoney(playerid,50000);
    GivePlayerWeapon(playerid,WEAPON_M4,750);
    SendClientMessage(playerid,WHITE,"You got 50.000$, M4(750), HP(100) & Armour(100) !");
    return GMSG(playerid);
    }
    case 3:
    {
    SetPlayerArmour(playerid, 100);
    SetPlayerHealth(playerid, 100);
    GivePlayerMoney(playerid,50000);
    GivePlayerWeapon(playerid,WEAPON_SNIPER,750);
    SendClientMessage(playerid,WHITE,"You got 50.000$, Sniper(750), HP(100) & Armour(100) !");
    return GMSG(playerid);
    }
    }
    }


    Erhalte "Empty Statement und Unreachable Code". Habe das auch ohne return versucht doch dann tauchen andere Errors auf.