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

Es gibt Neuigkeiten! Ab sofort könnt ihr dem Donators Club auf Lebenszeit beitreten.
Weitere Infos im Thema Donator's Club ab heute wieder verfügbar!

  • Okay. Ich versuche aktuell ein Premiumsystem mit temporärem Premium zu erstellen.
    Das ganze soll über Timestamps funktionieren, indem für den Zeitpunkt an dem das Premium auslaufen soll einen Timestamp setze.
    Ich brauche jedoch auch eine Funktion, die prüft ob der Spieler noch Premium hat. Dafür habe ich mir folgende Funktion gescriptet:

    C-Quellcode

    1. stock GetPlayerPremium(playerid)
    2. {
    3. if(pInfo[playerid][pPrem] > gettime()) return (pInfo[playerid][pPrem]-gettime()); //pPrem ist der Timestamp mit dem Auslaufdatum
    4. return 0;
    5. }

    Nun weiß ich nur nicht, wie ich das am besten einsetze und dann die noch übrige Zeit bis zum Auslaufen des Premium als String bzw. in Tagen, Std, Minuten ausgebe.

    Wie prüfe ich mit der Funktion am besten, ob der Spieler überhaupt Premium hat und nutze dann noch den return-Wert innerhalb der dazugehörigen Expression?

    Beispiel(zum Verständnis):

    C-Quellcode

    1. //Das ganze ist in der Statsfunktion
    2. //Eine Info über das Premium soll nur Ausgegeben werden, wenn der Spieler noch über Premium verfügt.
    3. if(GetPlayerPremium(fromid))
    4. {
    5. //Wie arbeite ich hier jetzt mit dem Wert, der durch GetPlayerPremium zurückgegeben wurde.
    6. //und wie formatiere ich das in tage, std, min | wie es auch mit gettime funktioniert
    7. }
    Ich danke schonmal im Voraus. Wenn es bessere Lösungen für ein solches System gibt, wär ich froh davon zu hören.

    !!! Die beste Lösung wäre natürlich, dass die GetPlayerPremium-Funktion einfach wie bei gettime(hour, min, second) die Sekunden(timestamp) returnt aber trotzdem noch die Variablen(hour, min, second) mitgibt.
    MfG. Adrian
  • Okay ich hab jetzt erstmal folgendes gescriptet, um damit die benötigten Werte direkt aus der Funktion zu erhalten.

    Problem ist, dass der Compiler jetzt einige Sekunden länger braucht und einfach leer ist.

    C-Quellcode

    1. stock GetPlayerPremium(playerid, &days, &hours, &mins &secs)
    2. {
    3. if(pInfo[playerid][pPrem] > gettime())
    4. {
    5. new totalSecs = (pInfo[playerid][pPrem]-gettime()), temp;
    6. temp = totalSecs % 86400;
    7. days = (totalSecs - temp) / 86400; //errechnet Tage
    8. hours = (temp - (temp % 3600)) / 3600;
    9. mins = (temp - (temp % 60)) / 60;
    10. secs = temp % 60;
    11. return totalSecs;
    12. }
    13. return 0;
    14. }
    Alles anzeigen


    Ich denke mal das Problem liegt also an der Funktion, da wenn ich sie entferne, der Compiler wieder enorm schnell ist.

    //EDIT: PROBLEM GEFUNDEN --> vor &secs fehlt ein Komma



    OKAY jetzt fühle ich mich irgendwie dumm.

    Die Funktion oben scheint abgesehen von "days" nur falsche Werte auszugeben.
    Wär cool, wenn mir jemand helfen oder einfach einen funktionierenden Code dafür scripten könnte.

    Aktuell sieht es so aus, funktioniert jedoch auch nicht, abgesehen vom Tag(bei der Stunde bin ich mir unsicher).

    Quellcode

    1. stock SecondsToDHMS(inputseconds, &days, &hours, &mins, &secs)
    2. {
    3. new temp;
    4. temp = inputseconds % 86400;
    5. days = (inputseconds - temp) / 86400;
    6. hours = (temp - (temp % 3600)) / 3600;
    7. temp = (temp - (temp % 3600));
    8. mins = (temp - (temp % 60)) / 60;
    9. temp = (temp - (temp % 60));
    10. secs = (temp / 1;
    11. return 1;
    12. }
    Alles anzeigen
    :cursing: Das ist Grummy. Er zeigt sich immer nur, wenn irgendwie alles keinen Sinn mehr zu ergeben scheint.
    Mit ihm taucht immer irgendwann auch ein Engel auf, der ihm wieder einen Sinn für die Dinge gibt. :thumbsup:
    MfG. Adrian

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von SkeeZy ()

  • Neu

    Habe schon eine Hilfe bekommen, nur vergessen das hier zu erwähnen, da das über Discord passiert ist.
    Hab die Funktion viel zu umständlich gemacht. Trotzdem danke^^


    //e: Die Probleme hören nicht auf:

    Ist es irgendwie möglich, die niedrigste unbesetzte vehicleid herauszufinden und dann ein Fahrzeug mit dieser vehicleid zu erstellen ?
    MfG. Adrian

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

  • Neu

    SkeeZy schrieb:

    Ist es irgendwie möglich, die niedrigste unbesetzte vehicleid herauszufinden und dann ein Fahrzeug mit dieser vehicleid zu erstellen ?
    Also um es kurz zu machen, ist ein Fahrzeug Slot unbenutzt und du erstellt mit CreateVehicle (oder sonst wie) ein Fahrzeug, dann wird dieser Slot die neue ID des Fahrzeuges automatisch.

    Vehicleids setzen für Fahrzeuge kann man nicht.

    Dennoch kannst du ermitteln, was die niedrigste freie vehicleid ist, mit IsValidVehicle.


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

    Kaliber schrieb:

    SkeeZy schrieb:

    Ist es irgendwie möglich, die niedrigste unbesetzte vehicleid herauszufinden und dann ein Fahrzeug mit dieser vehicleid zu erstellen ?
    Also um es kurz zu machen, ist ein Fahrzeug Slot unbenutzt und du erstellt mit CreateVehicle (oder sonst wie) ein Fahrzeug, dann wird dieser Slot die neue ID des Fahrzeuges automatisch.
    Vehicleids setzen für Fahrzeuge kann man nicht.

    Dennoch kannst du ermitteln, was die niedrigste freie vehicleid ist, mit IsValidVehicle.
    Jo die Frage war vllt etwas blöd formuliert, da ich das schon wusste.
    Das eigentliche Problem hab ich jetzt doch selbst lösen können. Danke dir für deine Antwort ^^
    MfG. Adrian
  • Neu

    Ich gebe im Dialog eine zahl ein habe zu test 1000 genommen doch mir wird tzdm angezeigt "Der betrag muss eine ZAHL sein!"."
    Ich habe mich bissen infomiert und habe herrausgefunden das "inputtext" ein string ist wie mache ich das zu zu einem intiger?

    PAWN-Quellcode

    1. if(dialogid == DIALOG_FRAKBANK_GELDEIN)
    2. {
    3. if(response)
    4. {
    5. if(IsNumeric(inputtext)) return SCM(playerid,ROT,"Der betrag muss eine ZAHL sein!");
    6. {
    7. if(strval(inputtext)<1||strval(inputtext)>500000) return SCM(playerid,ROT,"Der betrag muss zwischen 0 - 500.000$ sein!");
    8. if(GetPlayerMoney(playerid) < strval(inputtext))return SCM(playerid,ROT,"Du hast nicht soviel Geld!");
    9. GivePlayerMoney(playerid, strval(-inputtext));
    10. new fID = PlayerInfo[playerid][pFraktion];
    11. FrakInfo[fID][geld] += strval(inputtext);
    12. }
    13. }
    14. else
    15. {
    16. SCM(playerid,ROT,"Vorgang Abgebrochen");
    17. }
    18. return 1;
    19. }
    Alles anzeigen
  • Neu

    Du gibst die Nachricht aus, wenn es sich um eine Zahl handelt. Es fehlt ein ! davor.

    PAWN-Quellcode

    1. if(IsNumeric(inputtext)) return SCM(playerid,ROT,"Der betrag muss eine ZAHL sein!");

    zu:

    PAWN-Quellcode

    1. if(!IsNumeric(inputtext)) return SCM(playerid,ROT,"Der betrag muss eine ZAHL sein!");
    2. else


    Es macht Sinn, das else auch hin zu schreiben, auch wenn es nicht zwingend notwendig ist, da die obere Abfrage schon einen return hat, trotzdem macht es den Code deutlich leserlicher und verhindert solche Fehler.

  • Neu

    Da kamst du mit den Klammern durcheinander, mach es mal so:

    C-Quellcode

    1. if(dialogid == DIALOG_FRAKBANK_GELDEIN)
    2. {
    3. if(!response) return SCM(playerid,ROT,"Vorgang Abgebrochen");
    4. if(!IsNumeric(inputtext)) return SCM(playerid,ROT,"Der betrag muss eine ZAHL sein!");
    5. if(strval(inputtext)<1||strval(inputtext)>500000) return SCM(playerid,ROT,"Der betrag muss zwischen 0 - 500.000$ sein!");
    6. if(GetPlayerMoney(playerid) < strval(inputtext))return SCM(playerid,ROT,"Du hast nicht soviel Geld!");
    7. GivePlayerMoney(playerid, strval(-inputtext));
    8. new fID = PlayerInfo[playerid][pFraktion];
    9. FrakInfo[fID][geld] += strval(inputtext);
    10. return 1;
    11. }
    Alles anzeigen


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

    Kaliber schrieb:

    Da kamst du mit den Klammern durcheinander, mach es mal so:
    Ja hast recht, Danke :D

    Aber jetzt hab ich noch ein problem sobald ich geld einzahle und es mit EINZAHLEN bestätige crasht der server.

    PAWN-Quellcode

    1. ----------
    2. Loaded log file: "server_log.txt".
    3. ----------
    4. SA-MP Dedicated Server
    5. ----------------------
    6. v0.3.7-R2, (C)2005-2015 SA-MP Team
    7. [00:30:34] filterscripts = "" (string)
    8. [00:30:34]
    9. [00:30:34] Server Plugins
    10. [00:30:34] --------------
    11. [00:30:34] Loading plugin: crashdetect
    12. [00:30:34] CrashDetect plugin 4.19.4
    13. [00:30:34] Loaded.
    14. [00:30:34] Loading plugin: sscanf
    15. [00:30:34]
    16. [00:30:34] ===============================
    17. [00:30:34] sscanf plugin loaded.
    18. [00:30:34] Version: 2.8.3
    19. [00:30:34] (c) 2018 Alex "Y_Less" Cole
    20. [00:30:34] ===============================
    21. [00:30:34] Loaded.
    22. [00:30:34] Loading plugin: streamer
    23. [00:30:34]
    24. *** Streamer Plugin v2.9.4 by Incognito loaded ***
    25. [00:30:34] Loaded.
    26. [00:30:34] Loading plugin: mysql
    27. [00:30:34] >> plugin.mysql: R41-4 successfully loaded.
    28. [00:30:34] Loaded.
    29. [00:30:34] Loaded 4 plugins.
    30. [00:30:34]
    31. [00:30:34] Filterscripts
    32. [00:30:34] ---------------
    33. [00:30:34] Loaded 0 filterscripts.
    34. [00:30:34] [MySQL] Verbindungsaufbau...
    35. [00:30:34] [MySQL] Die Verbindung zur Datenbank wurde erfolgreich hergestellt! Handle: 1
    36. [00:30:34] Server Einstellungen werden Geladen.
    37. [00:30:34] Server Einstellungen wurden Geladen.
    38. [00:30:34] ========================================
    39. [00:30:34] Selfmade Script (c) by iTsRooT
    40. [00:30:34] Createt 25.07.2019
    41. [00:30:34] ========================================
    42. [00:30:34] Number of vehicle models: 0
    43. [00:30:34] MYSQL: Server Infomationen werden Geladen.
    44. [00:30:34] MYSQL: Server Infomationen wurden Geladen.
    45. [00:30:34] MYSQL: Fraktionen werden Geladen.
    46. [00:30:34] MYSQL: Fraktionen wurden Geladen.
    47. [00:30:39] [connection] 127.0.0.1:49716 requests connection cookie.
    48. [00:30:40] [connection] incoming connection: 127.0.0.1:49716 id: 0
    49. [00:30:40] [join] RooT has joined the server (0:127.0.0.1)
    50. [00:30:57] [debug] Server crashed while executing selfmade.amx
    51. [00:30:57] [debug] AMX backtrace:
    52. [00:30:57] [debug] #0 native strval () in samp-server.exe
    53. [00:30:57] [debug] #1 00008a18 in public OnDialogResponse (0, 17, 1, -1, 375868) in selfmade.amx
    54. [00:30:58] [debug] Native backtrace:
    55. [00:30:58] [debug] #0 0040335f in ?? () in samp-server.exe
    56. [00:30:58] [debug] #1 0019f648 in ?? ()
    57. [00:30:58] [debug] #2 68fa5c7a in ?? () in plugins\crashdetect.DLL
    58. [00:30:58] [debug] #3 004010b6 in ?? () in samp-server.exe
    59. [00:30:58] [debug] #4 68fb92dc in ?? () in plugins\crashdetect.DLL
    60. [00:30:58] [debug] Registers:
    61. [00:30:58] [debug] EAX: 00000000 EBX: 00000032 ECX: 0019f618 EDX: 00000000
    62. [00:30:58] [debug] ESI: 00000000 EDI: 02a3ada8 EBP: 00000000 ESP: 0019f660
    63. [00:30:58] [debug] EIP: 68fb92dc EFLAGS: 00010293
    64. [00:30:58] [debug] Stack:
    65. [00:30:58] [debug] ESP+00000000: 02a3ada8 0000000a 0019f7f4 02c65eec
    66. [00:30:58] [debug] ESP+00000020: 00008744 02a3ada8 00000000 0005fc18
    67. [00:30:58] [debug] ESP+00000040: 00000009 0019f7a0 00000000 00825348
    68. [00:30:58] [debug] ESP+00000060: 00000009 00000000 00000000 00822679
    69. [00:30:58] [debug] ESP+00000080: 0019f6f8 777af22b 65fbbc10 65f60000
    70. [00:30:58] [debug] ESP+000000a0: 65f60000 00000015 65fbbc8c 777d3de7
    71. [00:30:58] [debug] ESP+000000c0: 656a976c 0000ffff 00000000 02a3ada8
    72. [00:30:58] [debug] ESP+000000e0: 00000000 0019f7f4 02c65eec 00000000
    73. [00:30:58] [debug] ESP+00000100: 00000000 0005fc18 02a3ada8 02bf1d54
    74. [00:30:58] [debug] ESP+00000120: 0019f794 68fbdc92 0000000a 0019f7f4
    75. [00:30:58] [debug] ESP+00000140: 0000000a 0019f7f4 02c65eec 00000002
    76. [00:30:58] [debug] ESP+00000160: 007c7700 02a3ada8 00000000 02be933c
    77. [00:30:58] [debug] ESP+00000180: 0005fc18 001e8480 0005fc10 0019f850
    78. [00:30:58] [debug] ESP+000001a0: 00000002 02a3ada8 00000005 65fb3610
    79. [00:30:58] [debug] ESP+000001c0: 00000000 00000000 02a3ada8 00000001
    80. [00:30:58] [debug] ESP+000001e0: 0019f854 68fb7df6 0019f850 007c6a40
    81. [00:30:58] [debug] ESP+00000200: 02a3ada8 0019f884 65f63484 02a3ada8
    82. [00:30:58] [debug] ESP+00000220: 00000000 0019fb4c 0046ec31 00000000
    83. [00:30:58] [debug] ESP+00000240: 02a3ada8 00000011 02a3ada8 00000001
    84. [00:30:58] [debug] ESP+00000260: 0019f8dc 0019fa30 02c61f18 00000000
    85. [00:30:58] [debug] ESP+00000280: 00493912 00000002 00000011 00000001
    86. [00:30:58] [debug] ESP+000002a0: 0241d901 0019f918 01010001 0019ffff
    87. [00:30:58] [debug] ESP+000002c0: 00000038 0019fb58 00700000 00610064
    88. [00:30:58] [debug] ESP+000002e0: 65f60000 00822738 65f60110 01f60000
    89. [00:30:58] [debug] ESP+00000300: 00822738 00000011 0019f998 7777c6fa
    90. [00:30:58] [debug] ESP+00000320: 0080af80 0019fa78 00000000 00000050
    91. [00:30:58] [debug] ESP+00000340: 00000000 0019fa78 00000009 0080af80
    92. [00:30:58] [debug] ESP+00000360: 00000000 00822738 02a3ada8 0080af80
    93. [00:30:58] [debug] ESP+00000380: 0080cab0 00000000 00000000 00000000
    94. [00:30:58] [debug] ESP+000003a0: 00000001 00000000 00000000 00000000
    95. [00:30:58] [debug] ESP+000003c0: 646c6547 656a9994 6c68617a 656a9a14
    96. [00:30:58] [debug] ESP+000003e0: 00000000 00000000 00000000 00000000
    97. [00:30:58] [debug] Loaded modules:
    98. [00:30:58] [debug] 00400000 - 00519000 samp-server.exe
    99. [00:30:58] [debug] 77750000 - 778ec000 ntdll.dll
    100. [00:30:58] [debug] 759a0000 - 75a80000 KERNEL32.DLL
    101. [00:30:58] [debug] 757a0000 - 7599a000 KERNELBASE.dll
    102. [00:30:58] [debug] 76740000 - 76c91000 SHELL32.dll
    103. [00:30:58] [debug] 75500000 - 755c0000 msvcrt.dll
    104. [00:30:58] [debug] 750a0000 - 750db000 cfgmgr32.dll
    105. [00:30:58] [debug] 75200000 - 75322000 ucrtbase.dll
    106. [00:30:58] [debug] 776b0000 - 77739000 shcore.dll
    107. [00:30:58] [debug] 74f00000 - 74fbf000 RPCRT4.dll
    108. [00:30:58] [debug] 74db0000 - 74dd0000 SspiCli.dll
    109. [00:30:58] [debug] 74da0000 - 74daa000 CRYPTBASE.dll
    110. [00:30:58] [debug] 74fc0000 - 75022000 bcryptPrimitives.dll
    111. [00:30:58] [debug] 755c0000 - 75639000 sechost.dll
    112. [00:30:58] [debug] 75a80000 - 75cf8000 combase.dll
    113. [00:30:58] [debug] 770b0000 - 776ac000 windows.storage.dll
    114. [00:30:58] [debug] 77030000 - 770b0000 msvcp_win.dll
    115. [00:30:58] [debug] 76560000 - 765de000 advapi32.dll
    116. [00:30:58] [debug] 77010000 - 7702c000 profapi.dll
    117. [00:30:58] [debug] 76020000 - 76074000 powrprof.dll
    118. [00:30:58] [debug] 76510000 - 76554000 shlwapi.dll
    119. [00:30:58] [debug] 76090000 - 760b3000 GDI32.dll
    120. [00:30:58] [debug] 75390000 - 754f6000 gdi32full.dll
    121. [00:30:58] [debug] 76ca0000 - 76e39000 USER32.dll
    122. [00:30:58] [debug] 75330000 - 75347000 win32u.dll
    123. [00:30:58] [debug] 751c0000 - 751cf000 kernel.appcore.dll
    124. [00:30:58] [debug] 75370000 - 75382000 cryptsp.dll
    125. [00:30:58] [debug] 746c0000 - 746e4000 WINMM.dll
    126. [00:30:58] [debug] 73160000 - 73168000 WSOCK32.dll
    127. [00:30:58] [debug] 74690000 - 746b3000 WINMMBASE.dll
    128. [00:30:58] [debug] 75640000 - 7569f000 WS2_32.dll
    129. [00:30:58] [debug] 751d0000 - 751f5000 IMM32.DLL
    130. [00:30:58] [debug] 68fa0000 - 68ff1000 crashdetect.DLL
    131. [00:30:58] [debug] 68ee0000 - 68f9f000 MSVCR100.dll
    132. [00:30:58] [debug] 65fd0000 - 66039000 MSVCP100.dll
    133. [00:30:58] [debug] 10000000 - 1000e000 sscanf.DLL
    134. [00:30:58] [debug] 6e490000 - 6e4a3000 VCRUNTIME140.dll
    135. [00:30:58] [debug] 65f60000 - 65fc7000 streamer.DLL
    136. [00:30:58] [debug] 5ec20000 - 5ec8e000 MSVCP140.dll
    137. [00:30:58] [debug] 66ce0000 - 66d2e000 mysql.DLL
    138. [00:30:58] [debug] 65e80000 - 65e9a000 log-core.dll
    139. [00:30:58] [debug] 5e5e0000 - 5e6ad000 libmariadb.dll
    140. [00:30:58] [debug] 76e50000 - 76fe9000 CRYPT32.dll
    141. [00:30:58] [debug] 75030000 - 7503e000 MSASN1.dll
    142. [00:30:58] [debug] 73190000 - 7319a000 Secur32.dll
    143. [00:30:58] [debug] 739d0000 - 739e1000 napinsp.dll
    144. [00:30:58] [debug] 739b0000 - 739c6000 pnrpnsp.dll
    145. [00:30:58] [debug] 73960000 - 73970000 wshbth.dll
    146. [00:30:58] [debug] 73840000 - 73856000 NLAapi.dll
    147. [00:30:58] [debug] 74930000 - 74963000 IPHLPAPI.DLL
    148. [00:30:58] [debug] 73f60000 - 73fb2000 mswsock.dll
    149. [00:30:58] [debug] 73860000 - 738f0000 DNSAPI.dll
    150. [00:30:58] [debug] 76080000 - 76087000 NSI.dll
    151. [00:30:58] [debug] 73780000 - 7378b000 winrnr.dll
    152. [00:30:58] [debug] 73810000 - 73831000 mdnsNSP.dll
    153. [00:30:58] [debug] 73800000 - 73808000 rasadhlp.dll
    154. [00:30:58] [debug] 736d0000 - 73721000 fwpuclnt.dll
    155. [00:30:58] [debug] 76ff0000 - 77009000 bcrypt.dll
    Alles anzeigen
  • Neu

    //EDIT komme nicht mehr weiter query empty was heißt das ?

    [19:57:58] [ERROR] error #1065 while executing query "": Query was empty
    [19:57:58] [ERROR] error #1065 while executing query "": Query was empty
    [19:57:58] [ERROR] error #1065 while executing query "": Query was empty

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von iTsRooT ()

  • Neu

    Was der Fehler schon sagt, der Query String ist leer. Also ""
    Debugge mal an welchem Query es liegt und zeig uns dann den entsprechenden Codeabschnitt
    Ich helfe zu allen Fragen bezüglich PAWN Scripting gerne weiter.
    Auch im Bereich JavaScript und dort der RageMP API helfe ich gern.

    Konversation: Konversation starten
    Discord: LeonMrBonnie#2251