[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
  • Code
    \gamemodes\1337.pwn(8924) : error 012: invalid function call, not a valid address
    \gamemodes\1337.pwn(8924) : warning 215: expression has no effect
    \gamemodes\1337.pwn(8924) : error 001: expected token: ";", but found ")"
    \gamemodes\1337.pwn(8924) : error 029: invalid expression, assumed zero
    \gamemodes\1337.pwn(8924) : fatal error 107: too many error messages on one line
  • Nabend ...


    wie genau muss ich es umschreiben das ich Hinten einen "Grund" einfügen kann und eine Nachricht an alle Admin geht mit Dem Namen+Zeit+Grund ??


    if(strcmp(cmd, "/ajail", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /ajail [Spieler ID / Name] [Zeit in Minuten]");
    return 1;
    }
    new playa;
    new money;
    playa = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    money = strval(tmp);
    if(playa == playerid)
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du kannst nicht dich selber einsperren!");
    return 1;
    }
    if(PlayerInfo[playerid][pAdmin] < PlayerInfo[playa][pAdmin])
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du kannst keinen höherrangigen Admin einsperren!");
    return 1;
    }
    if (PlayerInfo[playerid][pAdmin] >= 1)
    {
    if(IsPlayerConnected(playa))
    {
    if(playa != INVALID_PLAYER_ID)
    {
    GetPlayerName(playa, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "* Du hast %s eingesperrt.", giveplayer);
    SendClientMessage(playerid, COLOR_LIGHTRED, string);
    format(string, sizeof(string), "* Du wurdest von Admin %s in das Admin-Jail gesperrt.", sendername);
    SendClientMessage(playa, COLOR_LIGHTRED, string);
    ResetPlayerWeapons(playa);
    WantedPoints[playa] = 0;
    PlayerInfo[playa][pJailed] = 1;
    PlayerInfo[playa][pJailTime] = money*60;
    SetPlayerInterior(playa, 3);
    SetPlayerPos(playa, 197.8290,161.8141,1003.0300);
    format(string, sizeof(string), "Du wurdest für %d Minuten eingesperrt.[Zu unrecht ? Melde dich im Teamspeak3]", money);
    SendClientMessage(playa, COLOR_LIGHTBLUE, string);
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Du darfst diesen Befehl nicht benutzen!");
    }
    }
    return 1;
    }

  • Beitrag von Derakar ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Beitrag von Derakar ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • @IntelCode.I7:

    Spoiler anzeigen
    if(strcmp(cmd, "/ajail", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /ajail [Spieler ID / Name] [Zeit in Minuten] [Grund]");
    return 1;
    }
    new playa;
    new money, tmp2[256];
    playa = ReturnUser(tmp);
    tmp2 = strtok(cmdtext, idx);
    money = strval(tmp2);
    if(!strlen(cmdtext[strlen(tmp)+strlen(tmp2)+2]))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /ajail [Spieler ID / Name] [Zeit in Minuten] [Grund]");
    return 1;
    }
    if(playa == playerid)
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du kannst nicht dich selber einsperren!");
    return 1;
    }
    if(PlayerInfo[playerid][pAdmin] < PlayerInfo[playa][pAdmin])
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du kannst keinen höherrangigen Admin einsperren!");
    return 1;
    }
    if (PlayerInfo[playerid][pAdmin] >= 1)
    {
    if(IsPlayerConnected(playa))
    {
    if(playa != INVALID_PLAYER_ID)
    {
    GetPlayerName(playa, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "* Du hast %s eingesperrt. Grund: %s", giveplayer,cmdtext[strlen(tmp)+strlen(tmp2)+2]);
    SendClientMessage(playerid, COLOR_LIGHTRED, string);
    format(string, sizeof(string), "* Du wurdest von Admin %s in das Admin-Jail gesperrt. Grund: %s", sendername,cmdtext[strlen(tmp)+strlen(tmp2)+2]);
    SendClientMessage(playa, COLOR_LIGHTRED, string);
    ResetPlayerWeapons(playa);
    WantedPoints[playa] = 0;
    PlayerInfo[playa][pJailed] = 1;
    PlayerInfo[playa][pJailTime] = money*60;
    SetPlayerInterior(playa, 3);
    SetPlayerPos(playa, 197.8290,161.8141,1003.0300);
    format(string, sizeof(string), "Du wurdest für %d Minuten eingesperrt.[Zu unrecht ? Melde dich im Teamspeak3]", money);
    SendClientMessage(playa, COLOR_LIGHTBLUE, string);
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Du darfst diesen Befehl nicht benutzen!");
    }
    }
    return 1;
    }

    Teste es so.


    @K3Ksii:
    Das ist keine kleine Scripting Frage. Erstelle dafür einen Thread.

  • Wie genau schaffe ich es ein Textdraw zu mahen mit einem Payday der unten Recht angezeigt wird ?


    Copyright = TextDrawCreate(27.000000, 424.000000, "Payday : 0/60");
    TextDrawAlignment(Copyright,0);
    TextDrawBackgroundColor(Copyright,0x000000FF);
    TextDrawFont(Copyright, 3);
    TextDrawLetterSize(Copyright, 0.340000, 1.600000);
    //TextDrawColor(Copyright, 0xEB0000FF);
    TextDrawSetOutline(Copyright, 1);
    TextDrawSetProportional(Copyright, 1);
    TextDrawShowForAll(Copyright);

  • dcmd_a(playerid,params[])
    {
    if(sSpieler[playerid][Adminlevel] < 1) return SendClientMessage(playerid,Weiß,"Du bist kein Admin!");
    {
    new text[256];
    new spielername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,spielername,sizeof(spielername));
    if(sscanf(params,"s",text))
    return SendClientMessage(playerid,Weiß,"Info: /a (text)");
    format(text,sizeof(text),"Adminchat %s: %s",spielername,text);
    for(new i; i < GetMaxPlayers(); i++)
    {
    if(IsPlayerConnected(i))
    SendAdminMessage(Weiß,text);
    }
    }
    return 1;
    }


    Warum wird der Adminchat immer doppelt bzw 3 oder 4fach angezeigt, wenn jeweils so viele spieler online sind?
    Wenn ein spieler on ist, wird der text einmal ausgegeben.
    bei 2 spielern wird er 2x mal ausgegeben
    was muss geändert werden? :/

  • Dein Fehler ist recht simpel. Die Nachricht wird bei dir in der Schleife ausgegeben, die alle Spieler durchgeht.
    1 Spieler -> 1 Schleifendurchlauf
    X Spieler -> X Schleifendurchläufe


    Schreib es so:
    dcmd_a(playerid,params[])
    {
    if(sSpieler[playerid][Adminlevel] < 1) return SendClientMessage(playerid,Weiß,"Du bist kein Admin!");
    new text[256];
    new spielername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,spielername,sizeof(spielername));
    if(sscanf(params,"s",text))return SendClientMessage(playerid,Weiß,"Info: /a (text)");
    format(text,sizeof(text),"Adminchat %s: %s",spielername,text);
    SendAdminMessage(Weiß,text);
    return 1;
    }


    .. und jetzt bitte nochmal die Funktion SendAdmiMessage, wenn es nicht funktionieren sollte.
    Einrücken musst du selber, geht über meinen Browser nicht.

  • IntelCore.I7:
    Zuerst solltest du mal PlayerTextdraws erstellen anstatt globale Textdraws, denn jeder Spieler hat einen anderen Payday Wert.

    Copyright = CreatePlayerTextDraw(playerid,27.000000, 424.000000, "Payday : 0/60");
    PlayerTextDrawAlignment(playerid,Copyright,0);
    PlayerTextDrawBackgroundColor(playerid,Copyright,0x000000FF);
    PlayerTextDrawFont(playerid,Copyright, 3);
    PlayerTextDrawLetterSize(playerid,Copyright, 0.340000, 1.600000);
    PlayerTextDrawColor(playerid,Copyright, 0xEB0000FF);
    PlayerTextDrawSetOutline(playerid,Copyright, 1);
    PlayerTextDrawSetProportional(playerid,Copyright, 1);
    PlayerTextDrawShow(playerid,Copyright);

    Als nächsten hast du bestimmt einen Timer wo du die Variable vom Payday erhöhst; Genau dort fügst du folgendes ein:

    new string[64];
    format(string,sizeof(string),"Payday: %i/60",sStats[playerid][PayDay]/*ersetzten mit deiner PayDay Variable*/);
    PlayerTextDrawSetString(playerid,Copyright,string);


    ~ Handy