Помогите с проверкой
#1

В общем арендуешь 1 такси и после этого можно сесть в любое (без аренды)
как поставить проверку? что бы арендовалась только та машина такси в который ты сидишь.
вот код:

PHP код:
 if(newcar >= taxicar[0] && newcar <= taxicar[40]) 
        { 
        if(
arenda[playerid] != 1
        { 
        
ShowPlayerDialog(playerid,2343,DIALOG_STYLE_MSGBOX,"Аренда","Вы хотите арендовать такси за 500?","Да","Нет"); 
        
TogglePlayerControllable(playerid0); 
        { 
            if(
PlayerInfo[playerid][pJob] == && PlayerInfo[playerid][pMember] == 0) {SendClientMessage(playeridCOLOR_WHITE"::: Введите: /fare - чтобы установить тариф"); } 
            else 
            { 
                
SendClientMessage(playeridCOLOR_WHITE"::: Вы не таксист! /gps - Мэрия"); 
                
RemovePlayerFromVehicleRich(playerid); 
            } 
        } 
        } 
Reply
#2

вместо if(arenda[playerid] != 1) вот это: if(arenda[playerid] == 0)

и присваивай не 1, а ид машины при аренде: arenda[playerid] = id-машины;(видимо при ответе "да")

далее добавь в проверку (таксист ли он?)&& если плейер находится в машине ид которой == arenda[playerid] и только после этого разрешай команду /fare
P.S.
и строки можешь подлиннее делать пока компилятор не начнёт ругаццо
Reply
#3

Quote:
Originally Posted by Alllexxx
Посмотреть сообщение
вместо if(arenda[playerid] != 1) вот это: if(arenda[playerid] == 0)

и присваивай не 1, а ид машины при аренде: arenda[playerid] = id-машины;(видимо при ответе "да")

далее добавь в проверку (таксист ли он?)&& если плейер находится в машине ид которой == arenda[playerid] и только после этого разрешай команду /fare
P.S.
и строки можешь подлиннее делать пока компилятор не начнёт ругаццо
так что ли?
PHP код:
    if(newcar >= taxicar[0] && newcar <= taxicar[40]) //Аренда такси
        

        if(
arenda[playerid] == 0)
        { 
        
ShowPlayerDialog(playerid,2343,DIALOG_STYLE_MSGBOX,"Аренда","Вы хотите арендовать такси за 500?","Да","Нет"); 
        
TogglePlayerControllable(playerid0); 
        { 
            if(
PlayerInfo[playerid][pJob] == && PlayerInfo[playerid][pMember] == && IsPlayerInAnyVehicle[playerid] == arenda[playerid]) {SendClientMessage(playeridCOLOR_WHITE"::: Введите: /fare - чтобы установить тариф"); }
            else 
            { 
                
SendClientMessage(playeridCOLOR_WHITE"::: Вы не таксист! /gps - Мэрия"); 
                
RemovePlayerFromVehicleRich(playerid); 
            } 
        } 
    }

и Диалог:
PHP код:
case 2343
    { 
        if(
response
        { 
                if(
PlayerInfo[playerid][pCash] < 500
                { 
                    
SendClientMessage(playeridCOLOR_RED"Недостаточно денег"); 
                    
RemovePlayerFromVehicleRich(playerid); 
                    
TogglePlayerControllable(playerid1); 
                    return 
1
                } 
                
PlayerInfo[playerid][pCash] -= 500
                
arenda[playerid] = GetPlayerVehicleID(playerid);
                
TogglePlayerControllable(playerid1); 
                
SendClientMessage(playeridCOLOR_GREEN"Вы арендовали транспорт");
                return 
1
        } 
        else 
        { 
            
RemovePlayerFromVehicleRich(playerid); 
            
TogglePlayerControllable(playerid1); 
            return 
1
        } 
    } 
если да то вот что выходит:
PHP код:
C:\Раработка сервера\Big-City 0.3C\gamemodes\big.pwn(20354) : error 028invalid subscript (not an array or too many subscripts): "IsPlayerInAnyVehicle"
C:\Раработка сервера\Big-City 0.3C\gamemodes\big.pwn(20354) : warning 215expression has no effect
C
:\Раработка сервера\Big-City 0.3C\gamemodes\big.pwn(20354) : error 001expected token";"but found "]"
C:\Раработка сервера\Big-City 0.3C\gamemodes\big.pwn(20354) : error 029invalid expressionassumed zero
C
:\Раработка сервера\Big-City 0.3C\gamemodes\big.pwn(20354) : fatal error 107too many error messages on one line
Compilation aborted
.Pawn compiler 3.2.3664              Copyright (c1997-2006ITB CompuPhase
4 Errors

строка 20354:
PHP код:
if(PlayerInfo[playerid][pJob] == && PlayerInfo[playerid][pMember] == && IsPlayerInAnyVehicle[playerid] == arenda[playerid]) {SendClientMessage(playeridCOLOR_WHITE"::: Введите: /fare - чтобы установить тариф"); } 
Reply
#4

IsPlayerInAnyVehicle[playerid]
IsPlayerInAnyVehicle(playerid)
Reply
#5

Quote:

...&&IsPlayerInAnyVehicle[playerid] == arenda[playerid]

IsPlayerInAnyVehicle[playerid] возвращает или 0 или 1
...&&arenda[playerid]==GetPlayerVehicleID(playerid))

вот так вот
Код:
if(PlayerInfo[playerid][pJob] == 4 && PlayerInfo[playerid][pMember] == 0 && arenda[playerid]==GetPlayerVehicleID(playerid)) {SendClientMessage(playerid, COLOR_WHITE, "::: Введите: /fare - чтобы установить тариф"); }
код выполнится в том случае если ты присвоишь ид-авто to arenda[playerid]


P.S.
я поэтому и пишу не кодом а словами чтобы ты думал:
это твоя проверка на то что в машине ли игрок и такси ли эта машина
Quote:

if(newcar >= taxicar[0] && newcar <= taxicar[40]) //Аренда такси

надеюсь эта строка вызывается когда игрок в машине находится?

так вот то что я сказал:
Quote:

&& если плейер находится в машине ид которой == arenda[playerid]

это не говотовый алгоритм! это логика программы!!!
а вот алгоритм я предоставляю построить тебе, так как это самое сладкое в программировании, а получить готовый код это всё равно что поиметь женщину которую уже кто то раздел... в общем никакого удовольствия
Reply
#6

ничего не выходит у меня...
Reply
#7

Quote:

ничего не выходит у меня...

Quote:

if(PlayerInfo[playerid][pJob] == 4 && PlayerInfo[playerid][pMember] == 0 && arenda[playerid]==GetPlayerVehicleID(playerid)) {SendClientMessage(playerid, COLOR_WHITE, "::: Введите: /fare - чтобы установить тариф"); }

такая же проверка должна присутствовать при обработке команды /fare

а в твоём коде в результате проверки ТОЛЬКО выводится сообщение "Введите: /fare - чтобы установить тариф" то есть если условие не выполнено, то сообщение прото не пошлётся игроку а если проверка пройдена,то пошлётся! больше этот код не делает ничего!!!

..."такая же" это я погорячился, там уже можно просто проверить
Код:
if(IsPlayerInVehicle(playerid, arenda[playerid]))
{
}
учись распутывать логику!
например ты ведь понимаешь что если я арендую машину и выйду из игры то следуюущий игрок с таким же id сможет запросто арендовать это авто если ты соответствующим образом не обнулишь: arenda[playerid]=0; при дисконнекте
Reply
#8

Ну я походу ваще тупой...
вот что опять не так?
PHP код:
if(newcar >= taxicar[0] && newcar <= taxicar[40]) //Аренда такси
        
{
        if(
IsPlayerInVehicle(playeridarenda[playerid]))
        { 
        if(
arenda[playerid] == 0)
        {
        
ShowPlayerDialog(playerid,2343,DIALOG_STYLE_MSGBOX,"Аренда","Вы хотите арендовать такси за 500?","Да","Нет"); 
        
TogglePlayerControllable(playerid0); 
        }
            if(
PlayerInfo[playerid][pJob] == && PlayerInfo[playerid][pMember] == && arenda[playerid]==GetPlayerVehicleID(playerid))
            {
            
SendClientMessage(playeridCOLOR_WHITE"::: Введите: /fare - чтобы установить тариф");
            }
            else 
            { 
                
SendClientMessage(playeridCOLOR_WHITE"::: Вы не таксист! /gps - Мэрия"); 
                
RemovePlayerFromVehicleRich(playerid); 
            } 
        } 
       } 
PHP код:
    case 2343
    { 
        if(
response
        { 
                if(
PlayerInfo[playerid][pCash] < 500
                { 
                    
SendClientMessage(playeridCOLOR_RED"Недостаточно денег"); 
                    
RemovePlayerFromVehicleRich(playerid); 
                    
TogglePlayerControllable(playerid1); 
                    return 
1
                } 
                
PlayerInfo[playerid][pCash] -= 500
                
arenda[playerid] = GetPlayerVehicleID(playerid);
                
TogglePlayerControllable(playerid1); 
                
SendClientMessage(playeridCOLOR_GREEN"Вы арендовали транспорт");
                return 
1
        } 
        else 
        { 
            
RemovePlayerFromVehicleRich(playerid); 
            
TogglePlayerControllable(playerid1); 
            return 
1
        } 
    } 
Reply
#9

up! (5 cим)
Reply
#10

Quote:

вот что опять не так?

эммммм... что то действительно ты ничего не понял
обьясни ка мне дорогой друг: а что делает команда "/fare"?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)