Angepinnt [SAMMELTHREAD] Kleine Scripting Fragen

  • Der Befehl klappt super, aber wenn ich z.B. 3 Punkte schreibe, werden nur 2 wiedergegeben, wieso?

    Quellcode

    1. if(strcmp(cmd, "/text", true) == 0)
    2. {
    3. if(IsPlayerConnected(playerid))
    4. {
    5. new length = strlen(cmdtext);
    6. while ((idx < length) && (cmdtext[idx] <= ' '))
    7. {
    8. idx++;
    9. }
    10. new offset = idx;
    11. new result[64];
    12. while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    13. {
    14. result[idx - offset] = cmdtext[idx];
    15. idx++;
    16. }
    17. result[idx - offset] = EOS;
    18. if(!strlen(result))
    19. {
    20. SendClientMessage(playerid, F_Gray, "Befehl: /text [Text]");
    21. return 1;
    22. }
    23. format(string, sizeof(string), "(( %s ))", result);
    24. SendClientMessage(playerid, F_Lightblue, string);
    25. }
    26. return 1;
    27. }
    Alles anzeigen
    //Edit: Weiß einer von euch woran das liegt? @Jeffry @Kaliber

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

  • Marcel_Colbetti schrieb:

    Wie kann man es machen, dass man kein Geld Cheaten kann?
    Gibt es da eine simple Lösung?
    Eine Variable machen & vor jedem GivePlayerMoney(); die Variable auf 1 setzen. Ein Timer muss dann nurnoch jede Sekunde abfragen ob jemand Geld bekommen hat, wenn ja -> War die Variable auf 1 ? Wenn nein -> Ban

    Oder du machst einen neuen GivePlayerMoney Befehl der die Variable automatisch auf 1 setzt.
  • Neu

    Marcel_Colbetti schrieb:

    Gibt es da eine simple Lösung?
    Nein, außer du blockierst alles, was dir vom Spiel her Geld gibt bzw. Geld abzieht (Ammu-Nation, Casino, Stunt Bonus, Restaurants, Pay'N'Spray, ...).
    Andernfalls ist es ziemlich aufwändig, alle Eventualitäten abzufangen.

    Ich habe auf meinem Server die Anti-Money-Hack Funktion über Jahre immer wieder verbessert und erweitert, eine 100%'ige Sicherheit kann aber nicht gewährleistet werden, vor allem wenn man sein Geld einfriert und Geld an Stationen ausgibt, die nicht Code-Seitig (oben genannte) das Geld abziehen.
  • Neu

    Quellcode

    1. if(newkeys & KEY_NO)
    2. {
    3. if(CurrentTrashcanArea[playerid] != -1)
    4. {
    5. if(IsPlayerInDynamicArea(TrashCans_InteractionField[CurrentTrashcanArea[playerid]])) //15677
    6. {
    7. if(!Searching[playerid])
    8. {
    9. if(gettime() < TrashCans_ID[CurrentTrashcanArea[playerid]])
    10. {
    11. new stringEN[128];
    12. format(stringEN, sizeof(stringEN), "»WARNUNG« Dieser Mülleimer wurde bereits entleert. Versuche es erneut in %i Minuten.", (TrashCans_ID[CurrentTrashcanArea[playerid]] - gettime())/60);
    13. return SendClientMessage(playerid, COLOR_RED, stringEN);
    14. }
    15. TrashCanLootTimer[playerid] = SetTimerEx("TrashCanLoot", 4000, false, "ii", playerid, CurrentTrashcanArea[playerid]);
    16. ApplyAnimation(playerid, "BD_FIRE", "BD_Panic_Loop", 4.1, 0, 0, 0, 0, 4000, 1);
    17. SendClientMessage(playerid, COLOR_PURPLE, "»Spieler« Du durchwühlst den Mülleimer...");
    18. Searching[playerid] = true;
    19. }
    20. else if(Searching[playerid])
    21. {
    22. TrashCans_ID[CurrentTrashcanArea[playerid]] = -1;
    23. SendClientMessage(playerid, COLOR_RED, "»WARNUNG« Du hast aufgehört, den Mülleimer zu durchwühlen.");
    24. ClearAnimations(playerid);
    25. KillTimer(TrashCanLootTimer[playerid]);
    26. Searching[playerid] = false;
    27. }
    28. }
    29. }
    30. }
    Alles anzeigen

    PAWN-Quellcode

    1. C:\Users\Medion\Desktop\Daten Medion\GTA SA Datein\GTA Scripts\New Generation\gamemodes\GTA1.pwn(15677) : warning 202: number of arguments does not match definition
  • Neu

    Jeffry schrieb:

    Marcel_Colbetti schrieb:

    Gibt es da eine simple Lösung?
    Nein, außer du blockierst alles, was dir vom Spiel her Geld gibt bzw. Geld abzieht (Ammu-Nation, Casino, Stunt Bonus, Restaurants, Pay'N'Spray, ...).Andernfalls ist es ziemlich aufwändig, alle Eventualitäten abzufangen.

    Ich habe auf meinem Server die Anti-Money-Hack Funktion über Jahre immer wieder verbessert und erweitert, eine 100%'ige Sicherheit kann aber nicht gewährleistet werden, vor allem wenn man sein Geld einfriert und Geld an Stationen ausgibt, die nicht Code-Seitig (oben genannte) das Geld abziehen.
    Wie könnte man es anstellen? Kannst du mir eventuell ein Ansatz geben?
  • Neu

    Jadeclon schrieb:

    @Jeffry aber wenn man die Restaurant etc. entfernt bleiben doch nur noch die PayNsprays oder? Sonst bekommt man nur vom Script her Geld.
    Was Jeffry meint ist dass es über ein eigenes Geldsystem schon sicher ist aber die Standardfunktionen im Spiel die im Zusammenhang mit dem Geld stehen, (Automaten, Pay n Sprays, Casino etc.) funktionieren dann nicht richtig bzw. macht man weder Gewinn noch Verluste außer man scriptet diese Systeme selbst.

    @Dr. Frauenarzt

    Dir fehlt die playerid in der IsPlayerInDynamicArea funktion
  • Neu

    [DT]midomen schrieb:

    Jadeclon schrieb:

    @Jeffry aber wenn man die Restaurant etc. entfernt bleiben doch nur noch die PayNsprays oder? Sonst bekommt man nur vom Script her Geld.
    Was Jeffry meint ist dass es über ein eigenes Geldsystem schon sicher ist aber die Standardfunktionen im Spiel die im Zusammenhang mit dem Geld stehen, (Automaten, Pay n Sprays, Casino etc.) funktionieren dann nicht richtig bzw. macht man weder Gewinn noch Verluste außer man scriptet diese Systeme selbst.
    Ah okay, ich verstehe... Aber wenn man richtige Abfragen bei den Automaten & den Pay n Sprays hinzufügt, dann ist das normale Geldsystem doch theoretisch sicher oder?

  • Neu

    Dr. Frauenarzt schrieb:

    @[DT]Midoman


    PAWN-Quellcode

    1. if(IsPlayerInDynamicArea(TrashCans_InteractionField[CurrentTrashcanArea[playerid]]))



    so ist es definiert:


    PAWN-Quellcode

    1. new CurrentTrashcanArea[MAX_PLAYERS] = {-1,...};


    da ist doch playerid oder nicht?
    Ich glaube er meint:

    PAWN-Quellcode

    1. if(IsPlayerInDynamicArea(playerid, TrashCans_InteractionField[CurrentTrashcanArea[playerid]]))




    Kostenlose Forensoftware - jetzt Downloaden

    Demnächst: Neuauflage der kompletten Forensoftware!!
  • Neu

    SaschaLois schrieb:

    Dr. Frauenarzt schrieb:

    @[DT]Midoman


    PAWN-Quellcode

    1. if(IsPlayerInDynamicArea(TrashCans_InteractionField[CurrentTrashcanArea[playerid]]))



    so ist es definiert:


    PAWN-Quellcode

    1. new CurrentTrashcanArea[MAX_PLAYERS] = {-1,...};


    da ist doch playerid oder nicht?
    Ich glaube er meint:

    PAWN-Quellcode

    1. if(IsPlayerInDynamicArea(playerid, TrashCans_InteractionField[CurrentTrashcanArea[playerid]]))

    Danke der warning ist weg :)



    Quellcode

    1. case DIALOG_BUYPRIVATEVEHICLE:
    2. {
    3. new string[128];
    4. if(!response)
    5. {
    6. SetCameraBehindPlayer(playerid);
    7. UnfreezePlayer(playerid);
    8. RemovePlayerFromVehicle(playerid);
    9. GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective);
    10. SetVehicleParamsEx(GetPlayerVehicleID(playerid), VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alarm, doors, bonnet, boot, objective);
    11. return 1;
    12. }
    13. if(response)
    14. {
    15. for(new i=0;i<sizeof(autoVehicles);i++)
    16. {
    17. if(GetPlayerVehicleID(playerid) == autoVehicles[i])
    18. {
    19. if((GetMoney(playerid) - VehicleShop[i][Preis]) < 0)
    20. {
    21. SendClientMessage(playerid, COLOR_LIGHTBLUE, ERROR_MONEY);
    22. SetCameraBehindPlayer(playerid);
    23. UnfreezePlayer(playerid);
    24. RemovePlayerFromVehicle(playerid);
    25. GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective);
    26. SetVehicleParamsEx(GetPlayerVehicleID(playerid), VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alarm, doors, bonnet, boot, objective);
    27. return 1;
    28. }
    29. if(GetPlayerVehicleCount(playerid) >= MAX_PLAYER_VEHICLES)
    30. {
    31. SendClientMessage(playerid, COLOR_GREY, "Du kannst keine weiteren Fahrzeuge kaufen.");
    32. SetCameraBehindPlayer(playerid);
    33. UnfreezePlayer(playerid);
    34. RemovePlayerFromVehicle(playerid);
    35. GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective);
    36. SetVehicleParamsEx(GetPlayerVehicleID(playerid), VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alarm, doors, bonnet, boot, objective);
    37. return 1;
    38. }
    39. GiveMoney(playerid, -VehicleShop[i][Preis]);
    40. format(string, sizeof(string), "Dein Fahrzeug (%s) steht am Autohaus bereit.", VehicleShop[i][Name]);
    41. SendClientMessage(playerid, COLOR_WHITE, string);
    42. CreatePlayerVehicle(playerid, VehicleShop[i][modelid], VehicleShop[i][buySpawnX], VehicleShop[i][buySpawnY], VehicleShop[i][buySpawnZ], VehicleShop[i][buySpawnA], COLOR_HEX_DARKBLUE"- TÜV -", (VehicleShop[i][Preis]/2), 0, 1, 1);
    43. SetCameraBehindPlayer(playerid);
    44. UnfreezePlayer(playerid);
    45. RemovePlayerFromVehicle(playerid);
    46. GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective);
    47. SetVehicleParamsEx(GetPlayerVehicleID(playerid), VEHICLE_PARAMS_OFF, VEHICLE_PARAMS_OFF, alarm, doors, bonnet, boot, objective);
    48. if(Spieler[playerid][pTutorial] > 0)
    49. {
    50. ShowTutorial(playerid, "Du hast dich also fuer~n~dieses Auto entschieden.~n~Wenn du ein schoenen~n~Ort findest, indem du~n~dein Auto parken moechtest,~n~tippe /parken ein. Achja,~w~dein Auto verliert jedes~mal, wenn der Motor~n~eingeschaltet ist, an Benzin~n~Du solltest also immer~n~auf dein Tank achten.~n~~n~Steige in dein gekauftes~n~~b~Fahrzeug ~w~ein und fahre~n~zum ~r~Checkpoint~w~!");
    51. SchonGewusst(playerid, "Wir besitzen auch eine~n~~b~Fachebook ~w~Page");
    52. SetPlayerCheckpointEx(playerid, 1003.9152,-939.3000,42.1797, 2.0, CP_TUTORIAL_10, CP_TYPE_TUTORIAL);
    53. }
    54. return 1;
    55. }
    56. }
    57. }
    58. }
    Alles anzeigen
    da besteht immer noch das problem mit ShowTutorial.

    Bei jeden anderen Funktioniert es so aber wen man beim Autohaus angekommen ist geht ja dann der Checkpoint weg. dann muss man sich ein Auto kaufen. Hat man sich ein Auto gekauft sollte der Nexte Checkpoint kommen der kommt ja aber der Text wird nicht angezeigt
  • Neu

    Gut'n zusammen!
    Ich hatte da eine Idee, im Tutorial möchte ich gerne das ein NPC ein Zug im Bahnhof rein fährt (Spieler ist eine Virtuelle Welt) und im Bahnhof hält.
    Nun ist meine Frage, kann ich ein NPC in eine Virtuelle Welt "stecken"?
    Und, führt es zu Probleme wenn sich zB 5 Leute gleichzeitig im Tutorial befinden? Das also 5 Züge, in einer anderen Virtuellen Welt.

    MfG.
    Aaron!
    Dir Gefällt meine Antwort oder konnte dir Helfen? Dann Zeig es mir mit einem Daumen nach Oben
  • Neu

    Kaliber schrieb:

    Aaron1337 schrieb:

    Gibt es eine andere Möglichkeit einen Zug zu bewegen?
    Wenn, dann nur mit SetVehicleVelocity hab ich aber nie probiert und sieht wahrscheinlich nicht so spektakulär aus, wenn es überhaupt geht ^^
    Funktioniert bei Zügen leider nicht - sind dadurch weder zu beschleunigen noch zu stoppen.
    "Ándale, Ándale Wird Zeit für Randale, wir zerstören wie Vandale" - RAF CAMORA
  • Neu

    Quellcode

    1. CMD:bankrob(playerid)
    2. {
    3. new cops, string[128],Float:x,Float:y,Float:z;
    4. GetPlayerPos(playerid,x,y,z);
    5. if(Spieler[playerid][pLevel] < 3)return SendClientMessage(playerid, COLOR_GREY, "Das kannst du erst ab Level 3!");
    6. if(!IsPlayerInRangeOfPoint(playerid, 6.0, 1424.2394,-1003.7420,1639.7843))return SendClientMessage(playerid, COLOR_GREY, "Du befindest dich nicht am Banktresor.");
    7. if(Spieler[playerid][pFraktion] == 1 || Spieler[playerid][pFraktion] == 3 || Spieler[playerid][pFraktion] == 6 || Spieler[playerid][pFraktion] == 15)return SendClientMessage(playerid, COLOR_GREY, "Du kannst als Beamter keine Bank ausrauben.");
    8. if(gettime() < BankRobTime)return SendClientMessage(playerid, COLOR_GREY, "Die Bank wurde vor kurzem ausgeraubt, komm später wieder!");
    9. for(new i=0;i<GetMaxPlayers();i++)
    10. {
    11. if(IsLoggedIn(i))
    12. {
    13. if(Spieler[i][pFraktion] == 1)
    14. {
    15. cops++;
    16. }
    17. }
    18. }
    19. //if(cops < 1)return SendClientMessage(playerid, COLOR_GREY, "Es müssen mindestens 2 Beamte online sein!");
    20. BankRobTime = gettime()+(60*60); // Erst in 1 Stunde wieder
    21. OnWantedChange(playerid, Spieler[playerid][pWanteds], (Spieler[playerid][pWanteds]+6));
    22. Spieler[playerid][pWanteds] += 6;
    23. SendClientMessage(playerid, COLOR_RED, "Du hast ein Verbrechen begangen. (Bankraub) Reporter: Unbekannt");
    24. format(string, sizeof(string), "Dein aktuelles Wanted Level: %d", Spieler[playerid][pWanteds]);
    25. SendClientMessage(playerid, COLOR_YELLOW, string);
    26. format(string, sizeof(string), "HQ: %s (ID: %d) hat ein Verbrechen begangen: Bankraub, over.", GetName(playerid), playerid);
    27. SendFraktionMessage(1, COLOR_COP_MELDUNG, string);
    28. format(string, sizeof(string), "HQ: Reporter: Unbekannt, Aktuelles Wantedlevel: %d, over.", Spieler[playerid][pWanteds]);
    29. SendFraktionMessage(1, COLOR_COP_MELDUNG, string);
    30. format(Spieler[playerid][pWantedReason], 32, "Bankraub");
    31. UpdateWantedTD(playerid);
    32. pIsRobbingBank[playerid] = 1;
    33. pRobbingTimer[playerid] = 240;
    34. if((x > -992.5172 && x < 4000.0000) && (y < 528.0000 && y > -4000.0000))//Los Santos
    35. {
    36. SendFraktionMessage(1, COLOR_COP_MELDUNG, "HQ: An alle Einheiten, die Los Santos Bank wird überfallen!");
    37. format(string, sizeof(string), "%s raubt die Bank in Los Santos aus!", GetName(playerid));
    38. SendClientMessageToAll(COLOR_LIGHTBLUE, string);
    39. }
    40. if((x > -4000.0000 && x < -992.5172) && (y < 4000.0000 && y > -4000.0000))//San Fierro
    41. {
    42. SendFraktionMessage(1, COLOR_COP_MELDUNG, "HQ: An alle Einheiten, die San Fierro Bank wird überfallen!");
    43. format(string, sizeof(string), "%s raubt die Bank in San Fierro aus!", GetName(playerid));
    44. SendClientMessageToAll(COLOR_LIGHTBLUE, string);
    45. }
    46. if((x > -992.5172 && x < 4000.0000) && (y < 4000.0000 && y > 528.0000))//Las Venturas
    47. {
    48. SendFraktionMessage(1, COLOR_COP_MELDUNG, "HQ: An alle Einheiten, die Las Venturas Bank wird überfallen!");
    49. format(string, sizeof(string), "%s raubt die Bank in Las Venturas aus!", GetName(playerid));
    50. SendClientMessageToAll(COLOR_LIGHTBLUE, string);
    51. }
    52. return 1;
    53. }
    Alles anzeigen
    Hallo,

    Ich hab eine frage wen ich die Bank in San Fierro ausraube wird aber ausgegeben das ich die bank in Los Santos ausraube warum?
  • Neu

    Ich hab da ein Problem, ich wollte gerade ein Zug Erstellen, der immer am Bahnhof stehen soll, leider steht dort kein Zug.

    PAWN-Quellcode

    1. CreateVehicle(538, 1779.4401, -1953.9058, 15.0431, -90.0000, -1, -1, 100);

    Bild wo der Zug stehen soll/sollte: imgur.com/a/LkdJv

    MfG.
    Aaron!
    Dir Gefällt meine Antwort oder konnte dir Helfen? Dann Zeig es mir mit einem Daumen nach Oben