admin | Дата: Среда, 12.10.2011, 00:38:30 | Сообщение # 1 |
Группа: Администраторы
Сообщений: 3869
| И так начнем уроку! верху мода должен быть устоновлен include если у вас есть то 2 раз можно не добавлять. и так же верху мода вставляем: Code #define SERVER_VEHICLES 101 //сколько у вас машин устоновлено в samp в моде.
new Text:Contador[SERVER_VEHICLES]; new Metros[SERVER_VEHICLES]; new Kilometros[SERVER_VEHICLES]; new TimerContador[MAX_PLAYERS];
forward CrearContadores(); forward DestruirContadores(); forward CargarDatosVehiculos(); forward GuardarDatosVehiculos(); forward ContarKM(vehicleid); После этого ищем public OnGameModeInit() и туда вставляем: Code CrearContadores(); CargarDatosVehiculos(); Примерно так должен быть public: Code public OnGameModeInit() { CrearContadores(); CargarDatosVehiculos(); return 1; } После этого ищем public OnGameModeExit() и туда вставляем: Code DestruirContadores(); GuardarDatosVehiculos(); Примерно так должен быть public: Code public OnGameModeExit() { DestruirContadores(); GuardarDatosVehiculos(); return 1; } После этого ищем public OnPlayerDisconnect(playerid, reason) и туда вставляем: Code KillTimer(TimerContador[playerid]); Примерно так должен быть public: Code public OnPlayerDisconnect(playerid, reason) { KillTimer(TimerContador[playerid]); return 1; } После этого ищем public OnPlayerStateChange(playerid, newstate, oldstate) и туда вставляем: Code if(newstate == PLAYER_STATE_DRIVER) { TextDrawShowForPlayer(playerid, Contador[GetPlayerVehicleID(playerid)]); TimerContador[playerid] = SetTimerEx("ContarKM", 2500, true, "i", GetPlayerVehicleID(playerid)); } Примерно так должен быть public: Code public OnPlayerStateChange(playerid, newstate, oldstate) { if(newstate == PLAYER_STATE_DRIVER) { TextDrawShowForPlayer(playerid, Contador[GetPlayerVehicleID(playerid)]); TimerContador[playerid] = SetTimerEx("ContarKM", 2500, true, "i", GetPlayerVehicleID(playerid)); } return 1; } После этого ищем public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) и туда вставляем: Примерно так должен быть public: Code public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { ContarKM(vehicleid); return 1; } После этого ищем public OnPlayerExitVehicle(playerid, vehicleid) и туда вставляем: Code TextDrawHideForPlayer(playerid, Contador[vehicleid]); KillTimer(TimerContador[playerid]); Примерно так должен быть public: Code public OnPlayerExitVehicle(playerid, vehicleid) { TextDrawHideForPlayer(playerid, Contador[vehicleid]); KillTimer(TimerContador[playerid]); return 1; } После этого добавляем функции в любое место: Code public ContarKM(vehicleid) { static string[16]; if(GetVehicleSpeed(vehicleid) > 10) { Metros[vehicleid] += floatround(floatdiv(GetVehicleSpeed(vehicleid), 60.0)); } if(Metros[vehicleid] > 9) { Kilometros[vehicleid] += 1; Metros[vehicleid] = 0; } if(arrlen(Kilometros[vehicleid]) == 1) { format(string, 16, "0000%d~r~%d", Kilometros[vehicleid], Metros[vehicleid]); TextDrawSetString(Contador[vehicleid], string); } else if(arrlen(Kilometros[vehicleid]) == 2) { format(string, 16, "000%d~r~%d", Kilometros[vehicleid], Metros[vehicleid]); TextDrawSetString(Contador[vehicleid], string); } else if(arrlen(Kilometros[vehicleid]) == 3) { format(string, 16, "00%d~r~%d", Kilometros[vehicleid], Metros[vehicleid]); TextDrawSetString(Contador[vehicleid], string); } else if(arrlen(Kilometros[vehicleid]) == 4) { format(string, 16, "0%d~r~%d", Kilometros[vehicleid], Metros[vehicleid]); TextDrawSetString(Contador[vehicleid], string); } else if(arrlen(Kilometros[vehicleid]) == 5) { format(string, 16, "%d~r~%d", Kilometros[vehicleid], Metros[vehicleid]); TextDrawSetString(Contador[vehicleid], string); } return 1; }
public CrearContadores() { for(new i = 1; i < SERVER_VEHICLES; i++) { Contador[i] = TextDrawCreate(568.000000, 410.000000, "0000~r~0"); TextDrawBackgroundColor(Contador[i], 255); TextDrawFont(Contador[i], 2); TextDrawLetterSize(Contador[i], 0.270000, 1.000000); TextDrawColor(Contador[i], -1); TextDrawSetOutline(Contador[i], 1); TextDrawSetProportional(Contador[i], 1); } print("Vehicle textdraws succesfully created."); return 1; }
public DestruirContadores() { for(new i = 1; i < SERVER_VEHICLES; i++) { TextDrawDestroy(Contador[i]); } print("Vehicle textdraws succesfully destroyed."); return 1; }
public CargarDatosVehiculos() { new string[24]; for(new i = 1; i < SERVER_VEHICLES; i++) { format(string, 24, "Vehicles/%d.ini", i); if(!dini_Exists(string)) { dini_Create(string); dini_IntSet(string, "metros", 0); dini_IntSet(string, "kilometros", 0); Metros[i] = dini_Int(string, "metros"); Kilometros[i] = dini_Int(string, "kilometros"); } else { Metros[i] = dini_Int(string, "metros"); Kilometros[i] = dini_Int(string, "kilometros"); } } print("Vehicle data succesfully loaded."); return 1; }
public GuardarDatosVehiculos() { new string[24], i = 1; for(; i < SERVER_VEHICLES; i++) { format(string, 24, "Vehicles/%d.ini", i); dini_IntSet(string, "metros", Metros[i]); dini_IntSet(string, "kilometros", Kilometros[i]); } print("Vehicle data succesfully saved."); return 1; }
stock GetVehicleSpeed(vehicleid) { new Float: ST[4]; GetVehicleVelocity(vehicleid, ST[0], ST[1], ST[2]); ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 180; return floatround(ST[3]); }
stock arrlen(&constinteger) { new tmp[12]; format(tmp, 12, "%i", constinteger); return strlen(tmp); } урок by 26_RUSSS Автор 26_RUSSS
zm-jail.ru Разработка сайта samp-pawno.ru
|
|
|
|