SA-MP Forums

Go Back   SA-MP Forums > SA-MP Scripting and Plugins > Scripting Help > Tutorials

Reply
 
Thread Tools Display Modes
Old 11/02/2012, 12:07 AM   #1
JernejL
Beta Tester
 
JernejL's Avatar
 
Join Date: Jan 2006
Location: Slovenia
Posts: 577
Reputation: 372
Default Perfect Protection against invalid mods.

pawn Code:
// Table of legit mods (minus NOS, hydraulic and wheels) for specific vehicles.
    new legalmods[48][22] = {
        {400, 1024,1021,1020,1019,1018,1013,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
        {401, 1145,1144,1143,1142,1020,1019,1017,1013,1007,1006,1005,1004,1003,1001,0000,0000,0000,0000},
        {404, 1021,1020,1019,1017,1016,1013,1007,1002,1000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
        {405, 1023,1021,1020,1019,1018,1014,1001,1000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
        {410, 1024,1023,1021,1020,1019,1017,1013,1007,1003,1001,0000,0000,0000,0000,0000,0000,0000,0000},
        {415, 1023,1019,1018,1017,1007,1003,1001,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
        {418, 1021,1020,1016,1006,1002,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
        {420, 1021,1019,1005,1004,1003,1001,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
        {421, 1023,1021,1020,1019,1018,1016,1014,1000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
        {422, 1021,1020,1019,1017,1013,1007,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
        {426, 1021,1019,1006,1005,1004,1003,1001,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
        {436, 1022,1021,1020,1019,1017,1013,1007,1006,1003,1001,0000,0000,0000,0000,0000,0000,0000,0000},
        {439, 1145,1144,1143,1142,1023,1017,1013,1007,1003,1001,0000,0000,0000,0000,0000,0000,0000,0000},
        {477, 1021,1020,1019,1018,1017,1007,1006,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
        {478, 1024,1022,1021,1020,1013,1012,1005,1004,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
        {489, 1024,1020,1019,1018,1016,1013,1006,1005,1004,1002,1000,0000,0000,0000,0000,0000,0000,0000},
        {491, 1145,1144,1143,1142,1023,1021,1020,1019,1018,1017,1014,1007,1003,0000,0000,0000,0000,0000},
        {492, 1016,1006,1005,1004,1000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
        {496, 1143,1142,1023,1020,1019,1017,1011,1007,1006,1003,1002,1001,0000,0000,0000,0000,0000,0000},
        {500, 1024,1021,1020,1019,1013,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
        {516, 1021,1020,1019,1018,1017,1016,1015,1007,1004,1002,1000,0000,0000,0000,0000,0000,0000,0000},
        {517, 1145,1144,1143,1142,1023,1020,1019,1018,1017,1016,1007,1003,1002,0000,0000,0000,0000,0000},
        {518, 1145,1144,1143,1142,1023,1020,1018,1017,1013,1007,1006,1005,1003,1001,0000,0000,0000,0000},
        {527, 1021,1020,1018,1017,1015,1014,1007,1001,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
        {529, 1023,1020,1019,1018,1017,1012,1011,1007,1006,1003,1001,0000,0000,0000,0000,0000,0000,0000},
        {534, 1185,1180,1179,1178,1127,1126,1125,1124,1123,1122,1106,1101,1100,0000,0000,0000,0000,0000},
        {535, 1121,1120,1119,1118,1117,1116,1115,1114,1113,1110,1109,0000,0000,0000,0000,0000,0000,0000},
        {536, 1184,1183,1182,1181,1128,1108,1107,1105,1104,1103,0000,0000,0000,0000,0000,0000,0000,0000},
        {540, 1145,1144,1143,1142,1024,1023,1020,1019,1018,1017,1007,1006,1004,1001,0000,0000,0000,0000},
        {542, 1145,1144,1021,1020,1019,1018,1015,1014,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
        {546, 1145,1144,1143,1142,1024,1023,1019,1018,1017,1007,1006,1004,1002,1001,0000,0000,0000,0000},
        {547, 1143,1142,1021,1020,1019,1018,1016,1003,1000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
        {549, 1145,1144,1143,1142,1023,1020,1019,1018,1017,1012,1011,1007,1003,1001,0000,0000,0000,0000},
        {550, 1145,1144,1143,1142,1023,1020,1019,1018,1006,1005,1004,1003,1001,0000,0000,0000,0000,0000},
        {551, 1023,1021,1020,1019,1018,1016,1006,1005,1003,1002,0000,0000,0000,0000,0000,0000,0000,0000},
        {558, 1168,1167,1166,1165,1164,1163,1095,1094,1093,1092,1091,1090,1089,1088,0000,0000,0000,0000},
        {559, 1173,1162,1161,1160,1159,1158,1072,1071,1070,1069,1068,1067,1066,1065,0000,0000,0000,0000},
        {560, 1170,1169,1141,1140,1139,1138,1033,1032,1031,1030,1029,1028,1027,1026,0000,0000,0000,0000},
        {561, 1157,1156,1155,1154,1064,1063,1062,1061,1060,1059,1058,1057,1056,1055,1031,1030,1027,1026},
        {562, 1172,1171,1149,1148,1147,1146,1041,1040,1039,1038,1037,1036,1035,1034,0000,0000,0000,0000},
        {565, 1153,1152,1151,1150,1054,1053,1052,1051,1050,1049,1048,1047,1046,1045,0000,0000,0000,0000},
        {567, 1189,1188,1187,1186,1133,1132,1131,1130,1129,1102,0000,0000,0000,0000,0000,0000,0000,0000},
        {575, 1177,1176,1175,1174,1099,1044,1043,1042,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
        {576, 1193,1192,1191,1190,1137,1136,1135,1134,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
        {580, 1023,1020,1018,1017,1007,1006,1001,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000},
        {589, 1145,1144,1024,1020,1018,1017,1016,1013,1007,1006,1005,1004,1000,0000,0000,0000,0000,0000},
        {600, 1022,1020,1018,1017,1013,1007,1006,1005,1004,0000,0000,0000,0000,0000,0000,0000,0000,0000},
        {603, 1145,1144,1143,1142,1024,1023,1020,1019,1018,1017,1007,1006,1001,0000,0000,0000,0000,0000}
    };

iswheelmodel(modelid) {
   
    new wheelmodels[17] = {1025,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1085,1096,1097,1098};
   
    foreach(wheelmodels, I) {
       
        if (modelid == wheelmodels[I])
            return true;
       
    }
   
    return false;
}

IllegalCarNitroIde(carmodel) {
   
    new illegalvehs[29] = { 581, 523, 462, 521, 463, 522, 461, 448, 468, 586, 509, 481, 510, 472, 473, 493, 595, 484, 430, 453, 452, 446, 454, 590, 569, 537, 538, 570, 449 };
   
    foreach(illegalvehs, I) {
       
        if (carmodel == illegalvehs[I])
            return true;
       
    }
   
    return false;
}

// assumes player is in a car - make sure it is.
illegal_nos_vehicle(PlayerID) {
   
    new carid = GetPlayerVehicleID(PlayerID);
    new playercarmodel = GetVehicleModel(carid);
   
    return IllegalCarNitroIde(playercarmodel);
   
}

stock islegalcarmod(vehicleide, componentid) {
   
    new modok = false;
   
    // stereo, hydraulics & nos (1x 2x 3x) are special.
    if ( (iswheelmodel(componentid)) || (componentid == 1086) || (componentid == 1087) || ((componentid >= 1008) && (componentid <= 1010))) {
       
        new nosblocker = IllegalCarNitroIde(vehicleide);
       
        if (!nosblocker)
            modok = true;
       
    } else {
       
        // check if the specified model CAN use this particular mod.
        foreach(legalmods, I) {
           
            if (legalmods[I][0] == vehicleide) { // first is car IDE
               
                for(new J = 1; J < 22; J++) { // start with 1
                    if (legalmods[I][J] == componentid)
                        modok = true;
                }
               
            }
           
        }
       
    }
   
    return modok;
}

OnVehicleMod(playerid, vehicleid, componentid) {
   
    new vehicleide = GetVehicleModel(vehicleid);
    new modok = islegalcarmod(vehicleide, componentid);
   
    if (!modok) {
        AddEchoMessageEx("[invalid_mod] %s %d %d %d %d %d", pNickname[playerid], playerid, vehicleid, vehicleide, componentid);
        banaplayer(ANTICHEAT_ID, PlayerID, "Fuck you and your mods!");
        return 0;
    }
   
    return 1;
}

This should be 99% self-explanatory, this is a table of legal mods per vehicle & a way to block all invalid (crashy) mods from being applied.

There are assholes running bots which connect to a server, teleport in a car around and send crashing mod info to crash players en-masse, this should enable you to 100% protect yourself against this threat.

I just took this out of my gamemode quickly so it's not a filterscript, but the first person to release a filterscript = gratuitous turtle reward?
__________________


samp://198.50.173.59:7777 - Partyserver - TurtleServer (now with extra turtles)!

SA-MP map editor: Not a in-game script but a proper windows application!
http://forum.sa-mp.com/showthread.php?t=282801

Last edited by JernejL; 14/01/2013 at 02:13 PM.
JernejL is offline   Reply With Quote
Old 11/02/2012, 12:09 AM   #2
Face9000
High-roller
 
Face9000's Avatar
 
Join Date: Jan 2010
Location: Pigland
Posts: 3,259
Reputation: 185
Default Re: Perfect Protection against invalid mods.

Awesome.
Face9000 is offline   Reply With Quote
Old 11/02/2012, 03:44 AM   #3
Hoborific
Huge Clucker
 
Hoborific's Avatar
 
Join Date: Jul 2010
Location: /home/
Posts: 359
Reputation: 13
Default Re: Perfect Protection against invalid mods.

Perfect, thank you.
__________________
Guess who's back, back again
Hobo's back, tell a friend.
Hoborific is offline   Reply With Quote
Old 11/02/2012, 03:52 AM   #4
Sufyan
Big Clucker
 
Join Date: Jan 2011
Location: India
Posts: 63
Reputation: 37
Default Re: Perfect Protection against invalid mods.

Great Thanks for this
Sufyan is offline   Reply With Quote
Old 11/02/2012, 03:56 AM   #5
Nicholas.
Guest
 
Posts: n/a
Default Re: Perfect Protection against invalid mods.

Nice.
  Reply With Quote
Old 11/02/2012, 07:14 AM   #6
KingHual
High-roller
 
KingHual's Avatar
 
Join Date: Jun 2010
Location: Bulgaria
Posts: 1,967
Reputation: 937
Default Re: Perfect Protection against invalid mods.

It's nice. Even though I wouldn't call this a tutorial since it's just a snippet of code.
__________________
(c) good image not stolen

I always suspected this place was a bullshit hugbox for wapanese furries with self-diagnosed aspergers, but every now and then I'm provided with concrete evidence.
KingHual is offline   Reply With Quote
Old 11/02/2012, 07:17 AM   #7
T0pAz
Guest
 
Posts: n/a
Default Re: Perfect Protection against invalid mods.

Thanks for the tips.
  Reply With Quote
Old 11/02/2012, 08:00 AM   #8
Unknownich
Huge Clucker
 
Unknownich's Avatar
 
Join Date: Dec 2011
Posts: 229
Reputation: 27
Default Re: Perfect Protection against invalid mods.

Quote:
banaplayer(ANTICHEAT_ID, PlayerID, "Fuck you and your mods!");

Nice job
Unknownich is offline   Reply With Quote
Old 18/02/2012, 09:10 PM   #9
BMUK
Gangsta
 
Join Date: Feb 2007
Posts: 804
Reputation: 71
Default Re: Perfect Protection against invalid mods.

lol @ .."Fuck you and your mods!");
BMUK is offline   Reply With Quote
Old 19/02/2012, 11:19 PM   #10
toi
Big Clucker
 
Join Date: Oct 2011
Posts: 186
Reputation: 5
Default Re: Perfect Protection against invalid mods.

Thanks but where do I put all that data, I want to say under which heading?
toi is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Player Protection. Like Protection when entering checkpoint. and interior. stevestelford Scripting Help 2 08/06/2012 12:03 AM
[FilterScript] Spawn Protection Filterscript [K665's Spawn Protection] Kerlan Filterscripts 17 28/11/2011 02:02 PM


All times are GMT. The time now is 05:23 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.