[ HowTo ] Dynamisches System

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
  • Hallo Leute ,


    ich möchte euch mal zeigen wie man ein Dynamisches System auf die Beine stellt , ohne viel Aufwand,
    zudem sieht es meist schwerer aus als es wirklich ist.


    Verwendet...


    • SII Include ( Zum Speichern , ihr könnt natürlich auch andere Methoden verwenden )
    • Schleifen ( um so einiges herauszufinden )
    • a_samp include (Standard Funktionen )


    Als erstes erstellen wir die benötigten Variablen , hier mal die Beispiel Variablen...


    #define max_points 100


    enum point_struc
    {
    Float:x,
    Float:y,
    Float:z,
    ist_da,
    }
    new punkte[max_points][point_struc];
    new schon_erstellt;


    wie man sieht...


    • Zu erste definiere ich mir einfach mal eine Maximale Anzahl der Dynamischen Punkte
    • danach erstelle ich mir ein kleine Struktur für die Übersicht
    • danach Verknüpfe ich das ganze um es auf die Maximalen Dynamischen zu verteilen
    • Die Variable ,,schon_erstellt´´ dient dabei für die Spätere Angabe um zu sehen bis welchen Index schon Dinge belegt sind


    So nun möchte ich mit dem Code für das Laden der Objekte/Punkte fortfahren...


    public OnGameModeInit()
    {
    new formatx[30];
    if(INI_Open("punkte.cfg"))
    {
    for(new i = 0;i<max_points;i++)
    {
    format(formatx,sizeof formatx,"is_there_%d",i);
    punkte[i][ist_da] = INI_ReadInt(formatx);
    if(punkte[i][ist_da]) // if(punkte[i][ist_da] == 1)
    {
    format(formatx,sizeof formatx,"p_x_%d",i);
    punkte[i][x] = INI_ReadFloat(formatx);
    format(formatx,sizeof formatx,"p_y_%d",i);
    punkte[i][y] = INI_ReadFloat(formatx);
    format(formatx,sizeof formatx,"p_z_%d",i);
    punkte[i][z] = INI_ReadFloat(formatx);
    schon_erstellt++;
    }
    }
    INI_Close();
    }
    return 1;
    }

    Ich benutze in diesem Fall SII um zu Speichern aber ihr könnt natürlich auch andere Dinge nehmen , das Prinzip bleibt gleich.
    Wie ihr seht lese ich erst aus ob das Objekt erstellt wurde, das ist nötig damit er keine angaben aus Nullwerten ließt,
    danach können wir fortfahren und die Koordinaten der Punkte laden x,y,z ,
    und dann kommt wieder die Variable schon_erstellt , diese muss den Wert +1 Zählen damit der Index übersprungen wird
    und das Skript weiß das der vorige Index belegt ist.


    Kommen wir nun zum Teil Speichern...

    public OnGameModeExit()
    {
    new formatx[30];
    if(INI_Open("punkte.cfg"))
    {
    for(new i = 0;i<max_points;i++)
    {
    if(punkte[i][ist_da]) // if(punkte[i][ist_da] == 1)
    {
    format(formatx,sizeof formatx,"p_x_%d",i);
    INI_WriteFloat(formatx,punkte[i][x]);
    format(formatx,sizeof formatx,"p_y_%d",i);
    INI_WriteFloat(formatx,punkte[i][y]);
    format(formatx,sizeof formatx,"p_z_%d",i);
    INI_WriteFloat(formatx,punkte[i][z]);
    format(formatx,sizeof formatx,"is_there_%d",i);
    INI_WriteInt(formatx,punkte[i][ist_da]);
    }
    }
    INI_Save();
    INI_Close();
    }
    return 1;
    }


    So hier frage ich erstmal ab ob der erstellte Punkt existiert danach speichere ich die Koordinaten , wie man sieht formatiere ich die Werte erste mit Zahlen, nach schleife in diesem Fall die Variable ,,i´´ und speichere bis zu den Maximalen Punkten ab , je nach dem ob sie nun existieren oder nicht.
    Ich habe vergessen zu erwähnen das ich im Teil Laden auch erst Formatieren und dann erst angebe woraus ich Laden möchte.



    So kommen wird zum Beispiel ,,Nutzen´´ , hier zeige ich euch wie man diese geladenen Variablen nun nutzen ;) ...
    Hier einmal ein Timer, es reicht schon wenn er auf 1000ms steht und wiederholen:

    forward CheckForPoint();
    public CheckForPoint()
    {
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    for(new j = 0;j<max_points;j++)
    {
    if(punkte[j][ist_da])
    {
    if(IsPlayerInRangeOfPoint(i,3.0,punkte[j][x],punkte[j][y],punkte[j][z]))GameTextForPlayer(i,"Info Punkt blubb",2000,3);
    }
    }
    }
    }
    return 1;
    }


    Ich Frage natürlich Standard für jeden Spieler ab , dann frage ich ab ob er mit dem Server verbunden ( das spart Ressourcen ) , evntl. noch abfragen
    ob er ein Bot ist das spart wieder einiges an Ressourcen, so nun erstelle ich wieder eine neue schleife um meine Punkte abzufragen , diese muss nicht unbedingt zu den max_points gehen sondern kann auch bis zu ,,schon_erstellt´´ gehen dann muss man wie man sieht nicht abfragen ob der Punkt existiert ,,punkte[j][ist_da]´´ , so nun Frage ich ab ob der Spieler sich in einem bestimmten Radius zum Punkt befindet ,,IsPlayerInRangeOfPoint´´
    und lasse dann einen ,,GameText´´ erscheinen , der wiedergibt das man sich im Radius von 3.0 auf Float zum Punkt befindet usw.


    Das war jetzt nicht wichtig für ein Dynamisches System aber es ist nur ein Beispiel um zu zeigen wie man sowas denn nutzt, ausnutzt usw.



    So nun kommen wir zum eigentlichen Teil, das ,,InGame Creating ´´ , das ist es was ein Dynamisches System ausmacht.


    Kommando :


    if(strcmp(cmdtext, "/neu", true) == 0)
    {
    new Float:gx,
    Float:gy,
    Float:gz;
    GetPlayerPos(playerid,gx,gy,gz);
    punkte[schon_erstellt][x] = (gx);
    punkte[schon_erstellt][y] = (gy);
    punkte[schon_erstellt][z] = (gz);
    punkte[schon_erstellt][ist_da] = (1);
    schon_erstellt++;
    return 1;
    }



    Als erstes finde ich in meinem Beispiel die Position des Spielers raus danach , gebe ich dies an die Variablen weiter , setze es auf existiert 1 und
    zähle die schon erstellten hoch , das war es der Punkte sollte sofort existieren , das Speichern sollte sich nach dem beenden des Skripts erledigen je nach dem in welche Callback man es packt etc. , ich habe es z.b. in OnGameModeExit gepackt, bester Weg es nach dem beenden eben mal zu speichern ;)



    So das war es soweit , ich hoffe das hat euch einen schritt weiter gebracht und meiner Methode etwas näher xD


    Have Fun ^^

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • nice tut wirklich 10/10. Nur ich weiß nit wie man daraus ein Haussystem machen sollt rofl will einen anfänger sehn der das schafft :D

  • Danke für das Feedback , nein es ist nicht gerade für den Anfänger gedacht sondern für Fortgeschrittene ,
    es soll das Prinzip des Systems erklären , das oben gezeigte Beispiel soll die Anwendungsweise darstellen,
    ich möchte noch hinzufügen das dies meine Methode ist , welche Methode andere Scripter anwenden bei solchen System kann ich nicht sagen.


    @Big_Pump2 , du musst nicht gleich ein dickes Haus System schreiben sondern erstmal versuchen etwas leichteres daraus zu zaubern um das Prinzip
    zu begreifen, glaub mir ist wie Fahrrad fahren ^^

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Mein "/neu"-Cmd:
    if(!strcmp(cmdtext,"/neu"))
    {
    GetPlayerPos(playerid, punkte[schon_erstellt][x], punkte[schon_erstellt][y], punkte[schon_erstellt][z]);
    punkte[schon_erstell][ist_da] = 1;
    schon_erstellt++;
    return 1;
    }


    Erheblich kürzer & einen Tick schneller. :>


    Ansonsten sehr nützlich für alle die sich damit noch nicht auskennen.

  • habe versucht ein Tank System zu machen bekomme immer:
    C:\Users\Dominik\Desktop\SCRIPTING\samp 0.3a server\gamemodes\tank.pwn(46) : warning 213: tag mismatch
    C:\Users\Dominik\Desktop\SCRIPTING\samp 0.3a server\gamemodes\tank.pwn(48) : warning 213: tag mismatch
    C:\Users\Dominik\Desktop\SCRIPTING\samp 0.3a server\gamemodes\tank.pwn(75) : warning 213: tag mismatch
    C:\Users\Dominik\Desktop\SCRIPTING\samp 0.3a server\gamemodes\tank.pwn(77) : warning 213: tag mismatch
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Warnings.

    Hier zum downloaden
    Hier Pastebin


    Es wird niemals so viel gelogen wie vor der Wahl, während des Krieges und nach der Jagd.

    - Otto von Bismarck
    -

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Moin,


    nun wollte ich mal an einem Dynamischen System testen und bekam gleich die kalte abfuhr ;).
    Mein Problem liegt nun hier ich hab GetPlayerPos(bla); durch CreatePickup(bla); ersetzt nun passiert ab rein gar nicht.


    Bitte helft mir ;)



    MfG: Apoolecu

  • Da:
    #include <a_samp>
    #include <SII>



    #define max_tankstellen 100


    enum pTankstelle
    {
    Float:x,
    Float:y,
    Float:z,
    ist_da,
    Menge,
    Preis,
    }
    new tank[max_tankstellen][pTankstelle];
    new schon_erstellt;






    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" Blank Filterscript by your name here");
    print("--------------------------------------\n");


    new formatx[30];
    if(INI_Open("tankstelle.cfg"))
    {
    for(new i = 0;i<max_tankstellen;i++)
    {
    format(formatx,sizeof formatx,"is_there_%d",i);
    tank[i][ist_da] = INI_ReadInt(formatx);
    if(tank[i][ist_da]) // if(punkte[i][ist_da] == 1)
    {
    format(formatx,sizeof formatx,"p_x_%d",i);
    tank[i][x] = INI_ReadFloat(formatx);
    format(formatx,sizeof formatx,"p_y_%d",i);
    tank[i][y] = INI_ReadFloat(formatx);
    format(formatx,sizeof formatx,"p_z_%d",i);
    tank[i][z] = INI_ReadFloat(formatx);
    format(formatx,sizeof formatx,"Menge",i);
    tank[i][Menge] = INI_ReadString(formatx);
    format(formatx,sizeof formatx,"Preis",i);
    tank[i][Preis] = INI_ReadString(formatx);
    schon_erstellt++;
    }
    }
    INI_Close();
    }
    return 1;
    }


    public OnFilterScriptExit()
    {
    new formatx[30];
    if(INI_Open("tankstelle.cfg"))
    {
    for(new i = 0;i<max_tankstellen;i++)
    {
    format(formatx,sizeof formatx,"is_there_%d",i);
    tank[i][ist_da] = INI_ReadInt(formatx);
    if(tank[i][ist_da]) // if(punkte[i][ist_da] == 1)
    {
    format(formatx,sizeof formatx,"p_x_%d",i);
    tank[i][x] = INI_ReadFloat(formatx);
    format(formatx,sizeof formatx,"p_y_%d",i);
    tank[i][y] = INI_ReadFloat(formatx);
    format(formatx,sizeof formatx,"p_z_%d",i);
    tank[i][z] = INI_ReadFloat(formatx);
    schon_erstellt++;
    format(formatx,sizeof formatx,"Menge",i);
    tank[i][Menge] = INI_ReadString(formatx);
    format(formatx,sizeof formatx,"Preis",i);
    tank[i][Preis] = INI_ReadString(formatx);
    }
    }
    INI_Close();
    }
    return 1;
    }


    forward CheckForPoint();
    public CheckForPoint()
    {
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    for(new j = 0;j<max_tankstellen;j++)
    {
    if(tank[j][ist_da])
    {
    if(IsPlayerInRangeOfPoint(i,3.0,tank[j][x],tank[j][y],tank[j][z]))GameTextForPlayer(i,"Info Punkt blubb",2000,3);
    }
    }
    }
    }
    return 1;
    }


    Es wird niemals so viel gelogen wie vor der Wahl, während des Krieges und nach der Jagd.

    - Otto von Bismarck
    -

  • Du kannst den Punkt ja nicht erstellen wenn du die Koordinaten nicht hast,
    oder wie meinst du das , das du GetPlayerPos ersetzt hast ?
    Wenn du das meinst was ich befürchte dann hast du GetPlayerPos gelöscht und einfach was erstellt
    aber das geht nicht ohne Koordinaten Angabe

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Das verstehe ich nicht ganz wollte das ja so, machen das wenn man dann beim befehl /ntanke [Menge] [Preis pro Liter]


    Und das dann da ebend, die Koordinaten wie bei deinem Haus System gespeichert werden und das die Dann abgefragt werden, also wenn man bei der Tankstelle ist...


    Wie müsste es denn richtig heißen?


    Es wird niemals so viel gelogen wie vor der Wahl, während des Krieges und nach der Jagd.

    - Otto von Bismarck
    -

  • Wenn du eine Tankstelle erstellst , musst du...


    • Spieler Position herausfinden
    • Diese in die Variablen eintragen
    • evnlt. damit ein Pickup erstellen
    • die Variable die, die schon erstellten Tankstellen angibt einmal hochzählen


    Beim Laden lädt er diese Koordinaten , der Timer erkennt sie durch die schleife Automatisch, aber Pickups musst dann beim Laden selber dazu bauen

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(57) : error 055: start of function body without function header
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(59) : error 010: invalid function or declaration
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(61) : error 010: invalid function or declaration
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(65) : error 010: invalid function or declaration
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(77) : error 054: unmatched closing brace ("}")
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(78) : error 010: invalid function or declaration
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(83) : error 076: syntax error in the expression, or invalid function call
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(83) : error 029: invalid expression, assumed zero
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(83) : warning 215: expression has no effect
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(86) : error 055: start of function body without function header
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(87) : error 021: symbol already defined: "formatx"
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(88) : error 010: invalid function or declaration
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(90) : error 010: invalid function or declaration
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(92) : error 010: invalid function or declaration
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(96) : error 021: symbol already defined: "format"
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(98) : error 021: symbol already defined: "format"
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(100) : error 021: symbol already defined: "format"
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(102) : error 054: unmatched closing brace ("}")
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(106) : error 054: unmatched closing brace ("}")
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(107) : error 010: invalid function or declaration
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(119) : error 017: undefined symbol "GivePLayerWeapon"
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(126) : error 017: undefined symbol "name"
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(126) : error 017: undefined symbol "name"
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(126) : error 029: invalid expression, assumed zero
    C:\Program Files\Rockstar Games\GTA San Andreas\samp03\pawno\Untitled.pwn(126) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    24 Errors.


    Mein Script schaut so aus ...
    pls help ^^
    #include <a_samp>


    // This is a comment
    // uncomment the line below if you want to write a filterscript
    //#define FILTERSCRIPT
    #if defined FILTERSCRIPT
    #define max_points 100


    forward CheckForPoint();



    enum point_struc
    {
    Float:x,
    Float:y,
    Float:z,
    ist_da,
    }
    new punkte[max_points][point_struc];
    new schon_erstellt;
    new string[256];
    new name[MAX_PLAYER_NAME];


    public OnFilterScriptInit()
    {
    print("\n====================================");
    print(" Script By : DJ_Traxxi");
    print("====================================\n");
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }


    #else


    main()
    {
    print("\n====================================");
    print(" Game mode By : DJ_Traxxi");
    print("====================================\n");
    }


    #endif


    public OnGameModeInit()
    {
    // Don't use these lines if it's a filterscript
    SetGameModeText("Scripter anfaenger");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);


    return 1;
    }
    {
    new formatx[30];
    if(INI_Open("punkte.cfg"))
    {
    for(new i = 0;i<max_points;i++)
    {
    format(formatx,sizeof formatx,"is_there_%d",i);
    punkte[i][ist_da] = INI_ReadInt(formatx);
    if(punkte[i][ist_da]) // if(punkte[i][ist_da] == 1)
    {
    format(formatx,sizeof formatx,"p_x_%d",i);
    punkte[i][x] = INI_ReadFloat(formatx);
    format(formatx,sizeof formatx,"p_y_%d",i);
    punkte[i][y] = INI_ReadFloat(formatx);
    format(formatx,sizeof formatx,"p_z_%d",i);
    punkte[i][z] = INI_ReadFloat(formatx);
    schon_erstellt++;
    }
    }
    INI_Close();
    }
    return 1;
    }


    public OnGameModeExit()
    {
    print/"GameMode Exited!");
    return 1;
    }
    {
    new formatx[30];
    if(INI_Open("punkte.cfg"))
    {
    for(new i = 0;i<max_points;i++)
    {
    if(punkte[i][ist_da]) // if(punkte[i][ist_da] == 1)
    {
    format(formatx,sizeof formatx,"p_x_%d",i);
    INI_WriteFloat(formatx,punkte[i][x]);
    format(formatx,sizeof formatx,"p_y_%d",i);
    INI_WriteFloat(formatx,punkte[i][y]);
    format(formatx,sizeof formatx,"p_z_%d",i);
    INI_WriteFloat(formatx,punkte[i][z]);
    format(formatx,sizeof formatx,"is_there_%d",i);
    INI_WriteInt(formatx,punkte[i][ist_da]);
    }
    }
    INI_Save();
    INI_Close();
    }
    return 1;
    }
    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
    return 1;
    }


    public OnPlayerRequestSpawn(playerid)
    {
    GivePLayerWeapon(playerid, 31, 500);
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    GivePlayerMoney(playerid, 500000);
    GetPlayerName(playerid, name, sizeof(name));
    format(string, 256, sizeof(string)"%s Besucht uns !", name);
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    new string[256];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    switch(reason)
    {
    case 0: format(string, sizeof(string), "%s Hat den Server verlassen grund : Timeout", name);
    case 1: format(string, sizeof(string), "%s Hat den Server verlassen grund : Ausgeloggt", name);
    case 2: format(string, sizeof(string), "%s Hat den Server verlassen grund : Gekickt/Bannt", name);
    }
    SendClientMessageToAll(0x00FF00FF, string);
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    return 1;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    if (killerid == INVALID_PLAYER_ID)
    {
    SendClientMessageToAll(0x00FF00FF, "%s hat Selbstmord Beganngen.");
    } else
    {
    SendClientMessageToAll(0x00FF00FF, "%s wurde von einen AuftragsKiller ermordet.");
    }
    return 1;
    }


    public OnVehicleSpawn(vehicleid)
    {
    if(vehicleid == 503)
    {
    AddVehicleComponent(vehicleid, 1010);
    }
    return 1;
    }


    public OnVehicleDeath(vehicleid, killerid)
    {
    return 1;
    }


    public OnPlayerText(playerid, text[])
    {
    return 1;
    }


    public OnPlayerPrivmsg(playerid, recieverid, text[])
    {
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp(cmdtext, "/neu", true) == 0)
    {
    new Float:gx,
    Float:gy,
    Float:gz;
    GetPlayerPos(playerid,gx,gy,gz);
    punkte[schon_erstellt][x] = (gx);
    punkte[schon_erstellt][y] = (gy);
    punkte[schon_erstellt][z] = (gz);
    punkte[schon_erstellt][ist_da] = (1);
    schon_erstellt++;
    return 1;
    }
    }
    return 0;
    }


    public OnPlayerInfoChange(playerid)
    {
    return 1;
    }


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    return 1;
    }


    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    return 1;
    }


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    return 1;
    }


    public OnPlayerEnterCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerLeaveCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerLeaveRaceCheckpoint(playerid)
    {
    return 1;
    }


    public OnRconCommand(cmd[])
    {
    return 1;
    }


    public OnObjectMoved(objectid)
    {
    return 1;
    }


    public OnPlayerObjectMoved(playerid, objectid)
    {
    return 1;
    }


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    return 1;
    }


    public OnPlayerSelectedMenuRow(playerid, row)
    {
    return 1;
    }


    public OnPlayerExitedMenu(playerid)
    {
    return 1;
    }


    public CheckForPoint()
    {
    for(new i = 0;i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    for(new j = 0;j<max_points;j++)
    {
    if(punkte[j][ist_da])
    {
    if(IsPlayerInRangeOfPoint(i,3.0,punkte[j][x],punkte[j][y],punkte[j][z]))GameTextForPlayer(i,"Info Punkt blubb",2000,3);
    }
    }
    }
    }
    return 1;
    }

  • Lern wie man Klammern setzt und hör mit Copy&Paste auf.


    So einfach ist das...