Angepinnt [SAMMELTHREAD] Kleine Scripting Fragen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hallo, folgendes Problem:
    Mit diesem Befehl wird eine Liste aufgelistet, welche Fraktionsfahrzeuge alles abgeschleppt sind. Das Problem was sich mir jetzt stellt ist, dass ich nicht genau weiß, wie ich abfrage, auf welches Fahrzeug er geklickt hat, um so weitere Informationen zu übergeben.

    Quellcode

    1. CMD:freefraccar(playerid, params[])
    2. {
    3. new string[256], dialog[526], vehicleName[30], cars;
    4. if (!PlayerInfo[playerid][pFraktion]) return SendClientMessageEx(playerid, COLOR_GRAD1, "Du gehörst keiner Fraktion an.");
    5. if (PlayerInfo[playerid][pFraktion] >= 1 && PlayerInfo[playerid][pFraktion] <= 7) return SendClientMessageEx(playerid, COLOR_GRAD1, "Fahrzeuge deiner Fraktion können nicht abgeschleppt werden.");
    6. string = "";
    7. dialog = "";
    8. format(string, sizeof(string), "Fahrzeug\tKosten\n");
    9. strcat(dialog, string);
    10. for (new fV; fV < MAX_FVEHS; fV ++)
    11. {
    12. if (fVehicle[fV][vehFraktion] == PlayerInfo[playerid][pFraktion])
    13. {
    14. if (Vehicle[fVehicle[fV][vehID]][vehAbgeschleppt] == 1)
    15. {
    16. format(vehicleName, sizeof(vehicleName), "%s", VehicleName[GetVehicleModel(fVehicle[fV][vehID])-400]);
    17. TowedInfo[playerid][tListItem][cars];
    18. TowedInfo[playerid][tVehID][cars] = fVehicle[fV][vehID];
    19. TowedInfo[playerid][tCarPrice][cars] = fVehicle[fV][vehAbgeschlepptPrice];
    20. format(TowedInfo[playerid][tCarName][cars], 30, "%s", vehicleName);
    21. format(TowedInfo[playerid][tCarPolite][cars], 25, "%s", fVehicle[fV][vehAbgeschlepptPreis]);
    22. format(TowedInfo[playerid][tTowedDate][cars], 15, "%s", fVehicle[fV][vehAbgeschlepptDatum]);
    23. format(string, sizeof(string), "{FF0000}%s\t%d$\n", vehicleName, fVehicle[fV][vehAbgeschlepptPrice]);
    24. strcat(dialog, string);
    25. cars ++;
    26. }
    27. }
    28. }
    29. if (!cars) return SendClientMessageEx)playerid, COLOR_GRAD1, "Es sind keine Fraktionsfahrzeuge abgeschleppt.");
    30. if (cars) ShowPlayerDialog(playerid, DIALOG_FREEFRAKCAR, DIALOG_STYLE_TABLIST_HEADERS, "Verwahrstelle", dialog, "Befreien", "Abbruch");
    31. return 1;
    32. }
    Alles anzeigen

    Beitrag von Nima.Yaghobi ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Fernandez_ schrieb:

    auf welches Fahrzeug er geklickt hat, um so weitere Informationen zu übergeben.
    In OnDialogResponse:

    PAWN-Quellcode

    1. new count;
    2. for (new fV; fV < MAX_FVEHS; fV ++)
    3. {
    4. if (fVehicle[fV][vehFraktion] == PlayerInfo[playerid][pFraktion])
    5. {
    6. if (Vehicle[fVehicle[fV][vehID]][vehAbgeschleppt] == 1)
    7. {
    8. if(count == listitem)
    9. {
    10. //Fahrzeug fV wurde angeklickt.
    11. break;
    12. }
    13. count++;
    14. }
    15. }
    16. }
    Alles anzeigen
  • PAWN-Quellcode

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


    PAWN-Quellcode

    1. if(Spieler[playerid][pFraktion] == 9 || Spieler[playerid][pFraktion] == 10 || Spieler[playerid][pFraktion] == 12 || Spieler[playerid][pFraktion] == 13)
    2. {
    3. 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...
  • Dr. Frauenarzt schrieb:

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

    C-Quellcode

    1. new model;
    2. switch(Spieler[playerid][pFraktion])
    3. {
    4. case 9: model = 18659;
    5. case 10: model = 18667;
    6. case 12: model = 18663;
    7. case 13: model = 18665;
    8. }


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

    Beitrag von Baduv ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: rausgefunden ().
  • Fernandez_ schrieb:

    Einer eine Ahnung, warum das nicht klappt?

    PAWN-Quellcode

    1. #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:

    PAWN-Quellcode

    1. #include "source/libraries/includes.pwn"
    Ich helfe zu allen Fragen bezüglich PAWN Scripting gerne weiter.
    Ich biete auch einen Scripting Service an: Scripting Service

    Konversation: Konversation starten

    Discord: LeonMrBonnie#2251


  • Fernandez_ schrieb:

    LeonMrBonnie schrieb:

    Dann so:

    PAWN-Quellcode

    1. #include "../gamemodes/source/libraries/includes.pwn"

    Du musst die Datei aber zu .inc umbenennen, da man keine .pwn includen kann.
    Klappt trotzdem nicht. Btw, man kann .pwn verwenden, hatten wir damals bei Arcadia-Life auch.
    Also ich habs bei mir so:

    PAWN-Quellcode

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

    Und das funktioniert.
    Ich denke mal man kann nur .inc verwenden, weiß nicht wie du .pwn verwendest hast.
    Ich helfe zu allen Fragen bezüglich PAWN Scripting gerne weiter.
    Ich biete auch einen Scripting Service an: Scripting Service

    Konversation: Konversation starten

    Discord: LeonMrBonnie#2251

  • 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.

    PAWN-Quellcode

    1. #include "../gamemodes/source/libraries/includes.pwn"//Alle Includes, die der Server verwendet
    2. #include "../gamemodes/source/libraries/colors.pwn"//Alle SA:MP Color sowie HTML Color Codes
    3. #include "../gamemodes/source/libraries/dialogs.pwn"//Alle Dialoge, die der Server verwendet
    4. //Functions - (Funktionen)
    5. #include "../gamemodes/source/functions/mysql.pwn"//Aufbau der MySQL Verbindung &' MySQL Verbindungsdaten
    6. #include "../gamemodes/source/functions/settings.pwn" //Einstellungen, mit denen der Server hochgefahren wird
    7. #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

    Dieser Beitrag wurde bereits 1 mal 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.

    PAWN-Quellcode

    1. //For more info on ALS Hooking check
    2. //http://forum.sa-mp.com/showthread.php?t=85907
    3. //--------------OnGameModeInit Hook-------------------
    4. public OnGameModeInit()
    5. {
    6. //your OnGameModeInit pre code here
    7. //function hook checks
    8. if (funcidx("mysql_OnGameModeInit") != -1)
    9. {
    10. return CallLocalFunction("mysql_OnGameModeInit", "");
    11. }
    12. //your OnGameModeInit post code here
    13. return 1;
    14. }
    15. #if defined _ALS_OnGameModeInit
    16. #undef OnGameModeInit
    17. #else
    18. #define _ALS_OnGameModeInit
    19. #endif
    20. #define OnGameModeInit mysql_OnGameModeInit
    21. forward mysql_OnGameModeInit();
    Alles anzeigen
  • Fernandez_ schrieb:

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

    Zumindest ist das mein Output.

    PAWN-Quellcode

    1. //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.

    github.com/pawn-lang/YSI

    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
    Mit freundlichen Grüßen