Vice City: Multiplayer

Server Development => Scripting and Server Management => Topic started by: Finch Real on May 27, 2016, 11:39 AM

Title: Property/Robbery Bug
Post by: Finch Real on May 27, 2016, 11:39 AM
Well Hello I am Facing a Problem That When i pickup robbery/property pickup it gave wrong name of Place like if i Pickup Robbery of mansion it shows you have started robbing Leaf Links. Can Someone Help me through this

OnPickupPickup

else if (pickup.Model == 408)
{
if(GetJob(player)!=2)
{
if(pickup.ID==18)
{
if(Getrobskills(player)>500)
{
if(pinfo[player.ID].C4==1)
{
local t=pinfo[player.ID].btime+600;
print("t="+t+" gettime="+GetTime());
if(t<GetTime().tointeger())
{
pinfo[player.ID].btime=GetTime().tointeger();
local q = QuerySQL( db, "SELECT Name, Robcash FROM Properties WHERE rowid LIKE '" + pickup.ID + "'");
pinfo[player.ID].C4=0;
ClientMessage( "Starting robbery at [ " + GetSQLColumnData( q, 0 ) + " ]", player,255,255,0);
ClientMessageToAll( "* " + player.Name + " is robbing the " + GetSQLColumnData( q, 0 ) + ".", 255, 255, 0 );
EchoMessage( ICOL_BOLD+ICOL_CYAN + "> " + player.Name + " is robbing  the " + GetSQLColumnData(q,0) + "." );
player.IsFrozen = true;
pinfo[player.ID].robbing=1;
pickup.RespawnTime = 60000;
pinfo[player.ID].Robbedcash=GetSQLColumnData( q, 1 ).tointeger();
NewTimer( "LittleHavana", 10100 , 1, player.ID,GetSQLColumnData( q, 1 ).tointeger(),6);
NewTimer( "Count1", 1000, 1, 10, player.ID );
NewTimer( "Count1", 2000, 1, 9, player.ID );
NewTimer( "Count1", 3000, 1, 8, player.ID );
NewTimer( "Count1", 4000, 1, 7, player.ID );
NewTimer( "Count1", 5000, 1, 6, player.ID );
NewTimer( "Count1", 6000, 1, 5, player.ID );
NewTimer( "Count1", 7000, 1, 4, player.ID );
NewTimer( "Count1", 8000, 1, 3, player.ID );
NewTimer( "Count1", 9000, 1, 2, player.ID );
NewTimer( "Count1", 10000, 1, 1, player.ID );
Setrobskills(player,Getrobskills(player)+2);
player.Score = Getrobskills(player);
messagez.push({name = player.Name,
team = player.Team,
       reason= GetSQLColumnData( q, 0 ),
       type = 8
});
player.Score=player.Score+2;
if(messagez.len() > 20) messagez.remove(0);
}
else MessagePlayer( "Error - You can only rob the bank once in 10 mins!",player);
}
else MessagePlayer( "Error - You need a bomb to break the locker, Go to the ammunation shop in downtown!",player);
}
else MessagePlayer( "Error - You need to have minimum 500 robskills in order to rob bank!",player);
}
else
{
local shopr = random(1,4);
switch ( shopr )
{
case 1:
{
pickup.RespawnTime = 60000;
                    Setwantedlevel(player,Getwantedlevel(player)+1);
                    ClientMessage( "Robbery failed and wanted level increased. The police is on the way.",player,255,0,0);
            }
break;
default:
{
local q = QuerySQL( db, "SELECT Name, Robcash FROM Properties WHERE rowid LIKE '" + pickup.ID + "'");
ClientMessage( "Starting robbery at " + GetSQLColumnData( q, 0 ) + ".", player,255,255,0);
ClientMessageToAll( "* " + player.Name + " is robbing the " + GetSQLColumnData( q, 0 ) + ".", 255, 255, 0 );
                                EchoMessage( ICOL_BOLD+ICOL_CYAN + "> " + player.Name + " is robbing  the " + GetSQLColumnData(q,0) + "." );
player.IsFrozen = true;
pinfo[player.ID].robbing=1;
NewTimer( "LittleHavana", 10100 , 1, player.ID,GetSQLColumnData( q, 1 ).tointeger(),1);
NewTimer( "Count1", 1000, 1, 10, player.ID );
NewTimer( "Count1", 2000, 1, 9, player.ID );
NewTimer( "Count1", 3000, 1, 8, player.ID );
NewTimer( "Count1", 4000, 1, 7, player.ID );
NewTimer( "Count1", 5000, 1, 6, player.ID );
NewTimer( "Count1", 6000, 1, 5, player.ID );
NewTimer( "Count1", 7000, 1, 4, player.ID );
NewTimer( "Count1", 8000, 1, 3, player.ID );
NewTimer( "Count1", 9000, 1, 2, player.ID );
NewTimer( "Count1", 10000, 1, 1, player.ID );
pickup.RespawnTime = 180000;
Setrobskills(player,Getrobskills(player)+1);
if ( robscash == 1)
                                                                                {
  local reward = random(4000,400000);
                                          local happy=   RandomCash[player.ID]*reward;
  ClientMessageToAll( "> " +player.Name+ "Has Won The Happy One Minute And Got "+happy+".",255,255,0);
    EchoMessage( ICOL_BOLD+ ICOL_BLUE  + ">  " +player.Name+ " Has Won The Happy One Minute And Got "+happy+"." );
                SetCash( player, GetCash( player )+ happy.tointeger());
                                                                                erc();
                                                                                  }
player.Score = Getrobskills(player);
messagez.push({name = player.Name,
team = player.Team,
   reason= GetSQLColumnData( q, 0 ),
   type = 8
});
if(messagez.len() > 20) messagez.remove(0);
player.Score++;
}
break;
}
}
}
else MessagePlayer( GetSkinName( player.Skin ) + " cannot rob a store!", player );
}

Function LittleHavana
function LittleHavana(plr,robbedcash,w)
{
local player=FindPlayer(plr);
if (player)
{
Announce( "You've robbed $" + robbedcash , player, 6 );
Announce( "", player, 1);
player.IsFrozen = false;
pinfo[player.ID].robbing=0;
SetCash( player, GetCash( player ).tointeger() + robbedcash.tointeger() );
Setwantedlevel(player,Getwantedlevel(player)+w);
Markercolor(player);
}
}
Title: Re: Property/Robbery Bug
Post by: Anik on May 27, 2016, 11:46 AM
OK the problem is server is saving the IDs from 0 and Database is storing from 1. You need to replace this line
local q = QuerySQL( db, "SELECT Name, Robcash FROM Properties WHERE rowid LIKE '" + pickup.ID + "'");with this
local q = QuerySQL( db, "SELECT Name, Robcash FROM Properties WHERE rowid LIKE '" +( pickup.ID+1 ) + "'"); Another way is make another column named with "ID" And start saving the IDs from 0.
Title: Re: Property/Robbery Bug
Post by: Finch Real on May 27, 2016, 12:13 PM
Thank You Very Much Old Friend

Well The Robbery System is Fix
But Property is Still Bug Like That What is Problem in it?
if ( pickup.Model == 407 )
{
local q = QuerySQL( db, "SELECT Name, Owner, Shared, Cost FROM Properties WHERE rowid LIKE '" + pickup.ID + "'");
local Owner = "", Shared = "", Cost = "";

if ( GetSQLColumnData( q, 1 ) != "None" ) Owner = " Owner:[ " + GetSQLColumnData( q, 1 ) + " ]";

else Cost = " Cost:[ $" + GetSQLColumnData( q, 3 ) + " ]";

if ( GetSQLColumnData( q, 2 ) != "None" ) Shared = " Shared with:[ " + GetSQLColumnData( q, 2 ) + " ]";
if(player.Name==GetSQLColumnData( q, 1 ))
{
local Time=pinfo[player.ID].TTime;
Time=GetTime().tointeger()-Time;
Time=Time/10;
if(Time.tointeger() > 0)
{
if(Time>1500) Time=1500;
ClientMessage( "You've got $"+Time+" from your property!", player,255,255,0);
SetCash(player,GetCash(player).tointeger()+Time.tointeger());
pinfo[player.ID].TTime=GetTime();
pickup.RespawnTime = 30000;
}
else ClientMessage( "No money has been collected yet, you have to wait.", player,255,255,0);
}
else ClientMessage( "Property - ID:[ " + pickup.ID + " ] Name:[ " + GetSQLColumnData( q, 0 ) + " ] " + Owner + Shared + Cost+"]", player, 255, 255, 0 );
pickup.RespawnTime = 7000;
}
Title: Re: Property/Robbery Bug
Post by: DizzasTeR on May 27, 2016, 12:29 PM
I'd rather shoot myself than using a script like that.

Quote from: Finch Real on May 27, 2016, 11:39 AM NewTimer( "LittleHavana", 10100 , 1, player.ID,GetSQLColumnData( q, 1 ).tointeger(),6);
NewTimer( "Count1", 1000, 1, 10, player.ID );
NewTimer( "Count1", 2000, 1, 9, player.ID );
NewTimer( "Count1", 3000, 1, 8, player.ID );
NewTimer( "Count1", 4000, 1, 7, player.ID );
NewTimer( "Count1", 5000, 1, 6, player.ID );
NewTimer( "Count1", 6000, 1, 5, player.ID );
NewTimer( "Count1", 7000, 1, 4, player.ID );
NewTimer( "Count1", 8000, 1, 3, player.ID );
NewTimer( "Count1", 9000, 1, 2, player.ID );
NewTimer( "Count1", 10000, 1, 1, player.ID );
Setrobskills(player,Getrobskills(player)+2);

NewTimer( "LittleHavana", 10100 , 1, player.ID,GetSQLColumnData( q, 1 ).tointeger(),1);
NewTimer( "Count1", 1000, 1, 10, player.ID );
NewTimer( "Count1", 2000, 1, 9, player.ID );
NewTimer( "Count1", 3000, 1, 8, player.ID );
NewTimer( "Count1", 4000, 1, 7, player.ID );
NewTimer( "Count1", 5000, 1, 6, player.ID );
NewTimer( "Count1", 6000, 1, 5, player.ID );
NewTimer( "Count1", 7000, 1, 4, player.ID );
NewTimer( "Count1", 8000, 1, 3, player.ID );
NewTimer( "Count1", 9000, 1, 2, player.ID );
NewTimer( "Count1", 10000, 1, 1, player.ID );

Seriously, wtf.
Title: Re: Property/Robbery Bug
Post by: Anik on May 27, 2016, 12:47 PM
Finch as per your script you are using the same table for storing Properties and Robbery Points. IF you want to store both in one table then make a new column named "ID" Or use 2 different tables for storing both.
Title: Re: Property/Robbery Bug
Post by: KAKAN on May 27, 2016, 01:17 PM
Again, pickup.ID + 1
But that timers, ahh!
I remember Anik was using 12 timers and I gave him a solution with 1 timer :P
Title: Re: Property/Robbery Bug
Post by: Finch Real on May 27, 2016, 04:45 PM
Thanks @Anik Problem Solve