Сообщение в чат при вводе команды
| |
Василий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
Статус
отсутствует
| Я так и не понял. Можно было создать переменную для строчки..Пример А там уже всё понятно
Релизы [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 и менял переменные
Релизы [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; } , так еще ошибки есть.. Как это можно туда добавить?
Учусь писать 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 не получилось завести двигатель". Как это все сделать? 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% -- Работа приостановленаОбложка:
|
|
| |
|