[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • In der einen Fraktions-Schleife war etwas nicht so ganz passend.
    Versuche es so:

  • Habs jetzt so gemacht. Funktioniert das so? Ich kanns ja leider nicht auf mehreren Spielern gleichzeitig testen.

  • Was wäre am sinnvollsten wenn ich z.B. Dailykills in einer Liste anzeigen möchte?
    Je Spieler die Daily Kills speichern oder in einer extra Variable.
    Wie würde ich das je Spieler dann pro Tag löschen?


    @Apokrate : Da wäre MySQL am sinnvollsten, das kannst du dann mit einem Query zurücksetzen.


    Ich verstehe nicht ganz was du meinst.
    Du musst es am Tageswechsel zurücksetzen. Dazu kannst du in einer Datei zum Beispiel den aktuellen Tag (Heute 14) speichern. Wenn dann der nicht mehr mit dem von gettime übereinstimmt (morgen dann 15), dann setzt du es zurück.

    Also quasi so:



    C
    void CheckTag()
    {
    if(heute != db_eintrag)
    {
    Heute neu setzen,
    Daily Zeug löschen
    }
    return 1;
    }

    Weiß nur nicht, wie ich das am besten speicher und wie man mit gettime() richtig arbeitet.

  • Du kannst es entweder über gettime machen, und die Differenz von 86400 Sekunden berechnen, oder, wenn es immer am Tageswechsel sein soll, dann geht es auch mit getdate:


    Dann bei OnGameModeInit ein Timer, der das jede Minute aufruft:

    C
    SetTimer("CheckTag", 60000, true);
  • Möglicherweise kann dir das crashdetect Plugin da weiterhelfen, falls ein Arrays gesprengt wird, oder eine Funktion nicht existiert.
    Lade dir das mal herunter, und füge es in deinen Server ein, dann schaue ob es etwas im Server Log ausgibt, wenn du dich einloggst.

  • [21:37:24] [debug] Run time error 4: "Array index out of bounds"
    [21:37:24] [debug] Accessing element at index 10 past array upper bound 9
    [21:37:24] [debug] AMX backtrace:
    [21:37:24] [debug] #0 005a94d0 in public LoadAccountBlacklists (0x00000000) from Gamemode.amx
    [21:37:24] [debug] Run time error 4: "Array index out of bounds"
    [21:37:24] [debug] Accessing element at negative index -1
    [21:37:24] [debug] AMX backtrace:
    [21:37:24] [debug] #0 00182a10 in public OnPlayerSpawn (0x00000000) from Gamemode.amx
    [21:37:24] [debug] Run time error 4: "Array index out of bounds"
    [21:37:24] [debug] Accessing element at negative index -1
    [21:37:24] [debug] AMX backtrace:
    [21:37:24] [debug] #0 00182a10 in public OnPlayerSpawn (0x00000000) from Gamemode.amx


    Bin OnPLayerSpawn durchgegangen doch kann leider nichts finden kannst du mir einen Tipp geben?


    http://pastebin.com/mgqU7cMX

  • Erstelle im pawno Order eine Datei pawn.cfg und schreibe dort "-d3" rein, dann kompiliere deinen Code mit der pawno.exe geöffnet (Öffnen Button) neu und lass dir den Fehler nochmal ausgeben, dann steht die Zeile im Code dabei, die das verursacht.


    Da der Code ziemlich groß ist wäre es sinnvoll einen neuen Thread zu erstellen, wenn du den neuen Log hast, da dies auf jeden Fall keine kleine Frage mehr ist, sondern schon ein etwas komplexeres Debugging. Das wahrt die Übersicht.

  • Hallo, wenn ich beim Mappen Autos einfüge bekomme ich die als "CreateVehicle(...)" Code, nur kann man jetzt einsteigen. Die Autos sollen beim Autohaus nur als Dekoration stehen, muss ich jetzt für jedes "SetVehicleParamsEx(...)" nutzen um sie zu zu sperren?

  • Ja du kannst das aber aauch mithilfe einer For-Schleife lösen so dass du nicht immer SetVehicleParamsEx schreiben musst.

  • Würde das so stimmen ?


  • Mach die beiden eckigen klammern hinter mappedveh weg (in der schleife)
    Sprich so:

    C
    for(new i = 0;i<sizeof(mappedveh);i++)

    Einmal editiert, zuletzt von AirM4X ()

  • Das kannst du so machen:

    C
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    	if(!IsPlayerConnnected(i) || IsPlayerNPC(i)) continue;
    	if(IsPlayerInRangeOfPoint(i, range, x, y, z))
    	{
    		SetPlayerPos(i, x_zu, y_zu, z_zu);
    	}
    }


    range, x, y, z und x_zu, y_zu, z_zu musst du natürlich jeweils mit den Koordinaten bzw. Werten ersetzen, die da drin stehen sollen.

  • Ja, einfach SetPlayerPos verwenden.
    Du müsstest dazu mithilfe eines Timers und der Funktion "IsPlayerInArea" (http://forum.sa-mp.com/showthread.php?t=222283) abfragen, ob der Spieler (bzw. die Spieler mit einer Schleife) sich in diesem Bereich (Area) befinden. Falls ja, teleportierst du diese Spieler mit SetPlayerPos weg. :D


    Falls du etwas Hilfe benötigst, dann schicke mal den Code, den du bis hier hin schon hast.

  • Hallo, nach langer Zeit bin ich hier mal wieder aktiv meine lieben Freunde.
    Kann mir einer sagen, warum ich beim starten meines Servers Folgende fehlermeldung bekomme:


    Script[gamemodes/ultimatereallife.amx]: Run time error 19: "File or function is not found"



    vvviiiielen dank!!

  • Lade dir das Crashdetect Plugin herunter und füge es in deinen Server ein: http://forum.sa-mp.com/showthread.php?t=262796
    Dann poste was im Server Log steht, wenn du den Server startest (am besten vorher leeren und dann alles posten), am besten in einem neuen Thread.

    ja wie installiere ich das? weil wenn ich meinen server starte steht da nur dass crashdetect nicht geladen wurde