This site has been archived and made available for preservation purposes. No edits can be made.

NukaScript Fallout 3

(Difference between revisions)
Return to current revision
  1.  
    This script uses a timer to check for the player being in a special area. If the player is in that area and is sneaking, he will find a hidden nuka cola.[image]NukaScript.jpg|thumb|right|NukaScript in-game[/image]
    [h="2"] Code [/h]
    [highlight=cpp]
    #include "../vaultscript.h"
  2. -
    #include <map>
  3.  
    #include <cstdio>

    using namespace std;
    using namespace vaultmp;

    Base nuka = (Base) 0x0001519E;
    Value area[] = {-12630.32, -15715.93, -12728.72, -15834.46};
  4. -
    map<ID, State> player_nuka;
  5. +
    IDSet player_nuka;
  6.  

    Result VAULTSCRIPT NukaArea()
    {
  7. -
    for (pair<const ID, State>& player : player_nuka)
  8. +
    IDVector players = GetList(Type::ID_PLAYER);

    for (const ID& id : players)
  9.  
    {
  10. -
    if (!player.second && GetActorSneaking(player.first))
  11. +
    if (!player_nuka.count(id) && GetActorSneaking(id))
  12.  
    {
    Value X, Y, Z;
  13. -
    GetPos(player.first, X, Y, Z);
  14. +
    GetPos(id, X, Y, Z);
  15.  

    if (X < area[0] && X > area[2] && Y < area[1] && Y > area[3])
    {
  16. -
    UIMessage(player.first, "You found a hidden nuka cola!");
    AddItem(player.first, nuka, 1, 100.0, False);
    player.second = True;
  17. +
    UIMessage(id, "You found a hidden nuka cola!");
    AddItem(id, nuka, 1, 100.0, False);
    player_nuka.insert(id);
  18.  
    }
    }
    }
  19. -

  20. +

  21.  
    return (Result) 0;
    }

    Void VAULTSCRIPT exec()
    {
    if (GetGameCode() != Index::FALLOUT3)
    {
    printf("NukaScript is for Fallout 3 only!\n");
    terminate();
    }

    CreateTimer(&NukaArea, (Interval) 500);

    printf("NukaScript for Fallout 3 loaded\n");
    }

    Void VAULTSCRIPT OnPlayerDisconnect(ID player, Reason reason)
    {
    player_nuka.erase(player);
    }

    Void VAULTSCRIPT OnSpawn(ID object)
    {
  22. -
    if (IsPlayer(object))
    {
    player_nuka.erase(object);
    player_nuka.insert(pair<ID, State>(object, False));
    }
  23. +
    player_nuka.erase(object);
  24.  
    }
    [/highlight]
    [h="2"] Explanation [/h]
    [category]Script examples[/category]