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

  • Also ich seh da jetzt keinen Fehler.
    Poste am besten mal den ganzen Callback.

    (Übrigens noch:
    Erstelle die Variablen nicht im Loop, sondern davor, sonst werden die immer neu erstellt, und das ist unnötig)
    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

  • LeonMrBonnie schrieb:

    Also ich seh da jetzt keinen Fehler.
    Poste am besten mal den ganzen Callback.

    (Übrigens noch:
    Erstelle die Variablen nicht im Loop, sondern davor, sonst werden die immer neu erstellt, und das ist unnötig)

    Quellcode

    1. public OnLoadTanke(){
    2. new rows;
    3. cache_get_row_count(rows);
    4. for(new i = 0; i < rows; i++){
    5. new string[128], id = i+1;
    6. cache_get_value_name_int(i, "id", tankInfo[id][id_x]);
    7. cache_get_value_name_int(i, "t_typ", tankInfo[id][t_typ]);
    8. cache_get_value_name_float(i, "t_x", tankInfo[id][t_x]);
    9. cache_get_value_name_float(i, "t_y", tankInfo[id][t_y]);
    10. cache_get_value_name_float(i, "t_z", tankInfo[id][t_z]);
    11. cache_get_value_name_float(i, "t_range", tankInfo[id][t_range]);
    12. cache_get_value_name_float(i, "benzin_vol", tankInfo[id][benzin_vol]);
    13. cache_get_value_name_float(i, "diesel_vol", tankInfo[id][diesel_vol]);
    14. cache_get_value_name_float(i, "gas_vol", tankInfo[id][gas_vol]);
    15. cache_get_value_name_float(i, "kerosin_vol", tankInfo[id][kerosin_vol]);
    16. cache_get_value_name_float(i, "benzin_preis", tankInfo[id][benzin_preis]);
    17. cache_get_value_name_float(i, "diesel_preis", tankInfo[id][diesel_preis]);
    18. cache_get_value_name_float(i, "gas_preis", tankInfo[id][gas_preis]);
    19. cache_get_value_name_float(i, "kerosin_preis", tankInfo[id][kerosin_preis]);
    20. if(bInfo[i][biz_typ] == 1){
    21. if(tankInfo[id][t_typ] == 0){
    22. format(string, sizeof(string), "{00AFFF}%s\n\nBenzin: {FFFFFF}%0.2f €\n{00AFFF}Diesel: {FFFFFF}%0.2f €\n{00AFFF}Erdgas: {FFFFFF}%0.2f €", bInfo[i][biz_name], tankInfo[id][benzin_preis], tankInfo[id][diesel_preis], tankInfo[id][gas_preis]);
    23. }else{
    24. format(string, sizeof(string), "{00AFFF}%s\n\nKerosin: {FFFFFF}%0.2f €", bInfo[i][biz_name], tankInfo[id][benzin_preis]);
    25. }
    26. tankLabel[i] = Create3DTextLabel(string, COLOR_WHITE, tankInfo[id][t_x], tankInfo[id][t_y], tankInfo[id][t_z], 10, 0, 0);
    27. }
    28. }
    29. return 1;
    30. }
    Alles anzeigen
    Wie gesagt, eig. ist der restliche Code Irrelevant, weil wenn ich bis new string[128], id = i+1; alles entferne, dann funktioniert mein Tacho, sobald aber die aller erste Zeile mit dem cache ... id drinne steht geht mein Tacho nicht mehr. Also wird nicht mehr angezeigt.

    //EDIT also ich habe nun die Zeile mit der id als letztes gemacht (unter den letzten cache) und nun funktionierts ... WoW

    MfG
    XonarZ
  • Ich komme nicht mehr zurück, in den Drive By Modus. Wieso?

    PAWN-Quellcode

    1. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    2. {
    3. if(newkeys & KEY_CROUCH && GetPlayerState(playerid) == PLAYER_STATE_PASSENGER)
    4. {
    5. if((gettime()-DriveByCount[playerid]) > DRIVEBY_COUNT)
    6. {
    7. new tick = GetTickCount();
    8. if(tick - g_TickPushed[playerid] < DOUBLE_CLICK_TIME)
    9. {
    10. g_Weapon[playerid] = GetPlayerWeapon(playerid);
    11. g_Count[playerid] = REARMED_WEAPON_UPDATES;
    12. ApplyAnimation(playerid,"PED","facanger",4.1,0,1,1,1,1);
    13. SetPlayerArmedWeapon(playerid, 0);
    14. DriveByCount[playerid] = gettime();
    15. }
    16. g_TickPushed[playerid] = tick;
    17. SendClientMessage(playerid, COLOR_GREY, "Du kannst den DriveBy Modus mit der Taste 'H' wieder verlassen.");
    18. }
    19. else
    20. {
    21. new string[128];
    22. format(string, sizeof(string),"Du kannst in %d Sekunden wieder in den Drive By Modus gehen.", (gettime()-DriveByCount[playerid]));
    23. SendClientMessage(playerid, COLOR_GREY, string);
    24. return 1;
    25. }
    26. }
    27. return 1;
    28. }
    29. public OnPlayerUpdate(playerid)
    30. {
    31. if(g_Count[playerid])
    32. {
    33. if(--g_Count[playerid] == 0)
    34. {
    35. SetPlayerArmedWeapon(playerid, g_Weapon[playerid]);
    36. }
    37. }
    38. return 1;
    39. }
    Alles anzeigen
  • Ich hab leider ein weiteres Problem ...

    Quellcode

    1. ...selfmade.pwn(1150) : warning 213: tag mismatch
    2. ...selfmade.pwn(1150) : warning 213: tag mismatch
    3. ...selfmade.pwn(1150) : warning 213: tag mismatch
    4. ...selfmade.pwn(1155) : warning 213: tag mismatch
    5. ...selfmade.pwn(1155) : error 032: array index out of bounds (variable "tInfo")
    6. Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
    7. 1 Error.



    Zeile 1150:

    PAWN-Quellcode

    1. if(!IsPlayerInRangeOfPoint(playerid, 5, tInfo[tID][i_x], tInfo[tID][i_y], tInfo[tID][i_z])) return SCM(playerid, COLOR_BLUE, "[INFO] {FFFFFF}Du bist nicht in der nähe vom Bezahlpunkt");

    Zeile 1155:

    PAWN-Quellcode

    1. tInfo[tID][biz_kasse] += pInfo[playerid][tankkosten];

    tInfo Enum:

    PAWN-Quellcode

    1. enum tankData{
    2. t_id,
    3. t_typ,
    4. Float:t_x,
    5. Float:t_y,
    6. Float:t_z,
    7. Float:t_range,
    8. Float:benzin_vol,
    9. Float:diesel_vol,
    10. Float:gas_vol,
    11. Float:kerosin_vol,
    12. Float:benzin_preis,
    13. Float:diesel_preis,
    14. Float:gas_preis,
    15. Float:kerosin_preis,
    16. id_x
    17. }
    18. new tInfo[20][tankData];
    Alles anzeigen
    Ich hab schon wieder nen brett vorm kopf ...

    MfG
    XonarZ

    Beitrag von Jorrow ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Kurze frage an euch...


    Wen ich ein Notruf annehme ja..
    Sollte ein Gametext erscheinen Wieviel sekunden er noch Zeit hat bis die Person "Respawnt"


    Quellcode

    1. ocmd:notruf(playerid, params[])
    2. {
    3. new pID;
    4. if(PlayerInfo[playerid][pFraktion] != 5)return SendClientMessage(playerid, COLOR_WHITE, ERROR_FRAKTION);
    5. if(sscanf(params, "u", pID))return SendClientMessage(playerid, COLOR_WHITE, "{247BA6}* Benutze: {00FF00}/notruf [SpielerID/Name]");
    6. if(PlayerInfo[pID][pTot] <= 0)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Spieler ist nicht tot.");
    7. SetPlayerCheckpointEx(playerid, PlayerInfo[pID][pTotX], PlayerInfo[pID][pTotY], PlayerInfo[pID][pTotZ], 3.0, CP_SANI, INVALID_CHECKPOINT_TYPE);
    8. GameTextForPlayer(playerid, "~w~notruf~n~~r~redmarker", 5000, 1);
    9. return 1;
    10. }
    Alles anzeigen

    PAWN-Quellcode

    1. PlayerInfo[playerid][pTotUnix]
    das kann man verwenden wielange er noch im krankenhaus ist.
  • Ja...wieso machst du das nicht einfach? :D

    PAWN-Quellcode

    1. new string[128];
    2. format(string,sizeof(string),"Spieler ist noch %d Sekunden im Krankenhaus!", PlayerInfo[pID][pTotUnix]-gettime());
    3. GameTextForPlayer(playerid, string, 5000, 5);


    Aber ich empfehle dir ein TextDraw oder sowas...GameTexte sind eigentlich immer sehr ungeeignet :)


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

  • Hier sind die einzelnen Werte (markiert)


    Number of vehicle models: 5
    OnNormalCarsLoad wurde aufgerufen
    [xVehicle] 2 vehicle loaded.
    [xVehicle] 0 vehicle loaded.
    wid wert 5
    ID ist 2

    [debug] Run time error 4: "Array index out of bounds"
    [debug] Attempted to read/write array element at index 65535 in array of size 2000
    [debug] AMX backtrace:
    [debug] #0 0006518c in ?? (5, 1926440, 1, 1141493789, -996284512, 1099415840, 1124079062, 1, 1) from cops.amx
    [debug] #1 0004e918 in public OnDialogResponse (0, 37, 1, -1, 1926436) from cops.amx
    Programmieren: 1% Programmieren, 99% Bugs Fixen
  • JacLos schrieb:

    Attempted to read/write array element at index 65535 in array of size 2000
    Schau mal diese Zeile an, was sagt uns das?

    array of size 2000. Das bedeutet du hast irgendwo ein Array mit MAX_VEHICLES deklariert

    und versuchst auf den index 65535 zuzugreifen.

    65535 entspricht INVALID_PLAYER_ID.

    Ich kenn jetzt deinen Code nicht, schau doch einfach mal die einzelnen Variablen an und überlege, welcher den Wert INVALID_PLAYER_ID haben könnte :)


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

    Beitrag von XonarZ ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Probleme gelöst. Das Problem war wieder das Ding vor dem Bildschirm *facepalm* ().
  • Kaliber schrieb:

    Schau mal diese Zeile an, was sagt uns das?
    array of size 2000. Das bedeutet du hast irgendwo ein Array mit MAX_VEHICLES deklariert

    und versuchst auf den index 65535 zuzugreifen.

    65535 entspricht INVALID_PLAYER_ID.

    Ich kenn jetzt deinen Code nicht, schau doch einfach mal die einzelnen Variablen an und überlege, welcher den Wert INVALID_PLAYER_ID haben könnte :)

    Hab jetzt mal den Fehlerbereich eingegrenzt indem ich einen neuen Array MAX_USER_CARS erstellt habe, (der andere array war

    aus einem Include)


    Quellcode

    1. #define MAX_USER_CARS 311
    2. MAX_USER_CARS wird dafür benutzt
    3. newxVehicle[MAX_USER_CARS][xv_data],xVeh[MAX_USER_CARS],
    4. offerTimer[MAX_PLAYERS],
    5. Iterator:xVehicles<MAX_USER_CARS>,
    6. Iterator:xVehicleKeys<MAX_USER_CARS, MAX_USER_CARS>;


    Wüsste jetzt auch nicht wie ich herausfinden könnte welcher wert denn jetzt Invalid ist

    [xVehicle] 3 vehicle loaded.
    [xVehicle] 2 vehicle loaded.
    [debug] Run time error 4: "Array index out of bounds"
    [debug] Attempted to read/write array element at index 65535 in array of size 311
    [debug] AMX backtrace:
    [debug] #0 00065004 in ?? (4, 1491104, 1, 1141493789, -996284512, 1099415840, 1124079062, 1, 1) from cops.amx
    [debug] #1 0004e7e8 in public OnDialogResponse (0, 37, 1, -1, 1491100) from cops.amx
    Programmieren: 1% Programmieren, 99% Bugs Fixen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von JacLos ()

  • Guten Abend,
    hat jemand zufällig den passenden Code, damit der "Zug" (Fahrzeug ID: 538) am Bahnhof Los Santos steht (nähe der Grove Street Tanke), bei mir steht er immer so,
    dass die Wagons im Tunnel stehen oder nicht am Bahnsteg stehen.

    Mein Code:

    Quellcode

    1. AddStaticVehicleEx(538, 1778.9557,-1954.0214,13.5469,269.6546, 1, 1, -1);

    Hoffe jemand hat den richtigen.

    MfG.
  • Neu

    PAWN-Quellcode

    1. public OnPlayerCommandPerformed(playerid, cmdtext[], success)
    2. {
    3. if(success)
    4. {
    5. if(PlayerInfo[playerid][lastcommand]>gettime()) return SendClientMessage(playerid,-1,"* Please wait before using this command again.");
    6. else
    7. {
    8. PlayerInfo[playerid][lastcommand] = gettime()+10000;
    9. return 1;
    10. }
    11. }
    12. return SendClientMessage(playerid,COLOR_RED,"Unkown Command: Use /Commands for help");
    13. }
    Alles anzeigen



    Kann immernoch Befehle Spammen,

    hatte das Problem schon mal in anderer Form und war schon damals so nicht zu lösen,

    jemand ne Idee?
    Programmieren: 1% Programmieren, 99% Bugs Fixen