Adminsicht

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
  • Guten Tag Ihr lieben,


    ich brauch mal wieder Hilfe wie in den letzten Tagen. Ich möchte gerne einen Befehl erstellen der es mir ermöglicht mich zu den Spieler zu teleportieren ohne das dieser es bemerkt. Sollte er in einem Fahrzeug sitzen so soll er mich in das Fahrzeug Porten ohne das der Spieler es sieht. Selbst wenn kein Platz mehr frei ist soll er mich ins Fahrzeug Porten andernfalls wenn er nicht in einem Fahrzeug ist 1 meter von ihm weg. Wie realisiert man dies am besten ? Gibt es vielleicht Tutorials darüber ?

  • Ich glaube das was du meinst ist das Spectaten..


    Das kannst du mit:
    PlayerSpectatePlayer // Erst die SpielerID wer spect und dann wer gespect wird
    PlayerSpectateVehicle // Erst die SpielerID wer spect und dann die FahrzeugID welche gespect wird
    TogglePlayerSpectating // SpielerID welche spect und anschließend true oder false, je nachdem ob er gerade jemanden spect oder nicht
    Leider ist die Wiki bei mir gerade nicht erreichbar. Deshalb kann ich dir gerade kein Beispiel dazu machen


    //Edit vorposter war schneller :3

  • Ich habe vor einen User damit zu überwachen wenn z.b ein Cheater online ist. Damit ich nachweise hierfür auch kriegen kann.


    Ich glaube das was Douq gepostet hat ist das richtige. Ich teste es mal




    So ich habs nun aber scheinbar ist noch ein Fehler darin enthalten. Hier erstmal der Code



    ocmd:tv(playerid, params[])
    {
    new pID;
    if(PlayerInfo[playerid][adminlevel] < 1) SendClientMessage(playerid,COLOR_RED,"Du darfst diesen Befehl nicht verwenden");
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,COLOR_RED,"Verwende : /tv [ID/Name]");
    if(pID == INVALID_PLAYER_ID) return SendClientMessage(playerid,COLOR_RED,"Dieser Spieler existiert nicht!");
    {
    TogglePlayerSpectating(playerid,1);
    PlayerSpectatePlayer(playerid,pID);
    }
    return 1;
    }
    ocmd:tvoff(playerid, params[])
    {
    if(PlayerInfo[playerid][adminlevel] < 1) SendClientMessage(playerid,COLOR_RED,"Du darfst diesen Befehl nicht verwenden");
    TogglePlayerSpectating(playerid, 0);
    SetCameraBehindPlayer(playerid);
    return 1;
    }


    Nun kriege ich das angehängte Bild angezeigt sobald ich /tv + ID eingebe. Dort steht aber nicht die Person haha

  • bist du alleine auf dem Server ?
    Wenn ja du brauchst ein 2 den du überwachen kannst.


    Und überarbeite mal bitte dein Code so ist es echt schwer einen Fehler zu finden.

    Oh entschuldige das lag daran das ich etwas bearbeitet hatte und nicht drauf geachtet hatte das es verrutscht. Ich habe es nun für die nächsten die mal ein Problem damit haben abgeändert.
    Natürlich arbeite ich so nicht xD
    Ja ich war alleine aber Gut zu wissen. Also ist in dem Code so alles Richtig ?

    • Offizieller Beitrag

    Oh entschuldige das lag daran das ich etwas bearbeitet hatte und nicht drauf geachtet hatte das es verrutscht. Ich habe es nun für die nächsten die mal ein Problem damit haben abgeändert.Natürlich arbeite ich so nicht xD
    Ja ich war alleine aber Gut zu wissen. Also ist in dem Code so alles Richtig ?

    Ja, müsste so funktionieren. Du könntest es ja mal trotzdem mit einem Freund ausprobieren. ;)

  • Ja, müsste so funktionieren. Du könntest es ja mal trotzdem mit einem Freund ausprobieren. ;)

    Na das ist derzeit schwierig da ich eig bisher kaum welche kenne die SAMP spielen und vorallem wenn dann sowas kommt wie unnutz für die. Für mich klar ist es Gut zu lernen

  • Beitrag von ChristianW ()

    Dieser Beitrag wurde von Trooper[Y] gelöscht ().
  • /tv

    if(strcmp("/tv", cmd, true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_BENUTZETEXT, "Benutze: /tv [SpielerName/ID]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    if(PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pAdmin] == -1)
    {
    if(IsPlayerConnected(giveplayerid))
    {
    Spectate[playerid] = giveplayerid;
    new Float:health;
    GetPlayerHealth(giveplayerid, health);
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    new cash = PlayerInfo[giveplayerid][pCash];
    SendClientMessage(playerid, COLOR_GRAD2, "'/tvoff' um zu beenden.");
    if(PlayerInfo[playerid][pAdmin] >= 4)
    {
    format(string, sizeof(string), "ID: %d | Name: %s | Geld: $%d | Health:%.0f | IP: %s ",giveplayerid,giveplayer,cash,health,PlayerInfo[giveplayerid][pUserIP]);
    }
    else
    {
    format(string, sizeof(string), "ID: %d | Name: %s | Geld: $%d | Health:%.0f",giveplayerid,giveplayer,cash,health);
    }
    SendClientMessage(playerid, COLOR_GRAD2, string);
    GetPlayerPos(playerid, SpawnPosInfo[playerid][SpawnPosX], SpawnPosInfo[playerid][SpawnPosY], SpawnPosInfo[playerid][SpawnPosZ]);
    SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(giveplayerid));
    TogglePlayerSpectating(playerid,true);
    Spectate[playerid] = giveplayerid;
    if(PlayerInfo[giveplayerid][pSQLID] == 1 || PlayerInfo[giveplayerid][pSQLID] == 2 || PlayerInfo[giveplayerid][pSQLID] == 3)
    {
    format(string, sizeof(string), "Admin %s ist nun bei dir auf TV",PlayerName(playerid));
    SendClientMessage(giveplayerid, COLOR_KNALLROT, string);
    }
    if(GetPlayerState(giveplayerid) == PLAYER_STATE_ONFOOT)
    {
    PlayerSpectatePlayer(playerid,giveplayerid);
    }
    else
    {
    PlayerSpectateVehicle(playerid,GetPlayerVehicleID(giveplayerid));
    SetPlayerInterior(playerid,GetPlayerInterior(giveplayerid));
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_ERRORTEXT, " Dieser Spieler ist Offline !");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_KEINADMIN, "*** INFO: Dies ist ein Adminbefehl, du bist kein Admin.");
    }
    }
    return 1;
    }







    if(strcmp("/tvoff", cmd, true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pAdmin] == -1)
    {
    Spectate[playerid] = -1;
    SetCameraBehindPlayer(playerid);
    SetPlayerInterior(playerid, 0);
    TogglePlayerControllable(playerid, 1);
    TogglePlayerSpectating(playerid, 0);
    SetPlayerPos(playerid, SpawnPosInfo[playerid][SpawnPosX], SpawnPosInfo[playerid][SpawnPosY], SpawnPosInfo[playerid][SpawnPosZ]);
    MedicBill[playerid] = 0;
    GameTextForPlayer(playerid, "~w~ATV~n~~r~Aus", 5000, 4);
    return 1;
    }
    }
    return 1;
    }

  • Wenn du nicht weiter kommst dann Poste es

    Ja ich kriege mal nen paar error / warnings



    Angestrebter Code


    stock createPlayerCar(playerid,modelid,Float:x,Float:y,Float:z,Float:r){ for(new i=0; i<sizeof(cInfo); i++) { if(PlayerInfo[i][id_x]!=0)continue; cInfo[i][besitzer]=sInfo[playerid][db_id]; cInfo[i][c_x]=x; cInfo[i][c_y]=y; cInfo[i][c_z]=z; cInfo[i][c_r]=r; cInfo[i][model]=modelid; cInfo[i][id_x] = CreateVehicle(modelid,x,y,z,r,-1,-1,-1); new string[128]; format(string,sizeof(string),"Das Auto cInfo[%i] wurde erstellt.",i); SendClientMessageToAll(COLOR_RED,string); saveCarToDB(playerid,i); return 1; } return 1;}


    Zeile 535 soll if(PlayerInfo[i][id_x]!=0)continue; sein



    erledigt. Hatte codeteile vergessen


    Nagut ich hab doch noch scheiße gebaut hahahahaha


    Er zeigt mir den Login nicht mehr an




    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid==DIALOG_AUTOHAUS)
    {
    if(response)
    {
    //Autoverkauf
    new id=GetPVarInt(playerid,"buyCarID");
    if(GetPlayerMoney(playerid)<ahCars[id][c_preis])
    {
    SendClientMessage(playerid,COLOR_RED,"Du hast nicht genügend Geld.");
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    GivePlayerMoney(playerid,-ahCars[id][c_preis]);
    createPlayerCar(playerid,ahCars[id][model],ahInfo[ahCars[id][ah_id]][s_x],ahInfo[ahCars[id][ah_id]][s_y],ahInfo[ahCars[id][ah_id]][s_z],ahInfo[ahCars[id][ah_id]][s_r]);
    SendClientMessage(playerid,COLOR_RED,"Herzlichen Glückwunsch zum neuen Auto");
    RemovePlayerFromVehicle(playerid);
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,COLOR_RED,"Dann eben nicht...");
    }
    return 1;
    }




    if(dialogid == DIALOG_REGISTER)
    {
    //Spieler hat Abbrechen gewählt
    if(!response) return Kick(playerid);



    //Wenn der Spieler kein, oder ein zu kurzes, Passwort eingegeben hat
    if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Registration", "Bitte registriere Dich:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen");



    //Wenn alles passt wird der Spieler in der Datenbank angelegt
    //Als Verschlüsselung für das Passwort wird MD5 verwendet
    new query[256];
    mysql_format(handle, query, sizeof(query), "INSERT INTO users (name, password) VALUES ('%e', MD5('%e'))", PlayerInfo[playerid][pName], inputtext);



    //Das Query wird abgesendet und die playerid an OnUserRegister übergeben
    mysql_pquery(handle, query, "OnUserRegister", "d", playerid);
    return 1;
    }
    if(dialogid == DIALOG_LOGIN)
    {
    //Spieler hat Abbrechen gewählt
    if(!response) return Kick(playerid);



    //Wenn der Spieler kein, oder ein zu kurzes, Passwort eingegeben hat
    if(strlen(inputtext) < 3) return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Anmeldung", "Bitte logge Dich ein:\n{FF0000}Mindestens 3 Zeichen!", "Ok", "Abbrechen");



    //Wenn alles passt wird die Datenbank ausgelesen
    new query[256];
    mysql_format(handle, query, sizeof(query), "SELECT * FROM users WHERE name = '%e' AND password = MD5('%e')", PlayerInfo[playerid][pName], inputtext);



    //Das Query wird abgesendet und die playerid an OnUserLogin übergeben
    mysql_pquery(handle, query, "OnUserLogin", "d", playerid);

    }
    return 1;
    }



    Also ich werde nicht mehr nach Daten gefragt

    2 Mal editiert, zuletzt von robbi2304 () aus folgendem Grund: erledigt

  • Bei Zeile 535 ist ein Warning, den du meistens ignorieren kannst.

    C:\Users\valen\Desktop\MySQL Sciptfiles\gamemodes\beispiel.pwn(536) : error 017: undefined symbol "sInfo"

    Du musst "sInfo" definieren.


    C:\Users\valen\Desktop\MySQL Sciptfiles\gamemodes\beispiel.pwn(536) : error 001: expected token: ";", but found "]"

    Hier musst du gucken wo das Semikolon fehlt. Könntest du den Code der Zeile einmal Posten?

  • Alles gefunden nun nur noch einen Fehler und dann hoffe ich wars das mit dem Autohaus xD




    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate==PLAYER_STATE_DRIVER)
    {
    new vID=GetPlayerVehicleID(playerid);
    for(new i=0; i<sizeof(ahCars); i++)
    {
    if(ahCars[i][id_x]!=vID)continue;
    //Verkaufsprozess
    SetPVarInt(playerid,"buyCarID",i);
    new string[256];
    format(string,sizeof(string),"Möchten sie das Fahrzeug für %i$ kaufen?",ahCars[i][c_preis]);
    ShowPlayerDialog(playerid,DIALOG_AUTOHAUS,DIALOG_STYLE_MSGBOX,"Autoverkauf",string,"Ja","Nein");
    break;
    }
    }
    return 1;
    }


    Hier zeigt er mir folgenden Fehler an



    Code
    C:\Users\valen\Desktop\mrmonat\MySQL Sciptfiles\gamemodes\beispiel.pwn(230) : error 029: invalid expression, assumed zero
    C:\Users\valen\Desktop\mrmonat\MySQL Sciptfiles\gamemodes\beispiel.pwn(230) : warning 215: expression has no effect
    C:\Users\valen\Desktop\mrmonat\MySQL Sciptfiles\gamemodes\beispiel.pwn(230) : warning 215: expression has no effect
    C:\Users\valen\Desktop\mrmonat\MySQL Sciptfiles\gamemodes\beispiel.pwn(230) : warning 215: expression has no effect
    C:\Users\valen\Desktop\mrmonat\MySQL Sciptfiles\gamemodes\beispiel.pwn(230) : warning 215: expression has no effect
    C:\Users\valen\Desktop\mrmonat\MySQL Sciptfiles\gamemodes\beispiel.pwn(230) : warning 215: expression has no effect
    C:\Users\valen\Desktop\mrmonat\MySQL Sciptfiles\gamemodes\beispiel.pwn(230) : error 001: expected token: ";", but found ")"
    C:\Users\valen\Desktop\mrmonat\MySQL Sciptfiles\gamemodes\beispiel.pwn(230) : error 029: invalid expression, assumed zero
    C:\Users\valen\Desktop\mrmonat\MySQL Sciptfiles\gamemodes\beispiel.pwn(230) : fatal error 107: too many error messages on one line

    Zeile 230 ist ShowPlayerDialog(playerid,DIALOG_AUTOHAUS,DIALOG_STYLE_MSGBOX,"Autoverkauf",string,"Ja","Nein");