[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
  • Was solle da schlimm daran sein?


    Da ist nur drinn:



    mehr ist da nicht vorhanden?

  • Okay, ist eine eigene Color Include.


    Durchsuche halt mal all deine Includes nach CreateVehicle.


    Vielleicht findest du ja irgendwo was, wo die Funktion gehookt wird.

    ast2ufdyxkb1.png


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

  • Beitrag von Jameso ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Problem gelöst ().
  • Hab ein Actor der heißt new Actor1;.
    Ich weiß nicht was der hat, dem geht es nicht gut.


    Was kann ich machen, damit er mal auf der Stelle bleibt und nicht wegsurft, wenn ich ihn anfahre :D

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

  • Huhu,
    ich bin ja aktuell dabei ein Haussystem zu scripten.
    Ich wollte jetzt anfangen mit dem Interiorsystem, habe jedoch eine Probleme bzw. Fragen dazu:


    1. Nehmen wir an, ich mappe einen eigenen Interior für ein Haus. Muss ich jetzt trotzdem per SetPlayerInterior den Interior wechseln, oder kann diese einfach 0 bleiben, da ich ja eh eine VW setze.
    2. Ich habe gesehen, dass man die VirtualWorlds(VW) auf den selben Wert setzen soll, der die HausID ist(damit jeder nur die Leute im selben Haus sieht). Wenn ich dann jedoch ein Haus und eine Biz mit der ID 1 habe, wie gehe ich vor? Oder kann ich das außer Beachtung lassen, da die Ints sowieso alle an unterschiedl. Positionen sind?
    Ich danke schonmal wie immer im Voraus.



    //e:
    Zu BrightLeaN:
    Ich hab dass zwar selbst noch nicht gebraucht, jedoch könntest du ihn mithilfe eines Timers wieder auf seine alte Position setzen.
    Oder immer wenn ein neuer Spieler den Actor lädt (OnActorSteamIn) diesen zurück auf seine Position setzen.

    MfG. Adrian

    Einmal editiert, zuletzt von SkeeZy ()

  • 1. Nehmen wir an, ich mappe einen eigenen Interior für ein Haus. Muss ich jetzt trotzdem per SetPlayerInterior den Interior wechseln, oder kann diese einfach 0 bleiben, da ich ja eh eine VW setze.

    Solange die InteriorID von den Objekten des Interiors auch in keinem Interior sind, brauchst du das nicht. Kann also bei 0 bleiben.



    2. Ich habe gesehen, dass man die VirtualWorlds(VW) auf den selben Wert setzen soll, der die HausID ist(damit jeder nur die Leute im selben Haus sieht). Wenn ich dann jedoch ein Haus und eine Biz mit der ID 1 habe, wie gehe ich vor? Oder kann ich das außer Beachtung lassen, da die Ints sowieso alle an unterschiedl. Positionen sind?

    Wenn ein Haus und ein Biz das gleiche Interior haben kann, dann solltest du einfach bei Biz's einfach als Virtual World 1000 + ID nehmen, dann kommt es zu keinen Überschneidungen.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Code
    stock GarageSpeichern()
    {
    	for(new garageid = 0; garageid < sizeof(gInfo); garageid++)
    	{
    		new query[256];
    		mysql_format(handle,query,sizeof(query),"UPDATE `garage` Set `Lock`='%d',`Mechaniker`='%d' WHERE `ID`='%d'",
    		gInfo[garageid][gLock],gInfo[garageid][gMechaniker],gInfo[garageid][db_gid]);
    		mysql_pquery(handle,query);
    	}
    }

    Ich lasse diesen stock unter OnGameModeExit aufrufen, ist das falsch?
    Der soll das ja speichern, wenn der Server sich schließt.


    Ich checke MySQL so oft nicht.
    Werde geärgert, der Log sagt mir dazu nichts...

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

  • Code
    stock GarageSpeichern()
    {
    	for(new garageid = 0; garageid < sizeof(gInfo); garageid++)
    	{
    		new query[256];
    		mysql_format(handle,query,sizeof(query),"UPDATE `garage` Set `Lock`='%d',`Mechaniker`='%d' WHERE `ID`='%d'",
    		gInfo[garageid][gLock],gInfo[garageid][gMechaniker],gInfo[garageid][db_gid]);
    		mysql_pquery(handle,query);
    	}
    }

    Ich lasse diesen stock unter OnGameModeExit aufrufen, ist das falsch?
    Der soll das ja speichern, wenn der Server sich schließt.


    Ich checke MySQL so oft nicht.
    Werde geärgert, der Log sagt mir dazu nichts...

    Lass dir per prinft ausgeben ob die stock überhaupt aufgerufen wird wenn du den Server schließt, steht dann ja in der Log ^^

  • Also Problem ist gefunden.
    Wenn ich den Server instant schließe, heißt das Fenster der Konsole schließe, exited er den Gamemode nicht.


    Wenn ich gmx benutzte geht es, zumindest wird es aufgerufen...
    Er speichert mir den Wert in der ersten Datenbank Zeile, muss ID ein primary Key sein?

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

  • Wenn ich den Server instant schließe, heißt das Fenster der Konsole schließe, exited er den Gamemode nicht.

    Einfach "exit" in die Konsole eintragen.

    Er speichert mir den Wert in der ersten Datenbank Zeile, muss ID ein primary Key sein?

    Was heißt "er speichert dir den Wert in der ersten Datenbankzeile" ?
    Nur die Erste oder alles in der ersten ?

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

    Margarete Stokowski

  • Guten Abend,
    ich brauche mal wieder eure Hilfe, ich bin wohl gerade zu "Dumm" diesen Fehler zu finden ...
    Meine Server Log Spuckt mir aus:

    Server Log:
    [debug] Run time error 4: "Array index out of bounds"
    [debug] Attempted to read/write array element at index 65535 in array of size 1000
    [debug] AMX backtrace:
    [debug] #0 00008080 in main (0, 577720) in Script.amx


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

    new rows, strDialog[512], strArt[64] = "{FFFFFF}Name:\tRang[Level]\tStatus\n";
    new Cache:result = mysql_query(Handle, "SELECT `Name`, `Adminrang`, `LastOnline` FROM `PLAYERS` WHERE `Adminrang` > 0 ORDER BY `Adminrang` DESC LIMIT 0, 15");
    cache_get_row_count(rows);

    if(rows)
    {
    new admName[25], admRang, LastOnline[30];

    for(new i; i < rows; i++){
    cache_get_value_name(i, "Name", admName, 25);
    cache_get_value_name(i, "LastOnline", LastOnline, 30);
    cache_get_value_name_int(i, "Adminrang", admRang);

    new isOnline = GetID(admName);

    if(IsPlayerConnected(isOnline) && PlayerInfo[isOnline][LoggedIn]){
    format(strDialog, sizeof(strDialog), "%s{FFFFFF}%s\t%s[%d]\t{00CC00}• {FFFFFF}Online", strDialog, admName, GetPlayerAdminRang(isOnline), admRang);
    }else{
    format(strDialog, sizeof(strDialog), "%s{FFFFFF}%s\t%s[%d]\t%s", strDialog, admName, GetPlayerAdminRang(isOnline), admRang, LastOnline);
    }
    strcat(strArt, strDialog);
    printf("DEBUG - String:\n%s", strDialog);
    }
    cache_delete(result);

    ShowPlayerDialog(playerid, DIA_ERROR, DIALOG_STYLE_TABLIST_HEADERS, "{CC6600}"#SERVER_NAME" {FFFFFF}- Teammitglieder", strDialog, "Schließen", "");
    }
    return 1;
    }


    Erkennt einer von euch den Fehler und kann mir diesen Fehler ebenfalls auch erklären?

    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.

  • Guten Abend,
    ich brauche mal wieder eure Hilfe, ich bin wohl gerade zu "Dumm" diesen Fehler zu finden ...
    Meine Server Log Spuckt mir aus:
    Server Log:[debug] Run time error 4: "Array index out of bounds"[debug] Attempted to read/write array element at index 65535 in array of size 1000[debug] AMX backtrace:[debug] #0 00008080 in main (0, 577720) in Script.amx Script der Befehl dazu:CMD:admins(playerid, params[]){ if(!PlayerInfo[playerid][LoggedIn])return NO_CONYOURSELF new rows, strDialog[512], strArt[64] = "{FFFFFF}Name:\tRang[Level]\tStatus\n"; new Cache:result = mysql_query(Handle, "SELECT `Name`, `Adminrang`, `LastOnline` FROM `PLAYERS` WHERE `Adminrang` > 0 ORDER BY `Adminrang` DESC LIMIT 0, 15"); cache_get_row_count(rows); if(rows) { new admName[25], admRang, LastOnline[30]; for(new i; i < rows; i++){ cache_get_value_name(i, "Name", admName, 25); cache_get_value_name(i, "LastOnline", LastOnline, 30); cache_get_value_name_int(i, "Adminrang", admRang); new isOnline = GetID(admName); if(IsPlayerConnected(isOnline) && PlayerInfo[isOnline][LoggedIn]){ format(strDialog, sizeof(strDialog), "%s{FFFFFF}%s\t%s[%d]\t{00CC00}• {FFFFFF}Online", strDialog, admName, GetPlayerAdminRang(isOnline), admRang); }else{ format(strDialog, sizeof(strDialog), "%s{FFFFFF}%s\t%s[%d]\t%s", strDialog, admName, GetPlayerAdminRang(isOnline), admRang, LastOnline); } strcat(strArt, strDialog); printf("DEBUG - String:\n%s", strDialog); } cache_delete(result); ShowPlayerDialog(playerid, DIA_ERROR, DIALOG_STYLE_TABLIST_HEADERS, "{CC6600}"#SERVER_NAME" {FFFFFF}- Teammitglieder", strDialog, "Schließen", ""); } return 1;}


    Erkennt einer von euch den Fehler und kann mir diesen Fehler ebenfalls auch erklären?

    Überprüfe mal deine MySQL Datenbank und die Tabellen.


    Einen anderen Fehler kann ich jetzt nicht erkennen.

  • Wahrscheinlich ist diese Zeile das Problem, da du versuchst in deinem Array auf den Loginstatus von INVALID_PLAYER_ID (65535) zu kriegen.
    if(IsPlayerConnected(isOnline) && PlayerInfo[isOnline][LoggedIn])


    Versuch Mal nur zu prüfen ob der Spieler verbunden ist, und dann in einem weiteren if-Statement fragst du dem Loginstatus vom Spieler ab. (Sofern dieser online ist)

  • Kann man nicht theoretisch ein gutes Blinker-System erstellen?


    https://wiki.sa-mp.com/wiki/UpdateVehicleDamageStatus


    Mit dieser Funktion kann man ja z.B vorne links und vorne rechts die Lichter zerstören ( https://wiki.sa-mp.com/wiki/LightStates ).
    Ist so etwas möglich, oder brauch ich es erst gar nicht ausprobieren? Habe es noch nie gesehen, deswegen ist mir das skeptisch...

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

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