Дата: 23.02.2011, Среда, 13:45:55 | Сообщение # $NUMBER
Группа: Пользователи
Сообщений: 67
Сдраствуйте дорогие пользователи я раскажу вам как ставить радары на скорость по городу и наказывать их за превышение Начнем: ко всем new прописываем Code new UpdateSeconds = 1; #define SLOTS 200 new SavePlayerPos[SLOTS][SavePlayerPosEnum]; new distance1[MAX_PLAYERS]; К форвардам Code forward UpdateSpeed(playerid);//--------Для паблика [code]
В паблик OnGameModeInit гденибудь в конце ставим таймер [code]SetTimer("UpdateSpeed", UpdateSeconds*1000, 1); создаем паблик Code 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)); // Distance: meters in the last second 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; // Speeding controllers AddSpeedingCam(i, 1350.9496, -1112.5031, 28.0000, 20, 1000);//x,y,z,расстояние дальности,максимальная скорость //тоесть сюда же добавляем свои радары по городу
} } } И В конце мода вставляем Code IsPlayerInCircle(playerid,Float:x,Float:y,radius) { if(GetPlayerDistanceToPoint(playerid,Float:x,Float:y) < radius) { return 1; } return 0; }
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 AddSpeedingCam(playerid, Float:xx, Float:yy, Float:zz, radius, speed) { new fine[MAX_PLAYERS]; new str[256];
if(objectcreated!=MaxObjects) { CreateObject(playerid, 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, -fine[playerid]); format(str,sizeof(str), "РАДАР: Вы превысили скорость %d KM/H. [Ваша скорость %d КМ] за это с тебя сняли %d рублей xD",speed, distance1[playerid] ,fine[playerid]); GameTextForPlayer(playerid, "~r~WaZUuuuppPPPPPP!", 5000, 3);// текст по середине иигрока PlayerPlaySound(playerid, 1132, 0.0, 0.0, 0.0);// ид музыки при преступлени SendClientMessage(playerid, COLOR_RED, str);// } } } p.s у меня все работает если есть ошибки или я что то не дописал то пишите сюда
|
Дата: 23.02.2011, Среда, 16:23:25 | Сообщение # $NUMBER
Группа: Модераторы
Сообщений: 1045
misha_konsta, Лови +7 Новичкам пригодиться
|
Дата: 23.02.2011, Среда, 16:53:10 | Сообщение # $NUMBER
Группа: Проверенные
Сообщений: 134
E:\Server\VruBY\gamemodes\VruBY.pwn(334) : error 017: undefined symbol "SavePlayerPosEnum" E:\Server\VruBY\gamemodes\VruBY.pwn(334) : error 009: invalid array size (negative, zero or out of bounds) E:\Server\VruBY\gamemodes\VruBY.pwn(1326) : error 021: symbol already defined: "SavePlayerPos" E:\Server\VruBY\gamemodes\VruBY.pwn(6530) : warning 213: tag mismatch E:\Server\VruBY\gamemodes\VruBY.pwn(6530) : warning 213: tag mismatch E:\Server\VruBY\gamemodes\VruBY.pwn(6530) : warning 213: tag mismatch E:\Server\VruBY\gamemodes\VruBY.pwn(47322) : warning 235: public function lacks forward declaration (symbol "ElectCheck") E:\Server\VruBY\gamemodes\VruBY.pwn(47356) : warning 213: tag mismatch E:\Server\VruBY\gamemodes\VruBY.pwn(47356) : warning 213: tag mismatch E:\Server\VruBY\gamemodes\VruBY.pwn(47356) : warning 213: tag mismatch E:\Server\VruBY\gamemodes\VruBY.pwn(47365) : warning 213: tag mismatch E:\Server\VruBY\gamemodes\VruBY.pwn(47366) : warning 213: tag mismatch E:\Server\VruBY\gamemodes\VruBY.pwn(47367) : warning 213: tag mismatch E:\Server\VruBY\gamemodes\VruBY.pwn(47374) : error 017: undefined symbol "AddSpeedingCam"
|
Дата: 23.02.2011, Среда, 17:05:10 | Сообщение # $NUMBER
Группа: Проверенные
Сообщений: 114
Alex1994, руки кривые
|
Дата: 23.02.2011, Среда, 17:06:10 | Сообщение # $NUMBER
Группа: Пользователи
Сообщений: 67
Code enum SavePlayerPosEnum { Float:LastX, Float:LastY, Float:LastZ } думаю знаеш куда а насчет 2 ошибки то ты значит сток не туда поставил
|
Дата: 23.02.2011, Среда, 18:43:24 | Сообщение # $NUMBER
Группа: Проверенные
Сообщений: 84
D:\CrysisR\@@@@РП\gamemodes\@@@.pwn(46953) : error 017: undefined symbol "objectcreated" как исправвить?
|
Дата: 23.02.2011, Среда, 18:51:57 | Сообщение # $NUMBER
Группа: Пользователи
Сообщений: 67
в начале new objectcreated; и new MaxObjects = 2000;
|
Дата: 24.02.2011, Четверг, 09:11:20 | Сообщение # $NUMBER
Группа: Проверенные
Сообщений: 50
Что за оптимизация?
|
Дата: 27.02.2011, Воскресенье, 17:29:00 | Сообщение # $NUMBER
Группа: Проверенные
Сообщений: 134
Спасибо просто у мя в моде уже использовалось: Code enum SavePlayerPosEnum { Float:LastX, Float:LastY, Float:LastZ }
|