• Страница 1 из 1
  • 1
Модератор форума: dr40  
Сообщение в чат при вводе команды
Василий1626Дата: Суббота, 02.08.2014, 03:58 | Сообщение # 1
.::Offline::.
Бандит
Сообщений: 25
[ 0 ]
Награды: 0

Статус отсутствует
Помогите пожалуйста чуть переделать команду /mute, чтобы при их использовании было все видно игрокам.
Вот команда:
Код

else if(strcmp(cmd, "/mute", true) == 0)
  {
   if (PINFO[playerid][pAdminLVL] < 1) return SendMe(playerid, CGRADD, YouCanNot);
   tmp = strtok(cmdtext, idx);
   if(!strlen(tmp)) return SendMe(playerid, 0x00D900C8, "- Подсказка:{FFFFFF} /mute [ID] [минуты]");
   new mtime;
   giveplayerid = ReturnUser(tmp);
   if (!IsPlayerConnected(giveplayerid)) return SendMe(playerid, CGRADD, NotFoundID);
   if(gPlayerLogged[giveplayerid] == false) return SendMe(playerid, CGRADD, NoLogin);
   if(PINFO[giveplayerid][pMuted] == false)
   {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendMe(playerid, 0x00D900C8, "- Подсказка:{FFFFFF} /mute [ID] [минуты]");
    mtime = strval(tmp);
    if(GetPlayerState(giveplayerid) != 1 && GetPlayerState(giveplayerid) != 2 && GetPlayerState(giveplayerid) != 3) return SendMe(playerid, CGRADD, NoLogin);
    PINFO[giveplayerid][pMuted] = true;
    PINFO[giveplayerid][pMuteTime] = mtime*60;
    format(string, sizeof(string), "%s получил(a) молчанку от администратора %s на %i минут(ы), причина: %s.",GN(giveplayerid) ,GN(playerid));
    SendClientMessageToAll(COLOR_LIGHTRED, string);
    SendMes(giveplayerid, -1, "Вы получили молчанку на %i мин. Молчанка снимется автоматически по истечению времени.",mtime);
   }
   else
   {
    format(string, sizeof(string), "Администратор %s снял молчанку у %s. ",GN(playerid),GN(giveplayerid));
    SendClientMessageToAll(COLOR_LIGHTRED, string);
    PINFO[giveplayerid][pMuted] = false;
    PINFO[giveplayerid][pMuteTime] = 0;
   }
   return true;
  }

Нужно сюда добавить причину, по которой дали молчанку, чтобы в чате писалось "%s получил(a) молчанку от администратора %s на %i минут(ы), причина: %s.", и еще, кога время молчанки прошло, в чат всем писалось типа "%s теперь может разговаривать!";


Учусь писать Pawno скрипты :)
 
[S]ilverbac[k]Дата: Суббота, 02.08.2014, 12:49 | Сообщение # 2
.::Offline::.
Пахан
Сообщений: 723
[ 86 ]
Награды: 17

Статус отсутствует
Для подобных команд советую пользоваться zcmd+sscanf, т.к. будет меньше возни с переменными.

Где-то вверху к переменным:

Код
new mTimer[MAX_PLAYERS];


Код


else if(strcmp(cmd, "/mute", true) == 0)  
   {  
    if(PINFO[playerid][pAdminLVL] < 1) return SendMe(playerid, CGRADD, YouCanNot);  
    tmp = strtok(cmdtext, idx);  
    tmp2 = strtok(cmdtext, idx);  
    if(!strlen(tmp)) return SendMe(playerid, 0x00D900C8, "- Подсказка:{FFFFFF} /mute [ID] [минуты] [причина]");  
    if(!strlen(tmp2)) return SendMe(playerid, 0x00D900C8, "- Подсказка:{FFFFFF} /mute [ID] [минуты] [причина]");  
    new mtime;  
    giveplayerid = ReturnUser(tmp);  
    if(!IsPlayerConnected(giveplayerid)) return SendMe(playerid, CGRADD, NotFoundID);  
    if(gPlayerLogged[giveplayerid] == false) return SendMe(playerid, CGRADD, NoLogin);  
    if(PINFO[giveplayerid][pMuted] == false)  
    {  
     tmp = strtok(cmdtext, idx);  
     tmp2 = strtok(cmdtext, idx);  
     mtime = strval(tmp);  
     mreasn = tmp2;
     if(GetPlayerState(giveplayerid) != 1 && GetPlayerState(giveplayerid) != 2 && GetPlayerState(giveplayerid) != 3) return SendMe(playerid, CGRADD, NoLogin);  
     PINFO[giveplayerid][pMuted] = true;  
     PINFO[giveplayerid][pMuteTime] = mtime*60000;  
     mTimer[giveplayerid] = SetTimer("unmute",PINFO[giveplayerid][pMuteTime],false);
     format(string, sizeof(string), "%s получил(a) молчанку от администратора %s на %i минут(ы), причина: %s.",GN(giveplayerid) ,GN(playerid),mtime,mreasn);  
     SendClientMessageToAll(COLOR_LIGHTRED, string);  
     SendMes(giveplayerid, -1, "Вы получили молчанку на %i мин. Молчанка снимется автоматически по истечению времени.",mtime);  
    }  
    else  
    {  
     format(string, sizeof(string), "Администратор %s снял молчанку у %s. ",GN(playerid),GN(giveplayerid));  
     SendClientMessageToAll(COLOR_LIGHTRED, string);  
     PINFO[giveplayerid][pMuted] = false;  
     PINFO[giveplayerid][pMuteTime] = 0;  
     KillTimer(mTimer[giveplayerid]);
    }  
    return true;  
   }  



Куда-то вниз, желательно к таймерам

Код


forward unmute();
public unmute()
{
//сообщение о том, что игрок может писать в чат
PINFO[giveplayerid][pMuted] = false;  
PINFO[giveplayerid][pMuteTime] = 0;  
return 1;
}



Пробуй компилировать, если не будет хватать переменных, просто создай их.


[FS]Neon[APP]FCP[APP]Vehicle Tuning Generator ||||| 20% -- Работа приостановленаОбложка:
 
AlexPPPPДата: Суббота, 02.08.2014, 12:57 | Сообщение # 3
.::Offline::.
Гангстер
Сообщений: 179
[ 21 ]
Награды: 19

Статус отсутствует
Я так и не понял. Можно было создать переменную для строчки..Пример
Код
result[64];

А там уже всё понятно


Релизы
[GM] Far EastRolePlay[Repack LessGlobal]
S.T.A.L.K.E.R New.pwn 45% ( мод заливать не буду )
 
AlexPPPPДата: Суббота, 02.08.2014, 13:00 | Сообщение # 4
.::Offline::.
Гангстер
Сообщений: 179
[ 21 ]
Награды: 19

Статус отсутствует
Кстати. Мой совет.. Как я учился по этим командам..
Я брал команду допустим /warn и менял переменные biggrin


Релизы
[GM] Far EastRolePlay[Repack LessGlobal]
S.T.A.L.K.E.R New.pwn 45% ( мод заливать не буду )
 
Василий1626Дата: Суббота, 02.08.2014, 14:57 | Сообщение # 5
.::Offline::.
Бандит
Сообщений: 25
[ 0 ]
Награды: 0

Статус отсутствует
Да, было много ошибок, поставил пару new
(new tmp[256];
new tmp2[256];
new mreasn[256];
new giveplayerid;)
, но все равно несколько ошибок есть:
Код

C:\Users\D\Desktop\Average\gamemodes\TRP.pwn(26556) : warning 219: local variable "tmp" shadows a variable at a preceding level
C:\Users\D\Desktop\Average\gamemodes\TRP.pwn(26559) : warning 219: local variable "giveplayerid" shadows a variable at a preceding level
C:\Users\D\Desktop\Average\gamemodes\TRP.pwn(38933) : error 017: undefined symbol "giveplayerid"
C:\Users\D\Desktop\Average\gamemodes\TRP.pwn(38934) : error 017: undefined symbol "giveplayerid"
Pawn compiler 3.2.3664     Copyright (c) 1997-2006, ITB CompuPhase

2 Errors.

И еще: попробовал вот это: format(string, sizeof(string),0xC2A2DAAA "[RP]American: %s теперь может разговаривать!",plnameee, i);добавить в
Код

forward unmute();  
public unmute()  
{  
//сообщение о том, что игрок может писать в чат  
  PINFO[giveplayerid][pMuted] = false;   
  PINFO[giveplayerid][pMuteTime] = 0;   
return 1;  
}

, так еще ошибки есть.. Как это можно туда добавить? smile


Учусь писать Pawno скрипты :)
 
[S]ilverbac[k]Дата: Суббота, 02.08.2014, 15:42 | Сообщение # 6
.::Offline::.
Пахан
Сообщений: 723
[ 86 ]
Награды: 17

Статус отсутствует
Если так, то таймер нужно немного переделать

Код


else if(strcmp(cmd, "/mute", true) == 0)   
    {   
     if(PINFO[playerid][pAdminLVL] < 1) return SendMe(playerid, CGRADD, YouCanNot);   
     tmp = strtok(cmdtext, idx);   
     tmp2 = strtok(cmdtext, idx);   
     if(!strlen(tmp)) return SendMe(playerid, 0x00D900C8, "- Подсказка:{FFFFFF} /mute [ID] [минуты] [причина]");   
     if(!strlen(tmp2)) return SendMe(playerid, 0x00D900C8, "- Подсказка:{FFFFFF} /mute [ID] [минуты] [причина]");   
     new mtime;   
     giveplayerid = ReturnUser(tmp);   
     if(!IsPlayerConnected(giveplayerid)) return SendMe(playerid, CGRADD, NotFoundID);   
     if(gPlayerLogged[giveplayerid] == false) return SendMe(playerid, CGRADD, NoLogin);   
     if(PINFO[giveplayerid][pMuted] == false)   
     {   
      tmp = strtok(cmdtext, idx);   
      tmp2 = strtok(cmdtext, idx);   
      mtime = strval(tmp);   
      mreasn = tmp2;  
      if(GetPlayerState(giveplayerid) != 1 && GetPlayerState(giveplayerid) != 2 && GetPlayerState(giveplayerid) != 3) return SendMe(playerid, CGRADD, NoLogin);   
      PINFO[giveplayerid][pMuted] = true;   
      PINFO[giveplayerid][pMuteTime] = mtime*60000;   
      mTimer[giveplayerid] = SetTimerEx("unmute",PINFO[giveplayerid][pMuteTime],false,"i",giveplayerid);  
      format(string, sizeof(string), "%s получил(a) молчанку от администратора %s на %i минут(ы), причина: %s.",GN(giveplayerid) ,GN(playerid),mtime,mreasn);   
      SendClientMessageToAll(COLOR_LIGHTRED, string);   
      SendMes(giveplayerid, -1, "Вы получили молчанку на %i мин. Молчанка снимется автоматически по истечению времени.",mtime);   
     }   
     else   
     {   
      format(string, sizeof(string), "Администратор %s снял молчанку у %s. ",GN(playerid),GN(giveplayerid));   
      SendClientMessageToAll(COLOR_LIGHTRED, string);   
      PINFO[giveplayerid][pMuted] = false;   
      PINFO[giveplayerid][pMuteTime] = 0;   
      KillTimer(mTimer[giveplayerid]);  
     }   
     return true;   
    }   



Код


forward unmute(giveplayerid);   
public unmute(giveplayerid)   
{   
   new unmtstr[192],gpname[32];
   GetPlayerName(giveplayerid,gpname,sizeof(gpname));
   format(unmtstr,sizeof(unmtstr),"{C2A2DA} "[RP]American: %s теперь может разговаривать!",gpname);
   SendClientMessageToAll(-1,unmtstr);
   PINFO[giveplayerid][pMuted] = false;    
   PINFO[giveplayerid][pMuteTime] = 0;    
   KillTimer(mTimer[giveplayerid]);
return 1;   
}  



[FS]Neon[APP]FCP[APP]Vehicle Tuning Generator ||||| 20% -- Работа приостановленаОбложка:
 
Василий1626Дата: Суббота, 02.08.2014, 17:49 | Сообщение # 7
.::Offline::.
Бандит
Сообщений: 25
[ 0 ]
Награды: 0

Статус отсутствует
Спасибо, получилось. Теперь вот: обычно на сервах при заходке двигателя машины, он сразу заводится, а как сделать чтобы он рандомно завелся/не завелся? Вот, например, сажусь в машину, завожу двигатель, в близкий чат пишет "%s повернул ключ и пытается завести двигатель, потом рандомно выберает завелся/не завелся ли двигатель, и пишет также в чат: %s завел двигатель/У %s не получилось завести двигатель. Кстати еще когда здоровье машины меньше 20%, то при попытке завести двигатель всегда писало "У %s не получилось завести двигатель". Как это все сделать? smile
P.S. И еще, если машина ударилась о какое-либо препятствие, то чтобы отключался двигатель с сообщением в чат: Машина повреждена, двигатель отключен


Учусь писать Pawno скрипты :)

Сообщение отредактировал Василий1626 - Суббота, 02.08.2014, 17:59
 
AlexPPPPДата: Суббота, 02.08.2014, 17:53 | Сообщение # 8
.::Offline::.
Гангстер
Сообщений: 179
[ 21 ]
Награды: 19

Статус отсутствует
http://www.samp-team.com/forum/50-7879-1#38452
Вот там глянь)
Насчет машины.. при 20%
Код

new Float:Vehp;
new veh = GetPlayerVehicleID(playerid);
GetVehicleHealth(veh,Vehp);
if(Vehp < 450) // Не помню сколько HP у машины когда она дымит   
{
        SendClientMessage(playerid, COLOR_WHITE, "Не удалось завести двигатель"); // COLOR_WHITE - Замени на свой цвет,или же код цвета поставь)
        EngineState[carid] = false; // Насчет этого не знаю какая у тебя там система
}


Релизы
[GM] Far EastRolePlay[Repack LessGlobal]
S.T.A.L.K.E.R New.pwn 45% ( мод заливать не буду )


Сообщение отредактировал AlexPPPP - Суббота, 02.08.2014, 18:06
 
AlexPPPPДата: Суббота, 02.08.2014, 18:14 | Сообщение # 9
.::Offline::.
Гангстер
Сообщений: 179
[ 21 ]
Награды: 19

Статус отсутствует
Лучше скинь команду /en, ну или какая она у тебя там чтобы завести двигатель


Релизы
[GM] Far EastRolePlay[Repack LessGlobal]
S.T.A.L.K.E.R New.pwn 45% ( мод заливать не буду )
 
[S]ilverbac[k]Дата: Суббота, 02.08.2014, 18:34 | Сообщение # 10
.::Offline::.
Пахан
Сообщений: 723
[ 86 ]
Награды: 17

Статус отсутствует
Пример простого рандомного включения двигателя
Код

if(random(3) == 2))//если число из рандома совпадает с числом 2, тоесть двигатель будет включатся в 33% случае вероятности
{
//включение двигателя с сообщением   
}
else //вывод сообщения, что двигатель не завелся


[FS]Neon[APP]FCP[APP]Vehicle Tuning Generator ||||| 20% -- Работа приостановленаОбложка:
 
  • Страница 1 из 1
  • 1
Поиск:


Copyright www.SAMP-TEAM.com (c) 2009-2025
Правила использования материалов сайта

При копировании материалов из нашего сайта
ссылка на www.SAMP-TEAM.com обязательна!
Нарушители правил будут строго наказаны!

Хостинг от uCoz   
Для корректного просмотра мы рекомендуем Вам использовать браузер Google Chrome.
Яндекс.Метрика