• Welcome to Vice City Multiplayer.
 
Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - VRocker

#16
General Discussion / Re: Vrocker-hosting...
March 09, 2010, 05:03:51 PM
That would be paid hosting from me.
Best way to have a good server is to pay for server hosting, since nobody wants to play on some crappy home-hosted server.

My hosting comes with free, optional, webhosting. A control panel to start/stop your server aswell as full FTP access to your server.

To purchase, just click add to cart, entering how many slots you want on your server, then follow the instructions.

I apologize for the slightly bad website, been meaning to get it replaced with a much better, user-friendly site.
#17
mIRC/pawn Scripting / Re: Wich is the best script?
February 10, 2010, 10:58:47 PM
No substance to back those points up? Ok, heres some evidence.

Lets start with WSV. With this script i am only going on what i have seen around the forum and heard from other people, oh and from Windlord himself. There are bugs in in the script so some things dont work at all or dont work right. But since windlord no longer does any scripting, these wont be fixed.

With sansan and GUS, everybody knows how bad using INIs for databases are. INI files were never meant to be used for databases, their primary purpose is for configuration data.
Once an ini file starts to get big, you will notice huge slowdowns in any script using the ini, and increased CPU/IO load.

Now we move onto psysqlite. sqlite is used nearly everywhere in the script for any sort of storage. Now, sqlite is pretty good when used for large databases and for data that changes quite a lot. but i have noticed it uses sqlite for temporary storage which gets accessed a lot. Causing high I/O and CPU load.
And onto the memory leak... Look at the following snippet:

if ($3) { return $gettok(%c,1 - $numtok(%c,44),44) | sqlite_free %result }

You will notice that it returns before freeing the result of the query, thus never removing the query from memory and creating a nice memory leak.

Heres a screenshot of a mirc running psysqlite too:



From what i remember, the server had around 14 players in game at the time.

You may have never encountered any of the issues here because most of them only really occur with a lot of players in game.

In the case of sansan/GUS, when the inis start to get large, the slowdowns will hit. That and using the old dll means mirc will spend most of its time just processing the network packets rather than producing an output for the server.

Yes, the creators were kind enough to share these scripts and nobody is saying they shouldn't have. The topic is just about which one is best, and i'm giving my opinion based on which has the least problems and uses the least resources.

All in all, best script thats not public is probably rusty/rasty (from lws). That script uses a good combination of hashes and sqlite, but uses very little ram and never uses more than 10% of a CPU core, even with a lot of players.
#18
mIRC/pawn Scripting / Re: Wich is the best script?
February 10, 2010, 07:44:10 PM
I'd say FBS. It seems to be the best script for beginners and seems to work fairly well.

PsySQLite does look like it has a lot of features, although its very inefficient. There are unneeded loops and overusage of sqlite, making it heavy on I/O aswell as CPU.
Theres also a major memory leak in psysqlite, since a lot of the sqlite queries dont get freed from memory. I've watched this script happily use 1gig of ram in a few hours.

WSV is ok, although its buggy and windlord hasn't cared about it for ages, so theres been no bug fixes, even for the simple things.

Sansan uses the official dll, which also means that its letting mirc do all the parsing of the rcon packets. We all know mirc is slow and inefficient, so it really shouldn't be doing stuff to do with network packets :(
Same with GUS really, that and its heavily based on INIs (not sure with sansan, not really looked at it)

I have never really used any of these scripts personally, but i've had a breif look at many of them and hosted them. So my opinions are based on this.
#19
mIRC/pawn Scripting / Re: mIRC obsolete ?
February 09, 2010, 08:06:15 PM
Well, if you look in the pawn scripting stuff, you'll notice that theres these commands:

SendRconEvent
SendRconCommand

Aswell as a callback named OnRconCommand.

Although i havn't tested these commands, i imagine they would work like this:


public OnRconCommand(cmdtext[])
{
new cmd[256];
new tmp[256];
new idx;
cmd = strtok(cmdtext, idx);
if (strcmp(cmd, "lights", true) == 0)
{
tmp = strtok(cmdtext, idx); // player id
new playerid = FindPlayerIDFromString(tmp);
tmp = strtok(cmdtext, idx); // lights on/off
if ( strcmp(tmp,"1",true) == 0 ) SetVehicleLights( GetPlayerVehicleID(playerid), true );
else SetVehicleLights( GetPlayerVehicleID(playerid), false );
}
}

public OnPlayerRequestClass(playerid, classid)
{
SendRconEvent( "[ClassRequest] %i %i", playerid, classid );
}


This is just a rough draft but it looks asthough it will work. Then all you need to do is parse and send the stuff in the mirc dll
#20
mIRC/pawn Scripting / Re: mIRC obsolete ?
February 09, 2010, 06:18:52 PM
So what, are they going to completely strip out the entire rcon, remove the commands which could be used for scripting, or just not add any more commands to it?

Since the mIRC scripts just work with the server by using the RCON interface for vcmp. It was never intended for scripting purposes.

If its just left as it is (which imo would be the best option), theres functions in pawn to send/receive commands on the rcon, meaning people could add to the mIRC scripting stuff themselves.
This way the developers wouldn't need to add any extra stuff to the rcon, but wrappers could still be made in pawn to provide the functionality if needed.
#21
Quote from: creepers on January 24, 2010, 01:21:55 AM
*facepalm* how many times do i have to tell you most servers are 3zr2. 3zr2 servers use PAWNO

Actually not all r2 servers use pawn (pawno is the IDE, not the language ;)) A lot of servers still use mirc, very few use pawn atm. from the people i've spoke to, they're not going to switch either.
Also out of the 6 servers i host on vrocker-hosting.eu, none of them are pawn.

Quote from: Boss on January 24, 2010, 01:54:15 AM
Anyway, as I have already mentioned, once VC-MP's pawn gets plugins support, its functionality will be endlessly superior to that of mrc scripts. So switching to it is a kind of a rational step towards MP's improvement.

Plugin support would aid in switching people to pawn yes, but you have to accept that a few people are unwilling to switch because either
a) they cant be arsed to learn pawn
b) There will always be features missing from pawn that people can do in mirc with ease
c) converting scripts takes time, and who wants to spend a day or so converting a script which has worked fine for 2 years
d) some people (like me) dont actually like pawn, and disagree with having to jump through hoops to do simple things. Script languages should be simple.

#22
Script Showroom / Re: New VC-MP mIRC Admin
January 20, 2010, 06:03:30 PM
Hmm just looked into this. Someone told me that when disabledriveby <player> <0/1> is sent, the server will reply with [disabledriveby] <player> <0/1>.

Instead its replying with [disabledriveby] <player>. It was crashing due to it was expecting the extra argument. I have disabled parsing the callback for the moment so it wont crash but will still work.
* VRocker prods a dev to look into the callback
#23
Script Showroom / Re: New VC-MP mIRC Admin
January 20, 2010, 02:59:53 PM
Woops! Sorry about that, was doing 10 things at once so must've forgot to add the mrc to the zip.

Added the aliases to the mrc, but heres all the R2 ones for reference:

; R2 Stuff
alias vcmp.getgravity { !return $dll( $qt( $scriptdirvcmp.dll ), GetGravity, $1 ) }     ; $1 = ServerID
alias vcmp.setgravity { !return $dll( $qt( $scriptdirvcmp.dll ), SetGravity, $1-2 ) }     ; $1 = ServerID, $2 = Gravity
alias vcmp.getgamespeed { !return $dll( $qt( $scriptdirvcmp.dll ), GetGamespeed, $1 ) }     ; $1 = ServerID
alias vcmp.setgamespeed { !return $dll( $qt( $scriptdirvcmp.dll ), SetGamespeed, $1-2 ) }     ; $1 = ServerID, $2 = GameSpeed
alias vcmp.getframelimiter { !return $dll( $qt( $scriptdirvcmp.dll ), GetFrameLimiter, $1 ) }     ; $1 = ServerID
alias vcmp.setframelimiter { !return $dll( $qt( $scriptdirvcmp.dll ), SetFrameLimiter, $1-2 ) }     ; $1 = ServerID, $2 = FrameLimiter on/off (1,0)
alias vcmp.getjumpswitch { !return $dll( $qt( $scriptdirvcmp.dll ), GetJumpSwitch, $1 ) }     ; $1 = ServerID
alias vcmp.setjumpswitch { !return $dll( $qt( $scriptdirvcmp.dll ), SetJumpSwitch, $1-2 ) }     ; $1 = ServerID, $2 = Jumpswitch on/off (1,0)
alias vcmp.getfastswitch { !return $dll( $qt( $scriptdirvcmp.dll ), GetFastSwitch, $1 ) }     ; $1 = ServerID
alias vcmp.setfastswitch { !return $dll( $qt( $scriptdirvcmp.dll ), SetFastSwitch, $1-2 ) }     ; $1 = ServerID, $2 = FastSwitch on/off (1,0)
alias vcmp.gettaxiboost { !return $dll( $qt( $scriptdirvcmp.dll ), GetTaxiBoost, $1 ) }     ; $1 = ServerID
alias vcmp.settaxiboost { !return $dll( $qt( $scriptdirvcmp.dll ), SetTaxiBoost, $1-2 ) }     ; $1 = ServerID, $2 = TaxiBoost on/off (1,0)
alias vcmp.getflyingcars { !return $dll( $qt( $scriptdirvcmp.dll ), GetFlyingCars, $1 ) }     ; $1 = ServerID
alias vcmp.setflyingcars { !return $dll( $qt( $scriptdirvcmp.dll ), SetFlyingCars, $1-2 ) }     ; $1 = ServerID, $2 = FlyingCars on/off (1,0)
alias vcmp.getdriveonwater { !return $dll( $qt( $scriptdirvcmp.dll ), GetDriveOnWater, $1 ) }     ; $1 = ServerID
alias vcmp.setdriveonwater { !return $dll( $qt( $scriptdirvcmp.dll ), SetDriveOnWater, $1-2 ) }     ; $1 = ServerID, $2 = DriveOnWater on/off (1,0)
alias vcmp.getperfecthandling { !return $dll( $qt( $scriptdirvcmp.dll ), GetPerfectHandling, $1 ) }     ; $1 = ServerID
alias vcmp.setperfecthandling { !return $dll( $qt( $scriptdirvcmp.dll ), SetPerfectHandling, $1-2 ) }     ; $1 = ServerID, $2 = PerfectHandling on/off (1,0)
alias vcmp.getshootinairmod { !return $dll( $qt( $scriptdirvcmp.dll ), GetShootInAirMod, $1 ) }     ; $1 = ServerID
alias vcmp.setshootinairmod { !return $dll( $qt( $scriptdirvcmp.dll ), SetShootInAirMod, $1-2 ) }     ; $1 = ServerID, $2 = ShootInAirMod on/off (1,0)
alias vcmp.getstuntbikemod { !return $dll( $qt( $scriptdirvcmp.dll ), GetStuntbikeMod, $1 ) }     ; $1 = ServerID
alias vcmp.setstuntbikemod { !return $dll( $qt( $scriptdirvcmp.dll ), SetStuntbikeMod, $1-2 ) }     ; $1 = ServerID, $2 = StuntbikeMod on/off (1,0)
alias vcmp.getwaterlevel { !return $dll( $qt( $scriptdirvcmp.dll ), GetWaterLevel, $1 ) }     ; $1 = ServerID
alias vcmp.setwaterlevel { !return $dll( $qt( $scriptdirvcmp.dll ), SetWaterLevel, $1-2 ) }     ; $1 = ServerID, $2 = Water Level
alias vcmp.getspikes { !return $dll( $qt( $scriptdirvcmp.dll ), GetSpikes, $1-2 ) }     ; $1 = ServerID, $2 = Player
alias vcmp.setspikes { !return $dll( $qt( $scriptdirvcmp.dll ), SetSpikes, $1-3 ) }     ; $1 = ServerID, $2 = Player, $3 = Spikes on/off (1,0)
alias vcmp.getdisabledriveby { !return $dll( $qt( $scriptdirvcmp.dll ), GetDisableDriveby, $1-2 ) }     ; $1 = ServerID, $2 = Player
alias vcmp.setdisabledriveby { !return $dll( $qt( $scriptdirvcmp.dll ), SetDisableDriveby, $1-3 ) }     ; $1 = ServerID, $2 = Player, $3 = Disable Driveby yes/no (1,0)
alias vcmp.getwantedlevel { !return $dll( $qt( $scriptdirvcmp.dll ), GetWantedLevel, $1-2 ) }     ; $1 = ServerID, $2 = Player
alias vcmp.setwantedlevel { !return $dll( $qt( $scriptdirvcmp.dll ), SetWantedLevel, $1-3 ) }     ; $1 = ServerID, $2 = Player, $3 = Level
alias vcmp.getping { !return $dll( $qt( $scriptdirvcmp.dll ), GetPing, $1-2 ) }     ; $1 = ServerID, $2 = Player
#24
Script Showroom / Re: New VC-MP mIRC Admin
January 19, 2010, 04:35:39 AM
Another Update:

Added some other R2 things like wanted level, perfect handling, stuntbike mod etc.

Also done some work on optimising the packet parsing. Should be a lot more efficient and be less cpu intence :) Shame its still hooked up to mirc, an app which doesn't know the meaning of efficiency :(
#25
Script Showroom / Re: New VC-MP mIRC Admin
January 08, 2010, 12:50:48 PM
Just added a few of the new features in R2.

Added These:


  • Get/Set Jump Switch
  • Get/Set Fast Switch
  • Get/Set Taxi Boost
  • Get/Set Flying Cars
  • Get/Set Drive On Water
  • Get Player Ping

Also done a few optimisations to the code :)
#26
Script Showroom / Re: New VC-MP mIRC Admin
December 30, 2009, 04:51:34 PM
Nothing added, just made it work with the latest server.

May get around to adding new funcs at one stage but dunno when that'll be
#27
Script Showroom / Re: New VC-MP mIRC Admin
December 30, 2009, 04:16:05 AM
Ok another update. Just got the dll working with the latest build.

Download in the same place (http://liberty-unleashed.co.uk/vcmp/vc-mp-r2.zip)
#28
Script Showroom / Re: New VC-MP mIRC Admin
December 29, 2009, 03:35:07 AM
Just fixed a stupid tab error in the included script which stopped it from saying connected.

Regarding the squirrel server, i'm no longer developing it since i'm focussing on my own mod. Whether or not anyone else who has the source makes one or not, i dont know.
#29
Script Showroom / Re: New VC-MP mIRC Admin
December 26, 2009, 11:15:38 AM
UPDATE:

Done some work on the dll to make it work with R2 since so many of you use the dll for scripts.

NOTE: There may be some bugs and there are many missing R2 features since not much time has been put into making this work. It was simply a case ofmodifying the netcode to make it connect and send/receive commands.

Have added a couple of small functions like gravity, gamespeed, framelimiter and spike strips but thats it.

Can be found Here

Let me know of anything thats broken and i'll fix it when i have some time :)
#30
mIRC/pawn Scripting / Re: rcon irc dll documentation?
December 26, 2009, 01:13:15 AM
There are no 'Callbacks' as such. The dll is exactly the same as the one used in GUS and SanSan. The only changes are to the internal netcode to make it communicate.

The big changes however are in the server, which parses the commands sent by the rcon. I have made a quick list of them for people to parse until i get my dll completed. I will be creating one of my multi dlls when i get time. I currently have an experimental one which connects and performs the basic functions like say etc.

Heres the list anyway:

Packets to send to the server: (Figure out the params and post if you like)

do
gettimerate
settimerate
getspectators
getweather
getmin
gethr
setweather
setmin
sethr
adminmsg
adminchat
set
spickupplayer
spawnpickup
deletepickup
newpickup
commands
help
cmdlist
getloc
getplayercar
getmoney
getarmour
gethp
maxplayers
password
unban
perfecthandling
disabledriveby
gravity
gamespeed
framelimiter
setspikes
setwepdamage
jumpswitch
fastswitch
syncframelimiter
taxiboostjump
flyingcars
driveonwater
setwaterlevel
setscore
score
ping
banip
ban
kick
players
playerlist
playercount
player


Packets the server sends to the rcon:

[join] ID Nick IP Port
[part] %u %s %u
[gettimerate] %u
[getweather] %u
[getmin] %u
[gethr] %u
[adminmsg] %s
[adminchat] %s
[set] %s
[spickupplayer] %s
[spawnpickup] %s
[deletepickup] %s
[newpickup] %u %s
[getloc] %u %f %f %f
[getplayercar] %u 255
[getplayercar] %u %u %u
[getplayercar] %u %u %u %u %u %.0f
[getmoney] %u %u
[getarmour] %u %u
[gethp] %u %u
[password] Password set to: %s
[perfecthandling] %u
[disabledriveby] %u
[gravity] %d
[gamespeed] %d
[framelimiter] %u
[setspikes] %u %u
[setwepdamage] %u %u
[jumpswitch] %u
[fastswitch] %u
[syncframelimiter] %u
[taxiboostjump] %u
[flyingcars] %u
[driveonwater] %u
[waterlevel] %.4f
[setscore] %u %d
[score] %u %d
[ping] %u %d
[playercount] %d %u
[player] %u %s %s %d %u %u %f %f %f %u %u %.0f %u %d %d %u %u %u %u %u %.1f
[death] %s(%u) died %u
[teamkill] %s(%u) team-killed %s(%u) %u %u %.1f
[kill] %s(%u) killed %s(%u) %u %u %.1f
[chat] %s: %s
[me] %s %s
[msg] %s: %s
[spawn] %s %u %u
[enter] %s %u %u %u
[exit] %s
[tc] %u %s: %s
[command] %u %s
[pickup] %u %u %u


If your unfamiliar with the %u etc. %u is a whole number over 0. %s is a string. %f is a float (and any %.4f just means its a floatingpoint to 4 decimal places)

Would be great if someone could document the actual values. I would but Christmas day has just ended and i've had a bit too much to drink... lol