3 Scriptfragen

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
    Da ich gerade dabei bin ein Blanko Movie Script zu erstellen, und gerade feststecke an 3 Dingen, würde ich diese gerne hier fragen


    1.
    wie kann man es so machen das, wenn ich zum Beispiel /nametags mache, ich keine Namen mehr sehe?


    2.
    Wie kann ich es so machen, das man ein kleines Virtuall Welten System mache, hab mich damit noch nie befast
    Man sollte zB /startfilm machen können und man wird in eine zufällige Virtuell Welt versetzt und wenn ich /einladen ID mache, kann ich jemanden in meinen Film einladen
    Und mit /rauswerfen jemanden rauswerfen.


    3.
    Das wäre ein normaler: /goto, jedoch nicht für GF!
    Habe es leider noch nicht geschafft ein zu machen


    z.B funktioniert /gotols bei mir so:
    if (strcmp("/gotols", cmdtext, true, 10) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new carid = GetPlayerVehicleID(playerid);
    SetVehiclePos(carid, 1480.5602,-1770.1851,18.7958);
    PutPlayerInVehicle(playerid,carid, 0);
    }
    else
    {
    SetPlayerPos(playerid, 1480.5602,-1770.1851,18.7958);
    }
    SetPlayerInterior(playerid,0);
    return 1;
    }


    Und irgendwie so sollte halt auch einfach /goto sein



    Danke im voraus!

  • Erstes Problem



    new tagaus;
    if (strcmp("/nametags", cmdtext, true, 10) == 0)
    {
    if(tagaus == 0)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    ShowPlayerNameTagForPlayer(playerid, i, false);
    GameTextForAll("~r~Namen aus",5000,3);
    tagaus = 1;
    }
    else
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    ShowPlayerNameTagForPlayer(playerid, i, false);
    GameTextForAll("~b~Namen an",5000,3);
    tagaus = 0;
    }

    Zweites Problem


    Erstmal dcmd und sscanf definieren
    http://forum.sa-mp.de/wbb/san-…-commands-mit-parametern/


    Dann



    dcmd(makefilm,8,cmdtext);
    dcmd(einladen,8,cmdtext);
    dcmd(rauswerfen,10,cmdtext);



    dcmd_makefilm(playerid,params[])
    {
    new welt;

    if(sscanf(params, "d",welt))
    {
    return SendClientMessage(playerid,weiß,"Benutzung: /makefilm [Welt]");
    }


    SetPlayerVirtualWorld(playerid,welt);
    new string[256];
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),"Spieler %s hat sich in die Virtual World %d gesetzt",playername,welt);
    SendClientMessageToAll(farbe,string);
    }


    dcmd_einladen(playerid,params[])
    {
    new zielid;

    if(sscanf(params, "u",zielid))
    {
    return SendClientMessage(playerid,weiß,"Benutzung: /Einladen [ID]");
    }


    new pworld = GetPlayerVirtualWorld(playerid);
    SetPlayerVirtualWorld(zielid,pworld);
    new string[256];
    new string2[256];
    new playername[MAX_PLAYER_NAME];
    new zielname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    GetPlayerName(zielid,zielname,sizeof(zielname));
    format(string,sizeof(string),"Spieler %s hat dich in die Virtual World %d eingeladen",playername,welt);
    format(string,sizeof(string),"Du hast Spieler %s in die Wirtual World %d eingeladen",zielname,welt);
    SendClientMessage(playerid,farbe,string2);
    SendClientMessage(zielid,farbe,string);
    }


    dcmd_rauswerfen(playerid,params[])
    {
    new zielid;

    if(sscanf(params, "u",zielid))
    {
    return SendClientMessage(playerid,weiß,"Benutzung: /rauswerfen [ID]");
    }

    SetPlayerVirtualWorld(zielid,0);
    new string[256];
    new string2[256];
    new playername[MAX_PLAYER_NAME];
    new zielname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    GetPlayerName(zielid,zielname,sizeof(zielname));
    format(string,sizeof(string),"Spieler %s hat dich aus der Virtual World %d geworfen",playername,welt);
    format(string,sizeof(string),"Du hast Spieler %s aus der Wirtual World %d geworfen",zielname,welt);
    SendClientMessage(playerid,farbe,string2);
    SendClientMessage(zielid,farbe,string);
    }


    Drittes Problem


    dcmd(goto,4,cmdtext);


    dcmd_goto(playerid,params[])
    {
    new zielid;

    if(sscanf(params, "u",zielid))
    {
    return SendClientMessage(playerid,weiß,"Benutzung: /goto [ID]");
    }


    if(IsPlayerConnected(playerid) && !IsPlayerConnected(zielid))
    {
    SendClientMessage(playerid,rot,"Es existiert kein Spieler mit dieser ID");
    return 1;
    }
    else
    {
    if(playerid == zielid)
    {
    SendClientMessage(playerid,rot,"Fehler: Du kannst dich nicht zu dir selber porten");
    return 1;
    }
    else
    {
    new Float:x,Float:y,Float:z;
    new Float:angle;
    new vworld;
    new interior;
    new admin[MAX_PLAYER_NAME];
    new string[256];
    GetPlayerName(playerid,admin,sizeof(admin));
    format(string,sizeof(string),"Admin %s hat sich zu dir teleportiert",admin);
    SendClientMessage(zielid,grün,string);
    GetPlayerPos(zielid,x,y,z);
    GetPlayerFacingAngle(zielid,angle);
    vworld = GetPlayerVirtualWorld(zielid);
    interior = GetPlayerInterior(zielid);

    new zielname[MAX_PLAYER_NAME];
    new string2[256];
    GetPlayerName(zielid,zielname,sizeof(zielname));
    format(string2,sizeof(string2),"Du hast dich zu %s teleportiert",zielname);
    SendClientMessage(playerid,grün,string2);
    SetPlayerPos(playerid,x,y,z);
    SetPlayerFacingAngle(playerid,rot);
    SetPlayerVirtualWorld(playerid,vworld);
    SetPlayerInterior(playerid,interior);


    new string3[256];
    format(string3,sizeof(string3),"Admin: %s hat sich zu %s teleportiert",admin,zielname);
    print("-----");
    print(string3);

    return 1;
    }
    }
    }


    Sollte so funktionieren

    Einmal editiert, zuletzt von Hagi ()

  • Also bei NameTags kommen bei mir die berühmten 26 Errors, da stimmt also irgendwas nicht


    Und bei dem Rest, kommt bei mir:


    C:\Users\Alexander\Desktop\Movie.pwn(461) : error 017: undefined symbol "farbe"
    C:\Users\Alexander\Desktop\Movie.pwn(462) : warning 209: function "dcmd_makefilm" should return a value
    C:\Users\Alexander\Desktop\Movie.pwn(481) : error 017: undefined symbol "welt"
    C:\Users\Alexander\Desktop\Movie.pwn(482) : error 017: undefined symbol "welt"
    C:\Users\Alexander\Desktop\Movie.pwn(483) : error 017: undefined symbol "farbe"
    C:\Users\Alexander\Desktop\Movie.pwn(484) : error 017: undefined symbol "farbe"
    C:\Users\Alexander\Desktop\Movie.pwn(485) : warning 209: function "dcmd_einladen" should return a value
    C:\Users\Alexander\Desktop\Movie.pwn(503) : error 017: undefined symbol "welt"
    C:\Users\Alexander\Desktop\Movie.pwn(504) : error 017: undefined symbol "welt"
    C:\Users\Alexander\Desktop\Movie.pwn(505) : error 017: undefined symbol "farbe"
    C:\Users\Alexander\Desktop\Movie.pwn(506) : error 017: undefined symbol "farbe"
    C:\Users\Alexander\Desktop\Movie.pwn(507) : warning 209: function "dcmd_rauswerfen" should return a value
    C:\Users\Alexander\Desktop\Movie.pwn(515) : error 029: invalid expression, assumed zero
    C:\Users\Alexander\Desktop\Movie.pwn(515) : error 029: invalid expression, assumed zero
    C:\Users\Alexander\Desktop\Movie.pwn(515) : fatal error 107: too many error messages on one line


    Dabei ist das mit der Farbe ein Error von einer anderen Funktion der auch nie da gewesen ist
    und sscanf hatte ich schon ^^

  • "farbe" musst du durch die Farbdefinition oder den hex code ersetzten, indem der Text erscheinen soll.


    new tagaus;
    if (strcmp("/nametags", cmdtext, true, 10) == 0)
    {
    if(tagaus == 0)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    ShowPlayerNameTagForPlayer(playerid, i, false);
    GameTextForAll("~r~Namen aus",5000,3);
    tagaus = 1;
    }
    else
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    ShowPlayerNameTagForPlayer(playerid, i, false);
    GameTextForAll("~b~Namen an",5000,3);
    tagaus = 0;
    }
    }


    dcmd_makefilm(playerid,params[])
    {
    new welt;

    if(sscanf(params, "d",welt))
    {
    return SendClientMessage(playerid,weiß,"Benutzung: /makefilm [Welt]");
    }


    SetPlayerVirtualWorld(playerid,welt);
    new string[256];
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),"Spieler %s hat sich in die Virtual World %d gesetzt",playername,welt);
    SendClientMessageToAll(farbe,string);
    return 1;
    }


    dcmd_einladen(playerid,params[])
    {
    new zielid;

    if(sscanf(params, "u",zielid))
    {
    return SendClientMessage(playerid,weiß,"Benutzung: /Einladen [ID]");
    }


    new pworld = GetPlayerVirtualWorld(playerid);
    SetPlayerVirtualWorld(zielid,pworld);
    new string[256];
    new string2[256];
    new playername[MAX_PLAYER_NAME];
    new zielname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    GetPlayerName(zielid,zielname,sizeof(zielname));
    format(string,sizeof(string),"Spieler %s hat dich in die Virtual World %d eingeladen",playername,pworld);
    format(string,sizeof(string),"Du hast Spieler %s in die Wirtual World %d eingeladen",zielname,pworld);
    SendClientMessage(playerid,farbe,string2);
    SendClientMessage(zielid,farbe,string);
    return 1;
    }


    dcmd_rauswerfen(playerid,params[])
    {
    new zielid;

    if(sscanf(params, "u",zielid))
    {
    return SendClientMessage(playerid,weiß,"Benutzung: /rauswerfen [ID]");
    }

    new pworld = GetPlayerVirtualWorld(playerid);
    SetPlayerVirtualWorld(zielid,0);
    new string[256];
    new string2[256];
    new playername[MAX_PLAYER_NAME];
    new zielname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    GetPlayerName(zielid,zielname,sizeof(zielname));
    format(string,sizeof(string),"Spieler %s hat dich aus der Virtual World %d geworfen",playername,pworld);
    format(string,sizeof(string),"Du hast Spieler %s aus der Wirtual World %d geworfen",zielname,pworld);
    SendClientMessage(playerid,farbe,string2);
    SendClientMessage(zielid,farbe,string);
    return 1;
    }

  • also ich bekomme keine errors.


    Bist du sicher, dass du


    dcmd(rauswerfen,10,cmdtext);
    In OnPlayerCommand


    und die Befehle außerhalb des Public hast ?


    Öhm ja das mit dem /annehmen kann ich machen aber wenn du /einladen machst, wird der doch sofort in die Virtual World gesetzt.
    Kannst ja theoretisch vorher absprechen bevor du jemanden einlädst.


    aber ich setzt mich mal ran

    Einmal editiert, zuletzt von Hagi ()