variavel para definir o objeto)Object_AddToWorld(objectid, world) - Adiciona um certo objeto apenas para um mundo virtual(lembrando que se nao definir o world, o objeto sera setado no inicial)Object_AddToAllPlayers(objectid) - Adiciona um certo objeto a todos os players conectados(quem se conectar depois nao vera os objetos)Object_AddToAllWorlds(objectid) - Adiciona um certo objeto a todos os virtual worldsObject_RemoveFromPlayer(objectid, playerid) - Remove um certo objeto para apenas um playerObject_RemoveFromWorld(objectid, world) - Remove um certo objeto de apenas um world.Object_RemoveFromAllPlayers(objectid) - Remove o objeto de todos os playersObject_RemoveFromAllWorlds(objectid) - Remove de todos os virtual worldsObject_SetViewDistance(objectid, distance) - Seta a distancia no qual o objeto pode ser visto (normal = 1000)MoveDynamicObject(object, x, y, z, speed) - Move um objetoStopDynamicObject(objectid) - Para de mover um objetoIsValidDynamicObject(objectid) - Checa se o objeto (do Y_Objects) existeCreateDynamicObject(object, x, y, z, rx, ry, rz) - Cria um objeto do includeDestroyDynamicObject(object) - Destroy o objetoAttachDynamicObjectToPlayer - Puxa o objeto junto ao jogador, ou seja, se o jogador se mover, o objeto vai juntoAttachDynamicObjectToObject - Puxa o objeto junto ao objeto, ou seja, se o objeto se mover, este objeto vai juntoDettachDynamicObjectFromPlayer - Despuxa o objeto do jogador8. RacesPara fazer corridas, e um processo meio complicado, estaremos usando a funcao SetPlayerRaceCheckpoint.Primeiramente, vou explicar como funciona cada funcao necessaria para se criar uma corrida:CODIGOSetPlayerRaceCheckpoint(playerid, tipo, x, y, z, nextx, nexty, nextz, tamanho):No playerid, vamos colocar o id da pessoa que vai receber o checkpoint, no tipo, o tipo do checkpoint, estes sao os tipos:0 - Normal: Checkpoints normais da corrida, aqueles que tem a seta apontando para onde vai ser o proximo checkpoint.1 - Finish: Checkpoint Final de uma Corrida.2 - Nothing: Checkpoint que nao tem nada dentro dele.3 - Air: Checkpoint feito para corridas aereas.4 - Air Finish: Checkpoint feito para final de corridas aereas.Em x,y e z colocaremos as coordenadas onde serao os checkpoints, e em nextx, nexty e nextz, as coordenadas do proximo checkpoint(caso seja um checkpoint de final, deixe as coordenadas do mesmo).E por ultimo, em tamanho colocaremos o tamanho do checkpoint(o natural e geralmente colocar 8.0)DisablePlayerRaceCheckpoint(playerid):Usaremos essa funcao para trocar de checkpoint quando o player chegar em algum checkpoint da corrida.Agora vamos fazer nossa corrida. Para simplificar as coordenadas de checkpoint da corrida, vamos usar um Float Multi-Array.Acrescentaremos isso em cima de OnGamemodeInit:CODIGOnew checkcorrida[MAX_PLAYERS];new Float:ChecksAvenida[17][3] = {{2021.9279,851.2713,6.4387},{1806.2888,851.1154,10.3762},{1597.7745,850.9503,6.4374},{1315.8704,886.0849,6.5154},{1227.3850,1170.5470,6.5219},{1228.7192,1804.4149,6.4378},{1229.5260,2301.2026,6.4387},{1447.5416,2452.2988,6.4377},{1849.4731,2497.6997,6.5153},{2287.5569,2607.9063,6.4585},{2609.7202,2514.3423,5.8201},{2706.6592,2158.3931,6.4492},{2705.5173,1674.4374,6.4448},{2706.8931,1278.5399,6.4373},{2624.1135,932.2136,6.4433},{2312.5583,854.1749,6.4375},{2049.3154,853.4050,6.4387}};Pronto! Acabamos de fazer um Multi-Array com as coordenadas dos checkpoints da corrida! Essa corrida esta localizada na avenida, em LV. Agora vamos fazer um comando para o player entrar na corrida. (vamos fazer uma corrida singleplayer por enquanto, apenas para explicar como fazer a troca de checkpoints) Logo que ele digitar o comando, o checkpoint 1 da corrida vai aparecer no mapa do player, e quando entrar no checkpoint, vai aparecer o 2, e assim por diante... Entao, aqui o code do comando:CODIGOif(strcmp(cmdtext,"/entrarcorrida",true)==0){checkcorrida[playerid] = 0;SetPlayerRaceCheckpoint(playerid, 0, ChecksAvenida[checkcorrida[playerid]][0], ChecksAvenida[checkcorrida[playerid]][1], ChecksAvenida[checkcorrida[playerid]][2], ChecksAvenida[checkcorrida[playerid] + 1][0], ChecksAvenida[checkcorrida[playerid] + 1][1], ChecksAvenida[checkcorrida[playerid] + 1][2], 8.0);return 1;}E agora, faremos um sistema para trocar de checkpoint, usando o callback OnPlayerEnterRaceCheckpoint. Caso nao o tenha no seu gamemode, adicione.CODIGOpublic OnPlayerEnterRaceCheckpoint(playerid){if(checkcorrida[playerid] == 17){SendClientMessage(playerid, 0xFFFF00AA, "Voce terminou a corrida!");DisablePlayerRaceCheckpoint(playerid);checkcorrida[playerid] = 0;return 1;}else{DisablePlayerCheckpoint(playerid);checkcorrida[playerid] ++;SetPlayerRaceCheckpoint(playerid, 0, ChecksAvenida[checkcorrida[playerid]][0],