Author Topic: Item replacement.  (Read 1089 times)

Yeah so I dunno why it's not working.

Code: [Select]
function RandomImage::OnPickUp(%this, %obj, %Client){
%random = GetRandom(1,10);
switch(%random){
case 1:
%Item = GunItem;
case 2:
%Item = RocketLauncherItem;
case 3:
%Item = ShotGunItem;
case 4:
%Item = SwordItem;
case 5:
%Item = BowItem;
case 6:
%Item = SniperRifleItem;
case 8:
%Item = hegrenadeItem;
case 9:
%Item = chainSawItem;
case 10:
%Item = SpearItem;
}
%obj.delete();
if(%client.tool[0] $= "0"){
%client.tool[0] = nametoID(%item);
messageClient(%client, 'MsgItemPickup', '', 0, nametoID(%item));
} else if(%client.tool[1] $= "0"){
%client.tool[1] = nametoID(%item);
messageClient(%client, 'MsgItemPickup', '', 1, nametoID(%item));
} else if(%client.tool[2] $= "0"){
%client.tool[2] = nametoID(%item);
messageClient(%client, 'MsgItemPickup', '', 2, nametoID(%item));
} else if(%client.tool[3] $= "0"){
%client.tool[3] = nametoID(%item);
messageClient(%client, 'MsgItemPickup', '', 3, nametoID(%item));
} else if(%client.tool[4] $= "0"){
%client.tool[4] = nametoID(%item);
messageClient(%client, 'MsgItemPickup', '', 4, nametoID(%item));
}
}

RandomImage is the weapon image. Try RandomItem.

Also, look at HEGrenade pickup script for trust checks, minigame checks, etc.

Code: [Select]
//Random.cs

datablock ItemData(RandomItem)
{
   category = "Weapon";  // Mission editor category
   className = "Weapon"; // For inventory system

    // Basic Item Properties
   shapeFile = "./shapes/sword.dts";
   mass = 1;
   density = 0.2;
   elasticity = 0.2;
   friction = 0.6;
   emap = true;

   //gui stuff
   uiName = "Random Weapon";
   doColorShift = true;
   colorShiftColor = "0.471 0.471 0.471 1.000";

    // Dynamic properties defined by the scripts
   canDrop = true;
};

datablock ShapeBaseImageData(RandomImage)
{
   // Basic Item properties
   shapeFile = "./shapes/sword.dts";
   emap = true;

   className = "WeaponImage";

   item = RandomItem;

   //casing = " ";
   doColorShift = true;
   colorShiftColor = "0.471 0.471 0.471 1.000";
};

function RandomItem::OnPickUp(%this, %obj, %player){
%random = GetRandom(1,10);
switch(%random){
case 1:
%Item = GunItem;
case 2:
%Item = RocketLauncherItem;
case 3:
%Item = ShotGunItem;
case 4:
%Item = SwordItem;
case 5:
%Item = BowItem;
case 6:
%Item = SniperRifleItem;
case 8:
%Item = hegrenadeItem;
case 9:
%Item = chainSawItem;
case 10:
%Item = SpearItem;
}
if(%player.tool[0] $= "0"){
%player.tool[0] = nametoID(%item);
messageclient(%player, 'MsgItemPickup', '', 0, nametoID(%item));
} else if(%player.tool[1] $= "0"){
%player.tool[1] = nametoID(%item);
messageclient(%player, 'MsgItemPickup', '', 1, nametoID(%item));
} else if(%player.tool[2] $= "0"){
%player.tool[2] = nametoID(%item);
messageclient(%player, 'MsgItemPickup', '', 2, nametoID(%item));
} else if(%player.tool[3] $= "0"){
%player.tool[3] = nametoID(%item);
messageclient(%player, 'MsgItemPickup', '', 3, nametoID(%item));
} else if(%player.tool[4] $= "0"){
%player.tool[4] = nametoID(%item);
messageclient(%player, 'MsgItemPickup', '', 4, nametoID(%item));
}
}


It's half working, it sets the clients invent to the weapons datablock but it dosen't put the weapon in their invent.

for(%i=0;%i<%player.getDatablock().maxtools;%i++)
{
 if(%player.tool[%i] $= "0"){%slot = %i;break;}
}
%player.tool[%i] = %item;
messageclient(%player.client, 'MsgItemPickup', '', %slot, nametoID(%item));

replace the if(%player.tool[0] $= "0"){...}else if(...) part with that code.

Still isn't showing up in invent.