Tazer Problem Timer setzen?

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hey, ihr Scripter!
    Ich wollte euch mal um Hilfe bitten bei meinem Tazer Command.
    So sieht er aus:
    dcmd_tazer(playerid,params[])
    {
    new pID, string2[128], Float:x,Float:y,Float:z;
    if(sscanf(params, "u",pID))return SendClientMessage(playerid,0xC8C8C8FF,"/tazer [ID/Name]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,0xC8C8C8FF,"Dieser Spieler ist nicht online!");
    if (pID == playerid)return SendClientMessage(playerid,0xC8C8C8FF,"Du kannst dich nicht selber tazern!");
    if(gTeam[playerid] == TEAM_COPS)
    GetPlayerPos(playerid,x,y,z);
    {
    if(IsPlayerInRangeOfPoint(pID,3.0,x,y,z))
    {
    new tazer[MAX_PLAYER_NAME];
    GetPlayerName(playerid,tazer,sizeof (tazer));
    format(string2,sizeof(string2),"%s hat dich getazert!",tazer);
    SetTimer("cuffed", 20000,0);
    {
    TogglePlayerControllable(pID,0);
    }
    GameTextForPlayer(pID, "~r~Geschockt", 2500, 5);
    SendClientMessage(pID,0x00E4FFFF,string2);
    }
    }
    return 1;
    }


    Der Timer funktioniert so aber nicht, denn ich muss SetTimerEx verwenden.
    Aber ich weiß nicht, wie ich das tun soll. Hab bis jetzt noch nicht mit diesem Befehl gearbeitet.
    Wäre schön, wenn ihr mir helfen könntet.
    mfG
    Walker

  • SetTimerEx("cuffed",20000, true,"i",playerid);


    So war das glaub ich :S


  • SetTimerEx("test", 20000,0, "d", pID);


    public test(playerid)
    {
    // ...
    }


    Nicht jeder, der sich für super hält, ist ein Superheld. :love:
    ------------------------------------------------------------------------------------------------

  • Jo, hab ich jetzt, fehlte nur noch der forward :P
    Danke euch.
    Bin's mal testen!


    Edit:
    Man kann jetzt trotzdem weiterlaufen, wie man lustig ist. Hab's schon mit TogglePlayerControllable(pID,1) u. TogglePlayerControllable(pID,0) getestet.
    Muss TogglePlayerControllable sowohl in den Befehl selbst, als auch in die public?

  • Weil mir SetTimer so oder so nichts nützt..dann bleib ich für immer getazert xD


    Edit:
    Das mit der public u. SetTimerEx hat nicht funktioniert, ich konnte egal, was ich probiert habe weiterlaufen.


    Edit2:
    Oben hatte ich:
    forward tazed(pID);
    u. unten
    public(pID)
    {
    TogglePlayerControllable(pID,0);
    return 1;
    }


    Das hatte ich ohne returns, mit return 1 u. mit return 0.

  • dcmd_tazer(playerid,params[])
    {
    new pID, string2[128], Float:x,Float:y,Float:z;
    if(sscanf(params, "u",pID))return SendClientMessage(playerid,0xC8C8C8FF,"/tazer [ID/Name]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,0xC8C8C8FF,"Dieser Spieler ist nicht online!");
    if (pID == playerid)return SendClientMessage(playerid,0xC8C8C8FF,"Du kannst dich nicht selber tazern!");
    if(gTeam[playerid] == TEAM_COPS)
    GetPlayerPos(playerid,x,y,z);
    {
    if(IsPlayerInRangeOfPoint(pID,3.0,x,y,z))
    {
    new tazer[MAX_PLAYER_NAME];
    GetPlayerName(playerid,tazer,sizeof (tazer));
    format(string2,sizeof(string2),"%s hat dich getazert!",tazer);
    SetTimerEx("cuffed", 20000,0,"d",pID);
    TogglePlayerControllable(pID,0);
    GameTextForPlayer(pID, "~r~Geschockt", 2500, 5);
    SendClientMessage(pID,0x00E4FFFF,string2);
    }
    }
    return 1;
    }


    forward cuffed(playerid);
    public cuffed(playerid)
    {
    TogglePlayerControllable(playerid,1);
    return 1;
    }
    edit: cuffed muss natürlich klein sein ^^

  • Muss playerid nicht pID sein?
    Es soll ja alles auf den gatazerten Spieler zutreffen.
    Naja, bins mal testen.
    bg^^


    Edit:
    TogglePlayerControllable muss auf 0 sein. 1 ist, um
    wieder entfreezed zu werden.


    Edit2:
    Also, ist TogglePlayerControllable IM Befehl selbst, kann man garnichts mehr machen, man bleibt die ganze zeit gefreezd, nehm ich es raus,
    kann man rumlaufen wie man lustig ist -.-
    Hab das Gefühl, SetTimerEx bringt garnichts..


    Edit3:
    Hab jetzt nochmal alles durchgecheckt und überprüft, ob ich pID oder playerid schreibe ist unwichtig, es funktioniert beides nicht.
    Bin langsam ratlos. :S
    Ist aber alles so, wie es sein soll hier nochmal meine Zeilen:
    forward tazed(pID);
    dcmd_tazer(playerid,params[])
    {
    new pID, string2[128], Float:x,Float:y,Float:z;
    if(sscanf(params, "u",pID))return SendClientMessage(playerid,0xC8C8C8FF,"/tazer [ID/Name]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,0xC8C8C8FF,"Dieser Spieler ist nicht online!");
    if (pID == playerid)return SendClientMessage(playerid,0xC8C8C8FF,"Du kannst dich nicht selber tazern!");
    if(gTeam[playerid] == TEAM_COPS)
    GetPlayerPos(playerid,x,y,z);
    {
    if(IsPlayerInRangeOfPoint(pID,3.0,x,y,z))
    {
    new tazer[MAX_PLAYER_NAME];
    GetPlayerName(playerid,tazer,sizeof (tazer));
    format(string2,sizeof(string2),"%s hat dich getazert!",tazer);
    SetTimerEx("tazed", 20000,0,"d",pID);
    GameTextForPlayer(pID, "~r~Geschockt", 2500, 5);
    SendClientMessage(pID,0x00E4FFFF,string2);
    }
    }
    return 1;
    }
    public tazed(pID)
    {
    TogglePlayerControllable(pID,0);
    return 1;
    }
    Warum geht's bloß nicht?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • dcmd_tazer(playerid,params[])
    {
    new pID, string2[128], Float:x,Float:y,Float:z;
    if(sscanf(params, "u",pID))return SendClientMessage(playerid,0xC8C8C8FF,"/tazer [ID/Name]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,0xC8C8C8FF,"Dieser Spieler ist nicht online!");
    if (pID == playerid)return SendClientMessage(playerid,0xC8C8C8FF,"Du kannst dich nicht selber tazern!");
    if(gTeam[playerid] == TEAM_COPS)
    {
    GetPlayerPos(playerid,x,y,z);
    {
    if(IsPlayerInRangeOfPoint(pID,3.0,x,y,z))
    {
    new tazer[MAX_PLAYER_NAME];
    GetPlayerName(playerid,tazer,sizeof (tazer));
    format(string2,sizeof(string2),"%s hat dich getazert!",tazer);
    SetTimerEx("tazed", 20000,0,"d",pID);
    GameTextForPlayer(pID, "~r~Geschockt", 2500, 5);
    SendClientMessage(pID,0x00E4FFFF,string2);
    }
    }
    }
    return 1;
    }

  • Oh sorry falsch kopiert. Die Klammer bei GetPlayerPos muss eine Zeile weiter nach oben.


    dcmd_tazer(playerid,params[])
    {
    new pID, string2[128], Float:x,Float:y,Float:z;
    if(sscanf(params, "u",pID))return SendClientMessage(playerid,0xC8C8C8FF,"/tazer [ID/Name]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,0xC8C8C8FF,"Dieser Spieler ist nicht online!");
    if (pID == playerid)return SendClientMessage(playerid,0xC8C8C8FF,"Du kannst dich nicht selber tazern!");
    if(gTeam[playerid] == TEAM_COPS)
    {
    GetPlayerPos(playerid,x,y,z);
    if(IsPlayerInRangeOfPoint(pID,3.0,x,y,z))
    {
    new tazer[MAX_PLAYER_NAME];
    GetPlayerName(playerid,tazer,sizeof (tazer));
    format(string2,sizeof(string2),"%s hat dich getazert!",tazer);
    SetTimerEx("tazed", 20000,0,"d",pID);
    GameTextForPlayer(pID, "~r~Geschockt", 2500, 5);
    SendClientMessage(pID,0x00E4FFFF,string2);
    }
    }
    return 1;
    }
    nurnoch einrücken..

  • Aber die Abfrage, ob derjenige nah genug ist, funktioniert doch. ^^
    Dort werden auch die Nachrichten etc. gesendet. Hab den Befehl ja von
    meinem /cuff abgeleitet, da funkt diese Abfrage auch. ^^
    Trtozdem danke. :P


    Edit:
    Der Spieler wird jetz zwar gefreezed, das passier aber erst nach ca. 20 sekunden u. dann bleibt dieser auch gefeezed.
    Ich denke mal, die Zeit, die ich bei SetTimerEx angegeben hab, wird irgendwie als Zeit bis zum freezen genommen oder so..
    Bitte helft mir, will endlich diesen Command fertig haben..
    mfG