Beiträge von Manyula

    Auf jeden Fall sehr Newbie-freundlich aufgebaut, das ganze.
    Mein Fall ist es allerdings nicht im Passanten-Laufstil DM zu schieben und alles nur auf walk weapons zu beschränken. Meine Kritik fällt im Prinzip genau wie bei GDM aus.


    ++ Newbie's können auf demselben Level, wie Pro's kämpfen (C-Bug Protection)
    + Ganz passable Anzahl an Möglichkeiten für die derzeitige Spielerbase am Anfang


    - Falscher Laufstil für DM (macht es für newbies aber wiederum einfacher den Gegner zu treffen, da alle sich langsamer bewegen, deswegen noch ein + bei Newbie-freundlichkeit)
    - Ich bin auf keine Skinauswahl gestoßen. Ist das Absicht? Wenn nicht, bitte eine einfügen.


    Also, ich finde den Server zwar schön und gut, bin aber aus meinen Newbie-Zeiten raus, und ziehe es lieber vor auf A/D Servern mit C-Bug zu spielen.


    Trotzdem viel Erfolg!

    Danke für deine Hilfsbereitschaft!


    ... aber Probieren geht über Studieren. Ich hab die Lösung gefunden. ;)
    Ich habe im EndSpawnProtection Timer die if-Abfrage ein wenig angepasst. Mir ist aufgefallen, dass is die AP überhaupt nicht abfragen muss, sondern nur die HP.
    if(PlayerHPandAP[playerid][health] > 0 && PlayerHPandAP[playerid][health] < 100)
    Jetzt klappt alles wunderbar! :)


    Erledigt.

    Teleport CMD
    COMMAND:ls(playerid, params[])
    {
    if(PlayerActionForbidden(playerid)) return 1;
    if(GetPlayerMoney(playerid) >= 3000)
    {
    new stringDE[128],
    stringEN[128],
    pName[MAX_PLAYER_NAME],
    pVehicle = GetPlayerVehicleID(playerid),
    Float:VehicleAngle;
    GetPlayerName(playerid, pName, sizeof(pName));
    format(stringDE, sizeof(stringDE), "»TELEPORTINFO« {%06x}%s "#C_GOLD_E"hat sich nach Los Santos teleportiert! (/LS)", GetPlayerColor(playerid) >>> 8, pName);
    format(stringEN, sizeof(stringEN), "»TELEPORTINFO« {%06x}%s "#C_GOLD_E"has teleported to Los Santos! (/LS)", GetPlayerColor(playerid) >>> 8, pName);
    SendLanguageMessageToAll(C_GOLD, stringDE, stringEN);
    SetPlayerPos(playerid, 2492.7268, -1668.3849, 13.3438);
    SetPlayerFacingAngle(playerid, WEST);
    SetVehiclePos(pVehicle, 2492.7268, -1668.3849, 13.3438);
    GetVehicleZAngle(playerid, VehicleAngle);
    SetVehicleZAngle(playerid, VehicleAngle);
    PutPlayerInVehicle(playerid, pVehicle, 0);
    GivePlayerMoneyEx(playerid, -3000);
    [b]SavePlayerHPandAP(playerid);[/b]
    SetSpawnProtection(playerid);
    }
    else SendLanguageMessage(playerid, C_RED, "»WARNUNG« Du hast nicht genug Geld!", "»WARNING« You don't have enough money!");
    return 1;
    }


    enum
    enum HPandAP
    {
    Float:health,
    Float:armour
    }


    Timer
    forward EndGodMode(playerid);
    public EndGodMode(playerid) return SetPlayerHealth(playerid, 100);


    //=======================================================================================


    forward EndSpawnProtection(playerid);
    public EndSpawnProtection(playerid)
    {
    if(PlayerHPandAP[playerid][health] < 0 && PlayerHPandAP[playerid][armour] <= 0)
    {
    ReturnPlayerHPandAP(playerid);
    }
    else
    {
    SetPlayerHealth(playerid, 100);
    }
    return 1;
    }


    stock Funktion
    stock SetSpawnProtection(playerid)
    {
    if(GetPlayerVirtualWorld(playerid) != 0)
    {
    SetPlayerHealth(playerid, 99999);
    SetTimerEx("EndGodMode", 3000, false, "i", playerid);
    }
    else
    {
    SetPlayerHealth(playerid, 99999);
    SetTimerEx("EndSpawnProtection", 3000, false, "i", playerid);
    }
    return 1;
    }


    Erklärung meines Problems:
    Ich habe nach jedem Teleport eine kleine Spawnprotection von 3sec eingebaut, um Spawnkill zu verhindern. Nun ist aber das Problem, dass, wenn ein Spieler mit weniger als 100HP sich teleportiert, nach der Spawnprotection nicht mehr seinen ursprünglichen HP/AP Wert zugeteilt bekommt, sondern wieder alles aufgefüllt ist. Das ganze soll AUSSCHLIESSLICH in der virtuellen Welt 0 stattfinden, da alle anderen virtuellen Welten DM Arenen sind und dort alles läuft, wie es laufen soll.


    Was ich mir beim Scripten gedacht habe:
    Mittels "SavePlayerHPandAP(playerid);" möchte ich den HP und AP Wert beim Teleportieren speichern. Die Variablen sind im enum aufgelistet.
    Dann wird die Spawnprotection gesetzt. Wenn diese aussetzt, werden die Werte aus den Variablen ausgelesen und dementsprechend HP und AP gesetzt.


    Falls zusätzliche Informationen oder Codeschnipsel gebraucht werden, bitte ich euch sie anzufordern!

    Das ist ja schon mein Ausgangspunkt.^^
    In der stock Funktion ein "return 0;" und im CMD ein "return 1;".
    Ich hab irgendwie das Gefühl, dass es was mit der if-Abfrage zu tun hat...


    EDIT: Sorry, hab das "return 1;" übersehen. Jetzt klappt es, vielen Dank!

    COMMAND:ls(playerid, params[])
    {
    if(PlayerActionForbidden(playerid)) return 1;
    if(GetPlayerMoney(playerid) >= 3000)
    {
    new stringDE[128],
    stringEN[128],
    pName[MAX_PLAYER_NAME],
    pVehicle = GetPlayerVehicleID(playerid),
    Float:VehicleAngle;
    GetPlayerName(playerid, pName, sizeof(pName));
    format(stringDE, sizeof(stringDE), "»TELEPORTINFO« {%06x}%s "#C_GOLD_E"hat sich nach Los Santos teleportiert! (/LS)", GetPlayerColor(playerid) >>> 8, pName);
    format(stringEN, sizeof(stringEN), "»TELEPORTINFO« {%06x}%s "#C_GOLD_E"has teleported to Los Santos! (/LS)", GetPlayerColor(playerid) >>> 8, pName);
    SendLanguageMessageToAll(C_GOLD, stringDE, stringEN);
    SetPlayerPos(playerid, 2492.7268, -1668.3849, 13.3438);
    SetPlayerFacingAngle(playerid, WEST);
    SetVehiclePos(pVehicle, 2492.7268, -1668.3849, 13.3438);
    GetVehicleZAngle(playerid, VehicleAngle);
    SetVehicleZAngle(playerid, VehicleAngle);
    PutPlayerInVehicle(playerid, pVehicle, 0);
    GivePlayerMoneyEx(playerid, -3000);
    SavePlayerHPandAP(playerid);
    SetSpawnProtection(playerid);
    }
    else SendLanguageMessage(playerid, C_RED, "»WARNUNG« Du hast nicht genug Geld!", "»WARNING« You don't have enough money!");
    return 1;
    }


    stock PlayerActionForbidden(playerid)
    {
    if(IsPlayerAFK[playerid]) SendLanguageMessage(playerid, C_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, C_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, C_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 0;
    }


    Es geht hauptsächlich um die stock Funktion. Wenn ein Spieler Schaden nimmt, dann wird die Client Message gesendet (soweit so gut), doch er kann sich noch teleportieren, was er nicht können soll. Errors oder Warnings krieg ich keine, es scheint also ein Logikfehler zu sein.


    Danke schon mal für eure Hilfe!

    Kokain97: Könntest du etwas konkreter werden? Was genau macht dir daran Spaß?


    MeMaDe: Geile Autos lassen sich in Freeroam Modi per CMD beliebig spawnen. Die StVO ist schon in unser aller älltäglichem Leben vorhanden, warum sie dann auch noch simulieren? Spiele sind für mich eher etwas, wo man mal "die Sau rauslassen" kann. Siehe oben, die vorletzte Frage.


    @BronX: Also meinst du es geht es mehr um das virtuelle Image eines Spielers als um den Spielspaß? Worauf würdest du das zurückführen? Ich weiß nicht, aber "Kräftemessen" und "RP" sind für mich zwei Begriffe, die einfach nicht zusammengehören. Dafür hat es schließlich DM, wo Skill entscheidet. Wen interessiert es, ob jmd auf einem Server einen Infernus hat, wenn man sich den auf jedem anderen Modus frei spawnen kann? Klar hat das Auto dann einen lokalen Status, aber trotzdem finde ich das absurd. Skills im DM kann man sich nicht eben mal so beibringen (außer man cheatet natürlich).

    Hallo, liebste breadfish Community,


    Der Titel des Threads impliziert teils ja schon mein Anliegen. Ich richte mich nun an alle RP/RL Spieler dieser Community.
    Was ist an der RP/RL Spielweise für so viele Spieler so reizvoll?
    Wieso wird RP so sehr zelebriert? Liegt es an der so berühmten Vorlage "Godfather"?
    Was bewegt einen Spieler dazu GTA, ein Spiel, in dem man Waffen zur Verfügung gestellt kriegt, wahllos um sich schießen kann, anrempeln kann wen man will, auf eine so strikte Art zu Spielen zu "reduzieren"?
    Wieso bekommt RP so viel mehr Aufmerksamkeit als Freeroam oder andere Modi?


    Ich wäre euch für ein paar Antworten sehr dankbar!


    MfG, Many

    Guten Abend,


    ich frage mich, wie man den NPC mitsamt dem Verkaufs-CP im Ammunation Interior loswird. Ich hab ziemlich oft etwas von "SetPlayerShopName" gelesen, weiß aber nach dem Durchlesen der entsprechenden Wiki Page nicht so recht, wie das gehen soll bzw. was genau die besagte Funktion eig. tut.


    Danke!

    Das größte Übel sind eh die ganzen RP undRL Gamemodes. Und warum? Ein Blick auf das Server Werbeforum, und es wird einem sofort klar: Godfather. Freeroam hat längst an Popularität verloren, was ich absolut nicht nachvollziehen kann, da Freeroam für mich der Inbegriff von GTA ist.
    Wie bereits erwähnt erfährt A/D seit 0.3z (skinshots sei Dank) einen massiven Zulauf. Ich selber habe nie zuvor A/D gespielt, da mich auf so großen Maps ein 4vs4 oder 5vs5 einfach nicht gereizt hat. Obendrauf bevorzuge ich Runnies über Walkies. Mit ca 30-40 Spielern macht so ein Massengemetzel aber wirklich Spaß, vorausgesetzt man beherrscht den C Bug und kann einigermaßen mithalten.
    Was "neu" ist liegt im Auge des Betrachters. Ich glaube kaum, dass irgendjemand mit etwas arg neuem kommt, so schade das auch ist. Aber ich kann mir vorstellen, dass Singleplayer GMs populär werden könnten. Einziger Negativpunkt: Verdammt großer Aufwand.

    Freeroam. Wenn man mal einen Blick auf die Serverwerbungen wirft, sieht man nur noch RP und RL Gamemodes, absolut nichts anderes. Der ganze Godfather Müll kommt erschwerend hinzu.
    GTA:SA ist ein Spiel, das dem Spieler Waffen gibt, und die sollte er uneingeschränkt nutzen können. -.- Meiner Meinung nach gibt es so ziemlich nur noch RP und RL.

    //Unter OnDialogResponse
    if(dialogid == DIALOG_AFK)
    {
    if(response)
    {
    new PlayerWhoGoesBack[MAX_PLAYER_NAME],
    stringDE[64],
    stringEN[64];
    KillTimer(StartGodModeTimer[playerid]); //Wird nach Betätigen des Dialogbuttons nicht gekillt. Der GodModeTimer läuft weiter.


    GetPlayerName(playerid, PlayerWhoGoesBack, sizeof(PlayerWhoGoesBack));
    format(stringDE, sizeof(stringDE), "»SPIELERINFO« %s spielt nun wieder.", PlayerWhoGoesBack);
    format(stringEN, sizeof(stringEN), "»PLAYERINFO« %s is playing again.", PlayerWhoGoesBack);
    SendLanguageMessageToAll(C_LIGHT_BLUE, stringDE, stringEN);
    TogglePlayerControllable(playerid, 1);
    IsPlayerAFK[playerid] = false;
    return 1;
    }
    }


    COMMAND:afk(playerid, params[])
    {
    if(IsPlayerAFK[playerid]) return SendLanguageMessage(playerid, C_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]) return SendLanguageMessage(playerid, C_RED, "»WARNUNG« Du kannst dich nicht in einem DM teleportieren! Benutze /cancel um das DM zu verlassen!", "»WARNING« You can't teleport inside of a DM! Use /cancel to exit the DM!");


    new PlayerWhoGoesAFK[MAX_PLAYER_NAME],
    stringDE[64],
    stringEN[64];


    ShowLanguageDialog(playerid, DIALOG_AFK, DIALOG_STYLE_MSGBOX, "AFK", "AFK", "Du bist nun im AFK-Modus. Drücke 'Zurück' um wieder zu spielen.", "You are now in the AFK mode. Press 'Back' to play again.", "Zurück", "Back", "", "");
    StartGodModeTimer[playerid] = SetTimerEx("StartGodMode", 250, true, "i", playerid);


    GetPlayerName(playerid, PlayerWhoGoesAFK, sizeof(PlayerWhoGoesAFK));
    format(stringDE, sizeof(stringDE), "»SPIELERINFO« %s ist nun AFK.", PlayerWhoGoesAFK);
    format(stringEN, sizeof(stringEN), "»PLAYERINFO« %s is now AFK.", PlayerWhoGoesAFK);
    SendLanguageMessageToAll(C_LIGHT_BLUE, stringDE, stringEN);
    TogglePlayerControllable(playerid, 0);
    IsPlayerAFK[playerid] = true;
    return 1;
    }


    Irgendwie lässt sich der Timer nicht killen. Ich hab das Ganze schon in einem anderen cmd, und da funktioniert es wunderbar.


    EDIT: Oh man, ich hab einfach ein SetPlayerHealth(playerid, 100); vergessen. -.-
    Gelöst.

    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)
    {
    for(new i = 0; i < 9; i++)
    {
    if(i == 0 || i == 1 || i == 2) GivePlayerWeapon(playerid, GRENADE, 5);
    else if(i == 3 || i == 4 || i == 5) GivePlayerWeapon(playerid, ROCKET_LAUNCHER, 4);
    else if(i == 6 || i == 7 || i == 8 || i == 9) GivePlayerWeapon(playerid, HEAT_SEEKER, 5);
    DestroyDynamicPickup(BF_WEAPON[i]);
    SetTimerEx("PickupRespawn", 45000, false, "i", i);
    }
    return _OnPlayerPickUpDynamicPickup(playerid, pickupid);
    }

    Leider klappt die Geschichte hier nicht. Wenn ich ein Pickup aufnehme, werden alle Pickups im Areal zerstört und respawnen gleichzeitig wieder. Zudem wird die Munition falsch vergeben.
    Weiß jemand weiter?


    Vielen Dank!

    Ich weiß nicht, ob Whitetiger's AC sonderlich bekannt ist, kann aber nur positives dazu sagen. Wird in der A/D bzw CW Szene gerne genutzt. Der Client lässt zudem auch waffen, skin, auto, font mods zu. (http://sixtytiger.com/)
    Ich finde es schade, dass so viele Leute nicht dazu bereit wären sich einen herunterzuladen. Ob es jemals einen geben wird der verpflichtend wird, ist glaub ich zu bezweifeln, aber sehr wünschenswert, wenn man sich mal opcode anschaut...

    if(dialogid == DIALOG_LOGIN)
    {
    if(!response) return Kick(playerid);
    if(response)
    {
    new hashpass[129],
    pName_[MAX_PLAYER_NAME],
    stringDE_[150],
    stringEN_[150];
    GetPlayerName(playerid, pName_, sizeof(pName_));
    WP_Hash(hashpass, sizeof(hashpass), inputtext);
    if(!strcmp(hashpass, pInfo[playerid][Password], false))
    {
    INI_ParseFile(Path(playerid), "loadaccount_%s", .bExtra = true, .extra = playerid);
    SetPlayerScore(playerid, pInfo[playerid][Score]);
    GivePlayerMoneyEx(playerid, pInfo[playerid][Money]);


    format(stringDE_, sizeof(stringDE_), "»PLAYERINFO« Willkommen zurück, "#C_GOLD_EMBED"%s"#C_TURQUOISE_EMBED"! Du hast dich erfolgreich eingeloggt.", pName_);
    format(stringEN_, sizeof(stringEN_), "»PLAYERINFO« Welcome back, "#C_GOLD_EMBED"%s"#C_TURQUOISE_EMBED"! You have successfully logged in.", pName_);
    SendLanguageMessage(playerid, C_TURQUOISE, stringDE_, stringEN_);
    }
    else
    {
    format(stringDE_, sizeof(stringDE_), "Willkommen zurück, "#C_LIGHT_BLUE_EMBED"%s"#C_DIALOG_EMBED"! Dieser Account ist registriert!\nBitte gib das Passwort für diesen Account ein!\n"#C_RED_EMBED"Falsches Passwort!", pName_);
    format(stringEN_, sizeof(stringEN_), "Welcome back, "#C_LIGHT_BLUE_EMBED"%s"#C_DIALOG_EMBED"! This account is registered!\nPlease type in the password for this account!\n"#C_RED_EMBED"Wrong password!", pName_);
    ShowLanguageDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Login", stringDE_, stringEN_, "Einloggen", "Log in", "Abbrechen", "Cancel");
    return 1;
    }
    }
    }


    Wenn der Spieler sich einloggt, bekommt er das Geld, soweit so gut. Zu dem Zeitpunkt ist er noch in der Skin Selection. Sobald er aber spawnt, ist das Geld wieder weg.