Beiträge von Manyula

    Okay, die genaue Funktionsweise ist mir trotz Erklärung immer noch schleierhaft, aber naja.
    Noch eine kurze Anmerkung zur Stringgröße: 256 Zeichen ist das Limit aller Zeichen insgesamt, die verwendet werden, oder das Limit eines listitems?

    Ich möchte PVars weitgehendst vermeiden, da man sie ja in 99,9% aller Fälle nicht braucht.


    "%s\n%s" sind doch nur zwei Zeilen...? Wie genau läuft das ab?


    Und btw: GetMaxPlayers() in einer for-Schleife ist suboptimal. Eine Konstante wäre besser. Der Compiler wird es ja einfacher haben eine Konstante abzurufen, anstatt einer Funktion.

    Hey,


    ich bräuchte einen kleinen Denksnstoß, bzw. eine kleine theoretische Anleitung zu folgendem.


    Ich möchte, dass ein "listitem" mit dem aktivieren eines bestimmten cmds in einem dialog auftaucht, und mit einem weiteren cmd wieder verschwindet.


    Beispiel:
    Spieler A benutzt /duell. => Herausforderung soll in /duellliste aufgelistet werden.
    Sobald Spieler A /cancel benutzt soll die Herausforderung aus dem Dialog gelöscht werden.


    Wie stelle ich das an?


    Danke!

    Die Unreal Engine ist im Vergleich zur Unity3D Engine, meiner Meinung nach, professioneller. Sie zielt auch eher auf erfahrene Entwickler ab, wobei Unity3D auf Anfängerfreundlichkeit baut. Ihr müsst für euch selber entscheiden, auf welchem Wissensstand ihr euch befindet. Wie sieht es denn generell mit Tendenzen aus? Offline oder Online Game? Welcher Genre? Ich rate euch, setzt nicht zu viel auf die Grafik, kümmert euch lieber ums Gameplay. Kümmert euch nicht darum so realistisch wie möglich zu sein, das ist in den meisten Fällen total irrelevant.
    Eine konkrete Idee hätte ich jetzt nicht. Was macht euch denn am meisten Spaß?

    Ich hab sie auch ganz unten.


    #include <a_samp>
    #include <streamer>
    #include <zcmd>
    #include <banfix>
    #include <Bank_System>
    #include <Deathmatches> //system + cmds
    #include <Admin_CMDs> //nur cmds
    #include <Teleports> //nur cmds


    EDIT: Mein Fehler, ich hatte eine fehlerhafte stock Funktion...


    Ich hätte da aber trotzdem noch eine Frage. Macht diese Art der Strukturierung das Script letztendlich nicht länger? Wenn man jedes System separat in einer Include hat, dann kann es doch sehr gut vorkommen, dass du z.B. in 9 von 10 Systemen immer OnGameModeInit() benutzt + die Hooking Zeilen ergebeb dann einiges mehr an Zeilen.

    Das ist auch nicht des Rätsels Lösung. Immer noch der Error auf Zeile 130.


    Stimmen die Parameter des Timer public's eigentlich? Oder muss da noch ein playerid dazu?


    EDIT: Ich Idiot... hab den Fehler gefunden. Im Script hatte ich den Waffenarray mit Großbuchstaben deklariert, und überall anders mit Kleinbuchstaben. -.-
    Vielen Dank!

    Mir bleiben noch die Errors:


    D:\Documents\SAMP 0.3x\pawno\include\Deathmatches.inc(130) : error 017: undefined symbol "BF_WEAPON"
    D:\Documents\SAMP 0.3x\pawno\include\Deathmatches.inc(130) : warning 215: expression has no effect
    D:\Documents\SAMP 0.3x\pawno\include\Deathmatches.inc(130) : error 001: expected token: ";", but found "]"
    D:\Documents\SAMP 0.3x\pawno\include\Deathmatches.inc(130) : error 029: invalid expression, assumed zero
    D:\Documents\SAMP 0.3x\pawno\include\Deathmatches.inc(130) : fatal error 107: too many error messages on one line


    Dürfte eigentlich nicht sein, da ich BF_WEAPON ja eigentlich definiert habe...
    Zeile 130 wäre hier:
    DestroyDynamicPickup(BF_WEAPON[i]);

    Hallo,


    ich bin an einem DM dran, und möchte Pickups erstellen, die beim Aufnehmen zerstört werden, und für alle Spieler im DM nach 45 Sekunden respawnt.


    new BF_Weapon[10];


    public OnGameModeInit()
    {
    BF_Weapon[0] = CreateDynamicPickup(342, 1, 120.5242, 1934.8777, 22.7578, 7, -1, -1, 100.0); //Grenade
    BF_Weapon[1] = CreateDynamicPickup(342, 1, 279.4142, 1829.5718, 21.4766, 7, -1, -1, 100.0); //Grenade
    BF_Weapon[2] = CreateDynamicPickup(342, 1, 116.2530, 1875.0065, 22.4375, 7, -1, -1, 100.0); //Grenade
    BF_Weapon[3] = CreateDynamicPickup(342, 1, 136.4600, 1874.9723, 22.4375, 7, -1, -1, 100.0); //Grenade
    BF_Weapon[4] = CreateDynamicPickup(359, 1, 189.9938, 1940.4785, 17.6406, 7, -1, -1, 100.0); //Rocket Launcher
    BF_Weapon[5] = CreateDynamicPickup(359, 1, 206.2279, 1932.8312, 23.2422, 7, -1, -1, 100.0); //Rocket Launcher
    BF_Weapon[6] = CreateDynamicPickup(360, 1, 144.0044, 1850.1791, 25.2610, 7, -1, -1, 100.0); //Heat Seeker
    BF_Weapon[7] = CreateDynamicPickup(360, 1, 211.4619, 1809.8109, 25.1172, 7, -1, -1, 100.0); //Heat Seeker
    BF_Weapon[8] = CreateDynamicPickup(360, 1, 146.3869, 1907.3638, 26.3924, 7, -1, -1, 100.0); //Heat Seeker
    BF_Weapon[9] = CreateDynamicPickup(360, 1, 197.3199, 1835.0059, 23.2422, 7, -1, -1, 100.0); //Heat Seeker
    return DM_OnGameModeInit();
    }


    public OnPlayerPickUpDynamicPickup(playerid, pickupid)
    {
    if(pickupid == BF_WEAPON[0])
    {
    GivePlayerWeapon(playerid, GRENADE, 5);
    DestroyDynamicPickup(BF_WEAPON[0]);
    SetTimer("PickupRespawn", 45000, false);
    }
    if(pickupid == BF_WEAPON[1])
    {
    GivePlayerWeapon(playerid, GRENADE, 5);
    DestroyDynamicPickup(BF_WEAPON[1]);
    SetTimer("PickupRespawn", 45000, false);
    }
    if(pickupid == BF_WEAPON[2])
    {
    GivePlayerWeapon(playerid, GRENADE, 5);
    DestroyDynamicPickup(BF_WEAPON[2]);
    SetTimer("PickupRespawn", 45000, false);
    }
    if(pickupid == BF_WEAPON[3])
    {
    GivePlayerWeapon(playerid, GRENADE, 5);
    DestroyDynamicPickup(BF_WEAPON[3]);
    SetTimer("PickupRespawn", 45000, false);
    }
    if(pickupid == BF_WEAPON[4])
    {
    GivePlayerWeapon(playerid, ROCKET_LAUNCHER, 4);
    DestroyDynamicPickup(BF_WEAPON[4]);
    SetTimer("PickupRespawn", 45000, false);
    }
    if(pickupid == BF_WEAPON[5])
    {
    GivePlayerWeapon(playerid, ROCKET_LAUNCHER, 4);
    DestroyDynamicPickup(BF_WEAPON[5]);
    SetTimer("PickupRespawn", 45000, false);
    }
    if(pickupid == BF_WEAPON[6])
    {
    GivePlayerWeapon(playerid, HEAT_SEEKER, 3);
    DestroyDynamicPickup(BF_WEAPON[6]);
    SetTimer("PickupRespawn", 45000, false);
    }
    if(pickupid == BF_WEAPON[7])
    {
    GivePlayerWeapon(playerid, HEAT_SEEKER, 3);
    DestroyDynamicPickup(BF_WEAPON[7]);
    SetTimer("PickupRespawn", 45000, false);
    }
    if(pickupid == BF_WEAPON[8])
    {
    GivePlayerWeapon(playerid, HEAT_SEEKER, 3);
    DestroyDynamicPickup(BF_WEAPON[8]);
    SetTimer("PickupRespawn", 45000, false);
    }
    if(pickupid == BF_WEAPON[9])
    {
    GivePlayerWeapon(playerid, HEAT_SEEKER, 3);
    DestroyDynamicPickup(BF_WEAPON[9]);
    SetTimer("PickupRespawn", 45000, false);
    }
    return DM_OnPlayerPickUpDynamicPickup(playerid, pickupid);
    }
    forward (PickupRespawn(pickupid);
    public PickupRespawn(pickupid)
    {
    if(pickupid == BF_WEAPON[0]) return CreateDynamicPickup(342, 1, 120.5242, 1934.8777, 22.7578, 7, -1, -1, 100.0); //Grenade
    if(pickupid == BF_WEAPON[1]) return CreateDynamicPickup(342, 1, 279.4142, 1829.5718, 21.4766, 7, -1, -1, 100.0); //Grenade
    if(pickupid == BF_WEAPON[2]) return CreateDynamicPickup(342, 1, 116.2530, 1875.0065, 22.4375, 7, -1, -1, 100.0); //Grenade
    if(pickupid == BF_WEAPON[3]) return CreateDynamicPickup(342, 1, 136.4600, 1874.9723, 22.4375, 7, -1, -1, 100.0); //Grenade
    if(pickupid == BF_WEAPON[4]) return CreateDynamicPickup(359, 1, 189.9938, 1940.4785, 17.6406, 7, -1, -1, 100.0); //Rocket Launcher
    if(pickupid == BF_WEAPON[5]) return CreateDynamicPickup(359, 1, 206.2279, 1932.8312, 23.2422, 7, -1, -1, 100.0); //Rocket Launcher
    if(pickupid == BF_WEAPON[6]) return CreateDynamicPickup(360, 1, 144.0044, 1850.1791, 25.2610, 7, -1, -1, 100.0); //Heat Seeker
    if(pickupid == BF_WEAPON[7]) return CreateDynamicPickup(360, 1, 211.4619, 1809.8109, 25.1172, 7, -1, -1, 100.0); //Heat Seeker
    if(pickupid == BF_WEAPON[8]) return CreateDynamicPickup(360, 1, 146.3869, 1907.3638, 26.3924, 7, -1, -1, 100.0); //Heat Seeker
    if(pickupid == BF_WEAPON[9]) return CreateDynamicPickup(360, 1, 197.3199, 1835.0059, 23.2422, 7, -1, -1, 100.0); //Heat Seeker
    return 1;
    }


    Allerdings, wenn ich in ein Pickup reinlaufe, dann passiert absolut nichts. Was mache ich falsch?


    EDIT: Ich kriege folgende Errors:
    D:\Documents\SAMP 0.3x\pawno\include\Deathmatches.inc(349) : error 017: undefined symbol "BF_WEAPON"
    D:\Documents\SAMP 0.3x\pawno\include\Deathmatches.inc(349) : warning 215: expression has no effect
    D:\Documents\SAMP 0.3x\pawno\include\Deathmatches.inc(349) : error 001: expected token: ";", but found "]"
    D:\Documents\SAMP 0.3x\pawno\include\Deathmatches.inc(349) : error 029: invalid expression, assumed zero
    D:\Documents\SAMP 0.3x\pawno\include\Deathmatches.inc(349) : fatal error 107: too many error messages on one line


    EDIT2: "PickupRespawn" public updated.

    Hallo, liebe Community!


    Ich spiele nun seit 0.2X SA:MP, und habe mich relativ früh mit Mapping beschäftigt. Eine Sache, die mich an den Objekten in SA:MP schon immer gestört hat, war, dass sie "statisch" sind, also im Prinzip von der Gravitation unberührt. Das trifft zwar nicht auf alle Objekte zu, aber leider auf die Mehrheit. In der Gamingindustrie gibt es nun schon seit einiger Zeit die Rigid Body Technik, mit der man einem Objekt die Eigenschaft gibt physikalisch beeinflusst zu werden, z.B. durch die Gravitation.


    Was für ein Aufwand wäre es, GTA SA in einer Game Engine (beispielsweise Unity 3D) zu bearbeiten und einige Objekte mit einem Rigid Body zu versehen? Inwieweit würde sich das auf SA:MP übertragen? Dann müsste sich ja jeder die modifizierte Version von GTA:SA runterladen.
    Mal abgesehen von der einen Technik, denkt ihr, es wäre irgendwann mal an der Zeit GTA:SA in der Hinsicht "aufzurüsten"?

    stock PlayerActionForbidden(playerid)
    {
    if(IsPlayerAFK[playerid]) SendLanguageMessage(playerid, COLOR_RED, "[WARNUNG] Du bist AFK. Du kannst keine Aktion durchführen. Melde dich mit /back zurück!", "[WARNING] You are AFK. You can't take any action. Use /back to come back!");
    if(IsPlayerInDM[playerid]) SendLanguageMessage(playerid, COLOR_RED, "[WARNUNG] Du bist schon im DM! Benutze /cancel um das DM zu verlassen!", "[WARNING] You are already in a DM! Use /cancel to exit the DM!");
    if(!UseTeleports[playerid]) SendLanguageMessage(playerid, COLOR_RED, "[WARNUNG] Du kannst im Moment keine Teleports nutzen! (Kampf/Skin Selection/DM-Arena)", "[WARNING] Currently, you can't use teleports! (Fight/Skin Selection/DM-Arena)");
    return 1;
    }


    COMMAND:say(playerid, params[])
    {
    if(PlayerActionForbidden(playerid)) return 1;


    new string[128];
    if(pInfo[playerid][AdminLevel] == 0) return SendLanguageMessage(playerid, COLOR_RED, "[ERROR] Du bist kein Admin.", "[ERROR] You are not an admin.");
    if(pInfo[playerid][AdminLevel] > 0 && pInfo[playerid][AdminLevel] < 5) return SendLanguageMessage(playerid, COLOR_RED, "[ERROR] Du hast einen zu niedrigen Adminlevel, um diese Aktion auszuführen!", "[ERROR] Your admin level is too low to execute this action!");
    if(isnull(params)) return SendClientMessage(playerid, COLOR_RED, "[WARNUNG] Gebrauch: /say [Text].");
    format(string, sizeof(string), "*[ADMIN]: %s", params);
    return SendClientMessageToAll(COLOR_RED, string);
    }


    Damit möchte ich überprüfen, ob der Spieler einen CMD benutzen darf, oder nicht. Gebe ich ingame allerdings etwas ein, und angenommen, es wäre ihm erlaubt einen CMD zu nutzen, dann passiert nichts. Nehme ich die Abfrage raus, dann klappt alles wie gewohnt.

    Damit hat es nichts zu tun. Es klappt weder mit noch ohne. Alle benötigten Includes sind davor schon inkludiert, also kann die Teleport.inc auch darauf zugreifen.
    Ich hab das Gefühl, dass es was mit dem "return 1;" zu tun hat...

    Hallo,


    Ich wollte übersichtshalber meine ganzen CMDs in eine extra Include packen. Wenn ich sie aber inkludiere, und ingame benutze, dann passiert nichts.
    Ich benutze ZCMD, also brauche ich in der Include nichts zu hooken. Wie stelle ich das jetzt an?