[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
  • Erkennt einer von euch den Fehler und kann mir diesen Fehler ebenfalls auch erklären?

    Also eigentlich ganz einfach: Du ersetzt deinen Code erstmal mit folgendem:



    GetID(name[]) {
    new playerid = INVALID_PLAYER_ID, playeRname[MAX_PLAYER_NAME+1];
    for(new i=GetPlayerPoolSize(); i!=-1; i--) {
    if(!IsPlayerConnected(i)) continue;
    GetPlayerName(i, playeRname, sizeof(playeRname));
    if(!strcmp(PlayerInfo[i][Name], name, true)) {
    playerid = i;
    break;
    }
    }
    return playerid;
    }
    //ungetestet, dürfte aber funktionieren; bin eher der Fan davon, wenn man auch Schleifen richtig mit break beendet und dann erst die value returnt... :p

    Bevor du diese Funktion verwendest, musst du abfragen, ob GetID("name") != INVALID_PLAYER_ID und der Spieler auch connected ist!
    Wenn das der Fall ist, funktioniert der Code auch.


    Dein Problem ist hierbei, dass du auf denen Spieler-Array zugreifst mit einer ID, die über der maximal deklarierten Grenze liegt. INVALID_PLAYER_ID ist nämlich größer als MAX_PLAYERS. Damit ist dein Array auch zu klein. ^^

  • C
    format(string_tmp1, sizeof(string_tmp1), "(%s) %d", getMonat(Month), Year);
        	AHVehTypes1[FahrzeugID][AHVbaujahr] = string_tmp1;

    Die Variable wird als String gesetzt AHVbaujahr[20]




    C
    PCar[playerid][d][P_Baujahr] = AHVehTypes1[i][AHVbaujahr];

    Jetzt will ich den String übertragen auf eine andere Variable P_Baujahr[20]


    Die erste Variable zeigt mir nur 1 Zeichen an "(" und die 2. Variable zeigt mir alles richtig an.
    Woran liegt das?

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Strings weist du einer Variable am besten immer per:



    Code
    //FORMAT
    
    
    format(PCar[playerid][d][P_Baujahr], LÄNGE, AHVehTypes1[i][AHVbaujahr]);


    zu.


    Sollte so funktionieren, wenn du die LÄNGE dazuschreibst :D

    MfG. Adrian

  • Also eigentlich ganz einfach: Du ersetzt deinen Code erstmal mit folgendem:
    GetID(name[]) { new playerid = INVALID_PLAYER_ID, playeRname[MAX_PLAYER_NAME+1]; for(new i=GetPlayerPoolSize(); i!=-1; i--) { if(!IsPlayerConnected(i)) continue; GetPlayerName(i, playeRname, sizeof(playeRname)); if(!strcmp(PlayerInfo[i][Name], name, true)) { playerid = i; break; } } return playerid;}//ungetestet, dürfte aber funktionieren; bin eher der Fan davon, wenn man auch Schleifen richtig mit break beendet und dann erst die value returnt... :p
    Bevor du diese Funktion verwendest, musst du abfragen, ob GetID("name") != INVALID_PLAYER_ID und der Spieler auch connected ist!
    Wenn das der Fall ist, funktioniert der Code auch.


    Dein Problem ist hierbei, dass du auf denen Spieler-Array zugreifst mit einer ID, die über der maximal deklarierten Grenze liegt. INVALID_PLAYER_ID ist nämlich größer als MAX_PLAYERS. Damit ist dein Array auch zu klein. ^^

    Ich danke dir für die Antwort, habe es mitlerweile so gelöst, was komischerweise bisher Problemlos Funktioniert.


    Sollte ich dennoch lieber etwas am Code ändern oder kann ich es bedenkenslos so lassen?

    Der Befehl:
    CMD:admins(playerid, params[])
    {
    if(!PlayerInfo[playerid][LoggedIn])return NO_CONYOURSELF

    new rows, Cache:result = mysql_query(Handle, "SELECT `Name`, `Adminrang`, `LastOnline` FROM `PLAYERS` WHERE `Adminrang` > 0 ORDER BY `Adminrang` DESC");
    cache_get_row_count(rows);

    if(rows){
    new strDialog[512], admName[MAX_PLAYER_NAME], admLastOnline[32], OnlineString[64], admRang;

    for(new i; i < rows; i++){
    cache_get_value_name(i, "Name", admName, MAX_PLAYER_NAME);
    cache_get_value_name(i, "LastOnline", admLastOnline, 32);
    cache_get_value_name_int(i, "Adminrang", admRang);


    new isOnline = GetID(admName);
    if(IsPlayerConnected(isOnline)){
    format(OnlineString, sizeof(OnlineString), "{00CC00}• {FFFFFF}Online {00CC00}•");
    }else{format(OnlineString, sizeof(OnlineString), "{B32D00}• {FFFFFF}%s {B32D00}•", admLastOnline);}
    format(strDialog, sizeof(strDialog), "{FFFFFF}%s%s\t{CC6600}%s\t{FFFFFF}%s\n", strDialog, admName, admin_rang[admRang], OnlineString);
    }
    format(strDialog, sizeof(strDialog), "{FFFFFF}Name:\t{FFFFFF}Rang:\t{FFFFFF}Status:\n%s", strDialog);
    ShowPlayerDialog(playerid, DIA_ERROR, DIALOG_STYLE_TABLIST_HEADERS, "{CC6600}"#SERVER_NAME" {FFFFFF}Teammitgliederg", strDialog, "Schließen", "");
    }
    cache_delete(result);
    return 1;
    }


    stock GetID(name[])
    {
    for(new i=GetPlayerPoolSize(); i!=-1; i--){
    if(IsPlayerConnected(i)){
    new playeRname[MAX_PLAYER_NAME+1];
    GetPlayerName(i, playeRname, sizeof(playeRname));
    if(!strcmp(name, playeRname, true))return i;
    }
    }
    return INVALID_PLAYER_ID;
    }


    Mit freundlichen Grüßen,

    Bestes Zitat des Jahres von Max Jackson!
    Vertrauen kann man mir auch, ich bin hier auf Breadfish schon sehr lange Aktiv und das sollte schon auf einer gewissen Weise, eine Vertrauensbasis schaffen. Ich meine, meine schlimmste Verwarnung war lediglich eine Morddrohung - Is ja nix.

  • Beitrag von FutureStunt ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: selbst gefixxt ().
  • habs grad selber hingekriegt, hab hinter where ein komma zu viel gesetzt

  • *** Streamer Plugin: Include file version (0x294) does not match plugin version (0x291) (script might need to be recompiled with the correct include file).


    Kann mir einer sagen warum?


    Habe die akuellen Streamer + Plugins hinzugefügt und neu compeliert.

  • *** Streamer Plugin: Include file version (0x294) does not match plugin version (0x291) (script might need to be recompiled with the correct include file).


    Kann mir einer sagen warum?


    Habe die akuellen Streamer + Plugins hinzugefügt und neu compeliert.

    Anscheinend ja nicht.


    Include version ist neuer als die version vom plugin.

  • Ja, habe die 2 Plugins aus diesen ordner genommen und in den Plugin ordner reingezogen und ersetzt.


    Das Plugin also die dll, und so wurde zuletzt geändert 24.10.2018 um 11:07 - die dll und die so um 11:25
    die in diesen ordner sich befindet.


    E:


    siehe Server LOG


  • [30/06/2019 15:50:32] *** Streamer Plugin: Include file version (0x293) does not match plugin version (0x291) (script might need to be recompiled with the correct include file)

    Include und Plugin passen immer noch nicht zusammen, hast du die .inc Datei auch in den Pawno Include Ordner gepackt bzw. das richtige Plugin in den Plugin Ordner?

  • Natürlich, wüsste sonst nicht wohin man das packen sollte weil das ja ein include ist und die maps ja per gm undso laden kannst.


    Habe so ein fehler nie gehabt habe immer perfect akualisiert ohne probleme aber ich versuche die ganze zeit das ganze neu zu ersetzen klappt trd nicht.

  • Im pawno auch ersetzen das include und neu compilieren... Außerdem complierst du bestimmt mit dem falschen pawno Ordner :) sonst würde es klappen... Es gibt keine andere Ursache.

  • Doch, habe nur den Ordner offen und habe über diesen Ordner nun auch das script geöffnet um sicher zu stellen das ich nicht falsch compeile,
    zudem laden die Objecte ja aber da dieser fehler auftaucht keine Fahrzeuge.


    Ich erstelle ein Fahrzeug ist dies nicht zusehn, zuvor war dies zusehn.



    [30/06/2019 15:50:32] Unable to load filterscript 'junkbuster.amx'.


    Hier liegt der Fehler. Ich habe dir gesagt, compile alles noch mal neu...

    Das Witze ist ja habe das nicht mal in den Filterscript mehr drinne stehn weil ich mir das auch dachte, weil den Junkbuster brauche ich im endeffect ja nicht mehr. Naja mal schauen wies wird.


    E:


    Nun wird der Junkbuster nicht mehr aufgelistet aber es geht trotzdem nicht ich hab den ordner davon genommen ich weiß es nicht mehr...



  • do.de - Domain-Offensive - Domains für alle und zu super Preisen