[Include] GetPlayerColor fix
#1

GetPlayerColor fix 0.2
-------------------------------------[Notice]-------------------------------------
This is (as of 27/10/2011) a part of fixes.inc - if you use that include, there is no need to use THIS!
----------------------------------------------------------------------------------

What is it?
This include fixes the bug with GetPlayerColor.
The bug, from SA-MP Wiki:
Quote:

GetPlayerColor will return nothing unless SetPlayerColor has been used!

With this script, you can use GetPlayerColor without SetPlayerColor (if you want to get the default player colors).

How does it work?
It has an extended array which contains the default colors the players get by their ID.
When player connects, their color will be set to the same color, with SetPlayerColor.
From that, you can use GetPlayerColor anywhere.

How to use it?
Just download the include, save it as color_fix.inc in your pawno/includes folder.
In your gamemode, put it on the first lines ( but after a_samp.inc ):
pawn Код:
#include <color_fix>
That's all. You don't need to think about other things (like FilterScripts, hooks, etc), it uses the ALS hooking method.

Download:
PasteBin::KoczkaHUN<color_fix.inc>

Known bugs, disadvantages:
Not known.

Updated on 2011. 08. 21 to version 2:
Reduced memory usage from 500 array slots to 100. Thanks for Hiddos determining this.
Reply
#2

Nice include :P
Reply
#3

aha...
but the player connect with a color...
and most servers sets player color after player has spawned... :\
Reply
#4

https://sampwiki.blast.hk/wiki/ColorFix
I used this as a base. It says put in OnPlayerConnect.
It returns the player color, even if no SetPlayerColor used in your script.
Reply
#5

Good Work!
Reply
#6

Good job, but I'm wondering about one thing. The ColorFix page on the wiki goes up to 200 colours because older SA-MP versions (0.2.x) supported a maximum of 200 players on a server. How did you get the other 300 colours?
Reply
#7

The other 300 colours are the same: ID 200 = ID 0, ID 201 = ID 1 ; ID 400 = ID 200 = ID 0, ID 401 = ID 201 = ID 1, and so on.
Reply
#8

Quote:
Originally Posted by KoczkaHUN
Посмотреть сообщение
The other 300 colours are the same: ID 200 = ID 0, ID 201 = ID 1 ; ID 400 = ID 200 = ID 0, ID 401 = ID 201 = ID 1, and so on.
Ah thanks. I just looked at it and you're correct. Actually, it already repeats after every 100, so for a future version I suggest you to do this:
pawn Код:
//The array containing the colours
new _colorfixPlayerColors[100] = {
0xFF8C13FF,0xC715FFFF,0x20B2AAFF,0xDC143CFF,0x6495EDFF,0xf0e68cFF,0x778899FF,0xFF1493FF,0xF4A460FF,
0xEE82EEFF,0xFFD720FF,0x8b4513FF,0x4949A0FF,0x148b8bFF,0x14ff7fFF,0x556b2fFF,0x0FD9FAFF,0x10DC29FF,
0x534081FF,0x0495CDFF,0xEF6CE8FF,0xBD34DAFF,0x247C1BFF,0x0C8E5DFF,0x635B03FF,0xCB7ED3FF,0x65ADEBFF,
0x5C1ACCFF,0xF2F853FF,0x11F891FF,0x7B39AAFF,0x53EB10FF,0x54137DFF,0x275222FF,0xF09F5BFF,0x3D0A4FFF,
0x22F767FF,0xD63034FF,0x9A6980FF,0xDFB935FF,0x3793FAFF,0x90239DFF,0xE9AB2FFF,0xAF2FF3FF,0x057F94FF,
0xB98519FF,0x388EEAFF,0x028151FF,0xA55043FF,0x0DE018FF,0x93AB1CFF,0x95BAF0FF,0x369976FF,0x18F71FFF,
0x4B8987FF,0x491B9EFF,0x829DC7FF,0xBCE635FF,0xCEA6DFFF,0x20D4ADFF,0x2D74FDFF,0x3C1C0DFF,0x12D6D4FF,
0x48C000FF,0x2A51E2FF,0xE3AC12FF,0xFC42A8FF,0x2FC827FF,0x1A30BFFF,0xB740C2FF,0x42ACF5FF,0x2FD9DEFF,
0xFAFB71FF,0x05D1CDFF,0xC471BDFF,0x94436EFF,0xC1F7ECFF,0xCE79EEFF,0xBD1EF2FF,0x93B7E4FF,0x3214AAFF,
0x184D3BFF,0xAE4B99FF,0x7E49D7FF,0x4C436EFF,0xFA24CCFF,0xCE76BEFF,0xA04E0AFF,0x9F945CFF,0xDCDE3DFF,
0x10C9C5FF,0x70524DFF,0x0BE472FF,0x8A2CD7FF,0x6152C2FF,0xCF72A9FF,0xE59338FF,0xEEDC2DFF,0xD8C762FF,
0xD8C762FF}

//At OnPlayerConnect:
SetPlayerColor(playerid, _colorfixPlayerColors[ playerid % 100 ]);
Reply
#9

yes, you're right. updated and credit added.
Reply
#10

Quote:
Originally Posted by KoczkaHUN
Посмотреть сообщение
yes, you're right. updated and credit added.
Glad I could help. I'm really surprised nobody came up with this idea before :S.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)