Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 17
  1. #1
    Аватар для Alexander
    Пользователь

    Статус
    Оффлайн
    Регистрация
    25.12.2013
    Сообщений
    73
    Репутация:
    2 ±

    Как правильно перевести с обычного cmd на DC_CMD

    Доброго времени суток, меня интересует вопрос как правильно перевести с обычного cmd на DC_CMD, можно пример на этой команде и объяснить как это делать грубо говоря на пальцах.
    Код HTML:
    		if(!strcmp(cmdtext, "/referee", true))
    	{
    	    if(IsPlayerConnected(playerid))
    	    {
             	if(pData[playerid][pAdmin] < 1)
    	        {
    	        SendClientMessage(playerid, COLOR_WHITE, "Вы не админ сервера!");
    	        return 1;
    	        }
    	        new giveplayerid = strval(tmp);
    			tmp = strtok(cmdtext, idx);
    			if(!strlen(tmp))
    			{
    				SendClientMessage(playerid, COLOR_WHITE, "Подсказка: /referee [playerid/PartOfName]");
    				return 1;
    			}
    			new para1,string[256];
    			para1 = ReturnUser(tmp);
    			tmp = strtok(cmdtext, idx);
                if(IsPlayerConnected(para1))
    			    {
    			        if(para1 != INVALID_PLAYER_ID)
    			        {
    			            new sendername[32];
    						//GetPlayerName(para1, giveplayerid, sizeof(giveplayerid));
    						GetPlayerName(playerid, sendername, sizeof(sendername));
    						arbitro[para1] = 1;
    						printf("%s chooses %s as referee.", sendername, giveplayerid);
    						format(string, sizeof(string), "%s выбрал вас в качестве рефери", sendername);
    						SendClientMessage(para1, COLOR_WHITE, string);
    						format(string, sizeof(string), "Вы выбрыли %s как рефери.", giveplayerid);
    						SendClientMessage(playerid, COLOR_WHITE, string);
    						format(string, sizeof(string), "%s рефери следующего матча! На стадион!", giveplayerid);
    						SendClientMessageToAll(COLOR_GREEN, string);
    						skin[para1] = GetPlayerSkin(para1);
    						SetPlayerSkin(para1, 72);
    					}
    				}
    		}
    		return 1;
    	}

  2. #2
    Аватар для Glant
    Пользователь

    Статус
    Оффлайн
    Регистрация
    31.07.2014
    Сообщений
    54
    Репутация:
    3 ±
    Ничего сложного то и нету

    PHP код:


    CMD
    :referee(playeridparams[])
    {
        if(
    IsPlayerConnected(playerid))
        {
            if(
    pData[playerid][pAdmin] < 1) return SendClientMessage(playeridCOLOR_WHITE"Вы не админ сервера!");
        
            if(
    sscanf(params"u"params[0])) return SendClientMessage(playeridCOLOR_WHITE"Подсказка: /referee [playerid/PartOfName]");
        
            if(
    IsPlayerConnected(params[0]))
            {
            
    //    if(params[0] != INVALID_PLAYER_ID) Если игрок подключен, то ID не может быть равно INVALID_PLAYER_ID
            
                
    GetPlayerName(params[0], giveplayeridsizeof(giveplayerid))
                
    GetPlayerName(playeridsendernamesizeof(sendername));
                
    arbitro[params[0]] = 1;
                
    printf("%s chooses %s as referee."sendernamegiveplayerid);
                
    format(stringsizeof(string), "%s выбрал вас в качестве рефери"sendername);
                
    SendClientMessage(params[0], COLOR_WHITEstring);
                
    format(stringsizeof(string), "Вы выбрали %s как рефери."giveplayerid);
                
    SendClientMessage(playeridCOLOR_WHITEstring);
                
    format(stringsizeof(string), "%s рефери следующего матча! На стадион!"giveplayerid);
                
    SendClientMessageToAll(COLOR_GREENstring);
                
    skin[params[0]] = GetPlayerSkin(params[0]);
                
    SetPlayerSkin(params[0], 72);
            }
        }

        return 
    1;

    Если тревожит sscanf, то скачайте плагин с инклудом http://forum.sa-mp.com/showthread.php?t=570927
    и подключите инклуд в начало мода
    PHP код:
    #include <sscanf2> 
    Последний раз редактировалось Glant; 27.07.2015 в 10:10.

  3. Пользователь сказал cпасибо:
    Alexander (27.07.2015)
  4. #3
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Чтобы перевести, надо хотя бы писать команды на этом процессоре.

  5. #4
    Аватар для Alexander
    Пользователь

    Статус
    Оффлайн
    Регистрация
    25.12.2013
    Сообщений
    73
    Репутация:
    2 ±
    Цитата Сообщение от Glant Посмотреть сообщение
    Ничего сложного то и нету

    PHP код:


    CMD
    :referee(playeridparams[])
    {
        if(
    IsPlayerConnected(playerid))
        {
            if(
    pData[playerid][pAdmin] < 1) return SendClientMessage(playeridCOLOR_WHITE"Вы не админ сервера!");
        
            if(
    sscanf(params"u"params[0])) return SendClientMessage(playeridCOLOR_WHITE"Подсказка: /referee [playerid/PartOfName]");
        
            if(
    IsPlayerConnected(params[0]))
            {
            
    //    if(params[0] != INVALID_PLAYER_ID) Если игрок подключен, то ID не может быть равно INVALID_PLAYER_ID
            
                
    GetPlayerName(params[0], giveplayeridsizeof(giveplayerid))
                
    GetPlayerName(playeridsendernamesizeof(sendername));
                
    arbitro[params[0]] = 1;
                
    printf("%s chooses %s as referee."sendernamegiveplayerid);
                
    format(stringsizeof(string), "%s выбрал вас в качестве рефери"sendername);
                
    SendClientMessage(params[0], COLOR_WHITEstring);
                
    format(stringsizeof(string), "Вы выбрали %s как рефери."giveplayerid);
                
    SendClientMessage(playeridCOLOR_WHITEstring);
                
    format(stringsizeof(string), "%s рефери следующего матча! На стадион!"giveplayerid);
                
    SendClientMessageToAll(COLOR_GREENstring);
                
    skin[params[0]] = GetPlayerSkin(params[0]);
                
    SetPlayerSkin(params[0], 72);
            }
        }

        return 
    1;

    Если тревожит sscanf, то скачайте плагин с инклудом http://forum.sa-mp.com/showthread.php?t=570927
    и подключите инклуд в начало мода
    PHP код:
    #include <sscanf2> 
    Спасибо, а можно ваш скайп есть пару вопросов еще

  6. #5
    Аватар для Sp1ke
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2015
    Сообщений
    245
    Репутация:
    55 ±
    Зачем использовать эту проверку?
    PHP код:
        if(IsPlayerConnected(playerid)) 
    Если бы игрок не был подключен, он бы не мог использовать команду...

  7. Пользователь сказал cпасибо:
    Alexander (27.07.2015)
  8. #6
    Аватар для Alexander
    Пользователь

    Статус
    Оффлайн
    Регистрация
    25.12.2013
    Сообщений
    73
    Репутация:
    2 ±
    а как быть с вот этим?
    PHP код:
            CMD:veh(playeridparams[])
        {
            if(
    pData[playerid][pAdmin] < 5) return 1;
            
    //if(sscanf(params, "u", params[0])) return SendClientMessage(playerid,CRED,"{"#cYELLOW"}• [Подсказка]: {"#cWHITE"}/veh [id авто] [цвет 1] [цвет 2]");
            
    if(sscanf(params"s[16]dd"paramscolor1color2))
            return 
    SendClientMessage(playerid, -1"{"#cYELLOW"}• [Подсказка]: {"#cWHITE"}/veh [id авто] [цвет 1] [цвет 2]");
            
    new c1,c2,vehmod;
            
    vehmod strval(tmp);
            
    tmp strtok(cmdtextidx);
            if(
    strlen(tmp)) c1 strval(tmp);
            else 
    c1 random(128);
            
    tmp strtok(cmdtextidx);
            if(
    strlen(tmp)) c2 strval(tmp);
            else 
    c2 random(128);
            new 
    Float:xFloat:yFloat:z;
            
    GetPlayerPos(playerid,x,y,z);
            
    += 1.5;
            new 
    vehid CreateVehicle(vehmod,x,y,z,0.0,c1,c2,-1);
            
    LinkVehicleToInterior(vehid,GetPlayerInterior(playerid));
            
    SFCM(playerid,CWHITE,"Автомобиль %d создан",vehid);
            
    gVehicles[vehid-1][vX] = x;
            
    gVehicles[vehid-1][vY] = y;
            
    gVehicles[vehid-1][vZ] = z;
            
    gVehicles[vehid-1][vDrived] = 0;
            
    gVehicles[vehid-1][vFuel] = gTransport[vehmod-400][trTank];
            
    gVehicles[vehid-1][vHealth] = 1000.0;
            
    gVehicles[vehid-1][vOwnerid] = INVALID_PLAYER_ID;
            
    gVehicles[vehid-1][vLock] = 0;
            return 
    1;
        } 
    Последний раз редактировалось Alexander; 27.07.2015 в 16:13.

  9. #7
    Аватар для Sp1ke
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2015
    Сообщений
    245
    Репутация:
    55 ±
    Цитата Сообщение от Alexander Посмотреть сообщение
    а как быть с вот этим?
    PHP код:
            CMD:veh(playeridparams[])
        {
            if(
    pData[playerid][pAdmin] < 5) return 1;
            
    //if(sscanf(params, "u", params[0])) return SendClientMessage(playerid,CRED,"{"#cYELLOW"}• [Подсказка]: {"#cWHITE"}/veh [id авто] [цвет 1] [цвет 2]");
            
    if(sscanf(params"s[16]dd"paramscolor1color2))
            return 
    SendClientMessage(playerid, -1"{"#cYELLOW"}• [Подсказка]: {"#cWHITE"}/veh [id авто] [цвет 1] [цвет 2]");
            
    new c1,c2,vehmod;
            
    vehmod strval(tmp);
            
    tmp strtok(cmdtextidx);
            if(
    strlen(tmp)) c1 strval(tmp);
            else 
    c1 random(128);
            
    tmp strtok(cmdtextidx);
            if(
    strlen(tmp)) c2 strval(tmp);
            else 
    c2 random(128);
            new 
    Float:xFloat:yFloat:z;
            
    GetPlayerPos(playerid,x,y,z);
            
    += 1.5;
            new 
    vehid CreateVehicle(vehmod,x,y,z,0.0,c1,c2,-1);
            
    LinkVehicleToInterior(vehid,GetPlayerInterior(playerid));
            
    SFCM(playerid,CWHITE,"Автомобиль %d создан",vehid);
            
    gVehicles[vehid-1][vX] = x;
            
    gVehicles[vehid-1][vY] = y;
            
    gVehicles[vehid-1][vZ] = z;
            
    gVehicles[vehid-1][vDrived] = 0;
            
    gVehicles[vehid-1][vFuel] = gTransport[vehmod-400][trTank];
            
    gVehicles[vehid-1][vHealth] = 1000.0;
            
    gVehicles[vehid-1][vOwnerid] = INVALID_PLAYER_ID;
            
    gVehicles[vehid-1][vLock] = 0;
            return 
    1;
        } 
    Если я правильно понял, то проблема со sscanf? ID авто, цвет 1, цвет 2 = 3 числовых.
    PHP код:
        if(sscanf(params,"iii",params[0],params[1],params[2])) return SCM(playeridCOLOR_WHITE"/veh [carid] [color 1] [color 2]"); 
    - - - Добавлено - - -

    UPD: советую к прочтению, http://forum.sa-mp.com/showthread.php?t=570927

  10. Пользователь сказал cпасибо:
    Alexander (27.07.2015)
  11. #8
    Аватар для Alexander
    Пользователь

    Статус
    Оффлайн
    Регистрация
    25.12.2013
    Сообщений
    73
    Репутация:
    2 ±
    Нет меня интересует что делать вместо
    PHP код:
    vehmod strval(tmp); 

  12. #9
    Аватар для Sp1ke
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.03.2015
    Сообщений
    245
    Репутация:
    55 ±
    Давай тогда вместе напишем новую команду, и разберем ее.
    PHP код:
    CMD:veh(playeridparams[]) // объявили команду
    {
        if(
    pData[playerid][pAdmin] < 5) return SendClientMessage(playerid, -1"Команда вам недоступна!"); // Проверка на админку
        
    if(sscanf(params,"iii",params[0],params[1],params[2])) return SCM(playeridCOLOR_WHITE"/veh [carid] [color 1] [color 2]");  // ID авто, цвет 1, цвет 2 = 3 числовых = iii.
        
    if(params[0] < 400 || params[0] > 611) return SCM(playeridCOLOR_WHITE"Номер авто не может быть меньше 400 и больше 611"); // Ставим проверку, чтобы избежать краша
        
    if(params[1] < || params[1] > 255) return SCM(playeridCOLOR_WHITE"Номер цвета 1 не может быть меньше 0 и больше 255"); // так же
        
    if(params[2] < || params[2] > 255) return SCM(playeridCOLOR_WHITE"Номер цвета 2 не может быть меньше 0 и больше 255"); // проверка, не крашимся :)
        
    new Float:Pos[4]; // объявим переменную, в которую запишем координаты игрока [4]
        
    GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]); // запишем координаты игрока
        
    new carid CreateVehicle(params[0],Pos[0],Pos[1],Pos[2],Pos[3],params[1],params[2],600000); // создаем авто на этих координатах
        
    SetVehicleToRespawn(carid); // респавним его
        
    PutPlayerInVehicle(playeridcarid0); // сажаем игрока в авто
        
    SCM(playerid, -1"Авто создано, бла бла бла"); // выводим текст
        
    return true;

    - - - Добавлено - - -

    SCM - дефайн.
    PHP код:
    #define SCM    SendClientMessage 

  13. 2 пользователя(ей) сказали cпасибо:
    Alexander (27.07.2015) Fitifau (27.07.2015)
  14. #10
    Аватар для Alexander
    Пользователь

    Статус
    Оффлайн
    Регистрация
    25.12.2013
    Сообщений
    73
    Репутация:
    2 ±
    Спасибо конечно но меня больше интересует как заменять
    PHP код:
    strval(tmp); 

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •