03.10.2012, 14:09
O Sistema de radar: ( O Valor da multa varia com a Velocidade que o player estб )
Nas New's( comeзo do GM )
OnGameModeInit:
Final do GM
Fonte: http://pastebin.com/vsVn6C2V
-------------------------------------------------------------
Para fazer o sistema de ponto na carteira coloque na enum que define os dados do player ex: pPontosCarteira,
Ai coloque no radar onde aparece a mensagem da multa : PlayerInfo[playerid][pPontosCarteira] += 1;
E coloque para checar os pontos da carteira do player ex:
P.S: Apenas uma base isso ai , adapte ao seu GM e se quiser faзa melhorias
Nas New's( comeзo do GM )
Код:
new UpdateSeconds = 2; // Nгo Mecher new maxobject = 4; forward UpdateSpeed(playerid); enum SavePlayerPosEnum { Float:LastX, Float:LastY, Float:LastZ } #define COLOR_YELLOW 0xFFFF00AA #define VERDEFRACO 0x80cf80AA #define SLOTS 500 new objectcreated; new SavePlayerPos[SLOTS][SavePlayerPosEnum]; new distance1[MAX_PLAYERS];
Код:
SetTimer("UpdateSpeed", UpdateSeconds*1000, 1);
Код:
public UpdateSpeed(playerid) { new Float:x,Float:y,Float:z; new Float:distance,value; for(new i=0; i<SLOTS; i++) { if(IsPlayerConnected(i)) { GetPlayerPos(i, x, y, z); distance = floatsqroot(floatpower(floatabs(floatsub(x,SavePlayerPos[i][LastX])),2)+floatpower(floatabs(floatsub(y,SavePlayerPos[i][LastY])),2)+floatpower(floatabs(floatsub(z,SavePlayerPos[i][LastZ])),2)); value = floatround(distance * 3600); if(UpdateSeconds > 1) { value = floatround(value / UpdateSeconds); } distance1[i] = floatround(value/1600); SavePlayerPos[i][LastX] = x; SavePlayerPos[i][LastY] = y; SavePlayerPos[i][LastZ] = z; /* Para colocar Coordenada no lugar que voce quer , basta colocar a Coordenada X,Y,Z no lugar dos 00000 , o 40 й o raio que o radar pega, e o 50 , й a velocidade maxima*/ AddFlitsPaal(i, 1278, 1476.2402,-1726.3396,13.5469, 40, 50); // Radar da DP PM AddFlitsPaal(i, 1278, 1524.1256,-1679.0756,13.5469, 40, 50); // Prefeitura AddFlitsPaal(i, 1278, 2048.7131,1353.5975,10.6719, 40, 50); // BANCO AddFlitsPaal(i, 1278, 1200.9847,-1337.9875,13.3984, 40, 45); // HOSPITAL AddFlitsPaal(i, 1278, 0000.0000,0000.0000,0000.0000, 50, 70); // VAGO AddFlitsPaal(i, 1278, 0000.0000,0000.0000,0000.0000, 20, 50); // VAGO AddFlitsPaal(i, 1278, 0000.0000,0000.0000,0000.0000, 20, 50); // VAGO AddFlitsPaal(i, 1278, 0000.0000,0000.0000,0000.0000, 20, 50); // VAGO AddFlitsPaal(i, 1278, 0000.0000,0000.0000,0000.0000, 20, 50); // VAGO AddFlitsPaal(i, 1278, 0000.0000,0000.0000,0000.0000, 20, 50); // VAGO } } } GetPlayerDistanceToPoint(playerid,Float:x,Float:y) { new Float:x1,Float:y1,Float:z1; GetPlayerPos(playerid,x1,y1,z1); new Float:tmpdis = floatsqroot(floatpower(floatabs(floatsub(x,x1)),2)+ floatpower(floatabs(floatsub(y,y1)),2)); return floatround(tmpdis); } stock AddFlitsPaal(playerid, modelid, Float:xx, Float:yy, Float:zz, radius, speed) { new fine[MAX_PLAYERS]; new str[256]; if(objectcreated!=maxobject) { CreateObject(modelid, xx, yy, zz, 0.0, 0.0, 10); objectcreated++; } if((distance1[playerid])>speed) { if(IsPlayerInCircle(playerid, xx, yy, radius) && GetPlayerState(playerid)== PLAYER_STATE_DRIVER) { fine[playerid]=((distance1[playerid]*17/10)-speed); GivePlayerMoney(playerid, -2000); format(str,sizeof(str), "[RADAR xXX ] O Limite de velocidade й %d KM/H Voce Passou a %d KM/H e foi multado!",speed, distance1[playerid] ,fine[playerid]); // Caso queira mudar o nome do radar , й so mudar o xXx pelo nome que quiser. e o -2000 й o valor da multa. SendClientMessage(playerid, VERDEFRACO, str); PlayerPlaySound(playerid, 1132, 0.0, 0.0, 0.0); } } }
-------------------------------------------------------------
Para fazer o sistema de ponto na carteira coloque na enum que define os dados do player ex: pPontosCarteira,
Ai coloque no radar onde aparece a mensagem da multa : PlayerInfo[playerid][pPontosCarteira] += 1;
E coloque para checar os pontos da carteira do player ex:
Код:
if(PlayerInfo[playerid][pPontosCarteira] > 21) { PlayerInfo[playerid][pPontosCarteira] == 0; PlayerInfo[playerid][pCarteiraTerrestre] == 0; return 0; }