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"
    #include <cstdio>

    using namespace std;
    using namespace vaultmp;

    Base nuka = (Base) 0x0001519E;
    Value area[] = {-12630.32, -15715.93, -12728.72, -15834.46};
    IDSet player_nuka;

    Result VAULTSCRIPT NukaArea()
    {
    IDVector players = GetList(Type::ID_PLAYER);

    for (const ID& id : players)
    {
    if (!player_nuka.count(id) && GetActorSneaking(id))
    {
    Value X, Y, Z;
    GetPos(id, X, Y, Z);

    if (X < area[0] && X > area[2] && Y < area[1] && Y > area[3])
    {
    UIMessage(id, "You found a hidden nuka cola!");
    AddItem(id, nuka, 1, 100.0, False);
    player_nuka.insert(id);
    }
    }
    }

    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)
    {
    player_nuka.erase(object);
    }
    [/highlight]
  2. -
    [category]Script examples[/category]
  3. +
    [category]Script examples[/category]
    [highlight=c]
    #include <vaultmp>

    #define MAX_PLAYERS (4)
    new PlayerID[MAX_PLAYERS] = [0,...];

    new nuka = 0x0001519E,
    Float:area[] = [-12630.32,-15715.93,-12728.72,-15834.46],
    bool:event[MAX_PLAYERS] = [false,...];

    main()
    {
    if(GetMaximumPlayers() > MAX_PLAYERS) printf("Error, your MAX_PLAYERS is too low! Required: %d",GetMaximumPlayers());
    switch(GetGameCode())
    {
    case FALLOUT3:
    {
    printf("NukaScript for Fallout 3loaded\n");
    CreateTimer("NukaSpot",1000);
    }
    default: printf("NukaScript is for Fallout 3 only!\n");
    }
    }

    public OnPlayerDisconnect(ID, reason)
    {
    new conID = GetConnection(ID);
    event[conID] = false;
    PlayerID[conID] = 0;
    }

    public OnPlayerRequestGame(ID)
    {
    new conID = GetConnection(ID);
    PlayerID[conID] = ID;
    new base = 0x00000000;
    switch (GetGameCode())
    {
    case FALLOUT3: base = 0x00030D82; // Carter
    case NEWVEGAS: base = 0x0010C0BE; // Jessup
    }
    return base;
    }

    forward NukaSpot();
    public NukaSpot()
    {
    for (new i; i<MAX_PLAYERS; i++)
    {
    new ID = PlayerID[i];
    if(ID == 0 || event[i] || !GetActorSneaking(ID)) continue;
    new Float:x,Float:y,Float:z;
    GetPos(ID,x,y,z);
    if (x < area[0] && x > area[2] && y < area[1] && y > area[3])
    {
    UIMessage(ID,"You found a hidden nuka cola!");
    AddItem(ID,nuka,1,100.0,Bool:false);
    event[i] = true;
    }
    }
    return 1;
    }
    [/highlight]