Воскресенье, 28.04.2024 Россия | Russia
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Всё для SA:MP » Скрипты » [FS]для прикрепления тачки к тачке
[FS]для прикрепления тачки к тачке
XuTДата: Вторник, 04.01.2011, 14:28 | Сообщение # 1

Сообщений: 94
[ 5 ]
Награды:
[ 0 ]
Отсутствует!
Российская Федерация

Commands:
/attach

Code
/********************************************************/
/*  Script By Gamer_Z                    */
/*  Credits go to:                    */
/*  Luby(for IsVehicleInUse)                            */
/*  Darkrealm (for GetClosestCar and GetDistanceToCar)  */
/********************************************************/
#include <a_samp>
new
TimerATACH[MAX_PLAYERS],
prevcar[MAX_PLAYERS],
playerveh[MAX_PLAYERS],
atached[MAX_PLAYERS],
tempcar[MAX_PLAYERS];

public OnPlayerCommandText(playerid, cmdtext[]){
if(strcmp(cmdtext, "/attach", true) == 0) {//By Gamer_Z{
if(atached[playerid] == 0){
if(IsPlayerInAnyVehicle(playerid)){
atached[playerid] = 1;
playerveh[playerid] = GetPlayerVehicleID(playerid);
tempcar[playerid] = GetPlayerVehicleID(playerid);
GetClosestCar(playerid);
TimerATACH[playerid] = SetTimerEx("AtachVehicleToVehicle",314,1,"iii",playerid,prevcar[playerid],playerveh[playerid]);
SendClientMessage(playerid, 0xFF0000FF, "* Vehicle attached!");
}
}else
if(atached[playerid] == 1){
atached[playerid] = 0;
PutPlayerInVehicle(playerid,prevcar[playerid],0);// for syncing
PutPlayerInVehicle(playerid,tempcar[playerid],0);// for syncing
KillTimer(TimerATACH[playerid]);
SendClientMessage(playerid, 0xFF0000FF, "* Vehicle de-attached!");
}
return 1;
}
return 0;
}
public OnPlayerDisconnect(playerid){
if(atached[playerid] == 1){atached[playerid] = 0;KillTimer(TimerATACH[playerid]);}
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid){
        if(atached[playerid] == 1){atached[playerid] = 0;KillTimer(TimerATACH[playerid]);SendClientMessage(playerid, 0xFF0000FF, "* Vehicle de-attached!");}
        return 1;
}
public OnPlayerSpawn(playerid){
SetTimerEx("SyncVehiclesOnSpawn",1914,0,"i",playerid);
return 1;
}
forward SyncVehiclesOnSpawn(playerid);
public SyncVehiclesOnSpawn(playerid){
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
for (new carid = 0; carid < MAX_VEHICLES; carid++){
       if(!IsVehicleInUse(carid)){
PutPlayerInVehicle(playerid,carid,0);
}
}
SetPlayerPos(playerid,x,y,z);
}
forward GetClosestCar(playerid);
public GetClosestCar(playerid){ //By Darkrealm (Edited by Gamer_Z for AtachVehToVeh)
if (!IsPlayerConnected(playerid)){
       return -1;
}
new Float:prevdist = 7.000;
for (new carid = 0; carid < MAX_VEHICLES; carid++){
       if(!IsVehicleInUse(carid)){
new Float:dist = GetDistanceToCar(playerid,carid);
       if ((dist < prevdist)){
            prevdist = dist;
            prevcar[playerid] = carid;
               }
       }
}
return prevcar[playerid];
}

forward GetDistanceToCar(playerid,carid);
public GetDistanceToCar(playerid,carid){ //By Darkrealm (Edited by Gamer_Z for AtachVehToVeh)
new Float:dis;
new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
if (!IsPlayerConnected(playerid)) {
return -1;
}
GetPlayerPos(playerid,x1,y1,z1);
      if(!IsVehicleInUse(carid)){
GetVehiclePos(carid,x2,y2,z2);
dis = floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
       return floatround(dis);
}else{
return 1;
}
}
forward AtachVehicleToVehicle(playerid,veh,pveh);
public AtachVehicleToVehicle(playerid,veh,pveh){//By Gamer_Z
new Float:x,Float:y,Float:z,Float:a;
GetPlayerPos(playerid,x,y,z);
GetVehicleZAngle(pveh,a);
SetVehiclePos(veh,x,y,z-3);
SetVehicleZAngle(veh,a);
PutPlayerInVehicle(playerid,prevcar[playerid],0);// for syncing
PutPlayerInVehicle(playerid,tempcar[playerid],0);// for syncing
return 1;
}
IsVehicleInUse(vehicleid){//By Luby ..IsVehicleInUseDF xD
new temp;
for(new i=0;i<GetMaxPlayers();i++){
if(IsPlayerConnected(i) && IsPlayerInVehicle(i, vehicleid) && GetPlayerState(i)==PLAYER_STATE_DRIVER){temp++;}
}
if(temp > 0){ return true; } else return false;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys){
if (newkeys == KEY_ACTION){
if(IsPlayerInAnyVehicle(playerid) && atached[playerid] == 1){
atached[playerid] = 0;
PutPlayerInVehicle(playerid,prevcar[playerid],0);// for syncing
PutPlayerInVehicle(playerid,tempcar[playerid],0);// for syncing
KillTimer(TimerATACH[playerid]);
SendClientMessage(playerid, 0xFF0000FF, "* Vehicle de-attached!");
}else
if(IsPlayerInAnyVehicle(playerid) && atached[playerid] == 0){
atached[playerid] = 1;
playerveh[playerid] = GetPlayerVehicleID(playerid);
tempcar[playerid] = GetPlayerVehicleID(playerid);
GetClosestCar(playerid);
TimerATACH[playerid] = SetTimerEx("AtachVehicleToVehicle",314,1,"iii",playerid,prevcar[playerid],playerveh[playerid]);
SendClientMessage(playerid, 0xFF0000FF, "* Vehicle attached!");
}
}
return 1;
}


Я не одобряю воровства по двум причинам:
1) Мелкое воровство не принесёт желаемых результатов.
2) За крупную кражу почти всегда последует наказание. © XuT aka Dаrk

Форум » Всё для SA:MP » Скрипты » [FS]для прикрепления тачки к тачке
  • Страница 1 из 1
  • 1
Поиск:





DESP-Team Official Website © 2024 Все права защищены!
При копировании материала, ссылка на сайт и копирайты обязательны!
  Сайт оптимизирован под разрешение экрана 1024x786 и браузер Opera Дизайн данного сайта полностью принадлежит главному администратору сайта!
Forum design by Admin | Website desp-team.ucoz.ru