[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
  • auf welches Fahrzeug er geklickt hat, um so weitere Informationen zu übergeben.

    In OnDialogResponse:new count;
    for (new fV; fV < MAX_FVEHS; fV ++)
    {
    if (fVehicle[fV][vehFraktion] == PlayerInfo[playerid][pFraktion])
    {
    if (Vehicle[fVehicle[fV][vehID]][vehAbgeschleppt] == 1)
    {
    if(count == listitem)
    {
    //Fahrzeug fV wurde angeklickt.
    break;
    }
    count++;
    }
    }
    }


  • C:\Users\Patrick\Desktop\Reallife Script\gamemodes\German.pwn(2775) : error 001: expected token: ";", but found ":"
    C:\Users\Patrick\Desktop\ Reallife Script\gamemodes\German.pwn(2775) : error 029: invalid expression, assumed zero
    C:\Users\Patrick\Desktop\Reallife Script\gamemodes\German.pwn(2775) : warning 215: expression has no effect
    C:\Users\Patrick\Desktop\Reallife Script\gamemodes\German.pwn(2775) : error 001: expected token: ";", but found ":"
    C:\Users\Patrick\Desktop\Reallife Script\gamemodes\German.pwn(2775) : fatal error 107: too many error messages on one line



    if(Spieler[playerid][pFraktion] == 9 || Spieler[playerid][pFraktion] == 10 || Spieler[playerid][pFraktion] == 12 || Spieler[playerid][pFraktion] == 13)
    {
    new model = (Spieler[playerid][pFraktion] == 9) ? 18659 : 18667 : 18663 : 18665; //Fehler Zeile


    Weiß jemand warum habe mehrere Fraktionen Eingetragen aber irgendwie klappt das nicht so...

  • Weiß jemand warum habe mehrere Fraktionen Eingetragen aber irgendwie klappt das nicht so...

    Schreib es so:

    C
    new model;
    switch(Spieler[playerid][pFraktion])
    {
        case 9: model = 18659;
        case 10: model = 18667;
        case 12: model = 18663;
        case 13: model = 18665;
    }

    ast2ufdyxkb1.png


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

  • Beitrag von Baduv ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: rausgefunden ().
  • Einer eine Ahnung, warum das nicht klappt?
    #include "\source\libraries\includes.pwn"


    Struktur unter Gamemodes:
    source -> libraries -> darin die includes.pwn

    Wo genau ist der Ordner? Im includes Ordner?
    Das erste \ ist unnötig, und du kannst einfach normale / verwenden.


    Also so:

    #include "source/libraries/includes.pwn"

  • Klappt trotzdem nicht. Btw, man kann .pwn verwenden, hatten wir damals bei Arcadia-Life auch.

    Also ich habs bei mir so:

    #include "../gamemodes/sources/includes"

    Und das funktioniert.
    Ich denke mal man kann nur .inc verwenden, weiß nicht wie du .pwn verwendest hast.

  • Hab es jetzt. Jetzt aber mal zu einer anderen Frage. Ich lagere wirklich alle Möglichkeiten aus dem Hauptgamemode aus, um diese auf einzelne Dateien zu verteilen, da mir dieser Style besser gefällt.
    #include "../gamemodes/source/libraries/includes.pwn"//Alle Includes, die der Server verwendet
    #include "../gamemodes/source/libraries/colors.pwn"//Alle SA:MP Color sowie HTML Color Codes
    #include "../gamemodes/source/libraries/dialogs.pwn"//Alle Dialoge, die der Server verwendet


    //Functions - (Funktionen)
    #include "../gamemodes/source/functions/mysql.pwn"//Aufbau der MySQL Verbindung &' MySQL Verbindungsdaten
    #include "../gamemodes/source/functions/settings.pwn" //Einstellungen, mit denen der Server hochgefahren wird
    #include "../gamemodes/source/functions/setup.pwn" //Funktion, um den Server einzurichten



    Sagen wir, ich möchte jetzt in der mysql.pwn die Gamemode Funktion OnGameModeInit ansprechen. Damals hatte ich es so geregelt, dass ich in der mysql.pwn einen forward erstelle, beispielweise MySQL_OnGameModeInIt(); und diese Funktion in den Hauptgamemode unter OnGameModeInit einbinde. Das gefällt mir aber nicht so.


    Ist es möglich, die Funktion in der mysql.pwn so zu schreiben, dass ich keine Eintragung im Hauptgamemode vornehmen muss, damit diese Funktion beispielweise aufgerufen wird?
    @Kaliber
    @Jeffry

    Einmal editiert, zuletzt von Fernandez_ ()

  • Verstehe das noch nicht so ganz. Dann muss ich dennoch in den Hauptgamemode unter OnGameModeInit Code schreiben, oder?


    Zumindest ist das mein Output.
    //For more info on ALS Hooking check
    //http://forum.sa-mp.com/showthread.php?t=85907


    //--------------OnGameModeInit Hook-------------------


    public OnGameModeInit()
    {
    //your OnGameModeInit pre code here


    //function hook checks


    if (funcidx("mysql_OnGameModeInit") != -1)
    {
    return CallLocalFunction("mysql_OnGameModeInit", "");
    }
    //your OnGameModeInit post code here


    return 1;
    }


    #if defined _ALS_OnGameModeInit
    #undef OnGameModeInit
    #else
    #define _ALS_OnGameModeInit
    #endif
    #define OnGameModeInit mysql_OnGameModeInit
    forward mysql_OnGameModeInit();


  • Verstehe das noch nicht so ganz. Dann muss ich dennoch in den Hauptgamemode unter OnGameModeInit Code schreiben, oder?


    Zumindest ist das mein Output.
    //For more info on ALS Hooking check//http://forum.sa-mp.com/showthread.php?t=85907//--------------OnGameModeInit Hook-------------------public OnGameModeInit(){//your OnGameModeInit pre code here//function hook checksif (funcidx("mysql_OnGameModeInit") != -1){return CallLocalFunction("mysql_OnGameModeInit", "");}//your OnGameModeInit post code herereturn 1;}#if defined _ALS_OnGameModeInit#undef OnGameModeInit#else#define _ALS_OnGameModeInit#endif#define OnGameModeInit mysql_OnGameModeInitforward mysql_OnGameModeInit();

    Nimm lieber y_hooks.


    https://github.com/pawn-lang/YSI


    http://ysi.wikia.com/wiki/Library:YSI%5Cy_hooks#y_hooks

  • Hi ich frage mich gerade ob es möglich wäre ein Dialog als Liste zu machen der jeden spieler mit einer bestimmten anforderung anzeigt


    z.B. alle spieler in einem radius von 12 units um den ausführenden spieler herum in einer Liste, bestimmt geht das irgendwie mit einer format funktion und einer spieler schleife bin mir aber nicht sicher wie

    SA:MP in 2020?

  • bestimmt geht das irgendwie mit einer format funktion und einer spieler schleife bin mir aber nicht sicher wie

    Ja richtig, mit diesen Funktionen macht man das :D


    ast2ufdyxkb1.png


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

  • Bei OnDialogResponse den inputtext abfragen, und der inputtext ist dann der ausgewählte Spielername.
    Dann könntest du diese Funktion verwenden um die playerid vom Spieler herauszufinden:

    GetPlayerFromName(playername[])
    {
    foreach(new i : Player)
    {
    new playername2[MAX_PLAYER_NAME];
    GetPlayerName(i, playername2, sizeof(playername2));
    if(strcmp(playername2, playername, true, strlen(playername)) == 0) return i;
    }
    return INVALID_PLAYER_ID;
    }