Gamestudio Links
Zorro Links
Newest Posts
Change chart colours
by 7th_zorro. 05/11/24 09:25
Data from CSV not parsed correctly
by dr_panther. 05/06/24 18:50
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
0 registered members (), 1,094 guests, and 1 spider.
Key: Admin, Global Mod, Mod
Newest Members
Hanky27, firatv, wandaluciaia, Mega_Rod, EternallyCurious
19051 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Empty pointer in fire_bullets #169009
11/23/07 01:48
11/23/07 01:48
Joined: Jan 2005
Posts: 30
F
fp Offline OP
Newbie
fp  Offline OP
Newbie
F

Joined: Jan 2005
Posts: 30
Why do i get this error message?

Empty pointer in fire_bullets: weapon2.frame = 102;

Here is the code:
//////////////////////////////////////////////////////////////////////

var current_ammo = 20;

var player1_pos; // stores the initial position of the player
var player2_pos; // stores the position of the player after a frame

var weapon_height;
var weapon_offset;

var trace_coords;

var got_weapon2 = 0;



string weapon2_mdl = <pistol.mdl>;
bmap cross_map = <crosshair.tga>;
string target_mdl = <target.mdl>;

string muzzle_pcx = <muzzle.pcx>; // muzzle sprite
string explosion_pcx = <explosion+5.pcx>; // explosion sprite
string hithole_tga = <hithole.tga>;

sound bullet_wav = <bullet.wav>;
sound nobullets_wav = <nobullets.wav>;
sound reload_wav = <reload.wav>;

function fire_bullets(); // creates the bullets
function reload();
function display_muzzle();
function explosion_sprite(); // controls the explosion sprite
function show_target(); // displays the (red) target model
function display_hithole(); // shows the hit hole bitmap
function show_crosshair();

panel crosshair
{
layer = 4;
bmap = cross_map;
alpha = 100;
flags = transparent, refresh, overlay, d3d;
}

function show_crosshair()
{
crosshair.pos_x = (screen_size.x - bmap_width(cross_map))/2; //Center on x Axis
crosshair.pos_y = (screen_size.y - bmap_height(cross_map))/2; //Center on y Axis
crosshair.visible = on; //Set crosshair visible
}

/////////////////////////////////////////////////////////////////////////////////////////

entity* weapon2;

function players_weapon()
{
my.znear = on;
my.passable = on;
got_weapon2 = 1;
my.scale_x =4;
my.scale_y =4;
my.scale_z =4;
proc_late();
while (1)
{

vec_set (player1_pos.x, player.x); // store the initial player position
my.pan = camera.pan;
my.tilt = camera.tilt;
vec_set (weapon_offset.x, vector (35, -15, -22));

if (vec_dist (player1_pos.x, player2_pos.x) != 0) // the player has moved during the last frame?
{
weapon_height += 30 * time; // then offset weapon_height (30 = weapon waving speed)
weapon_offset.z += 0.3 * sin(weapon_height); // (0.3 = weapon waving amplitude)
}
// rotate weapon_offset according to the camera angles
vec_rotate (weapon_offset.x, vector (camera.pan, camera.tilt, 0));
vec_add (weapon_offset.x, camera.x); // add the camera position to weapon_offset
vec_set (my.x, weapon_offset.x); // set weapon's coords to weapon_offset
if (got_weapon2 == 1) // still got weapon2 ?
{
on_mouse_left = fire_bullets;

vec_set(trace_coords.x, vector(10000, 0, 0)); // the weapon has a firing range of up to 10,000 quants
vec_rotate(trace_coords.x, camera.pan);
vec_add(trace_coords.x, camera.x);
if (c_trace(camera.x, trace_coords.x, ignore_me | ignore_passable) > 0) // hit something?
{
ent_create (target_mdl, target.x, show_target); // then show the target model
show_crosshair();
}
}
my.pan = camera.pan; // use the same camera angles for the weapon
my.tilt = camera.tilt;
vec_set (player2_pos.x, player.x); // store the new player coordinates after 1 frame
wait (1);
}

}


function show_target()
{
my.passable = on; // the target model is passable
my.ambient = 100; // and should look bright enough
my.scale_x = min (6, vec_dist (my.x, camera.x) / 500); // play with 6 and with 500
my.scale_y = my.scale_x;
my.scale_z = my.scale_x;
wait (1);
ent_remove (my);
}



function fire_bullets()
{
// wait(-0.22); // fire speed
// proc_kill(4); // don't allow more than 1 copy of this function to run

if (current_ammo > 0) // got ammo?
{
c_trace(camera.x, trace_coords.x, ignore_me | ignore_passable | activate_shoot);
if (you == null) // hit a wall?
{
ent_create (hithole_tga, target.x, display_hithole); // then create a bullet hit hole
}

weapon2.frame = 102;
while (weapon2.frame <= 115)
{
weapon2.frame += 3.5 * time_step; //shot animation
wait(1);
}
//
ent_create (muzzle_pcx, temp.x, display_muzzle); // create the gun muzzle
ent_create (explosion_pcx, target.x, explosion_sprite); // create the explosion sprite
snd_play (bullet_wav, 100, 0); // play the bullet sound at a volume of 100

current_ammo -= 1; // decrease the number of bullets
}
else // no ammo left?
{
snd_play (nobullets_wav, 100, 0); // then play the noammo.wav sound

reload();
}

wait(-0.22); // fire speed

}


function display_hithole()
{
vec_to_angle (my.pan, normal); // orient the hit hole sprite correctly
vec_add(my.x, normal.x); // move the sprite a bit away from the wall
my.passable = on; // the hit hole bitmap is passable
my.transparent = on; // and transparent
my.ambient = 50;
my.flare = on;
my.oriented = on; // the sprite is oriented
my.roll = random(360); // and has a random roll angle (looks nicer this way)
my.scale_x = 0.5; // we scale it down
my.scale_y = my.scale_x; // on the x and y axis
sleep (20); // show the hit hole for 20 seconds
ent_remove (my); // and then remove it
}


function display_muzzle()
{
my.passable = on; // the muzzle is passable
my.flare = on; // make the black parts transparent even without using tga files (using a pcx file here)
my.bright = on; // the muzzle should be bright
my.ambient = 100; // and this line makes it even brighter
my.oriented = on; // the sprite is oriented
my.pan = weapon2.pan; // has the same pan and tilt
my.tilt = weapon2.tilt; // with the weapon
my.roll = random(360); // and a random roll angle (looks nicer)
my.scale_x = 0.5; // we scale it down
my.scale_y = my.scale_x; // on all the axis
my.scale_z = my.scale_z; // this would only be needed for a 3D (model-based) muzzle
weapon2.ambient = 100; // highlight the weapon (makes it look more realistic)
wait (2); // show the muzzle sprite for 2 frames
weapon2.ambient = 0; // restore the normal weapon ambient value
ent_remove (my); // and then remove it
}

function explosion_sprite()
{
my.passable = on; // the explosion sprite is passable
my.scale_x = 0.15; // we scale it down to 0.15
my.scale_y = my.scale_x; // on both axis
my.flare = on; // we set its flare
my.bright = on; // and bright flags
my.ambient = 100; // and we give it an ambient of 100
my.roll = random(360); // we set a random roll angle
my.transparent = on; // and make it transparent
my.alpha = 100; // but we set it to be completely opaque for now
while (my.frame < 5) // go through all the animation frames
{
my.frame += 2 * time; // animation speed
wait (1);
}
while (my.alpha > 0) // now fade the last frame quickly
{
my.alpha -= 50 * time; // 50 = fading speed
wait (1);
}
ent_remove (my);
}


function reload()
{
beep;
}


action my_weapon
{
weapon2 = my;
my.passable = on;
while (player == null) {wait (1);}
while (vec_dist (player.x, my.x) > 70)
{
my.pan += 3 * time;
wait (1);
}
ent_remove (my);
ent_create (weapon2_mdl, camera.x, players_weapon);
}

Re: Empty pointer in fire_bullets [Re: fp] #169010
11/23/07 09:36
11/23/07 09:36
Joined: Mar 2006
Posts: 752
Portugal
demiGod Offline
User
demiGod  Offline
User

Joined: Mar 2006
Posts: 752
Portugal
This code its a mess, but just try:

function fire_bullets()
{
if (weapon2)
{
//--- code here
}
}

Re: Empty pointer in fire_bullets [Re: demiGod] #169011
11/23/07 13:15
11/23/07 13:15
Joined: Jan 2005
Posts: 30
F
fp Offline OP
Newbie
fp  Offline OP
Newbie
F

Joined: Jan 2005
Posts: 30
i´ve got it

i´ve made a mistake. i wrote "weapon2 = my;" in
"ation my_weapon"
instead of
"function players_weapon()"

But thank you

Re: Empty pointer in fire_bullets [Re: fp] #169012
11/23/07 21:03
11/23/07 21:03
Joined: Sep 2006
Posts: 292
M
Mythran Offline
Member
Mythran  Offline
Member
M

Joined: Sep 2006
Posts: 292
// Defines
define NO_ITEM = 1600;
define MAX_INVENTORY = 45;
define MAX_SLIDER = 12;

define MOVE_ITEM = 0;
define USE_ITEM = 1;
define VIEW_ITEM = 2;

define ITEM_PICKUP_RANGE = 200;

define NECK = 0;
define HEAD = 1;
define BACK = 2;
define RSHLDR = 3;
define BODY = 4;
define LSHLDR = 5;
define RARM = 6;
define WAIST = 7;
define LARM = 8;
define RHAND = 9;
define LEGS = 10;
define LHAND = 11;
define RFINGER = 12;
define FEET = 13;
define LFINGER = 14;
define NOEQUIP = 15;

// skills
define health, skill9;
define armor, skill10;
define merchant, skill13;
define itemcarry0, skill14;
define itemcarry1, skill15;
define itemcarry2, skill16;
define itemcarry3, skill17;
define itemcarry4, skill18;
define itemcarry5, skill19;
define item_number, skill20;

define expendable, flag1;

// Variables
var inv_index[max_inventory];
var merc_inv_index[6];
var equipped_index[15];
var equipped_ent_hdl[15];
var bitmap_hdl[1601];
var item_description_hdl[1601];
var item_skill_4[1601];
var item_skill_9[1601];
var item_skill_10[1601];
var item_wear_hdl[16];
var item_cmd_hdl[3];
var slider_pos = 0;
var index;
var item_sel_num = NO_ITEM;
var merc_item_sel_num;
//var item_sel_hdl;
var temp_item_num;
var merc_temp_item_num;
var wear_item_num;
var item_pnl_selected;
var merc_item_pnl_selected;
var equipped_pnl_sel;
var counter;
var drop_vector[3];
var drop_loc_set = 0;
var item_command = move_item;
var inventory_display;
var loot_on;


string view_str1;
string view_str2;
string temp_str;
string wear_str;
string str_temp;
string str_player_ac;
string str_player_hp;

entity* player;
entity* temp_item;
//entity* selected_item;


// model strings
string shield_mdl = <shield.mdl>;
string red_shield_mdl = <red_shield.mdl>;
string power_pill_mdl = <power_pill.mdl>;
string cigs_mdl = <cigs.mdl>;
string fish_mdl = <fish.mdl>;
string mace_mdl = <mace.mdl>;
string staff_mdl = <staff.mdl>;
string warlock_mdl = <warlock.mdl>;
string lamp_mdl = <Lampe.mdl>;

// ******************** ADD ITEM DESRIPTIONS HERE **************************
// item description strings
string large_shld_str = "Large Shield";
string large_shld_plus1_str = "+1 Large Shield";
string power_pill_str = "Power Pill";
string cig_str = "Cigarettes";
string fish_str = "Fish";
string mace_str = "Mace";
string staff_str = "Staff";
string lamp_str = "Decorative Lamp";

//************************************************************************




// item wear position strings - do not change - unless re-coding
string neck_str = "Neck";
string head_str = "Head";
string back_str = "Back";
string rshdlr_str = "Right Shoulder";
string body_str = "Body";
string lshldr_str = "Left Shoulder";
string rarm_str = "Right Arm";
string waist_str = "Waist";
string larm_str = "Left Arm";
string rhand_str = "Right Hand";
string legs_str = "Legs";
string lhand_str = "Left Hand";
string rfinger_str = "Right Finger";
string feet_str = "Feet";
string lfinger_str = "Left Finger";
string unwearable_str = "Cannot be equipped";

// Fonts
font fnt_century12 = <Centur12.pcx>,16,20;

// bitmaps
//panels
bmap inventory_bmp = <inventory.bmp>;
bmap merc_inventory_bmp = <mercinventory.bmp>;
bmap equipped_bmp = <equipped.bmp>;
bmap slider_bmp = <slider.bmp>;
bmap button_bmp = <button.bmp>;
bmap usepnl_bmp = <usepnl.bmp>;
bmap movepnl_bmp = <movepnl.bmp>;
bmap viewpnl_bmp = <viewpnl.bmp>;
bmap view_bmp = <view.bmp>;
bmap invhead_bmp = <invhead.bmp>;

//****************** ADD YOUR ITEM BITMAPS HERE ****************************
bmap no_item_bmp = <no_item.bmp>;
bmap shield_bmp = <shield.bmp>;
bmap red_shield_bmp = <red_shield.bmp>;
bmap power_pill_bmp = <power_pill.bmp>;
bmap cigs_bmp = <cigs.bmp>;
bmap fish_bmp = <fish.bmp>;
bmap mace_bmp = <mace.bmp>;
bmap staff_bmp = <staff.bmp>;
bmap lamp_bmp = <lamp.bmp>;
//***************************************************************************


function init_items();
function selected();
function drop_item();
function item_function();
function switch_item_cmd();
function load_merc_inv_panel();


// Panels
panel equipped_pnl
{
bmap = equipped_bmp;
layer = 20;
pos_x = 844;
pos_y = 0;
flags = refresh, d3d, visible;
}

panel item_cmd_pnl
{
bmap = movepnl_bmp;
layer = 21;
pos_x = 1000;
pos_y = 2;
on_click = switch_item_cmd;
flags = refresh, d3d, visible;
}

panel inv_head_pnl
{
bmap = invhead_bmp;
layer = 20;
pos_x = 844;
pos_y = 262;
flags = overlay, refresh, d3d, visible;
}

panel inventory_pnl
{
bmap = inventory_bmp;
layer = 20;
pos_x = 844;
pos_y = 287;
vslider = 158, 2, 154, slider_bmp, 0, MAX_SLIDER, slider_pos;
flags = overlay, refresh, d3d, visible;
}

panel merc_inventory_pnl
{
bmap = merc_inventory_bmp;
layer = 20;
pos_x = 844;
pos_y = 453;
flags = overlay, refresh, d3d;
}

panel view_item_pnl
{
bmap = view_bmp;
layer = 20;
pos_x = 200;
pos_y = 0;
flags = overlay, refresh, d3d;
}

text view_item_txt1
{
layer = 21;
pos_x = 220;
pos_y = 10;
strings = 50;
font = fnt_century12;
}

text view_item_txt2
{
layer = 21;
pos_x = 220;
pos_y = 30;
strings = 50;
font = fnt_century12;
}

// text to display this player's Armor Class
text txt_player_hp
{
pos_x = 0; // set in init_display
pos_y = 35;
layer = 15;
font fnt_century12;
string str_player_hp;
flags = visible;
}

// text to display this player's Armor Class
text txt_player_ac
{
pos_x = 0; // set in init_display
pos_y = 65;
layer = 15;
font fnt_century12;
string str_player_ac;
flags = visible;
}

panel sel_item_pnl
{
bmap = mace_bmp;
layer = 21;
pos_x = 846;
pos_y = 2;
flags = transparent, overlay, refresh, d3d;
}

panel equipped_neck_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 846;
pos_y = 2;
on_click = neck;
flags = transparent, overlay, refresh, d3d;
}

panel equipped_head_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 898;
pos_y = 2;
on_click = head;
flags = transparent, overlay, refresh, d3d;
}

panel equipped_back_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 950;
pos_y = 2;
on_click = back;
flags = transparent, overlay, refresh, d3d;
}

panel equipped_rshldr_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 846;
pos_y = 54;
on_click = rshldr;
flags = transparent, overlay, refresh, d3d;
}

panel equipped_body_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 898;
pos_y = 54;
on_click = body;
flags = transparent, overlay, refresh, d3d;
}

panel equipped_lshldr_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 950;
pos_y = 54;
on_click = lshldr;
flags = transparent, overlay, refresh, d3d;
}

panel equipped_rarm_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 846;
pos_y = 106;
on_click = rarm;
flags = transparent, overlay, refresh, d3d;
}

panel equipped_waist_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 898;
pos_y = 106;
on_click = waist;
flags = transparent, overlay, refresh, d3d;
}

panel equipped_larm_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 950;
pos_y = 106;
on_click = larm;
flags = transparent, overlay, refresh, d3d;
}

panel equipped_rhand_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 846;
pos_y = 158;
on_click = rhand;
flags = transparent, overlay, refresh, d3d;
}

panel equipped_legs_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 898;
pos_y = 158;
on_click = legs;
flags = transparent, overlay, refresh, d3d;
}

panel equipped_lhand_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 950;
pos_y = 158;
on_click = lhand;
flags = transparent, overlay, refresh, d3d;
}
panel equipped_rfinger_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 846;
pos_y = 210;
on_click = rfinger;
flags = transparent, overlay, refresh, d3d;
}

panel equipped_feet_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 898;
pos_y = 210;
on_click = feet;
flags = transparent, overlay, refresh, d3d;
}

panel equipped_lfinger_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 950;
pos_y = 210;
on_click = lfinger;
flags = transparent, overlay, refresh, d3d;
}

panel item0_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 846;
pos_y = 289;
on_click = select_item0;
flags = transparent, overlay, refresh, d3d;
}

panel item1_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 898;
pos_y = 289;
on_click = select_item1;
flags = transparent, overlay, refresh, d3d;
}

panel item2_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 950;
pos_y = 289;
on_click = select_item2;
flags = transparent, overlay, refresh, d3d;
}

panel item3_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 846;
pos_y = 341;
on_click = select_item3;
flags = transparent, overlay, refresh, d3d;
}

panel item4_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 898;
pos_y = 341;
on_click = select_item4;
flags = transparent, overlay, refresh, d3d;
}

panel item5_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 950;
pos_y = 341;
on_click = select_item5;
flags = transparent, overlay, refresh, d3d;
}

panel item6_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 846;
pos_y = 393;
on_click = select_item6;
flags = transparent, overlay, refresh, d3d;
}

panel item7_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 898;
pos_y = 393;
on_click = select_item7;
flags = transparent, overlay, refresh, d3d;
}

panel item8_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 950;
pos_y = 393;
on_click = select_item8;
flags = transparent, overlay, refresh, d3d;
}

panel merc_item0_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 846;
pos_y = 455;
on_click = merc_select_item0;
flags = transparent, overlay, refresh, d3d;
}

panel merc_item1_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 898;
pos_y = 455;
on_click = merc_select_item1;
flags = transparent, overlay, refresh, d3d;
}

panel merc_item2_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 950;
pos_y = 455;
on_click = merc_select_item2;
flags = transparent, overlay, refresh, d3d;
}

panel merc_item3_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 846;
pos_y = 507;
on_click = merc_select_item3;
flags = transparent, overlay, refresh, d3d;
}

panel merc_item4_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 898;
pos_y = 507;
on_click = merc_select_item4;
flags = transparent, overlay, refresh, d3d;
}

panel merc_item5_pnl
{
bmap = no_item_bmp;
layer = 21;
pos_x = 950;
pos_y = 507;
on_click = merc_select_item5;
flags = transparent, overlay, refresh, d3d;
}

action item_action
{
my.enable_click = on;
my.event = selected;
}

action lootable_item
{
my.enable_click = on;
my.event = load_merc_inv_panel;
}

function item_function()
{
my.enable_click = on;
my.event = selected;
my.item_number = item_sel_num;
}

function load_merc_inv_panel()
{
if(loot_on == ON)
{
goto (loot_turn_off);
}
if(vec_dist(player.x, player.y) <= ITEM_PICKUP_RANGE)
{
loot_on = ON;

item_sel_num = NO_ITEM;
merc_inv_index[0] = my.itemcarry0;
merc_inv_index[1] = my.itemcarry1;
merc_inv_index[2] = my.itemcarry2;
merc_inv_index[3] = my.itemcarry3;
merc_inv_index[4] = my.itemcarry4;
merc_inv_index[5] = my.itemcarry5;
merc_inventory_pnl.visible = on;
merc_item0_pnl.visible = on;
merc_item1_pnl.visible = on;
merc_item2_pnl.visible = on;
merc_item3_pnl.visible = on;
merc_item4_pnl.visible = on;
merc_item5_pnl.visible = on;


loot_turn_off:
loot_on = OFF;
loot_off();
}
}

// Equipped panel functions
function neck()
{
equipped_pnl_sel = NECK;
place_equipped();
}

function head()
{
equipped_pnl_sel = HEAD;
place_equipped();
}

function back()
{
equipped_pnl_sel = BACK;
place_equipped();
}

function rshldr()
{
equipped_pnl_sel = RSHLDR;
place_equipped();
}

function body()
{
equipped_pnl_sel = BODY;
place_equipped();
}

function lshldr()
{
equipped_pnl_sel = LSHLDR;
place_equipped();
}

function rarm()
{
equipped_pnl_sel = RARM;
place_equipped();
}

function waist()
{
equipped_pnl_sel = WAIST;
place_equipped();
}

function larm()
{
equipped_pnl_sel = LARM;
place_equipped();
}

function rhand()
{
equipped_pnl_sel = RHAND;
place_equipped();
}

function legs()
{
equipped_pnl_sel = LEGS;
place_equipped();
}

function lhand()
{
equipped_pnl_sel = LHAND;
place_equipped();
}

function rfinger()
{
equipped_pnl_sel = RFINGER;
place_equipped();
}

function feet()
{
equipped_pnl_sel = FEET;
place_equipped();
}

function lfinger()
{
equipped_pnl_sel = LFINGER;
place_equipped();
}

// Inventory panel functions
function select_item0()
{
item_pnl_selected = 0;
place_item();
}

function select_item1()
{
item_pnl_selected = 1;
place_item();
}

function select_item2()
{
item_pnl_selected = 2;
place_item();
}

function select_item3()
{
item_pnl_selected = 3;
place_item();
}

function select_item4()
{
item_pnl_selected = 4;
place_item();
}

function select_item5()
{
item_pnl_selected = 5;
place_item();
}

function select_item6()
{
item_pnl_selected = 6;
place_item();
}

function select_item7()
{
item_pnl_selected = 7;
place_item();
}

function select_item8()
{
item_pnl_selected = 8;
place_item();
}

// Merchant inventory panel functions
function merc_select_item0()
{
merc_item_pnl_selected = 0;
merc_place_item();
}

function merc_select_item1()
{
merc_item_pnl_selected = 1;
merc_place_item();
}

function merc_select_item2()
{
merc_item_pnl_selected = 2;
merc_place_item();
}

function merc_select_item3()
{
merc_item_pnl_selected = 3;
merc_place_item();
}

function merc_select_item4()
{
merc_item_pnl_selected = 4;
merc_place_item();
}

function merc_select_item5()
{
merc_item_pnl_selected = 5;
merc_place_item();
}



function display_skills()
{
restart_display:
while (!player)
{
wait(1);
}
while(player)
{

str_cpy(str_player_hp, "HP: ");
str_for_num(str_temp, player.health);
str_cat(str_player_hp, str_temp);

str_cpy(str_player_ac, "AC: ");
str_for_num(str_temp, player.armor);
str_cat(str_player_ac, str_temp);

wait(1);
}
goto(restart_display);
}

function delete_expendable()
{
item_sel_num = NO_ITEM;
sel_item_pnl.visible = off;
}

// Adds adjustments to player skills that this item being equipped has
function add_item_skill_adj()
{
player.armor += item_skill_10[item_sel_num]; // add armor adjustment of this item to player
}

// Removes adjustments to player skills that this item being unequipped has
function remove_item_skill_adj()
{
player.armor -= item_skill_10[item_sel_num]; // remove armor adjustment of this item from player
}

function power_up()
{
//if(item_skill_9[temp_item_num] > 0)
//{
// exit;
player.health += int(random(item_skill_9[temp_item_num]))+1;
//}
//if(item_skill_9[temp_item_num] < 0)
//{
// exit:
// player.health -= int(random(item_skill_9[temp_item_num]))+1;
//}

}

// Places selected item into the equipment panel
function place_equipped()
{
me = player; /* use this if using player variable i.e. player_walk_fight, comment out if using 3rd person*/
//me = warlock; //***** Third person code
// if moving item
if (item_command == MOVE_ITEM)
{

if (item_sel_num != NO_ITEM) // if item was selected with mouse
{

if(equipped_index[equipped_pnl_sel] == NO_ITEM)
{
if ((item_sel_num >= equipped_pnl_sel*100) && (item_sel_num < (equipped_pnl_sel*100+100)))
{
equipped_index[equipped_pnl_sel] = item_sel_num; // set slot to current item number
//equipped_ent_hdl[equipped_pnl_sel] = item_sel_hdl;
sel_item_pnl.visible = off;
view_item_txt1.visible = off;
view_item_txt2.visible = off;
view_item_pnl.visible = off;
attach_item();

add_item_skill_adj(); // add skill adjustments of this item to player


item_sel_num = NO_ITEM; // no item selected now
}
}
else //we have an item in this slot so switch
{
if ((item_sel_num >= equipped_pnl_sel*100) && (item_sel_num < (equipped_pnl_sel*100+100)))
{
temp_item_num = equipped_index[equipped_pnl_sel];

remove_item();


equipped_index[equipped_pnl_sel] = item_sel_num ;
//equipped_ent_hdl[equipped_pnl_sel] = item_sel_hdl;

attach_item();
add_item_skill_adj();

item_sel_num = temp_item_num;
remove_item_skill_adj();

wear_item_num = item_sel_num;
get_wear_str();
str_cpy(view_str2,"Wear: ");
str_cat(view_str2, wear_str);
view_item_txt2.string = view_str2;
str_cpy(temp_str,ptr_for_handle(item_description_hdl[item_sel_num]));
str_cpy(view_str1,"Item: ");
str_cat(view_str1, temp_str);
view_item_txt1.string = view_str1;
sel_item_pnl.bmap = ptr_for_handle(bitmap_hdl[item_sel_num]);
}
}
}
else
{
if (equipped_index[equipped_pnl_sel] != NO_ITEM)
{
item_sel_num = equipped_index[equipped_pnl_sel];
remove_item_skill_adj();
temp_item_num = item_sel_num;
wear_item_num = item_sel_num;
get_wear_str();
str_cpy(view_str2,"Wear: ");
str_cat(view_str2, wear_str);
view_item_txt2.string = view_str2;
str_cpy(temp_str,ptr_for_handle(item_description_hdl[item_sel_num]));
str_cpy(view_str1,"Item: ");
str_cat(view_str1, temp_str);
view_item_txt1.string = view_str1;
view_item_txt1.visible = on;
view_item_txt2.visible = on;
view_item_pnl.visible = on;
remove_item();

equipped_index[equipped_pnl_sel] = NO_ITEM; //remove the item from slot
sel_item_pnl.bmap = ptr_for_handle(bitmap_hdl[item_sel_num]); // place new bmap
sel_item_pnl.visible = on; // show item bitmap
}
}

}
else // using item or viewing item
{
if (item_command == USE_ITEM) // using item
{
//********** put item specific use code here - if can use item from equipped slot
temp_item_num = equipped_index[equipped_pnl_sel]; // get item #
if( temp_item_num == 1100) // have a smoke
{
str_cpy(temp_str, "You smoke a cigarette.");
power_up();
equipped_index[equipped_pnl_sel] = NO_ITEM; //remove the item from slot

}
if( temp_item_num == 1101) // eat some fish
{
str_cpy(temp_str, "You eat some delicious fish.");
power_up();
equipped_index[equipped_pnl_sel] = NO_ITEM; //remove the item from slot
}
//*******************************************************************************
}
else // Viewing Item
{
wear_item_num = equipped_index[equipped_pnl_sel];
if (wear_item_num != NO_ITEM)
{
get_wear_str();
str_cpy(view_str2,"Wear: ");
str_cat(view_str2, wear_str);
view_item_txt2.string = view_str2;
str_cpy(temp_str,ptr_for_handle(item_description_hdl[equipped_index[equipped_pnl_sel]]));
str_cpy(view_str1,"Item: ");
str_cat(view_str1, temp_str);
view_item_txt1.string = view_str1;
view_item_txt1.visible = on;
view_item_txt2.visible = on;
view_item_pnl.visible = on;
}
}
}


}

// places selected item into the inventory panel
function place_item()
{
if (item_command == MOVE_ITEM)
{
if (item_sel_num != NO_ITEM) // if item was selected with mouse
{
if(inv_index[item_pnl_selected+(3*int(slider_pos))] == NO_ITEM) // no item in current slot
{
inv_index[item_pnl_selected+(3*int(slider_pos))] = item_sel_num; // set slot to current item number
view_item_txt1.visible = off;
view_item_txt2.visible = off;
view_item_pnl.visible = off;
item_sel_num = NO_ITEM; // no item selected now
sel_item_pnl.visible = off;
}
else //we have an item in this slot so switch
{
temp_item_num = inv_index[item_pnl_selected+(3*int(slider_pos))]; // save current item in slot
inv_index[item_pnl_selected+(3*int(slider_pos))] = item_sel_num ;// place new item in slot
item_sel_num = temp_item_num; // place old item onto mouse pointer

wear_item_num = item_sel_num;
get_wear_str();
str_cpy(view_str2,"Wear: ");
str_cat(view_str2, wear_str);
view_item_txt2.string = view_str2;
str_cpy(temp_str,ptr_for_handle(item_description_hdl[item_sel_num]));
str_cpy(view_str1,"Item: ");
str_cat(view_str1, temp_str);
view_item_txt1.string = view_str1;
sel_item_pnl.bmap = ptr_for_handle(bitmap_hdl[item_sel_num]); // place new bmap
}
}
else // if no item selected with mouse see if item is in slot to pick up
{
// if item in slot pick up
if (inv_index[item_pnl_selected+(3*int(slider_pos))] != NO_ITEM)
{
item_sel_num = inv_index[item_pnl_selected+(3*int(slider_pos))]; // get item from slot

wear_item_num = item_sel_num;
get_wear_str();
str_cpy(view_str2,"Wear: ");
str_cat(view_str2, wear_str);
view_item_txt2.string = view_str2;
str_cpy(temp_str,ptr_for_handle(item_description_hdl[item_sel_num]));
str_cpy(view_str1,"Item: ");
str_cat(view_str1, temp_str);
view_item_txt1.string = view_str1;
view_item_txt1.visible = on;
view_item_txt2.visible = on;
view_item_pnl.visible = on;
inv_index[item_pnl_selected+(3*int(slider_pos))] = NO_ITEM; //remove the item from slot
sel_item_pnl.bmap = ptr_for_handle(bitmap_hdl[item_sel_num]); // place new bmap
sel_item_pnl.visible = on; // show item bitmap
}
}
}
else // using item or viewing item
{
if (item_command == USE_ITEM) // using item
{
temp_item_num = inv_index[item_pnl_selected+(3*int(slider_pos))];
// if (temp_item_num == An SPECIFIC Item Number), do your action
//******** put item specific use code here - if can use item from inventory
//************************************************************************
if(temp_item_num == 1509) // power pill
{
str_cpy(temp_str, "You swallow a big red pill.");
power_up();
inv_index[item_pnl_selected+(3*int(slider_pos))] = NO_ITEM; // remove the item from inv
}
}
else // Viewing Item
{
wear_item_num = inv_index[item_pnl_selected+(3*int(slider_pos))];
if (wear_item_num != NO_ITEM)
{
get_wear_str();
str_cpy(view_str2,"Wear: ");
str_cat(view_str2, wear_str);
view_item_txt2.string = view_str2;
str_cpy(temp_str,ptr_for_handle(item_description_hdl[inv_index[item_pnl_selected+(3*int(slider_pos))]]));
str_cpy(view_str1,"Item: ");
str_cat(view_str1, temp_str);
view_item_txt1.string = view_str1;
view_item_txt1.visible = on;
view_item_txt2.visible = on;
view_item_pnl.visible = on;
}
}
}
}

// places selected item into the inventory panel
function merc_place_item()
{

if (item_command == MOVE_ITEM)
{
if (item_sel_num != NO_ITEM) // if item was selected with mouse
{
if(merc_inv_index[merc_item_pnl_selected] == NO_ITEM) // no item in current slot
{

merc_inv_index[merc_item_pnl_selected] = item_sel_num; // set slot to current item number
view_item_txt1.visible = off;
view_item_txt2.visible = off;
view_item_pnl.visible = off;
item_sel_num = NO_ITEM; // no item selected now
sel_item_pnl.visible = off;
}
else //we have an item in this slot so switch
{
merc_temp_item_num = merc_inv_index[merc_item_pnl_selected]; // save current item in slot
merc_inv_index[merc_item_pnl_selected] = item_sel_num ;// place new item in slot
item_sel_num = merc_temp_item_num; // place old item onto mouse pointer

wear_item_num = item_sel_num;
get_wear_str();
str_cpy(view_str2,"Wear: ");
str_cat(view_str2, wear_str);
view_item_txt2.string = view_str2;
str_cpy(temp_str,ptr_for_handle(item_description_hdl[item_sel_num]));
str_cpy(view_str1,"Item: ");
str_cat(view_str1, temp_str);
view_item_txt1.string = view_str1;
sel_item_pnl.bmap = ptr_for_handle(bitmap_hdl[item_sel_num]); // place new bmap
}
}
else // if no item selected with mouse see if item is in slot to pick up
{
// if item in slot pick up
if (merc_inv_index[merc_item_pnl_selected] != NO_ITEM)
{
item_sel_num = merc_inv_index[merc_item_pnl_selected]; // get item from slot

wear_item_num = item_sel_num;
get_wear_str();
//str_for_num(item_sel_num);
str_cpy(view_str2,"Wear: ");
str_cat(view_str2, wear_str);
view_item_txt2.string = view_str2;
//view_item_txt2.visible = on;//;;;;
//sleep(20);
str_cpy(temp_str,ptr_for_handle(item_description_hdl[item_sel_num]));
str_cpy(view_str1,"Item: ");
str_cat(view_str1, temp_str);
view_item_txt1.string = view_str1;
view_item_txt1.visible = on;
view_item_txt2.visible = on;
view_item_pnl.visible = on;
merc_inv_index[merc_item_pnl_selected] = NO_ITEM; //remove the item from slot
sel_item_pnl.bmap = ptr_for_handle(bitmap_hdl[item_sel_num]); // place new bmap
sel_item_pnl.visible = on; // show item bitmap
}
}
}
else // using item or viewing item
{
if (item_command == USE_ITEM) // using item
{
temp_item_num = merc_inv_index[merc_item_pnl_selected];
// if (temp_item_num == An SPECIFIC Item Number), do your action
//******** put item specific use code here - if can use item from inventory
//************************************************************************
}
else // Viewing Item
{
wear_item_num = merc_inv_index[merc_item_pnl_selected];
if (wear_item_num != NO_ITEM)
{
get_wear_str();
str_cpy(view_str2,"Wear: ");
str_cat(view_str2, wear_str);
view_item_txt2.string = view_str2;
str_cpy(temp_str,ptr_for_handle(item_description_hdl[merc_inv_index[merc_item_pnl_selected]]));
str_cpy(view_str1,"Item: ");
str_cat(view_str1, temp_str);
view_item_txt1.string = view_str1;
view_item_txt1.visible = on;
view_item_txt2.visible = on;
view_item_pnl.visible = on;
}
}
}
}


// item event
function selected()
{
if (item_command == USE_ITEM)
{
item_command = MOVE_ITEM;
}

if (vec_dist(player.X,my.X)<=ITEM_PICKUP_RANGE)
{

if(my.merchant)
{
load_merc_inv_panel();
return;
}


if (item_sel_num != NO_ITEM) // if already have item selected drop it
{
drop_vector = my.pos;
drop_loc_set = 1;

drop_item();
}

item_sel_num = my.item_number;

if (item_command == VIEW_ITEM || item_command == MOVE_ITEM)
{
// show discription
wear_item_num = item_sel_num;
get_wear_str();
str_cpy(view_str2,"Wear: ");
str_cat(view_str2, wear_str);
view_item_txt2.string = view_str2;
str_cpy(temp_str,ptr_for_handle(item_description_hdl[item_sel_num]));
str_cpy(view_str1,"Item: ");
str_cat(view_str1, temp_str);
view_item_txt1.string = view_str1;
view_item_txt1.visible = on;
view_item_txt2.visible = on;
view_item_pnl.visible = on;
// if just viewing set selected item to none
if (item_command == VIEW_ITEM)
{
item_sel_num = NO_ITEM;
}
}

if (item_command == MOVE_ITEM)
{
sel_item_pnl.bmap = ptr_for_handle(bitmap_hdl[item_sel_num]);
sel_item_pnl.pos_x = mouse_pos.x - 51;
sel_item_pnl.pos_y = mouse_pos.y - 25;
sel_item_pnl.visible = on;

ent_remove(me); // remove selected item entity from level
}
}

}

// get handles for all the available item bitmaps
function init_items()
{
// item command panel bitmaps - do not change unless re-coding
item_cmd_hdl[MOVE_ITEM] = handle(movepnl_bmp);
item_cmd_hdl[USE_ITEM] = handle(usepnl_bmp);
item_cmd_hdl[VIEW_ITEM] = handle(viewpnl_bmp);
// item wear strings - decribes wear item is supposed to be worn -do not change unless re-coding
item_wear_hdl[0] = handle(neck_str);
item_wear_hdl[1] = handle(head_str);
item_wear_hdl[2] = handle(back_str);
item_wear_hdl[3] = handle(rshdlr_str);
item_wear_hdl[4] = handle(body_str);
item_wear_hdl[5] = handle(lshldr_str);
item_wear_hdl[6] = handle(rarm_str);
item_wear_hdl[7] = handle(waist_str);
item_wear_hdl[8] = handle(larm_str);
item_wear_hdl[9] = handle(rhand_str);
item_wear_hdl[10] = handle(legs_str);
item_wear_hdl[11] = handle(lhand_str);
item_wear_hdl[12] = handle(rfinger_str);
item_wear_hdl[13] = handle(feet_str);
item_wear_hdl[14] = handle(lfinger_str);
item_wear_hdl[15] = handle(unwearable_str);
//***************** ADD/CHANGE YOUR AVAILABLE ITEMS HERE ********************
// neck - item#'s 0 - 99
// head - item#'s 100 - 199
// back - item#'s 200 - 299
// right - shoulder item#'s 300 - 399
// body - item#'s 400 - 499
// left shoulder - item#'s 500 - 599
// right arm - item#'s 600 - 699
// waist - item#'s 700 - 799
// left arm - item#'s 800 - 899
bitmap_hdl[800] = handle(shield_bmp);
item_description_hdl[800] = handle(large_shld_str);
bitmap_hdl[801] = handle(red_shield_bmp);
item_description_hdl[801] = handle(large_shld_plus1_str);
item_skill_10[801] = 1; // +1 to AC
// right hand - item#'s 900 - 999
bitmap_hdl[900] = handle(mace_bmp);
item_description_hdl[900] = handle(mace_str);
bitmap_hdl[901] = handle(staff_bmp);
item_description_hdl[901] = handle(staff_str);
// legs - item#'s 1000 - 1999
//left hand - item#'s 1100 - 1199
bitmap_hdl[1100] = handle(cigs_bmp);
item_description_hdl[1100] = handle(cig_str);
item_skill_9[1100] = -10;

bitmap_hdl[1101] = handle(fish_bmp);
item_description_hdl[1101] = handle(fish_str);
item_skill_9[1101] = 10;

// right finger - item#'s 1200 - 1299
// feet - item#'s 1300 - 1399
// left finger - item#'s 1400 - 1499
// can't be equipped - item#'s 1500 - 1599
bitmap_hdl[1500] = handle(lamp_bmp);
item_description_hdl[1500] = handle(lamp_str);

bitmap_hdl[1509] = handle(power_pill_bmp);
item_description_hdl[1509] = handle(power_pill_str);
item_skill_9[1509] = 20; // add 1-20 hp when used

// no item bitmap - item# 1600
//**************************************************************************
bitmap_hdl[NO_ITEM] = handle(no_item_bmp);
}

// displays selected item by mouse pointer
function display_sel_item()
{
while(1)
{
while (sel_item_pnl.visible == on)
{
sel_item_pnl.pos_x = mouse_pos.x - 51;
sel_item_pnl.pos_y = mouse_pos.y - 25;
wait(1);
}
wait(1);
}
}

// displays the inventory and equipped panels
// our good friend, the handle, hehe
// basically this gets the item_number from the inventory slot array
// then gets a pointer from the handle array of bitmaps we set up in init_items()
function display_inv()
{
while(1)
{
item_cmd_pnl.bmap = ptr_for_handle(item_cmd_hdl[item_command]);
equipped_neck_pnl.bmap = ptr_for_handle(bitmap_hdl[equipped_index[0]]);
equipped_head_pnl.bmap = ptr_for_handle(bitmap_hdl[equipped_index[1]]);
equipped_back_pnl.bmap = ptr_for_handle(bitmap_hdl[equipped_index[2]]);
equipped_rshldr_pnl.bmap = ptr_for_handle(bitmap_hdl[equipped_index[3]]);
equipped_body_pnl.bmap = ptr_for_handle(bitmap_hdl[equipped_index[4]]);
equipped_lshldr_pnl.bmap = ptr_for_handle(bitmap_hdl[equipped_index[5]]);
equipped_rarm_pnl.bmap = ptr_for_handle(bitmap_hdl[equipped_index[6]]);
equipped_waist_pnl.bmap = ptr_for_handle(bitmap_hdl[equipped_index[7]]);
equipped_larm_pnl.bmap = ptr_for_handle(bitmap_hdl[equipped_index[8]]);
equipped_rhand_pnl.bmap = ptr_for_handle(bitmap_hdl[equipped_index[9]]);
equipped_legs_pnl.bmap = ptr_for_handle(bitmap_hdl[equipped_index[10]]);
equipped_lhand_pnl.bmap = ptr_for_handle(bitmap_hdl[equipped_index[11]]);
equipped_rfinger_pnl.bmap = ptr_for_handle(bitmap_hdl[equipped_index[12]]);
equipped_feet_pnl.bmap = ptr_for_handle(bitmap_hdl[equipped_index[13]]);
equipped_lfinger_pnl.bmap = ptr_for_handle(bitmap_hdl[equipped_index[14]]);
index = (int(slider_pos) * 3);
item0_pnl.bmap = ptr_for_handle(bitmap_hdl[inv_index[index]]);
item1_pnl.bmap = ptr_for_handle(bitmap_hdl[inv_index[index+1]]);
item2_pnl.bmap = ptr_for_handle(bitmap_hdl[inv_index[index+2]]);
item3_pnl.bmap = ptr_for_handle(bitmap_hdl[inv_index[index+3]]);
item4_pnl.bmap = ptr_for_handle(bitmap_hdl[inv_index[index+4]]);
item5_pnl.bmap = ptr_for_handle(bitmap_hdl[inv_index[index+5]]);
item6_pnl.bmap = ptr_for_handle(bitmap_hdl[inv_index[index+6]]);
item7_pnl.bmap = ptr_for_handle(bitmap_hdl[inv_index[index+7]]);
item8_pnl.bmap = ptr_for_handle(bitmap_hdl[inv_index[index+8]]);
wait(1);
}
}

function display_merc_inv()
{
while(1)
{
merc_item0_pnl.bmap = ptr_for_handle(bitmap_hdl[merc_inv_index[0]]);
merc_item1_pnl.bmap = ptr_for_handle(bitmap_hdl[merc_inv_index[1]]);
merc_item2_pnl.bmap = ptr_for_handle(bitmap_hdl[merc_inv_index[2]]);
merc_item3_pnl.bmap = ptr_for_handle(bitmap_hdl[merc_inv_index[3]]);
merc_item4_pnl.bmap = ptr_for_handle(bitmap_hdl[merc_inv_index[4]]);
merc_item5_pnl.bmap = ptr_for_handle(bitmap_hdl[merc_inv_index[5]]);
wait(1);
}
}

// set's item entity's skills when an item is dropped
function reset_item_skills()
{
you.skill4 = item_skill_4[item_sel_num];
you.skill9 = item_skill_9[item_sel_num];
you.skill10 = item_skill_10[item_sel_num];
}

// drops the item onto the level
function drop_item()
{
//******* use this code when using player variable **********
me = player; // when using player variable
view_item_txt1.visible = off;
view_item_txt2.visible = off;
view_item_pnl.visible = off;
if (drop_loc_set != 1) // if not dropping at another items position, drop at player pos
{
vec_set(drop_vector, my.pos);
drop_vector.x += random(60) - 30;
drop_vector.y -= random(60) - 30;
}
else
{
drop_loc_set = 0;
}
//*********************************************

//********** Third person code **************************
/*me = warlock; // for 3rd person
drop_vector.x = pointer.x; //*** save mouse x
drop_vector.y = pointer.y; //*** save mouse y
drop_vector.z = 500; //*** put z above, it will trace down to surface and add item there
vec_for_screen (drop_vector, camera); //*** get vector
*/
//**********************************************

if (item_sel_num != NO_ITEM) // if we have item selected drop it at mouse pointer
{
//****************** ADD YOUR ITEMS HERE FOR DROP **************************
if (item_sel_num == 800) { ent_create(shield_mdl,drop_vector,item_function);
reset_item_skills();}
if (item_sel_num == 801) { you = ent_create(red_shield_mdl,drop_vector,item_function);
reset_item_skills();}
if (item_sel_num == 900) { you = ent_create(mace_mdl,drop_vector,item_function);
reset_item_skills();}
if (item_sel_num == 901) { you = ent_create(staff_mdl,drop_vector,item_function);
reset_item_skills();}
if (item_sel_num == 1100) { you = ent_create(cigs_mdl,drop_vector,item_function);
reset_item_skills();}
if (item_sel_num == 1101) { you = ent_create(fish_mdl,drop_vector,item_function);
reset_item_skills();}
if (item_sel_num == 1500) { you = ent_create(lamp_mdl,drop_vector,item_function);
reset_item_skills();}
if (item_sel_num == 1509) { you = ent_create(power_pill_mdl,drop_vector,item_function);
reset_item_skills();}
//**************************************************************************
item_sel_num = NO_ITEM;
sel_item_pnl.visible = off;
}
}



function save_screen()
{
screenshot("inventory",1);
}

function attach()
{
my = temp_item;
while(my)
{
vec_set(my.pan,player.pan); // set pan to owner's pan
vec_set(my.X,player.X); // get position of weapon
wait(1);
}
}

function attach_item()
{
//******** put attachable items here to be attached if equipped ********
if (item_sel_num == 800) //shield
{
temp_item = ent_create(shield_mdl,nullvector,attach_armor);
equipped_ent_hdl[equipped_pnl_sel] = handle(temp_item);
attach();
}
if (item_sel_num == 900) //mace
{
temp_item = ent_create(mace_mdl,nullvector,attach_entity);
equipped_ent_hdl[equipped_pnl_sel] = handle(temp_item);
attach();
handle_mace_collision();
}
if (item_sel_num == 901) //staff
{
temp_item = ent_create(staff_mdl,nullvector,attach_entity);
equipped_ent_hdl[equipped_pnl_sel] = handle(temp_item);
attach();
}
}


function remove_item()
{
//********* put attachable items here to be removed if unequipped *******
if (temp_item_num == 800) //shield
{
temp_item = ptr_for_handle(equipped_ent_hdl[equipped_pnl_sel]);
ent_remove(temp_item);
}
if (temp_item_num == 900) //mace
{
temp_item = ptr_for_handle(equipped_ent_hdl[equipped_pnl_sel]);
ent_remove(temp_item);
}
if (temp_item_num == 901) //staff
{
temp_item = ptr_for_handle(equipped_ent_hdl[equipped_pnl_sel]);
ent_remove(temp_item);
}
}

function switch_item_cmd()
{
if (item_command == MOVE_ITEM)
{
item_command = USE_ITEM;
}
else
{
if (item_command == USE_ITEM)
{
item_command = VIEW_ITEM;
}
else
{
item_command = MOVE_ITEM;
view_item_txt1.visible = off;
view_item_txt2.visible = off;
view_item_pnl.visible = off;
}
}
}

function get_wear_str()
{
wear_item_num = int(wear_item_num/100);
str_cpy(wear_str, ptr_for_handle(item_wear_hdl[wear_item_num]));
}

function loot_off()
{
// save merchant inventory, what was not taken
my.itemcarry0 = merc_inv_index[0];
my.itemcarry1 = merc_inv_index[1];
my.itemcarry2 = merc_inv_index[2];
my.itemcarry3 = merc_inv_index[3];
my.itemcarry4 = merc_inv_index[4];
my.itemcarry5 = merc_inv_index[5];

merc_inventory_pnl.visible = off;
merc_item0_pnl.visible = off;
merc_item1_pnl.visible = off;
merc_item2_pnl.visible = off;
merc_item3_pnl.visible = off;
merc_item4_pnl.visible = off;
merc_item5_pnl.visible = off;
}

function toggle_inventory()
{
if (inventory_display == OFF)
{

inventory_display = ON;

item_cmd_pnl.visible = on;
equipped_pnl.visible = on;
inv_head_pnl.visible = on;
inventory_pnl.visible = on;
equipped_pnl.visible = on;
equipped_neck_pnl.visible = on;
equipped_head_pnl.visible = on;
equipped_back_pnl.visible = on;
equipped_rshldr_pnl.visible = on;
equipped_body_pnl.visible = on;
equipped_lshldr_pnl.visible = on;
equipped_rarm_pnl.visible = on;
equipped_waist_pnl.visible = on;
equipped_larm_pnl.visible = on;
equipped_rhand_pnl.visible = on;
equipped_legs_pnl.visible = on;
equipped_lhand_pnl.visible = on;
equipped_rfinger_pnl.visible = on;
equipped_feet_pnl.visible = on;
equipped_lfinger_pnl.visible = on;
item0_pnl.visible = on;
item1_pnl.visible = on;
item2_pnl.visible = on;
item3_pnl.visible = on;
item4_pnl.visible = on;
item5_pnl.visible = on;
item6_pnl.visible = on;
item7_pnl.visible = on;
item8_pnl.visible = on;
}
else
{
inventory_display = off;

item_cmd_pnl.visible = off;
inv_head_pnl.visible = off;
inventory_pnl.visible = off;
equipped_pnl.visible = off;
equipped_neck_pnl.visible = off;
equipped_head_pnl.visible = off;
equipped_back_pnl.visible = off;
equipped_rshldr_pnl.visible = off;
equipped_body_pnl.visible = off;
equipped_lshldr_pnl.visible = off;
equipped_rarm_pnl.visible = off;
equipped_waist_pnl.visible = off;
equipped_larm_pnl.visible = off;
equipped_rhand_pnl.visible = off;
equipped_legs_pnl.visible = off;
equipped_lhand_pnl.visible = off;
equipped_rfinger_pnl.visible = off;
equipped_feet_pnl.visible = off;
equipped_lfinger_pnl.visible = off;
item0_pnl.visible = off;
item1_pnl.visible = off;
item2_pnl.visible = off;
item3_pnl.visible = off;
item4_pnl.visible = off;
item5_pnl.visible = off;
item6_pnl.visible = off;
item7_pnl.visible = off;
item8_pnl.visible = off;
}
}

on_d drop_item();
on_f1 save_screen();
on_u switch_item_cmd();
on_i toggle_inventory();


Empty pointer in load_merc_inv_panel: (vec_dist(player.x, player.y) <= ITEM_PICKUP_RANGE)

Empty pointer in drop_item:
vec_set(drop_vector, my.pos);
drop_vector.x += random(60) - 30;
drop_vector.y -= random(60) - 30;

Anyone knows why does this happend?
Thanks in advance.

Last edited by Mythran; 11/23/07 21:24.

Moderated by  HeelX, Lukas, rayp, Rei_Ayanami, Superku, Tobias, TWO, VeT 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1