Hilfe mit /find System ( Automatisches suchen )

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
  • Hallo breadfish Leute!


    Möchte fragen wie folgendes "System" geht:


    Ich möchte gerne ein /find befehl machen.
    Er soll z.b. jede sekunde den gewählten spieler suchen


    Beispiel


    /find 1


    Checkpoint wird jede sekunde "aktualisiert"


    /finfstop


    Killtimer....


    Wenn ihr versteht was ich meine bräuchte ich hilfe...



    MfG Kevin

  • Man kann in Autohotkey Checkpoints setzen? Ist das nicht server seitig?^^


    Zum Problem: schreib nen Befehl, lass drinnen nen Timer starten und immer wieder, nach 5 sek oder so aktualisieren...
    Mit SetTImerEx damit die id des zu suchenden ünergeben wird und die playerid....
    Dann eine Varisble auf 1 setzen die angibt?", dass er gerade sucht...


    Dann, wenn der spieler im checkpoint steht ind die variable 1 ist den Timer Killen...


    Würde dir ja was schreiben, weiß aber nicht in was du scriptest etc... Und ich am Handy bin..


    Sollte aber so gehen..mfg

  • new CheckpointTimer[MAX_PLAYERS],Checkpoint[MAX_PLAYERS];


    ocmd:find(playerid,params[])
    {
    if(!params[0])return SendClientMessage(playerid,-1,"/find [ID]");
    if(!IsPlayerConnected(strval(params)))return SendClientMessage(playerid,-1,"Spieler ist nicht connected!");
    new Float:Pos[3];
    GetPlayerPos(strval(params),Pos[0],Pos[1],Pos[2]);
    Checkpoint[playerid] = SetPlayerCheckpoint(playerid,Pos[0],Pos[1],Pos[2],4);
    CheckpointTimer[playerid] = SetTimerEx("UpdateCheckpoint",1000,1,"ii",playerid,strval(params));
    return 1;
    }


    forward UpdateCheckpoint(playerid,playerid2);
    public UpdateCheckpoint(playerid,playerid2)
    {
    new Float:Pos[3];
    GetPlayerPos(playerid2,Pos[0],Pos[1],Pos[2]);
    Checkpoint[playerid] = SetPlayerCheckpoint(playerid,Pos[0],Pos[1],Pos[2],4);
    return 1;
    }


    public OnPlayerEnterCheckpoint(playerid)
    {
    if(Checkpoint[playerid])
    {
    DisablePlayerCheckpoint(playerid);
    Checkpoint[playerid] = 0;
    KillTimer(CheckpointTimer[playerid]);
    }
    return 1;
    }
    So oder so ähnlich könnte es klappen :thumbup:

  • Hier mal ein kleines System:


    new bool:find[MAX_PLAYERS char];


    ocmd:find(playerid,params[])
    {
    if(find{playerid}) return SendClientMessage(playerid,-1,"Du suchst bereits eine Person, verwende: /findstop");
    if(!params[0] || params[0] == ' ') return SendClientMessage(playerid,-1,"Verwendung: /find [spielerid]");
    new pID = strval(params);
    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,-1,"Ein Spieler mit dieser ID ist nicht online!");
    return find{playerid}=true,@finder(playerid,pID);
    }


    ocmd:findstop(playerid)
    {
    if(find{playerid}) return DisablePlayerCheckpoint(playerid),find{playerid}=false;
    return SendClientMessage(playerid,-1,"Sie suchen niemanden!");
    }


    @finder(x,y);@finder(x,y) {
    if(!IsPlayerConnected(x) || !find{x}) return find{x}=false,0;
    if(!IsPlayerConnected(y)) return find{x}=false,DisablePlayerCheckpoint(x);
    new Float:p[3];
    GetPlayerPos(y,p[0],p[1],p[2]),SetPlayerCheckpoint(x,p[0],p[1],p[2],4.0);
    return SetTimerEx("@find",999,0,"ii",x,y);
    }


    public OnPlayerEnterCheckpoint(playerid)
    {
    if(find{playerid}) DisablePlayerCheckpoint(playerid),find{playerid}=false;
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Danke hat funktioniert!! :)