Система транспорта (+ авторынок)

Описание: Уроки по скриптингу
Модератор: SJplayer

SJplayer M
Автор темы, Модератор
Модератор
Аватара
SJplayer M
Автор темы, Модератор
Модератор
Сообщения: 196
Зарегистрирован: 25 мая 2013
С нами: 10 лет 10 месяцев

#1 SJplayer » 19 июля 2013, 15:49

Система транспорта (+ авторынок)
Автор: Mike™

Описание:

Простая система транспорта, предназначена для игровых режимов с 0. Система подойдет отлично для DM,TDM режимов, а может и для RPG.
Возможности администратора:
- Добавление транспорта из игры (при добавлении транспорта если указать цену равную 0, то транспорт будет доступен всем) = /acreateveh;
- Припарковать любой транспорт = /avpark;
Возможности игроков:
- Управление транспортом: завести / заглушить, включить / выключить фары, открыть / закрыть багаж, капот = /eng, /lights, /bonnet, /boot;
- Продажа транспорта = /vsell;
- Продажа транспорта другому игроку = /vsellto;
- Закрывать /открывать замки транспорта = /vlock;
- Парковка транспорта = /vpark;
- Возможность иметь неограниченное кол-во личного транспорта;

Скриншоты
Изображение

Изображение

Установка:

• Шаг 1: ко всем define's добавляем:

Код: Выделить всё

#define MAX_VEH 100 // макс кол-во транспорта 
#define D_V_CREATE_MODEL 5 
#define D_V_CREATE_PRICE 6 
#define D_V_CREATE_COLOR 7 
#define D_V_CREATE_CONF 8 
#define D_V_BUY 9 
#define D_V_SELL_TO_ID 10 
#define D_V_SELL_TO_PRICE 11 
#define D_V_SELL_TO_CONF 12  


• Шаг 2: в начало мода, ко всем переменным (new's) добавляем:

Код: Выделить всё

enum vInfo 

    
vModel
    
vOwner[MAX_PLAYER_NAME], 
    
Float:vX,Float:vY,Float:vZ
    
vPrice
    
vLock
    
vColor1,vColor2 
}; 
new 
Veh[MAX_VEH][vInfo]; 
new 
m_v
new 
enginelightsalarmdoorsbonnetbootobjective;  


• Шаг 3: в конец мода добавьте функции:

Код: Выделить всё

Name(playerid

    new 
Nm[MAX_PLAYER_NAME]; 
    
GetPlayerName(playerid,Nm,24); 
    return 
Nm

LoadVehicles() 

    if(!
fexist("vehicles/m_v.ini"))return print("[Ошибка] Файл vehicles/m_v.ini не найден"); 
    new 
f=ini_openFile("vehicles/m_v.ini"); 
    
ini_getInteger(f,"Amount",m_v); 
    
ini_closeFile(f); 
    if(!
fexist("vehicles/vehicles.ini"))return print("[Ошибка] Файл vehicles/vehicles.ini не найден"); 
    
f=ini_openFile("vehicles/vehicles.ini"); 
    new 
str[8]; 
     for(new 
v=1;v<=m_v;v++) 
    { 
         
format(str,sizeof(str),"ID %d",v); 
           
ini_getString(f,str,STR); 
        
sscanf(STR,"p<|>is[24]fffiiii",Veh[v][vModel],Veh[v][vOwner],Veh[v][vX],Veh[v][vY],Veh[v][vZ],Veh[v][vPrice],Veh[v][vLock],Veh[v][vColor1],Veh[v][vColor2]); 
        
CreateVehicle(Veh[v][vModel],Veh[v][vX],Veh[v][vY],Veh[v][vZ],0.0,Veh[v][vColor1],Veh[v][vColor2],0); 
    } 
    
ini_closeFile(f); 
    return 
printf("Loaded %d vehicles",m_v); 

SaveVehiclesAmount() 

    new 
f=ini_openFile("vehicles/m_v.ini"); 
    
ini_setInteger(f,"Amount",m_v); 
    return 
ini_closeFile(f); 

SaveVehicle(v

    if(!
fexist("vehicles/vehicles.ini"))return print("[Ошибка] Файл vehicles/vehicles.ini не найден"); 
    new 
f=ini_openFile("vehicles/vehicles.ini"); 
    new 
str[8]; 
    
format(str,sizeof(str),"ID %d",v); 
    
format(STR,100,"%d|%s|%f|%f|%f|%d|%d|%d|%d",Veh[v][vModel],Veh[v][vOwner],Veh[v][vX],Veh[v][vY],Veh[v][vZ],Veh[v][vPrice],Veh[v][vLock],Veh[v][vColor1],Veh[v][vColor2]); 
    
ini_setString(f,str,STR); 
    return 
ini_closeFile(f); 

stock split(const strsrc[], strdest[][], delimiter '|'

    new 
iliaNumlensrclen strlen(strsrc); 
    while(
<= srclen
    { 
        if (
strsrc[i] == delimiter || == srclen
        { 
            
len strmid(strdest[aNum], strsrclii128); 
            
strdest[aNum][len] = 0
            
li 1
            
aNum++; 
        } 
        
i++; 
    } 

IsNumeric(const string[]) 

    for (new 
0strlen(string); ji++) 
    { 
        if (
string[i] > '9' || string[i] < '0') return 0
    } 
    return 
1
}  


• Шаг 4: в OnPlayerCommandText:

Код: Выделить всё

if(strcmp("/acreateveh"cmdtexttrue11) == 0
    { 
        
// Проверка на администратора 
        
ShowPlayerDialog(playerid,D_V_CREATE_MODEL,DIALOG_STYLE_INPUT,"Создание транспорта - модель","Введите модель транспорта.","Далее","Закрыть"); 
        return 
1
    } 
    else if(
strcmp("/vlock"cmdtexttrue6) == 0
    { 
        if(
IsPlayerInAnyVehicle(playerid)) 
        { 
            new 
v=GetPlayerVehicleID(playerid); 
            if(
strcmp(Veh[v][vOwner],Name(playerid),true)!=0)return SendClientMessage(playerid,-1,"У вас нет ключей от данного транспорта!"); 
            if(
Veh[v][vLock]==1
            { 
                
Veh[v][vLock]=0,GameTextForPlayer(playerid,"~g~Vehicle unlocked",1000,1); 
                for(new 
i=GetMaxPlayers();i!=-1;--i
                { 
                       if(!
IsPlayerConnected(i))continue; 
                    
SetVehicleParamsForPlayer(v,i,0,0); 
                } 
            } 
            else 
            { 
                
Veh[v][vLock]=1,GameTextForPlayer(playerid,"~r~Vehicle locked",1000,1); 
                for(new 
i=GetMaxPlayers();i!=-1;--i
                { 
                       if(!
IsPlayerConnected(i))continue; 
                    
SetVehicleParamsForPlayer(v,i,0,1); 
                } 
            } 
            
SaveVehicle(v); 
            return 
1
        } 
        else 
        { 
                new 
Float:c[3]; 
            for(new 
v=1;v<=m_v;v++) 
            { 
                
GetVehiclePos(v,c[0],c[1],c[2]); 
                if(!
IsPlayerInRangeOfPoint(playerid,2,c[0],c[1],c[2]))continue; 
                if(
strcmp(Veh[v][vOwner],Name(playerid),true)!=0)return SendClientMessage(playerid,-1,"У вас нет ключей от данного транспорта!"); 
                if(
Veh[v][vLock]==1
                { 
                    
Veh[v][vLock]=0,GameTextForPlayer(playerid,"~g~Vehicle unlocked",1000,1); 
                    for(new 
i=GetMaxPlayers();i!=-1;--i
                    { 
                        if(!
IsPlayerConnected(i))continue; 
                        
SetVehicleParamsForPlayer(v,i,0,0); 
                    } 
                } 
                else 
                { 
                    
Veh[v][vLock]=1,GameTextForPlayer(playerid,"~r~Vehicle locked",1000,1); 
                    for(new 
i=GetMaxPlayers();i!=-1;--i
                    { 
                            if(!
IsPlayerConnected(i))continue; 
                        
SetVehicleParamsForPlayer(v,i,0,1); 
                    } 
                } 
                
SaveVehicle(v); 
                return 
1
            } 
            
SendClientMessage(playerid,-1,"Вы должны быть рядом с транспортом!"); 
        } 
        return 
1
    } 
    else if(
strcmp("/vpark"cmdtexttrue6) == 0
    { 
        if(!
IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Вы должны быть в транспорте!"); 
        new 
v=GetPlayerVehicleID(playerid); 
        if(
strcmp(Veh[v][vOwner],Name(playerid),true)!=0)return SendClientMessage(playerid,-1,"Этот транспорт не принадлежит вам!"); 
        
DestroyVehicle(v); 
        new 
Float:x,Float:y,Float:z
        
Veh[v][vX]=x,Veh[v][vY]=y,Veh[v][vZ]=z,SaveVehicle(v); 
        
GetPlayerPos(playerid,x,y,z); 
        
CreateVehicle(Veh[v][vModel],x,y,z,0.0,Veh[v][vColor1],Veh[v][vColor2],0); 
        
PutPlayerInVehicle(playerid,v,0); 
        
SendClientMessage(playerid,-1,"Ваш транспорт успешно припаркован!"); 
        return 
1
    } 
    else if(
strcmp("/avpark"cmdtexttrue7) == 0
    { 
        
// Проверка на администратора 
        
if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Вы должны быть в транспорте!"); 
        new 
v=GetPlayerVehicleID(playerid); 
        
DestroyVehicle(v); 
        new 
Float:x,Float:y,Float:z
        
Veh[v][vX]=x,Veh[v][vY]=y,Veh[v][vZ]=z,SaveVehicle(v); 
        
GetPlayerPos(playerid,x,y,z); 
        
CreateVehicle(Veh[v][vModel],x,y,z,0.0,Veh[v][vColor1],Veh[v][vColor2],0); 
        
PutPlayerInVehicle(playerid,v,0); 
        
SendClientMessage(playerid,-1,"Транспорт успешно припаркован!"); 
        return 
1
    } 
    else if(
strcmp("/vsell"cmdtexttrue6) == 0
    { 
        if(!
IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Вы должны быть в транспорте!"); 
        new 
v=GetPlayerVehicleID(playerid); 
        if(
strcmp(Veh[v][vOwner],Name(playerid),true)!=0)return SendClientMessage(playerid,-1,"Этот транспорт не принадлежит вам!"); 
        
strmid(Veh[v][vOwner],"None",0,5,5); 
        
GivePlayerMoney(playerid,Veh[v][vPrice]/2); 
        
RemovePlayerFromVehicle(playerid); 
        
SaveVehicle(v); 
        
SendClientMessage(playerid,-1,"Вы продали свой транспорт!"); 
        return 
1
    } 
    else if(
strcmp("/eng"cmdtexttrue4) == 0
    { 
        if(!
IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Вы должны быть в транспорте!"); 
        new 
v=GetPlayerVehicleID(playerid); 
        
GetVehicleParamsEx(venginelightsalarmdoorsbonnetbootobjective); 
        if(
Veh[v][vPrice]!=0
        { 
            if(
strcmp(Veh[v][vOwner],"None",true)!=0
            { 
                if(
strcmp(Veh[v][vOwner],Name(playerid),true)!=0)return SendClientMessage(playerid,-1,"У вас нет ключей от данного транспорта!"); 
                if(
engine!=1)SetVehicleParamsEx(v1lightsalarmdoorsbonnetbootobjective); 
                else 
SetVehicleParamsEx(v0lightsalarmdoorsbonnetbootobjective); 
            } 
            else{
SendClientMessage(playerid,-1,"У вас нет ключей от данного транспорта!");return 1;} 
        } 
        else 
        { 
             if(
engine!=1)SetVehicleParamsEx(v1lightsalarmdoorsbonnetbootobjective); 
              else 
SetVehicleParamsEx(v0lightsalarmdoorsbonnetbootobjective); 
        } 
        return 
1
    } 
    else if(
strcmp("/lights"cmdtexttrue7) == 0
    { 
        if(!
IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Вы должны быть в транспорте!"); 
        new 
v=GetPlayerVehicleID(playerid); 
        
GetVehicleParamsEx(venginelightsalarmdoorsbonnetbootobjective); 
        if(
lights!=1)SetVehicleParamsEx(vengine1alarmdoorsbonnetbootobjective); 
        else 
SetVehicleParamsEx(vengine0alarmdoorsbonnetbootobjective); 
        return 
1
    } 
    else if(
strcmp("/bonnet"cmdtexttrue7) == 0
    { 
        if(!
IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Вы должны быть в транспорте!"); 
        new 
v=GetPlayerVehicleID(playerid); 
        
GetVehicleParamsEx(venginelightsalarmdoorsbonnetbootobjective); 
        if(
bonnet!=1)SetVehicleParamsEx(venginelightsalarmdoors1bootobjective); 
        else 
SetVehicleParamsEx(venginelightsalarmdoors0bootobjective); 
        return 
1
    } 
    else if(
strcmp("/boot"cmdtexttrue5) == 0
    { 
        if(!
IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Вы должны быть в транспорте!"); 
        new 
v=GetPlayerVehicleID(playerid); 
        
GetVehicleParamsEx(venginelightsalarmdoorsbonnetbootobjective); 
        if(
boot!=1)SetVehicleParamsEx(venginelightsalarmdoorsbonnet1objective); 
        else 
SetVehicleParamsEx(venginelightsalarmdoorsbonnet0objective); 
        return 
1
    } 
    else if(
strcmp("/vsellto"cmdtexttrue8) == 0
    { 
        if(!
IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,-1,"Вы должны быть в транспорте!"); 
        new 
v=GetPlayerVehicleID(playerid); 
        if(
strcmp(Veh[v][vOwner],Name(playerid),true)!=0)return SendClientMessage(playerid,-1,"Этот транспорт не принадлежит вам!"); 
        
ShowPlayerDialog(playerid,D_V_SELL_TO_ID,DIALOG_STYLE_INPUT,"Продажа транспорта - ID игрока","Введите id игрока которому хотите продать ваш транспорт.","Далее","Отмена"); 
        
SetPVarInt(playerid,"v_sellto_vid",v); 
        return 
1
    }  


• Шаг 5: в OnPlayerDialogResponse:

Код: Выделить всё

case D_V_CREATE_MODEL
        { 
            if(
response
            { 
                if(!
strlen(inputtext))return ShowPlayerDialog(playerid,D_V_CREATE_MODEL,DIALOG_STYLE_INPUT,"Создание транспорта - модель","Введите модель транспорта.","Далее","Закрыть"); 
                if(
400 strval(inputtext) > 611)return SendClientMessage(playerid,-1,"Invalid vehicle model"),ShowPlayerDialog(playerid,D_V_CREATE_MODEL,DIALOG_STYLE_INPUT,"Создание транспорта - модель","Введите модель транспорта.","Далее","Закрыть"); 
                
SetPVarInt(playerid,"v_model",strval(inputtext)); 
                
ShowPlayerDialog(playerid,D_V_CREATE_PRICE,DIALOG_STYLE_INPUT,"Создание транспорта - цена","Введите цену для транспорта.","Далее","Назад"); 
            } 
        } 
        case 
D_V_CREATE_PRICE
        { 
            if(
response
            { 
                if(!
strlen(inputtext))return ShowPlayerDialog(playerid,D_V_CREATE_PRICE,DIALOG_STYLE_INPUT,"Создание транспорта - цена","Введите цену для транспорта.","Далее","Назад"); 
                if(
strval(inputtext)<0)return ShowPlayerDialog(playerid,D_V_CREATE_PRICE,DIALOG_STYLE_INPUT,"Создание транспорта - цена","Введите цену для транспорта.","Далее","Назад"); 
                
SetPVarInt(playerid,"v_price",strval(inputtext)); 
                
ShowPlayerDialog(playerid,D_V_CREATE_COLOR,DIALOG_STYLE_INPUT,"Создание транспорта","Введите цвета через запятую, пример: 1,6","Далее","Назад"); 
            } 
            else 
DeletePVar(playerid,"v_model"),ShowPlayerDialog(playerid,D_V_CREATE_MODEL,DIALOG_STYLE_INPUT,"Создание транспорта - модель","Введите модель транспорта.","Далее","Закрыть"); 
        } 
        case 
D_V_CREATE_COLOR
        { 
            if(
response
            { 
                if(!
strlen(inputtext))return ShowPlayerDialog(playerid,D_V_CREATE_COLOR,DIALOG_STYLE_INPUT,"Создание транспорта","Введите цвета через запятую, пример: 1,6","Далее","Назад"); 
                new 
razd[2][4]; 
                
split(inputtext,razd,','); 
                if(
0<strval(razd[0])>255 || 0<strval(razd[1])>255)return SendClientMessage(playerid,-1,"Invalid vehicle colors"),ShowPlayerDialog(playerid,D_V_CREATE_COLOR,DIALOG_STYLE_INPUT,"Создание транспорта","Введите цвета через запятую, пример: 1,6","Далее","Назад"); 
                
SetPVarInt(playerid,"v_c1",strval(razd[0])),SetPVarInt(playerid,"v_c2",strval(razd[1])); 
                
format(STR,128,"Вы действительно хотите создать транспорт?\n* Модель: %d\n* Цена: %d\n* Цвета: %d,%d"
                
GetPVarInt(playerid,"v_model"),GetPVarInt(playerid,"v_price"),strval(razd[0]),strval(razd[1])); 
                
ShowPlayerDialog(playerid,D_V_CREATE_CONF,DIALOG_STYLE_MSGBOX,"Создание транспорта - подтверждение",STR,"Создать","Отмена"); 
            } 
            else 
DeletePVar(playerid,"v_price"),ShowPlayerDialog(playerid,D_V_CREATE_PRICE,DIALOG_STYLE_INPUT,"Создание транспорта - цена","Введите цену для транспорта.","Далее","Назад"); 
        } 
        case 
D_V_CREATE_CONF
        { 
            if(
response
            { 
                
m_v++,SaveVehiclesAmount(); 
                new 
Float:x,Float:y,Float:z
                
GetPlayerPos(playerid,x,y,z); 
                
Veh[m_v][vModel]=GetPVarInt(playerid,"v_model"),Veh[m_v][vPrice]=GetPVarInt(playerid,"v_price"), 
                
Veh[m_v][vX]=x+0.5,Veh[m_v][vY]=y,Veh[m_v][vZ]=z,Veh[m_v][vColor1]=GetPVarInt(playerid,"v_c1"), 
                
Veh[m_v][vColor2]=GetPVarInt(playerid,"v_c2"),strmid(Veh[m_v][vOwner],"None",0,5,5); 
                
SaveVehicle(m_v); 
                
CreateVehicle(GetPVarInt(playerid,"v_model"),x+0.5,y,z,0.0,GetPVarInt(playerid,"v_c1"),GetPVarInt(playerid,"v_c2"),0); 
                
DeletePVar(playerid,"v_model"),DeletePVar(playerid,"v_price"),DeletePVar(playerid,"v_c1"),DeletePVar(playerid,"v_c2"); 
            } 
            else 
DeletePVar(playerid,"v_model"),DeletePVar(playerid,"v_price"),DeletePVar(playerid,"v_c1"),DeletePVar(playerid,"v_c2"); 
        } 
        case 
D_V_BUY
        { 
            if(
response
            { 
                new 
v=GetPlayerVehicleID(playerid); 
                if(
GetPlayerMoney(playerid)<Veh[v][vPrice])return SendClientMessage(playerid,-1,"У вас не хватает денег!"),RemovePlayerFromVehicle(playerid); 
                
GivePlayerMoney(playerid,-Veh[v][vPrice]); 
                
SendClientMessage(playerid,-1,"Поздравляем с новым приобретением!"); 
                
strmid(Veh[v][vOwner],Name(playerid),0,24,24); 
                
SaveVehicle(v); 
            } 
            else 
RemovePlayerFromVehicle(playerid); 
        } 
        case 
D_V_SELL_TO_ID
        { 
            if(
response
            { 
                if(!
strlen(inputtext))return ShowPlayerDialog(playerid,D_V_SELL_TO_ID,DIALOG_STYLE_INPUT,"Продажа транспорта - ID игрока","Введите id игрока которому хотите продать ваш транспорт.","Далее","Отмена"); 
                if(!
IsPlayerConnected(strval(inputtext)))return SendClientMessage(playerid,-1,"Неверный id!"),ShowPlayerDialog(playerid,D_V_SELL_TO_ID,DIALOG_STYLE_INPUT,"Продажа транспорта - ID игрока","Введите id игрока которому хотите продать ваш транспорт.","Далее","Отмена"); 
                if(
playerid==strval(inputtext))return SendClientMessage(playerid,-1,"Вы не можете продавать транспорт самому себе!"),ShowPlayerDialog(playerid,D_V_SELL_TO_ID,DIALOG_STYLE_INPUT,"Продажа транспорта - ID игрока","Введите id игрока которому хотите продать ваш транспорт.","Далее","Отмена"); 
                if(!
IsNumeric(inputtext))return ShowPlayerDialog(playerid,D_V_SELL_TO_ID,DIALOG_STYLE_INPUT,"Продажа транспорта - ID игрока","Введите id игрока которому хотите продать ваш транспорт.","Далее","Отмена"); 
                
SetPVarInt(playerid,"v_sellto_id",strval(inputtext)),SetPVarInt(strval(inputtext),"v_sellto_id",playerid); 
                
ShowPlayerDialog(playerid,D_V_SELL_TO_PRICE,DIALOG_STYLE_INPUT,"Продажа транспорта - цена","Введите цену.","Далее","Назад"); 
            } 
            else 
DeletePVar(playerid,"v_sellto_vid"); 
        } 
        case 
D_V_SELL_TO_PRICE
        { 
            if(
response
            { 
                if(!
strlen(inputtext))return ShowPlayerDialog(playerid,D_V_SELL_TO_PRICE,DIALOG_STYLE_INPUT,"Продажа транспорта - цена","Введите цену.","Далее","Назад"); 
                if(!
IsNumeric(inputtext))return ShowPlayerDialog(playerid,D_V_SELL_TO_PRICE,DIALOG_STYLE_INPUT,"Продажа транспорта - цена","Введите цену.","Далее","Назад"); 
                if(!
IsPlayerConnected(GetPVarInt(playerid,"v_sellto_id"))) 
                { 
                    
SendClientMessage(playerid,-1,"Игрок которому вы хотите продать транспорт не в сети!"); 
                    
DeletePVar(GetPVarInt(playerid,"v_sellto_id"),"v_sellto_id"); 
                    
DeletePVar(playerid,"d_sellto_id"),DeletePVar(playerid,"v_sellto_vid"); 
                    return 
1
                } 
                
SetPVarInt(playerid,"v_sellto_price",strval(inputtext)); 
                
format(STR,128,"Игрок %s предлагает вам купить свой транспорт за $%d, вы согласны?",Name(playerid),strval(inputtext)); 
                
ShowPlayerDialog(GetPVarInt(playerid,"v_sellto_id"),D_V_SELL_TO_CONF,DIALOG_STYLE_MSGBOX,"Покупка транспорта",STR,"Купить","Отмена"); 
            } 
            else 
DeletePVar(GetPVarInt(playerid,"v_sellto_id"),"v_sellto_id"),DeletePVar(playerid,"v_sellto_id"),ShowPlayerDialog(playerid,D_V_SELL_TO_ID,DIALOG_STYLE_INPUT,"Продажа транспорта - ID игрока","Введите id игрока которому хотите продать ваш транспорт.","Далее","Отмена"); 
        } 
        case 
D_V_SELL_TO_CONF
        { 
            new 
gid=GetPVarInt(playerid,"v_sellto_id"); 
            if(
response
            { 
                if(!
IsPlayerConnected(gid)) 
                { 
                    
SendClientMessage(playerid,-1,"Продавец транспорта не в сети!"); 
                } 
                else 
                   { 
                    
                    new 
vid=GetPVarInt(gid,"v_sellto_vid"); 
                    
strmid(Veh[vid][vOwner],Name(playerid),0,24,24),SaveVehicle(vid); 
                    
GivePlayerMoney(playerid,-GetPVarInt(gid,"v_sellto_price")); 
                    
GivePlayerMoney(gid,GetPVarInt(gid,"v_sellto_price")); 
                    
SendClientMessage(GetPVarInt(playerid,"v_sellto_id"),-1,"Игрок купил ваш транспорт!"); 
                    
SendClientMessage(playerid,-1,"Поздравляем с покупкой!"); 
                    if(
IsPlayerInVehicle(gid,vid))RemovePlayerFromVehicle(gid); 
                } 
                
DeletePVar(gid,"v_sellto_id"); 
                
DeletePVar(playerid,"d_sellto_id"),DeletePVar(gid,"v_sellto_vid"),DeletePVar(gid,"v_sellto_price"); 
            } 
            else 
            { 
                
SendClientMessage(GetPVarInt(playerid,"v_sellto_id"),-1,"Игрок отказался покупать ваш транспорт!"); 
                
SendClientMessage(playerid,-1,"Вы отказалить от покупки транспорта!"); 
                
DeletePVar(gid,"v_sellto_id"); 
                
DeletePVar(playerid,"d_sellto_id"),DeletePVar(gid,"v_sellto_vid"),DeletePVar(gid,"v_sellto_price"); 
            } 
        }  


• Шаг 6: в OnPlayerStateChange добавляем:

Код: Выделить всё

if(newstate == PLAYER_STATE_DRIVER
    { 
        new 
vh GetPlayerVehicleID(playerid); 
        if(
Veh[vh][vPrice]!=&& !strcmp(Veh[vh][vOwner],"None",true)) 
        { 
            
format(STR,128,"Данный транспорт продаётся за $%d.\nВы хотите его купить?",Veh[vh][vPrice]); 
            
ShowPlayerDialog(playerid,D_V_BUY,DIALOG_STYLE_MSGBOX,"Покупка транспорта",STR,"Купить","Отмена"); 
        } 
    }  


• Шаг 7: в OnGameModeInit:

Код: Выделить всё

LoadVehicles(); 
ManualVehicleEngineAndLights();  


• Шаг 8: в OnPlayerSpawn:

Код: Выделить всё

for(new v=1;v<=m_v;v++) 
    { 
         if(
Veh[v][vLock]==0)continue; 
        
SetVehicleParamsForPlayer(v,playerid,0,0); 
    }  


• Шаг 9: все необходимое для работы скрипта:

Для корректной работы скрипта вам понадобится плагин sscanf и библиотека mxINI:
mxINI: mxINI.inc
sscanf: sscanf
Так же, в папку scriptfiles поставьте это (папку vehicles): vehicles.rar
ПАРОЛЬ ДЛЯ СКАЧИВАНИЯ: Pawno-Info

Не забудьте поставить проверки на администратора в нужных местах (я отметил комментарие), и, в OnDialogResponse используется switch, поэтому вместо if(dialogid==D_V_SELL_TO) стоит case D_V_SELL_TO. Возможно, что ид диалогов которые я указал в константах уже будут заняты в вашем моде, в этом случаи стоит их изменить.


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Уроки»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 4 гостя