Beiträge von German_ScripterHD

    Hallo Brotfische,


    Ich habe eine Problem mit dem public "OnPlayerText", undzwar wenn ich z.B Hallo schreibe kommt das ganze im Chat zweimal anstatt einmal.


    Ich schreibe Hallo:

    German_ScripterHD: Hallo
    German_ScripterHD: Hallo


    aber es sollte so sein:

    German_ScripterHD: Hallo


    Codes:


    public OnPlayerText(playerid, text[])
    {
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);


    new string[150];
    if(supduty[playerid]==1)
    {
    format(string,sizeof(string), "{C800FF}%s: {FFFFFF}%s",getPlayerName(playerid), text);
    }
    else
    {
    format(string,sizeof(string), "%s: %s",getPlayerName(playerid), text);
    }


    new chat_color;


    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(!IsPlayerInRangeOfPoint(i, CHAT_RADIUS, x, y, z))continue;
    if(GetPlayerVirtualWorld(i)!=GetPlayerVirtualWorld(playerid)) continue;
    new Float:distance = GetPlayerDistanceFromPoint(i, x, y, z);
    if(distance < CHAT_RADIUS / CHAT_FADES)
    {
    chat_color = COLOR_CHAT;
    }
    else if(distance < CHAT_RADIUS / CHAT_FADES * 2)
    {
    chat_color = COLOR_FADE1;
    }
    else if(distance < CHAT_RADIUS / CHAT_FADES * 3)
    {
    chat_color = COLOR_FADE2;
    }
    else if(distance < CHAT_RADIUS / CHAT_FADES * 4)
    {
    chat_color = COLOR_FADE3;
    }
    else if(distance <= CHAT_RADIUS / CHAT_FADES * 5)
    {
    chat_color = COLOR_FADE4;
    }
    SendClientMessage(i, chat_color, string);
    }
    SetPlayerChatBubble(playerid,text,C_Weiß, 100.0, 10000);
    if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
    {
    new Length = strlen(text);
    new aTime = Length*400;
    ApplyAnimation(playerid,"PED","IDLE_CHAT",4.1,1,1,1,0,aTime);
    return 1;
    }
    return 0;
    }


    Ich hoffe es kann mir jemand helfen :D

    [20:51:10] [debug] Run time error 19: "File or function is not found" [20:51:10] [debug] WP_Hash [20:51:10] [debug] Run time error 19: "File or function is not found" [20:51:10] [debug] WP_Hash [20:51:10] Script[gamemodes/Pakour.amx]: Run time error 19: "File or function is not found" [20:51:10] Number of vehicle models: 0


    Es sieht so aus, also ob er die Datei "WP_Hash" nicht findet und somit abstürtz, aber bin mir nicht 100% sicher.

    Hallo Brotfische,


    Ich möchte mit ein paar Freunden mein SA:MP Server auf Bugs und Co überprüfen, dazu wollte ich mein Server auf dem Wlan Router hosten (nur für die Tests)
    Bei meinem Wlan Router handelt es sich um ein Dlink Dir-615.


    Meine Einstellungen:


    Serer.cfg
    echo Executing Server Config...
    lanmode 0
    rcon_password xxxxxx
    maxplayers 10
    port 8777
    hostname Test Server
    gamemode0 crmode 1
    filterscripts Maps
    plugins mysql sscanf streamer
    announce 0
    query 1
    chatlogging 0
    weburl www.sa-mp.com
    onfoot_rate 40
    incar_rate 40
    weapon_rate 40
    stream_distance 300.0
    stream_rate 1000
    maxnpc 0
    logtimeformat [%H:%M:%S]
    language English



    Ich hoffe ihr könnt mir irgendwie helfen :)



    MfG German_ScripterHD

    @ Jeffry


    Danke :)


    Jetzt habe ich noch 1 Error:


    error 006: must be assigned to an array


    ocmd:delsup(playerid,params[])
    {
    if(!isAdmin(playerid,1))return SendClientMessage(playerid,-1,"Du bist kein Admin!");
    new pID;
    if (sscanf(params, "u", pID)) {
    return SendClientMessage(playerid, C_Weiß, "Info: /delsupport [playerid/name]");
    }
    if (!IsPlayerConnected(pID)) {
    return SendClientMessage(playerid, COLOR_RED, "Spieler ist Offline.");
    }
    if (SupAccept[playerid] == -1 || SupAccept[pID] == -1) {
    return SendClientMessage(playerid, COLOR_RED, "Du oder der Spieler ist nicht im Support!");
    }
    SendClientMessage(playerid,-1,"Du hast den Report geschlossen!");
    SupAccept[playerid] = -1;
    SupAccept[pID] = -1;
    SupportText[pID] = " ";// Fehler
    return 1;
    }


    geht das auch so ? :




    ocmd:sup(playerid,params[])
    {
    if(strlen(SupportText[playerid]) >= 5)//Er hat schon ein Support Ticket erstellt
    {
    if(SupAccept[playerid] == 1)
    {
    if(!params[0])return SendClientMessage(playerid,C_Error,"Info: /sup [Text]");
    new string[145];
    format(string, sizeof(string), "%s[Sup] %s", getPlayerName(playerid),params);
    new pID = SupAccept[playerid];
    SendClientMessage(pID, 0xFF0000FF, string);
    SendClientMessage(playerid, 0xFF0000FF, string);
    }
    else
    {
    SendClientMessage(playerid,C_Error,"Du hast keinen offenen Supportchat!");
    }
    }
    else //Er hat noch kein Ticket erstell...
    {
    ShowPlayerDialog(playerid,Support_Dialog,DIALOG_STYLE_INPUT,"[Report System]","Bitte gebe dein Report in das untere Feld.","Absenden","Abbrechen");
    }
    return 1;
    }


    //Edit: Rechtschreibfehler

    @ Pascal. Danke, habe es aber schon selbst gelöst gehabt :)


    Jetzt kommt noch einwas, was mir wirklich seit Tagen Kopfschmerzen bereitet:


    New´s + Define´s
    new SupAccept[MAX_PLAYERS];
    new SupportName[MAX_PLAYERS];
    new SupportText[MAX_PLAYERS];


    #define Support_Dialog 118
    #define ShowReportDialog 119


    Befehle:


    ocmd:sup(playerid,params[])
    {
    if(SupAccept[playerid]==1)
    {
    new string[300],text[150];
    if(sscanf(params,"s",text)) return SendClientMessage(playerid,C_Weiß,"/sup [Text]");
    format(string,sizeof(string),"%s(Sup):%s",getPlayerName(playerid),text);
    SendClientMessage(playerid,C_Weiß,string);
    }
    else
    {
    if(strlen(SupportText[playerid]) >= 5) return SendClientMessage(playerid, C_Error, "Du hast bereits ein Ticket erstellt.");
    ShowPlayerDialog(playerid,Support_Dialog,DIALOG_STYLE_INPUT,"[Report System]","Bitte gebe dein Report in das untere Feld.","Absenden","Abbrechen");
    }
    return 1;
    }
    ocmd:showreports(playerid,params[])
    {
    if(!isAdmin(playerid,1))return SendClientMessage(playerid,C_Error,"Du hast keine Berechtigung für diesen Befehl!");
    new string[128];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(IsPlayerNPC(i))continue;
    format(string, sizeof(string), "%s%s | %s\n", string, SupportName[i], SupportText[i]);
    }
    ShowPlayerDialog(playerid, ShowReportDialog, DIALOG_STYLE_LIST, "Aktuelle Reports", string, "Annehmen", "Abbrechen");
    return 1;
    }


    Dialoge:
    if(dialogid==Support_Dialog)
    {
    if(response)
    {
    if(strlen(inputtext)>8)
    {
    format(SupportName[playerid],MAX_PLAYER_NAME, getPlayerName(playerid));
    format(SupportText[playerid],128,inputtext);
    SendClientMessage(playerid,C_Blau,"Dein Report wurde erfolgreich gespeichert.");
    SendClientMessage(playerid,C_Blau,"Ein Adminisitrator wird sich gleich um dein Report kümmern.");
    }
    else
    {
    SendClientMessage(playerid,C_Error,"Dein Report ist zu kurz!");
    ShowPlayerDialog(playerid,Support_Dialog,DIALOG_STYLE_INPUT,"[Report System]","Bitte gebe dein Report in das untere Feld.","Absenden","Abbrechen");
    }
    }
    }
    if(dialogid==ShowReportDialog)
    {
    if(!response)return 1;
    new pID = listitem;
    if(!strlen(SupportName[pID]))return 1;
    SendClientMessage(pID, 0xFF0000FF, "Dein Report wurde geöffnet. Du kannst jetzt mit /sup schreiben.");
    SupAccept[pID]=1;
    SupAccept[playerid]=1;
    return 1;
    }


    Nun meine Frage:


    Wie kann ich das mit dem /sup (Nach dem der Report geöffnet wurde) dass Supporter und Spieler zusammen kommunizieren können am besten scripten?


    MfG :thumbup:

    @ Jeffry


    Vielen Dank, ich habe heute viel dazu gelernt, nun habe ich noch ein aller letztes Problem :)


    ocmd:delsupport(playerid,params[])
    {
    if(!isAdmin(playerid,1))return SendClientMessage(playerid,-1,"Du bist kein Admin!");
    SendClientMessage(playerid,-1,"Du hast den Report geschlossen!");
    SupAccept[playerid /*Admin*/]=0;
    //...
    SupAccept[/*? Spieler*/]=0;
    SupportText[/*? Spieler*/]=" ";
    return 1;
    }


    Jetzt ist meine letzte Frage :) , wie kann ich den Report der anderen Person schließen (Variablen zurücksetzten) ?


    //Edit: Schreibfehler

    @ Jeffry


    Danke... :D


    Jetzt noch eine Frage:


    Wie kann man Abfragen ob in einem String weniger als 3 Buchstaben oder Zahlen drinne steht ?


    Weil ich dann bei ocmd:sup Abfragen möchte ob schon was im "SupportText" schon was drinne steht oder nicht... Sollte etwas im String steh dann würde ich einfach return SendClientMessage(playerid,-1,"Du hast bereits ein Support geöffnet!); senden.

    @ Jeffry


    Danke, aber jetzt komm ich langsam an meine Scripting Grenzen .. :(


    ocmd:sup(playerid,params[])
    {
    ShowPlayerDialog(playerid,Support_Dialog,DIALOG_STYLE_INPUT,"[Report System]","Bitte gebe dein Report in das untere Feld.","Absenden","Abbrechen");
    return 1;
    }


    if(dialogid==Support_Dialog)
    {
    if(response)
    {
    if(strlen(inputtext)>8)
    {
    format(SupportName[playerid],MAX_PLAYER_NAME, getPlayerName(playerid));
    format(SupportText[playerid],128,inputtext);
    SendClientMessage(playerid,C_Blau,"Dein Report wurde erfolgreich gespeichert.");
    SendClientMessage(playerid,C_Blau,"Ein Adminisitrator wird sich gleich um dein Report kümmern.");
    }
    else
    {
    SendClientMessage(playerid,C_Error,"Dein Report ist zu kurz!");
    ShowPlayerDialog(playerid,Support_Dialog,DIALOG_STYLE_INPUT,"[Report System]","Bitte gebe dein Report in das untere Feld.","Absenden","Abbrechen");
    }
    }
    }




    ocmd:showreports(playerid,params[])
    {
    if(!isAdmin(playerid,1))return SendClientMessage(playerid,C_Error,"Du hast keine Berechtigung für diesen Befehl!");
    new string[128];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(IsPlayerNPC(i))continue;
    format(string, sizeof(string), "%s%s | %s\n", string, SupportName[i], SupportText[i]);
    }
    ShowPlayerDialog(playerid, ShowReportDialog, DIALOG_STYLE_LIST, "Aktuelle Reports", string, "Annehmen", "Abbrechen");
    return 1;
    }


    Soweit sogut :)


    Aber ab jetzt komm ich an meine Grenzen..


    if(dialogid==ShowReportDialog)
    {
    if(!response)return 1;
    new tmp;
    switch(listitem)
    {
    case 0..50:
    {


    Undzwar möchte ich wenn der Admin auf den Report drückt das dann die Verbindung zum anderen Spieler hergestellt wird, so das Admin bzw. Supporter mit anderen Spieler im Chat kommunizieren können.


    Ich hoffe es kann mir jemand weiter helfen :)


    MfG German_ScripterHD

    Ich schreibe gerade am Report - System weiter doch leider kommt dieser Error... und ich versteh nicht warum :(


    Error:
    error 033: array must be indexed (variable "string")
    error 033: array must be indexed (variable "string")


    Code:
    new string[149];
    format(string,sizeof(string),"%s",getPlayerName(playerid));
    SupportName[playerid]==string; //Fehler
    format(string,sizeof(string),"%s",inputtext);
    SupportText[playerid]==string;//Fehler


    Danke erstmal :)


    aber gehört das nicht so? :whistling:


    if (strcmp("/showreports", cmdtext, true, 12) == 0)
    {
    //Adminabfrage
    new string[128];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i))continue;// playerid --> i
    if(IsPlayerNPC(i))continue;// playerid --> i
    format(str, sizeof(str), "%s%s | %s\n", string, /*Report von*/, /*Reporttext*/);
    }
    ShowPlayerDialog(playerid, /*dialogid*/, DIALOG_STYLE_LIST, /*Überschrift*/, string, /*button1*/, /*button2*/);
    }

    Vllt. hilt dir ja dieses Video weiter :D


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.



    Kleiner Tipp Googlenhilft!


    MfG German_ScripterHD

    Vllt. Hilft dir ja dieses Tutorial...


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    MfG German_ScripterHD


    Ich denke es liegt daran das keine Plugins geladen werden...


    Schick mal die server.cfg

    Versuch es mal so:


    new Spielerdatei[64];
    format(Spielerdatei,sizeof(Spielerdatei),"/Accounts/%s.txt",getPlayerName(playerid));


    und bau diesen Stock in dein Script ein:


    stock getPlayerName(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    return name;
    }


    MfG German_ScripterHD


    Du willst ja mit der IsPlayerInFrac-Abfrage nur abfragen ob der Spieler in einer Fraktion ist, also probier es mal so:


    stock IsPlayerInFrac(playerid, fracid)
    {
    if(pInfo[playerid][pFraktion] == fracid)return 1;
    return 0;
    }



    Im Script kannst du das dann so verwenden:

    if(IsPlayerInFrac(playerid,1))
    {
    SendClientMessage(playerid,-1,"LALALA");
    }


    oder

    if(!IsPlayerInFrac(playerid,1))return SendClientMessage(playerid,-1,"Du bist nicht in Fraktion XXXXX !");



    MfG German_ScripterHD