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

  • Hey, ich möchte das so machen, ich möchte noch ein Objekt mit dem selben Befehl bewegen, geht das überhaupt?

    Quellcode

    1. Zolltor2 = CreateDynamicObject(9093, 2178.190185, -2254.855224, 15.883447, 0.000000, 0.000000, 135.000000, -1, -1, -1, 300.00, 300.00);
    2. RangeOfPoint = 2179.1099,-2255.8748,14.7734


    Quellcode

    1. ocmd:zolltor(playerid,params[])
    2. {
    3. if(pInfo[playerid][pJob] ==1)
    4. {
    5. if(!IsPlayerInRangeOfPoint(playerid,10.0,2234.0056,-2216.0217,13.5469)) return 1;
    6. MoveDynamicObjectRot(Zolltor1, 0, 0, 135, true);
    7. SetTimerEx("@checkZone", 3000, 0, "i", playerid); //Alle 3 Sekunden, packste in den Befehl
    8. }else{
    9. SendClientMessage(playerid,-1,"{bc4343}Du bist kein Mitarbeiter vom Zoll und kannst das Tor nicht öffnen.");
    10. }
    11. return 1;
    12. }
    13. @checkZone(i);@checkZone(i)
    14. {
    15. return (!IsPlayerConnected(i) || !IsPlayerInRangeOfPoint(i, 10.0,2234.0056,-2216.0217,13.5469)) ? Zollzu() : SetTimerEx("@checkZone", 3000, 0, "i", i);
    16. }
    17. stock MoveDynamicObjectRot(obj, Float:rX, Float:rY, Float:rZ, bool:open)
    18. {
    19. new Float:x,Float:y,Float:z;
    20. GetDynamicObjectPos(obj,x,y,z);
    21. MoveDynamicObject(obj,x,y,z+((open)?(0.0001):(-0.0001)),0.0001,rX,rY,rZ);
    22. return 1;
    23. }
    24. forward Zollzu ();
    25. public Zollzu ()
    26. {
    27. MoveDynamicObjectRot(Zolltor1, 0, 270, 135, false);
    28. return 1;
    29. }
    Alles anzeigen
  • Hier, jetzt haste ein dynamisches Zoll System:


    C-Quellcode

    1. #define E:: e_z
    2. enum E::Tor
    3. {
    4. E::id,
    5. Float:E::x,
    6. Float:E::y,
    7. Float:E::z,
    8. Float:E::from_rX,
    9. Float:E::from_rY,
    10. Float:E::from_rZ,
    11. Float:E::to_rX,
    12. Float:E::to_rY,
    13. Float:E::to_rZ
    14. };
    15. stock const zollTore[][e_zTor] = {
    16. {Zolltor1, 2234.0056,-2216.0217,13.546, 0.0,270.0,135.0, 0.0,0.0,135.0},
    17. {Zolltor2, 2179.1099,-2255.8748,14.7734, 0.0,0.0,135.0, 0.0,0.0,0.0} //Musst noch angeben, in welche Rotation gedreht werden soll
    18. };
    19. ocmd:zolltor(playerid,params[])
    20. {
    21. if(pInfo[playerid][pJob] != 1) return SendClientMessage(playerid,-1,"{bc4343}Du bist kein Mitarbeiter vom Zoll und kannst das Tor nicht öffnen.");
    22. new i = GetZollStation(playerid);
    23. if(i == -1) return SendClientMessage(playerid,-1,"Du befindest dich an keinem Zoll Tor!");
    24. MoveDynamicObjectRot(zollTore[i][E::id], zollTore[i][E::to_rX], zollTore[i][E::to_rY], zollTore[i][E::to_rZ], true);
    25. SetTimerEx("@checkZone", 3000, 0, "ii", playerid, i);
    26. return 1;
    27. }
    28. stock GetZollStation(playerid)
    29. {
    30. for(new i; i<sizeof(zollTore); i++)
    31. {
    32. if(IsPlayerInRangeOfPoint(playerid,10.0,zollTore[i][E::x],zollTore[i][E::y],zollTore[i][E::z])) return i;
    33. }
    34. return -1;
    35. }
    36. @checkZone(p,i);@checkZone(p,i)
    37. {
    38. return (!IsPlayerConnected(p) || !IsPlayerInRangeOfPoint(p, 10.0,zollTore[i][E::x],zollTore[i][E::y],zollTore[i][E::z])) ? Zollzu(i) : SetTimerEx("@checkZone", 3000, 0, "ii", p,i);
    39. }
    40. stock MoveDynamicObjectRot(obj, Float:rX, Float:rY, Float:rZ, bool:open)
    41. {
    42. new Float:x,Float:y,Float:z;
    43. GetDynamicObjectPos(obj,x,y,z);
    44. MoveDynamicObject(obj,x,y,z+((open)?(0.0001):(-0.0001)),0.0001,rX,rY,rZ);
    45. return 1;
    46. }
    47. forward Zollzu (i);
    48. public Zollzu (i)
    49. {
    50. MoveDynamicObjectRot(zollTore[i][E::id], zollTore[i][E::from_rX], zollTore[i][E::from_rY], zollTore[i][E::from_rZ], false);
    51. return 1;
    52. }
    Alles anzeigen
    Jetzt musst du nur oben in dein Array ein Zolltor hinzufügen und fertig :)


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
  • Ich kann das nicht benutzen, das andee "Zolltor" hat eine andere Objektid. Das 2. Tor hat eine andere Objektid, schlimm?

    Quellcode

    1. (177) : error 008: must be a constant expression; assumed zero
    2. (179) : error 010: invalid function or declaration
    3. (2425) : warning 204: symbol is assigned a value that is never used: "Zolltor2"
    4. Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
    5. 2 Errors.


    Quellcode

    1. new Zolltor1;
    2. new Zolltor2;
    3. enum E::Tor
    4. {
    5. E::id,
    6. Float:E::x,
    7. Float:E::y,
    8. Float:E::z,
    9. Float:E::from_rX,
    10. Float:E::from_rY,
    11. Float:E::from_rZ,
    12. Float:E::to_rX,
    13. Float:E::to_rY,
    14. Float:E::to_rZ
    15. };
    16. stock const zollTore[][e_zTor] = {
    17. {Zolltor1, 2234.0056,-2216.0217,13.546, 0.0,270.0,135.0, 0.0,0.0,135.0},
    18. {Zolltor2, 2179.1099,-2255.8748,19.7734, 0.0,0.0,135.0, 0.0,0.0,0.0} //Musst noch angeben, in welche Rotation gedreht werden soll
    19. };
    Alles anzeigen

    Quellcode

    1. Zolltor1 = CreateDynamicObject(968, 2231.835205, -2213.075439, 13.255665, 0.000000, 270, 135.000000, -1, -1, -1, 300.00, 300.00);
    2. Zolltor2 = CreateDynamicObject(9093, 2178.190185, -2254.855224, 15.883447, 0.000000, 0.000000, 135.000000, -1, -1, -1, 300.00, 300.00);
    //EDIT
    ich will noch bei Zolltor2 ein Ingamesound abspielen. Und sind ja nur die 2 Tore lohnt sich das, dafür es dynamisch zu machen?
  • BrightLeaN schrieb:

    Ich kann das nicht benutzen, das andee "Zolltor" hat eine andere Objektid. Das 2. Tor hat eine andere Objektid, schlimm?
    Nein ist es nicht.

    Sry hab vergessen, dass das so in Pawn ja nicht geht, schreib es mal so:

    C-Quellcode

    1. #define E:: e_z
    2. enum E::Tor
    3. {
    4. Float:E::x,
    5. Float:E::y,
    6. Float:E::z,
    7. Float:E::from_rX,
    8. Float:E::from_rY,
    9. Float:E::from_rZ,
    10. Float:E::to_rX,
    11. Float:E::to_rY,
    12. Float:E::to_rZ
    13. };
    14. stock const zollTore[][e_zTor] = {
    15. {2234.0056,-2216.0217,13.546, 0.0,270.0,135.0, 0.0,0.0,135.0},
    16. {2179.1099,-2255.8748,14.7734, 0.0,0.0,135.0, 0.0,0.0,0.0} //Musst noch angeben, in welche Rotation gedreht werden soll
    17. };
    18. new ZollTor[2];
    19. ocmd:zolltor(playerid,params[])
    20. {
    21. if(pInfo[playerid][pJob] != 1) return SendClientMessage(playerid,-1,"{bc4343}Du bist kein Mitarbeiter vom Zoll und kannst das Tor nicht öffnen.");
    22. new i = GetZollStation(playerid);
    23. if(i == -1) return SendClientMessage(playerid,-1,"Du befindest dich an keinem Zoll Tor!");
    24. MoveDynamicObjectRot(ZollTor[i], zollTore[i][E::to_rX], zollTore[i][E::to_rY], zollTore[i][E::to_rZ], true);
    25. SetTimerEx("@checkZone", 3000, 0, "ii", playerid, i);
    26. return 1;
    27. }
    28. stock GetZollStation(playerid)
    29. {
    30. for(new i; i<sizeof(zollTore); i++)
    31. {
    32. if(IsPlayerInRangeOfPoint(playerid,10.0,zollTore[i][E::x],zollTore[i][E::y],zollTore[i][E::z])) return i;
    33. }
    34. return -1;
    35. }
    36. @checkZone(p,i);@checkZone(p,i)
    37. {
    38. return (!IsPlayerConnected(p) || !IsPlayerInRangeOfPoint(p, 10.0,zollTore[i][E::x],zollTore[i][E::y],zollTore[i][E::z])) ? Zollzu(i) : SetTimerEx("@checkZone", 3000, 0, "ii", p,i);
    39. }
    40. stock MoveDynamicObjectRot(obj, Float:rX, Float:rY, Float:rZ, bool:open)
    41. {
    42. new Float:x,Float:y,Float:z;
    43. GetDynamicObjectPos(obj,x,y,z);
    44. MoveDynamicObject(obj,x,y,z+((open)?(0.0001):(-0.0001)),0.0001,rX,rY,rZ);
    45. return 1;
    46. }
    47. forward Zollzu (i);
    48. public Zollzu (i)
    49. {
    50. MoveDynamicObjectRot(ZollTor[i], zollTore[i][E::from_rX], zollTore[i][E::from_rY], zollTore[i][E::from_rZ], false);
    51. return 1;
    52. }
    Alles anzeigen


    und die Zuweisung mit den Objekten machst du dann so:

    PAWN-Quellcode

    1. ZollTor[0] = CreateDynamicObject(...); //da wo du jetzt ZollTor1 hast
    2. //und dann eben das selbe nochmal für ZollTor[1]

    BrightLeaN schrieb:

    ich will noch bei Zolltor2 ein Ingamesound abspielen.
    Nur da, oder bei beiden?

    Im Endeffekt, wenn du wirklich nur 2 ZollTore haben willst...ist das System n bisschen over...aber im Endeffekt spielt das jetzt keine Rolle.


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
  • Mal eine Kurze frage habe nun ein fehler bei mir endreckt.

    PAWN-Quellcode

    1. format(string,sizeof(string),"%s{FFFFFF}: %s", a_rang[sort[i][0]-1], GetName([sort[i][1]]);




    PAWN-Quellcode

    1. C:\Users\Patrik\Desktop\Reallife\gamemodes\Reallife.pwn(23630) : warning 225: unreachable code
    2. C:\Users\Patrik\Desktop\Reallife\gamemodes\Reallife.pwn(29169) : error 029: invalid expression, assumed zero
    3. C:\Users\Patrik\Desktop\Reallife\gamemodes\Reallife.pwn(29169) : warning 215: expression has no effect
    4. C:\Users\Patrik\Desktop\Reallife\gamemodes\Reallife.pwn(29169) : error 001: expected token: ";", but found "]"
    5. C:\Users\Patrik\Desktop\Reallife\gamemodes\Reallife.pwn(29169) : error 029: invalid expression, assumed zero
    6. C:\Users\Patrik\Desktop\Reallife\gamemodes\Reallife.pwn(29169) : fatal error 107: too many error messages on one line


    Komisch warum spinnt das ?
  • Dr. Frauenarzt schrieb:

    format(string,sizeof(string),"%s{FFFFFF}: %s", a_rang[sort[ i][0]-1], GetName([sort[i ][1]]);
    Weil da zu viele komische Klammern sind und eine zu wenig xD

    PAWN-Quellcode

    1. format(string,sizeof(string),"%s{FFFFFF}: %s", a_rang[sort[i][0]-1], GetName(sort[i][1]));


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
  • Danke und Frohe Weihnachten :D

    Habs gerade gesehn und mal verglichen :D

    Ich wollte meine gekochten Fische anzeigen lassen aber iwie funktioniert das nicht :(

    //Funktioniert nicht

    PAWN-Quellcode

    1. ocmd:cooked(playerid)
    2. {
    3. SendClientMessage(playerid, COLOR_WHITE, "|____________________Fische____________________|");
    4. for(new i=1, string[128]; i<6; i++)
    5. {
    6. if(PlayerInfo[playerid][pCookID][i] == -1) format(string, sizeof(string), "** (%d) Fisch: Nicht vorhanden", i);
    7. else format(string, sizeof(string), "{AFAFAF}** (%d) Fisch: %s (%d LBS)", i, Fische[PlayerInfo[playerid][pFishID][i]], PlayerInfo[playerid][pCookHP][i]);
    8. SendClientMessage(playerid, COLOR_WHITE, "|______________________________________________|");
    9. }
    10. return 1;
    11. }
    Alles anzeigen

    //Funktioniert

    PAWN-Quellcode

    1. ocmd:cook(playerid, params[])
    2. {
    3. new fishID, string[128];
    4. if(sscanf(params, "i", fishID))return SendClientMessage(playerid, COLOR_WHITE, "{247BA6}* Benutze: {00CC00}/cook [Fisch Nummer]");
    5. if(fishID<1||fishID>5)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Wähle einen Fisch zwischen 1-5 aus.");
    6. if(!IsAtCookPlace(playerid))return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Hier kannst du nicht kochen.");
    7. if(PlayerInfo[playerid][pFishID][fishID] != -1)
    8. {
    9. for(new cookID=1;cookID<MAX_FISHING_FISHES;cookID++)
    10. {
    11. if(PlayerInfo[playerid][pCookID][cookID] == -1)
    12. {
    13. PlayerInfo[playerid][pCookID][cookID] = PlayerInfo[playerid][pFishID][fishID];
    14. PlayerInfo[playerid][pFishID][fishID] = -1;
    15. PlayerInfo[playerid][pCookHP][cookID] = PlayerInfo[playerid][pFishweight][fishID]/3;
    16. format(string, sizeof(string), "{33CCFF}%s mit %d LBS gekocht. (Gibt dir %dHP)", Fische[PlayerInfo[playerid][pCookID][cookID]], PlayerInfo[playerid][pFishweight][fishID], PlayerInfo[playerid][pCookHP][cookID]);
    17. SendClientMessage(playerid, COLOR_WHITE, string);
    18. return 1;
    19. }
    20. }
    21. return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Keinen freien Platz zum Kochen!");
    22. }
    23. else if(PlayerInfo[playerid][pFishID][fishID] == -1)
    24. {
    25. SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Diesen Fisch besitzt du nicht.");
    26. }
    27. return 1;
    28. }
    Alles anzeigen

  • Naja wen ich Fische Koche funktioniert es nicht mehr Log:

    PAWN-Quellcode

    1. [debug] Run time error 4: "Array index out of bounds"
    2. [debug] Attempted to read/write array element at negative index -1
    3. [debug] AMX backtrace:
    4. [debug] #0 001400dc in public ocmd_cooked (0, 50662360) from Reallife.amx
    5. [debug] #1 native CallLocalFunction () from samp-server.exe
    6. [debug] #2 00007a2c in public OnPlayerCommandText (0, 50662328) from Reallife.amx


    Der Index ist normal -1 wen er keine Besitzt normal.
    Naturlich wen er welche kocht wird das geändert.
  • Hi hab ein problem auf einmal wird der string vom tacho nicht angezeigt.
    Nur die durchsichtige box.
    Wenn ich in ein Fahrzeug ein steige dann kommt die BOX wenn ich aussteige geht sie auch wieder weg aber die box erscheint nur ohne string

    PAWN-Quellcode

    1. new Text:Tacho[MAX_PLAYERS];
    2. forward SekundenTimer6();



    Funktion

    PAWN-Quellcode

    1. if(newstate == PLAYER_STATE_DRIVER){
    2. gLastCar[playerid] = GetPlayerVehicleID(playerid);
    3. /*format(string,sizeof(string),"~y~Name: \t~w~%s~n~~g~KM/H:\t~w~ 0~n~~g~Benzin:\t~w~ %d", VehNames[GetVehicleModel(GetPlayerVehicleID(playerid))-400], Gas[GetPlayerVehicleID(playerid)]);
    4. TextDrawShowForPlayer(playerid, Tacho[playerid]);*/
    5. format(string,sizeof(string),"~w~Geschw: \t~g~0 km/h ~n~~w~Benzin:\t~g~ %d%%~n~~w~Fahrzeug:\t~p~ %s",Gas[GetPlayerVehicleID(playerid)],VehNames[GetVehicleModel(GetPlayerVehicleID(playerid))-400]);
    6. TextDrawShowForPlayer(playerid, Tacho[playerid]);
    7. new newcar = GetPlayerVehicleID(playerid);
    8. new typ = IsAutohausCar(newcar);
    9. new GATyp = IsGangAutohausCar(newcar);
    10. if(GetVehicleModel(newcar) == 447 || GetVehicleModel(newcar) == 425 || GetVehicleModel(newcar) == 432)
    11. {
    12. if(IsACop(playerid) && OnDuty[playerid] == 1 || PlayerInfo[playerid][pAdminOnDuty] == 1)
    13. {
    14. }
    15. else
    16. {
    17. SendClientMessage(playerid, COLOR_YELLOW, "Du kannst in dieses Fahrzeug nicht einsteigen, du wurdest gekickt");
    18. Kick(playerid);
    19. }
    20. }
    Alles anzeigen

    PAWN-Quellcode

    1. public SekundenTimer6()
    2. {
    3. new string[850],
    4. Float:maxspeed = 200.0,
    5. playername[MAX_PLAYER_NAME],
    6. value,
    7. Float:xX,
    8. Float:yY,
    9. Float:zZ,
    10. Float:X,
    11. Float:Y,
    12. Float:Z;
    13. ForAllPlayers(i){if(IsPlayerConnected(i) && gPlayerLogged[i] && !IsPlayerNPC(i) && AFKModus[i] == 0){
    14. new VID = GetPlayerVehicleID(i);
    15. if(IsPlayerInAnyVehicle(i)){
    16. GetVehiclePos(VID, xX, yY, zZ);
    17. GetVehicleVelocity(VID, X, Y, Z);
    18. value = floatround(floatsqroot((X*X) + (Y*Y) + (Z*Z)) * 100 * 1.40);
    19. if(GetPlayerState(i) == 2){
    20. GetVehicleVelocity(GetPlayerVehicleID(i) ,X, Y, Z);
    21. value = floatround(floatsqroot((X*X) + (Y*Y) + (Z*Z)) * 100 * 1.40);
    22. if(value > maxspeed && PlayerInfo[i][pSQLID] != 1 && PlayerInfo[i][pSQLID] != 2){
    23. new tmpcar = GetPlayerVehicleID(i);
    24. if(!IsAPlane(tmpcar)){
    25. GetPlayerName(i, playername, sizeof(playername));
    26. format(string, sizeof(string), "AdmWarnung: %s(ID: %d) verdacht auf Speedhack, Km/h %d.", playername, i, value, i);
    27. SendAdminMessage(COLOR_KNALLROT, 1, string);
    28. }
    29. }
    30. }
    31. if(TakingLesson[i] == 2)
    32. {
    33. if(value > 75)
    34. {
    35. format(string,sizeof(string),"Du fährst zuschnell, bitte fahre Langsamer (70 km/h) %d/10 Strafpunkte",PlayerInfo[i][pStrafpunktefs]);
    36. SendClientMessage(i,COLOR_RED,string);
    37. PlayerInfo[i][pStrafpunktefs] ++;
    38. }
    39. if(PlayerInfo[i][pStrafpunktefs] == 10)
    40. {
    41. SendClientMessage(i,COLOR_KNALLROT,"Du hast die Prüfung nicht bestanden, Grund 10/10 Strafpunkte.");
    42. RemovePlayerFromVehicle(i);
    43. SetVehicleToRespawn(GetPlayerVehicleID(i));
    44. SetPlayerPos(i,1209.7849,-1724.6807,13.5632);
    45. CP[i] = 0;
    46. DisablePlayerCheckpoint(i);
    47. TakingLesson[i] = 0;
    48. }
    49. }
    50. if(IsABoat(VID) || IsAFahrrad(VID))
    51. {
    52. //format(string,sizeof(string),"~y~Name:\t\t~w~%s~n~~g~KM/H:\t\t~w~ %d", VehNames[GetVehicleModel(VID)-400], value);
    53. //format(string, sizeof(string), "~g~Km/h:~w~ %d",value);
    54. //TextDrawSetString(Tacho[i], string);
    55. format(string,sizeof(string),"~w~Geschw: \t\t~g~%d km/h ~n~~w~Fahrzeug:\t\t~p~ %s",value,VehNames[GetVehicleModel(VID)-400]);
    56. TextDrawSetString(Tacho[i], string);
    57. }
    58. else if(IsAPlane(VID))
    59. {
    60. new Float:cx,Float:cy,Float:cz;
    61. GetVehiclePos(VID,cx, cy, cz);
    62. format(string, sizeof(string), "%f",cz);
    63. //new Hohe = strval(string);
    64. //format(string,sizeof(string),"~y~Name:\t\t~w~%s~n~~g~KM/H:\t\t~w~ %d~n~~g~Hohe:\t\t~w~ %d ~g~Meter", VehNames[GetVehicleModel(VID)-400], value, Hohe);
    65. //format(string, sizeof(string), "~g~Km/h:~w~ %d ~g~Hohe:~w~ %d ~g~Meter",value,Hohe);
    66. //TextDrawSetString(Tacho[i], string);
    67. format(string,sizeof(string),"~w~Geschw: \t\t~g~%d km/h~n~~w~Fahrzeug:\t\t~p~ %s",value,VehNames[GetVehicleModel(VID)-400]);
    68. TextDrawSetString(Tacho[i], string);
    69. }
    70. else
    71. {
    72. new Speed[20];
    73. if(value >= 0 && value <= 75){Speed = "~g~";}
    74. if(value > 75){Speed = "~r~";}
    75. new Tank[20];
    76. if(Gas[VID] > 10 && Gas[VID] <= 20){Tank = "~y~";}
    77. if(Gas[VID] <= 10){Tank = "~r~";}
    78. if(Gas[VID] > 20){Tank = "~g~";}
    79. //format(string,sizeof(string),"~y~Name:\t\t~w~%s~n~~g~KM/H:\t\t%s %d~n~~g~Benzin:\t\t%s %d", VehNames[GetVehicleModel(VID)-400], Speed, value, Tank, Gas[VID]);
    80. //format(string, sizeof(string), "~g~Km/h:%s %d%~g~ Benzin:%s %d", Speed, value, Tank, Gas[VID]);
    81. //TextDrawSetString(Tacho[i], string);
    82. VehSpeed[VID] = value;
    83. format(string,sizeof(string),"~w~Geschw: \t~g~%s %d km/h~n~~w~Benzin: \t~g~%s %d%%~n~~w~Fahrzeug:\t~p~ %s",Speed, value, Tank, Gas[VID],VehNames[GetVehicleModel(VID)-400]);
    84. TextDrawSetString(Tacho[i], string);
    85. }
    86. }
    87. else
    88. {
    89. TextDrawHideForPlayer(i, Tacho[i]);
    90. }
    Alles anzeigen

    edit//

    mit dem befehl ändert sich der string:

    ocmd:testtacho(playerid,params[]){
    TextDrawSetString(Tacho[playerid], "Guck mal ich bin ein Tacho HIHI");
    return 1;
    }

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

  • Kaliber schrieb:

    Im Endeffekt, wenn du wirklich nur 2 ZollTore haben willst...ist das System n bisschen over...aber im Endeffekt spielt das jetzt keine Rolle.
    Ja ich möchte es da doch so lassen, ich habe dein Code für Beamten Tore benutzt, danke!
    Weil da werde ich viel mehr haben.

    Also wie mache ich das dann bei den jetzt so, ich möchte es hierbei simple lassen sind ja nur die 2 Tore.
    Und, dass ich dann auch einen Sound bei Zolltor2 einfügen kann :D

    PAWN-Quellcode

    1. Zolltor2 = CreateDynamicObject(9093, 2178.190185, -2254.855224, 15.883447, 0.000000, 0.000000, 135.000000, -1, -1, -1, 300.00, 300.00);
    2. RangeOfPoint = 2179.1099,-2255.8748,14.7734


    PAWN-Quellcode

    1. ocmd:zolltor(playerid,params[])
    2. {
    3. if(pInfo[playerid][pJob] ==1)
    4. {
    5. if(!IsPlayerInRangeOfPoint(playerid,10.0,2234.0056,-2216.0217,13.5469)) return 1;
    6. MoveDynamicObjectRot(Zolltor1, 0, 0, 135, true);
    7. SetTimerEx("@checkZone", 3000, 0, "i", playerid); //Alle 3 Sekunden, packste in den Befehl
    8. }else{
    9. SendClientMessage(playerid,-1,"{bc4343}Du bist kein Mitarbeiter vom Zoll und kannst das Tor nicht öffnen.");
    10. }
    11. return 1;
    12. }
    13. @checkZone(i);@checkZone(i)
    14. {
    15. return (!IsPlayerConnected(i) || !IsPlayerInRangeOfPoint(i, 10.0,2234.0056,-2216.0217,13.5469)) ? Zollzu() : SetTimerEx("@checkZone", 3000, 0, "i", i);
    16. }
    17. stock MoveDynamicObjectRot(obj, Float:rX, Float:rY, Float:rZ, bool:open)
    18. {
    19. new Float:x,Float:y,Float:z;
    20. GetDynamicObjectPos(obj,x,y,z);
    21. MoveDynamicObject(obj,x,y,z+((open)?(0.0001):(-0.0001)),0.0001,rX,rY,rZ);
    22. return 1;
    23. }
    24. forward Zollzu ();
    25. public Zollzu ()
    26. {
    27. MoveDynamicObjectRot(Zolltor1, 0, 270, 135, false);
    28. return 1;
    29. }
    Alles anzeigen
  • LOG:

    Verstehe nicht warum das nicht Funktioniert :/

    PAWN-Quellcode

    1. [debug] Run time error 4: "Array index out of bounds"
    2. [debug] Attempted to read/write array element at negative index -255
    3. [debug] AMX backtrace:
    4. [debug] #0 0012bf84 in public ocmd_accept (0, 50487812) from Reallife.amx
    5. [debug] #1 native CallLocalFunction () from samp-server.exe
    6. [debug] #2 000079a4 in public OnPlayerCommandText (0, 50487756) from Reallife.amx




    Paket Akzeptieren:

    PAWN-Quellcode

    1. else if(strcmp(option, "paket", true) == 0)
    2. {
    3. if(pAcceptPaket[playerid] != -255)
    4. {
    5. if(IsLoggedIn(pAcceptPaket[playerid]))
    6. {
    7. if(PlayerInfo[playerid][pErstehilfe] == 1)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du hast bereits ein Erstehilfe-Paket.");
    8. new Float:pos[3];
    9. GetPlayerPos(pAcceptPaket[playerid], pos[0], pos[1], pos[2]);
    10. if(!IsPlayerInRangeOfPoint(playerid, 4.0, pos[0], pos[1], pos[2]))return SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}* Du bist nicht in der Nöhe vom Sanitäter.");
    11. GiveMoney(playerid, -pPaketPrice[playerid]);
    12. format(string, sizeof(string), "{33CCFF}* %s hat dein Erste-Hilfe-Paket für $%d gekauft.", GetName(playerid), pPaketPrice[playerid]);
    13. SendClientMessage(pAcceptPaket[playerid], COLOR_WHITE, string);
    14. format(string,sizeof(string),"~w~Paket verkauft~n~~g~%d$", pPaketPrice[playerid]);
    15. GameTextForPlayer(playerid, string, 5000, 1);
    16. format(string, sizeof(string), "{33CCFF}* Du hast für $%d ein Erste-Hilfe-Paket von %s gekauft.", pPaketPrice[playerid], GetName(pAcceptPaket[playerid]));
    17. SendClientMessage(playerid, COLOR_WHITE, string);
    18. SendClientMessage(playerid, COLOR_WHITE,"{33CCFF}* Mit /erstehilfe kannst du deine Wunden Versorgen.");
    19. pAcceptPaket[playerid] = -255;
    20. Frak[5][frakKasse] += pPaketPrice[playerid];
    21. PlayerInfo[playerid][pErstehilfe] = 1;
    22. PlayerInfo[pAcceptPaket[playerid]][pJobMoney] += pPaketPrice[playerid];
    23. }
    24. }
    25. else
    26. {
    27. SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du hast keine Angebot erhalten!");
    28. return 1;
    29. }
    Alles anzeigen


    Ein Paket Verkaufen


    PAWN-Quellcode

    1. ocmd:paket(playerid, params[])
    2. {
    3. if(!IsLoggedIn(playerid))return 1;
    4. new pID, geld, Float:pos[3], string[128];
    5. if(PlayerInfo[playerid][pFraktion] != 5)return SendClientMessage(playerid, COLOR_WHITE, ERROR_FRAKTION);
    6. if(sscanf(params, "ud", pID, geld))return SendClientMessage(playerid, COLOR_WHITE, "{247BA6}* Benutze: {00CC00}/paket [SpielerID/Name] [Preis (1-500$)]");
    7. if(geld < 1 || geld > 500) return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Preis muss zwischen 1$ und 500$ liegen!");
    8. if(!IsPlayerConnected(pID))return SendClientMessage(playerid, COLOR_WHITE,"{AFAFAF}Dieser Spieler ist nicht Online.");
    9. //if(pID == playerid)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du kannst dir selber kein Erstehilfe-Paket geben.");
    10. if(IsPlayerNPC(pID))return 1;
    11. GetPlayerPos(pID, pos[0], pos[1], pos[2]);
    12. if(!IsPlayerInRangeOfPoint(playerid, 4.0, pos[0], pos[1], pos[2]))return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Spieler befindet sich nicht in deiner Nähe.");
    13. pAcceptPaket[pID] = playerid;
    14. pPaketPrice[pID] = geld;
    15. format(string, sizeof(string), "{33CCFF}Du hast %s ein Erstehilfe-Paket für %d$ angeboten.", GetName(pID), geld);
    16. SendClientMessage(playerid, COLOR_WHITE, string);
    17. format(string, sizeof(string), "{33CCFF}Sanitäter %s bietet dir ein Erste-Hilfe-Paket für %d$ an. Benutze /accept Paket", GetName(playerid), geld);
    18. SendClientMessage(pID, COLOR_WHITE, string);
    19. return 1;
    20. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Dr. Frauenarzt ()

  • @Dr.Frauenarzt: Du hast es mit den negativen Index. In Zeile 19 vom oberen Code setzt du pAccept[playerid] auf -255. In Zeile 22 versuchst du auf den Index zuzugreifen, der in der Variable pAccept[playerid] ist. Da diese -255 beträgt, greifst du auf einen negativen Index zu, den es in PAWN nicht gibt.

    Generell empfehle ich dir, in den PAWNO Ordner eine pawn.cfg zu erstellen und dort -d3 reinzuschreiben. Dadurch erhälst du von crashdetect detailiertere Fehlerinformationen. Für Testzwecke bzw. um Fehler zu finden eignet sich das durchaus.
  • habe ich eben gemacht die pawn.cfg erstellt und -d3 reingeschrieben.

    Laut der Infomation des Logs zeigt er mir die Zeile:

    PAWN-Quellcode

    1. PlayerInfo[pAcceptPaket[playerid]][pJobMoney] += pPaketPrice[playerid];


    Log:

    PAWN-Quellcode

    1. [debug] Run time error 4: "Array index out of bounds"[debug] Attempted to read/write array element at negative index -255[debug] AMX backtrace:[debug] #0 00150818 in public ocmd_accept (playerid=0, params[]=@02f7d1e8 "paket") at C:\Users\Patrik\Desktop\Reallife\gamemodes\Reallife.pwn:22887[debug] #1 native CallLocalFunction () from samp-server.exe[debug] #2 00008df0 in public OnPlayerCommandText (playerid=0, cmdtext[]=@02f7d1b0 "/accept paket") at C:\Users\Patrik\Desktop\Reallife\pawno\include\ocmd.inc:77



    //E:

    Logisch wen ich so unschau bin und lasse ihn das reseten vorher und dann gebe ich ihm das :D
    Fehler behoben
  • Abbas schrieb:

    Hi hab ein problem auf einmal wird der string vom tacho nicht angezeigt.
    Entweder das Limit an Textdraws wurde erreicht, oder du löschst das Textdraw versehentlich irgendwo, das wären meine zwei ehesten Vermutungen.
    Ich tippe aber auf Grund der Nutzung von TextDrawCreate auf ersteres.

    Nutze für ein solches Vorhaben PlayerTextDraws.
    wiki.sa-mp.com/wiki/CreatePlayerTextDraw
  • Jeffry schrieb:

    Entweder das Limit an Textdraws wurde erreicht, oder du löschst das Textdraw versehentlich irgendwo, das wären meine zwei ehesten Vermutungen.
    Ich tippe aber auf Grund der Nutzung von TextDrawCreate auf ersteres
    hi hab gerde noch geschafft tzd danke,.

    es war zu lang und wurde solang geschrieben dann konnte man es nicht sehen.