[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
  • DestroyVehicle sollte ebenfalls gehookt werden.

    Stimmt, das hab ich vergessen...


    Ne, das mit dem Standard setzen find ich bescheuert..weil ist ja eh immer XYZ1234 oder sowas..und man kann ja einfach prüfen ob die Funktion was leeres wiedergibt, dann setzt man halt das Standard Ding..ansonsten das Nummernschild, das wesentlich effizienter :)

    ast2ufdyxkb1.png


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

  • Ne, das mit dem Standard setzen find ich bescheuert..weil ist ja eh immer XYZ1234 oder sowas..und man kann ja einfach prüfen ob die Funktion was leeres wiedergibt, dann setzt man halt das Standard Ding..ansonsten das Nummernschild, das wesentlich effizienter

    Das macht aber nicht immer Sinn.
    Angenommen in einem Dialog möchte ich alle Fahrzeuge mit deren Nummernschild anzeigen, habe aber nie SetVehicleNumberPlate genutzt. Dann gibt der Dialog nichts aus, oder, wenn man dort dann das Nummernschild setzt, ändert es sich weg vom Standard (wäre reiner Zufall das gleiche Schild zu bekommen).


    CreateVehicle (etc) zu hooken und dort ein random Kennzeichen zu genererieren macht den Code nicht wirklich uneffizienter. Ob man das jetzt selbst im eigenen Code macht, oder es in der Include steht, spielt keine Rolle, nur dass letzteres weniger Aufwand für den User ist und ersterem gegenüber effizienter ist, da ein Funktionsaufruf weniger notwendig wird.


    Um immer richtige Ergebnisse zu bekommen gehört das meiner Meinung nach dazu.

  • Das macht aber nicht immer Sinn.
    Angenommen in einem Dialog möchte ich alle Fahrzeuge mit deren Nummernschild anzeigen, habe aber nie SetVehicleNumberPlate genutzt. Dann gibt der Dialog nichts aus, oder, wenn man dort dann das Nummernschild setzt, ändert es sich weg vom Standard (wäre reiner Zufall das gleiche Schild zu bekommen).

    C
    new string[512],plate[32];
    for(new i=GetVehiclePoolSize(); i!=0; i--)
    {
        format(plate,32,GetVehicleNumberPlate(i));
        format(string,sizeof(string),"%sID: %d | Plate: %s",string,i,((plate[0]==EOS)?("XYZ1234"):(plate)));
    }
    ShowPlayerDialog(..., string, ...);

    So meinte ich das...
    und da dieses Nummernschild anfangs immer das selbe ist..brauchste nichts hooken..

    ast2ufdyxkb1.png


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

  • So meinte ich das...

    Ich habe es grade mal überprüft. Das Standard-Plate ist tatsächlich immer das gleiche, und zwar: XYZSR998


    Dann kannste es aber noch viel einfacher machen, und zwar beim CreateVehicle (etc) das Property einfach auf den Wert setzen.
    Das ist wesentlich geschickter, als die Prüfung auf einen leeren String überall einzubauen.


    Oder optional dennoch das Random-Plate mit dort einbauen (per define ein-/ausschaltbar), damit im eingeschalteten Fall nicht alle Fahrzeuge das gleiche Nummernschild haben.


    Gut, muss beides nicht sein, aber den Standardwert zu setzen würde sicher nicht schaden.

  • aber den Standardwert zu setzen würde sicher nicht schaden.

    Oki, hier dann:



    Soo jetzt müsste alles gut sein ^^

    ast2ufdyxkb1.png


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

  • er soll auch die account und die scheine auslesen die in einer anderen tabelle sind... kann mir da einer helfen ?


    • SELECT * FROM accounts, accounts_scheine WHERE userID;
    • //error
    • [SQL]SELECT * FROM accounts, accounts_scheine WHERE userID;
      [Err] 1052 - Column 'userID' in where clause is ambiguous

  • indem du den aktuellen timestamp + die gebannte zeit in sekunden angibst und in der datenbank speicherst. Beim connevten/login fragst du einfach ab ob der aktuelle timestamp höher als der aus der Datenbank ist, wenn nicht ist er noch gebannt.


    Ganz grob. :)

  • indem du den aktuellen timestamp + die gebannte zeit in sekunden angibst und in der datenbank speicherst. Beim connevten/login fragst du einfach ab ob der aktuelle timestamp höher als der aus der Datenbank ist, wenn nicht ist er noch gebannt.


    Ganz grob. :)

    Könntest du mir da ggf. helfen?


    //edit


    wo ist mein Fehler?


    stock FraktionName(frakid)
    {
    new var = frakid;
    new frakname[256];
    switch(var)
    {
    case 0:{frakname = "Bürger";}
    case 1:{frakname = "San Andreas Police Department";}
    }
    return 1;
    }

    Einmal editiert, zuletzt von Marschl ()

  • Würde die Ladefunktion vom Spieler und er Fraktion so funktionieren?




  • kann mir jemand dabei noch helfen -.-

    beim ucp sollen auch die scheine angezeigt werden von dem user mit der userid

    Nutze zwei Select Queries nacheinander im Code, einmal für die erste Tabelle und einmal für die zweite Tabelle.


    Alternativ kannst du mit einem JOIN arbeiten, das kommt drauf an welche Daten in den Tabellen stehen, ob das Sinn macht.

    er soll auch die account und die scheine auslesen die in einer anderen tabelle sind... kann mir da einer helfen ?


    • SELECT * FROM accounts, accounts_scheine WHERE userID;
    • //error
    • [SQL]SELECT * FROM accounts, accounts_scheine WHERE userID;[Err] 1052 - Column 'userID' in where clause is ambiguous
  • wie kann ich machen das das



    switch(Spieler[playerid][pAdmin])
    {
    case 1: format(string,sizeof(string),"Meldung: %s geht in den Probe Supporterdienst.",SpielerName(playerid));
    case 2: format(string,sizeof(string),"Meldung: %s geht in den Supportdienst.",SpielerName(playerid));
    case 3: format(string,sizeof(string),"Meldung: %s geht in den Support Leitungsdienst.",SpielerName(playerid));
    case 4: format(string,sizeof(string),"Meldung: %s geht in den Admindienst.",SpielerName(playerid));
    case 5: format(string,sizeof(string),"Meldung: %s geht in den Super Admindienst.",SpielerName(playerid));
    case 6: format(string,sizeof(string),"Meldung: %s geht in den CommunityManager Dienst.",SpielerName(playerid));
    case 7: format(string,sizeof(string),"Meldung: %s geht in den Admindienst.",SpielerName(playerid));
    case 8: format(string,sizeof(string),"Meldung: %s geht in den Admindienst.",SpielerName(playerid));
    }


    zu jedem spieler der auf den server is im chat steht


    also das da halt im chat steht das der jenige in den admin dienst gegangen is und auch zb als Supporter in den dienst gegangen is

  • also so dann



    switch(Spieler[playerid][pAdmin])
    {
    case 1: format(string,sizeof(string),"Meldung: %s geht in den Probe Supporterdienst.",SpielerName(playerid));
    SendClientMessageToAll(0xFFFFFFFF, string);
    case 2: format(string,sizeof(string),"Meldung: %s geht in den Supportdienst.",SpielerName(playerid));
    SendClientMessageToAll(0xFFFFFFFF, string);
    case 3: format(string,sizeof(string),"Meldung: %s geht in den Support Leitungsdienst.",SpielerName(playerid));
    SendClientMessageToAll(0xFFFFFFFF, string);
    case 4: format(string,sizeof(string),"Meldung: %s geht in den Admindienst.",SpielerName(playerid));
    SendClientMessageToAll(0xFFFFFFFF, string);
    case 5: format(string,sizeof(string),"Meldung: %s geht in den Super Admindienst.",SpielerName(playerid));
    SendClientMessageToAll(0xFFFFFFFF, string);
    case 6: format(string,sizeof(string),"Meldung: %s geht in den CommunityManager Dienst.",SpielerName(playerid));
    SendClientMessageToAll(0xFFFFFFFF, string);
    case 7: format(string,sizeof(string),"Meldung: %s geht in den Admindienst.",SpielerName(playerid));
    SendClientMessageToAll(0xFFFFFFFF, string);
    case 8: format(string,sizeof(string),"Meldung: %s geht in den Admindienst.",SpielerName(playerid));
    SendClientMessageToAll(0xFFFFFFFF, string);
    }

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