[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
  • Wie kann ich Pickups ausserhalb der Map setzen? Bei mir verschwindet die bzw. sind unsichtbar o.Ä...
    Aber New-Dawn Maps bspw. sind auch ausserhalb der Map und haben Pickups. Weiß einer, wie ich das machen kann?


    New Dawn benutzt keine pickups nur 3dtextlabels und einen timer um die pickups oder eventuell auch erstellte zonen über das streamer plugin um die textlabels

  • Jeffry
    @|Prototype|
    Ich nehme an du willst einen anderen Laufstyle. Also nicht den normalen den CJ hat ?

    "Imagine if the government went after corruption as hard as it goes after guys who run filesharing sites. Priorities. " - @Snowden
    "More worrying than FBI temporarily running a server that contained child porn, is hacking computers anywhere in the world with one warrant" - @josephfcox

  • Ich hätte da ne kleine Frage zu Threaded Queries.


    Gäbe es eine Möglichkeit mehrere Thread über ein Callback laufen zu lassen ?
    Ein grobes Beispiel:


    mysql_tquery(handle, query, "OnCheckTimeban", "i", playerid);
    mysql_tquery(handle, query, "OnCheckBan", "i", playerid);


    So würde ich zwei Callbacks haben, in einem werden die Timebans kontrolliert und im anderen die permanenten Bans. Wie könnte ich nun beide Queries in OnCheckBan prüfen ?


    Lg

  • Ganz simple...zb so:

    mysql_tquery(handle, query, "OnCheckban", "ii", playerid,1);//Ban 1== ID
    mysql_tquery(handle, query, "OnCheckban", "ii", playerid,2);//TBan 2== ID

    public OnCheckban(playerid,type)
    {
    switch(type)
    {
    case 1://Ban
    {
    // ban zeugs
    }
    case 2://Tban
    {
    // Tban zeugs
    }
    }
    }

  • Wie kann ich auslesen von welchen spielern ein User zu letzt getötet wurde und welche User ein Spieler zuletzt getötet hat?
    Hat jemand gerade einen Code/FS da hab schon gesucht doch leider nicht gefunden

  • Als erstes speicherst du es wie immer in deinem Script zwischen. (Mit pVars oder Arrays)
    -> Sprich das erstmal ggf. deklarieren
    Jetzt als Beispiel die Array.
    new mylastkiller[MAX_PLAYERS];
    Unter dem Callback
    public OnPlayerDeath(playerid, killerid, reason)


    setzt du
    mylastkiller[playerid] = killerid;


    Die Array 'mylastkiller' enthällt nun die playerid des letzten killers.
    Der Name kann mit GetPlayerName herausgefunden werden.
    Aber vorsicht: Wenn sich der Spieler ausloggt ist die ID nicht mehr aktuell. -> Also Namen unbedingt auslesen.


    L.g.

  • Wie kann ich auslesen von welchen spielern ein User zu letzt getötet wurde und welche User ein Spieler zuletzt getötet hat?
    Hat jemand gerade einen Code/FS da hab schon gesucht doch leider nicht gefunden


    Nun, das kannst du über eine globale Variable einfach lösen:


    //Oben in dein Script
    #define MAX_KILL_STATS 5
    #define getKillID(%0) d_idx{%0}


    static DeathInfo[MAX_KILL_STATS][MAX_PLAYERS] = {{-1,...},{-1,...},{-1,...},{-1,...},{-1,...}},d_idx[MAX_PLAYERS char];


    //Unter dem Callback
    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(killerid != INVALID_PLAYER_ID) {
    DeathInfo[getKillID(playerid)][playerid] = killerid;
    d_idx{playerid}++;
    if(getKillID(playerid) == MAX_KILL_STATS) d_idx{playerid} = 0;
    }
    return 1;
    }


    stock GetLastKillerName(playerid) //Gibt den Namen von dem Spieler zurück, der ihn zuletzt getötet hat
    {
    new name[MAX_PLAYER_NAME] = "Nieamnd";
    if(DeathInfo[getKillID(playerid)-1][playerid] == -1) return name;
    return GetPlayerName(DeathInfo[getKillID(playerid)-1][playerid],name,MAX_PLAYER_NAME),name;
    }


    stock ListLastKills(playerid) //Listet die Usernamen, von den Spielern die er zuletzt getötet hat (wenn sie noch on sind)
    {
    new name[MAX_PLAYER_NAME],string[25 + MAX_PLAYER_NAME];
    for(new i; i<MAX_PLAYERS; i++) {
    if(!IsPlayerConnected(i)) continue;
    for(new x; x<MAX_KILL_STATS; x++) {
    if(DeathInfo[x][i] == playerid) {
    GetPlayerName(i,name,MAX_PLAYER_NAME);
    format(string,sizeof string,"Du hast %s getötet gehabt!",name);
    SendClientMessage(playerid,-1,string);
    }
    }
    }
    return 1;
    }


    Ist aus dem Kopf geschrieben..weiß nicht ob es funktioniert, kannst es ja mal probieren ;)


    mfg. :rolleyes:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • mal ne kleine Frage
    Bei der Zeile hier
    format(string, 256, "INSERT IGNORE INTO `player` (`username`,`passwort`,`skin`,`geld`,`register`) VALUES ('%s',%s'%s'%s,'181','0','%d');", Name, ((!PassKey)?(""):((PassKey==1)?("md5("):("sha1("))), inputtext, ((!PassKey)?(""):(")")), gettime());
    bekomme ich die Fehler:
    C:\Users\Beavis\Desktop\Neuer Ordner (3)\gamemodes\bRP.pwn(1529) : warning 205: redundant code: constant expression is zero
    C:\Users\Beavis\Desktop\Neuer Ordner (3)\gamemodes\bRP.pwn(1529) : warning 206: redundant test: constant expression is non-zero
    C:\Users\Beavis\Desktop\Neuer Ordner (3)\gamemodes\bRP.pwn(1529) : warning 205: redundant code: constant expression is zero
    Seit ich das mit den ()?... eingefügt habe und der PassKey ist so aufgebaut:
    #define PassKey 1 //0 = kein Hash 1 = MD5 Hash 2 = SHA1 Hash

    All in all it's just another brick in the wall

  • Das liegt daran, dass der Compiler schon weiß was bei der Abfrage raus kommt, da es eine Konstante ist die du da abfragst und keine Variable. Somit steht da für den Compiler:


    if(!0) ... => if(1)
    Da diese Abfrage immer wahr, bzw andersrum immer unwahr ist, denkt der Compiler, dass die Abfrage keinen Sinn hat.


    Nimm eine Variable und es tut:
    new PassKey = 1;

  • Woran kann das liegen?


    [06:07:55] [ERROR] CMySQLQuery::Execute[()] - (error #1054) Unknown column '2014/5/24' in 'field list'


    Der Letzte Login wird mir nicht in die Tabelle geschrieben, wenn ich aber denn Typen vom Letzten Login in der Datenbank auf UTC_DATE stelle,
    wird mir das Datum angezeigt. Dies aber ohne / . :pinch:

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • Wir brauchen den Code zu dem query. Da wird wohl irgendwas falsch sein, bezüglich der Spaltenangabe.



    Habe dir mal das Script auf Pastebin gepackt. Ich hoffe du kannst mir Helfen... bin gerade erst dabei Pawn zu lernen.
    Kann ich auch irgendwie die genaue Uhrzeit in der selben Tabelle/Spalte Speichern? Also so


    2014-05-24 07:56:33


    Pastebin:http://pastebin.com/7LkRJLBh

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • Habe dir mal das Script auf Pastebin gepackt. Ich hoffe du kannst mir Helfen... bin gerade erst dabei Pawn zu lernen.
    Kann ich auch irgendwie die genaue Uhrzeit in der selben Tabelle/Spalte Speichern? Also so



    Ja das ist Möglich du musst jedoch den Datentyp auf date oder timestamp stellen und zusätzlich ein Format angeben in welchem du es haben möchtest, das Format ist jedoch in MySQL festgelegt.
    Ein Beispiel:

    SQL
    `Datum` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'


    Um die Zeit einzutragen gibt es die Funktion

    SQL
    NOW()


    um das Datum in einem anderen Format auszulesen kannst du DATE_FORMAT nutzen
    Beispiel:

    SQL
    DATE_FORMAT(`Datum`, 'Am %%d.%%m.%%Y  um %%T Uhr')
  • do.de - Domain-Offensive - Domains für alle und zu super Preisen