[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
  • Hilfreich wäre es wenn du uns deine Query zeigst, in der du HelferList aufrufst.
    Dazu solltest du dir mal die Variable rows printen, um sicherzustellen, dass wirklich keine Helfer gefunden wurden.

    Danke, das Problem hat sich gelöst. Ich hatte einen Fehler im Befehl.


    MfG und schönen Sonntag


    Allrounder18


    Edit:


    Moin, wie kann ich es am ebsten machen, dass mir die Member pro Fraktion angezeigt werden?


    So habe ich es momentan, jedoch werde ich dann mehrmals angezeigt und sonst keiner.

    Code
    mysql_tquery(handle,"SELECT RPName, Rang FROM `accounts` WHERE `Fraktion` = Fraktion order by Rang DESC", "MemberList", "i", playerid);


    Was müsste ich da ändern?



    MfG

  • In Zeile 10 gibst du auch immer nur deine eigenen Daten an:
    format(string, sizeof(string), "%s\n%s\t%s",string, GetFraktionsRangTag(playerid), RemoveUnderscore(SpielerDaten[playerid][player_RPName]));


    Ändere dies zu:

    format(string, sizeof(string), "%s\n%s\t%s",string, frakrangtag,name);

  • Ich habe RangTag1 - 12 in der DB. Das mit dem Namen funktioiert jetzt.


    Edit:


    So fnktioniert es, das derRang angezeigt wird und alle Member dieser Fraktion angezeigt werden.

    Code
    format(string, sizeof(string), "%s\n%s\t%s",string, GetFraktionsRangTag(playerid), RemoveUnderscore(name));

    Momentan werden mir die selben User angezeigt egal in welcher Fraktion ich bin. Wie mache ich, dass wen ich in Fraktio 1 bin nur ich angezeigt werde und nicht die anderen aus der anderen Fraktio auch noch?
    Also ich meine, wen ich in Fraktion 1 bin sollten mir die Member der Fraktion 1 oder wen ich in Fraktion 2 bin sollten die Member der Fraktion 2 angezeigt werden, etc.

  • Deine MySQL Query ist falsch. Dazu lädst du nun wieder jedes mal nur den RangTag von dir selber.


    Die MySQL Query solltest du so ändern:

    new query[256];
    mysql_format(handle,query,sizeof(query),"SELECT RPName, RangTag, Rang FROM `accounts` WHERE `Fraktion` = %d ORDER BY Rang DESC", fraktionid);
    mysql_tquery(handle, query, "MemberList", "i", playerid);

    Die Variable fraktionid musst du dann eben selbst in deinem Code anpassen, damit es die richtige Fraktionsid ist.

  • Deine MySQL Query ist falsch. Dazu lädst du nun wieder jedes mal nur den RangTag von dir selber.


    Die MySQL Query solltest du so ändern:
    new query[256];mysql_format(handle,query,sizeof(query),"SELECT RPName, RangTag, Rang FROM `accounts` WHERE `Fraktion` = %d ORDER BY Rang DESC", fraktionid);mysql_tquery(handle, query, "MemberList", "i", playerid);
    Die Variable fraktionid musst du dann eben selbst in deinem Code anpassen, damit es die richtige Fraktionsid ist.

    Wenn ich es so mache, dann funktoniert der Befehl garnicht, wenn ich RangTag rausnehme gehts.
    Worann leigt es, dass ich rst den Server restarten muss wen ich mich auf den Rang gesetzt habe um mich in der jeweiligen Memberliste zu sehen? Mit RangTag kanns auch net funktionieren, da dis in einer andern Tabelle steht.
    Was muss ich dann machen?

  • Hi,


    Code
    ocmd:tp(playerid,params[])
    {
    	new float:piX, float:piY, float:piZ;
        SetPlayerPos(playerid,piX,piY,piZ);
    	return 1;
    }

    Will mich zu bestimmten stellen teleportieren, habe so etwas nie gemacht.


    soll ungefähr so sein /tp 1000 1500 13 (Sind irgendwelche Koordinaten)
    Wie füge ich der Float piX die erste Zahl zu usw. ?

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

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Also ich habe mein Command so gemacht @BrightLeaN


  • if(sscanf(params, "fffdd", PoS[0], PoS[1], PoS[2]))return SendClientMessage(playerid, COLOR_WHITE, "/tp [Float-X] [Float-Y] [Float-Z]");

    Diese Zeile solltest du in folgendes ändern:

    if(sscanf(params, "fff", PoS[0], PoS[1], PoS[2]))return SendClientMessage(playerid, COLOR_WHITE, "/tp [Float-X] [Float-Y] [Float-Z]");

    Die 2 d's bei den Parametern sind unnötig, da du als 4. und 5. Parameter keinen Integer angibst.
    Dazu solltest du auch die Variable PoS mit Float: als Float deklarieren.

  • Diese Zeile solltest du in folgendes ändern:if(sscanf(params, "fff", PoS[0], PoS[1], PoS[2]))return SendClientMessage(playerid, COLOR_WHITE, "/tp [Float-X] [Float-Y] [Float-Z]");
    Die 2 d's bei den Parametern sind unnötig, da du als 4. und 5. Parameter keinen Integer angibst.
    Dazu solltest du auch die Variable PoS mit Float: als Float deklarieren.

    Jo habe ich verpasst habe ich aber geändert gehabt :(
    Danke für die anpassung!

  • Du ermittelst auch nicht wirklich den Gewinner.


    if(PlayerInfo[i][EventKills] > PlayerInfo[i][EventKills]) Player = i;
    Hier überprüfst du nur ob der Spieler mehr Kills hat als er selber.
    Das ist niemals der Fall, somit bleibt die Variable "Player" auch immer 0.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • In dem du den Killwert zwischenspeicherst und mit dem nächsten Spieler vergleichst.
    Ist der nächste höher überschreibst du den zwischengespeicherten Wert.


    Am Ende (der Schleife) hast du dann den richtigen Wert.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Hi sobald ich diesen code hinzu füge erscheint dieser fehler in den Serverlogs:



    So geht alles.

    stock Log(log[], text[])
    {
    new query[256];
    getdate(jahr,monat,tag);
    gettime(stunde,minute,sekunde);
    format(query,sizeof(query),"INSERT INTO `"#SQL_TAG"_logs` (`Aktion`,`Text`,`Datum`,`Uhrzeit`) VALUES ('%s','%s','%04d-%02d-%02d','%02d:%02d:%02d')",log,text,jahr,monat,tag,stunde,minute,sekunde);
    mysql_function_query(MySqlConnection,query,false,"","");
    return true;
    }


    Sobald ich es so mache erscheint ein fehler:



    [13:47:53] [debug] Run time error 4: "Array index out of bounds"
    [13:47:53] [debug] Attempted to read/write array element at index 128 in array of size 128
    [13:47:53] [debug] AMX backtrace:
    [13:47:53] [debug] #0 00012a18 in ?? (24222384) in my.amx
    [13:47:53] [debug] #1 00012340 in ?? (23727264, 1, 23727284, 24222384, 1, 0, 1, 1, 0, 0, ... <2 more arguments>) in my.amx
    [13:47:53] [debug] #2 0061cfb0 in ?? (19675608, 24224852) in my.amx
    [13:47:53] [debug] #3 0019a420 in public SSCANF_OnPlayerConnect (21) in my.amx
    [13:47:53] [debug] #4 native CallLocalFunction () in samp03svr
    [13:47:53] [debug] #5 0000c770 in public Itter_OnPlayerConnect (21) in my.amx
    [13:47:53] [debug] #6 0000b5f8 in public OnPlayerConnect (21) in my.amx
    [13:48:12] [debug] Run time error 4: "Array index out of bounds"
    [13:48:12] [debug] Attempted to read/write array element at index 128 in array of size 128
    [13:48:12] [debug] AMX backtrace:
    [13:48:12] [debug] #0 000129cc in ?? (24220476) in my.amx
    [13:48:12] [debug] #1 00012340 in ?? (23727264, 1, 23727284, 24220476, 1, 0, 1, 1, 0, 0, ... <2 more arguments>) in my.amx
    [13:48:12] [debug] #2 0061cfb0 in ?? (23620912, 24222944) in my.amx
    [13:48:12] [debug] #3 005d94f8 in public LoadAccount (21, 23885528, 0) in my.amx


    LoadAccount da wird halt gelogt das man sich eingeloggt. doch da in im stock log Wbb_addPost benutze kommt dieser fehler warum weißt ich nicht so siehtes aus wo es geloggt wird.
    Log("Login, Admin",stringlogin);



    stock Log(log[], text[])
    {
    new query[256],string[356];
    getdate(jahr,monat,tag);
    gettime(stunde,minute,sekunde);
    format(query,sizeof(query),"INSERT INTO `"#SQL_TAG"_logs` (`Aktion`,`Text`,`Datum`,`Uhrzeit`) VALUES ('%s','%s','%04d-%02d-%02d','%02d:%02d:%02d')",log,text,jahr,monat,tag,stunde,minute,sekunde);
    mysql_function_query(MySqlConnection,query,false,"","");
    format(string,sizeof(string),"%s, %s , %04i-%02i-%02i , %02i:%02i:%02i ",log,text,jahr,monat,tag,stunde,minute,sekunde);
    WBB_AddPost("Server Log", 1, "Server Log:", string, 1, 0, 1, 1, 0, 0, 0, 1);
    return true;
    }

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