 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
Вопросы и ответы по GTA SAMP [от 19.03.2013]
| |
| Weddew | Дата: Вторник, 19.03.2013, 15:11 | Сообщение # 1 |
|
Группа:
Ангел Хранитель
Сообщений: 1251
Награды: 19
Город: Казань
Репутация: 1740
Замечания: 0%
Статус: 
| В этой теме вы сможете получить ответы, на многие ваши вопросы по PAWN.
Новичкам:
- Внятно объясняйте Вашу проблему, если Вы получили ошибку, обязательно выкладывайте строки, на которые "ругается" компилятор.
- Задавайте вопросы исключительно по коду, а не по системам, которые имеются у Вас в моде.
- Помощь идет только по желанию пользователя, если человек помог Вам только частично, не нужно начинать поливать его грязью.
- Возможно тип Вашей проблемы уже обсуждался на форуме, воспользуйтесь поиском.
- В этой теме пользователи лишь оказывают помощь в написании кода, а не пишут его за Вас.
- Если Вы хотите отблагодарить пользователя, жмите на кнопку
. (Только для продвинутых, и выше) - Если Вы уже задавали вопрос и не получили на него ответа, то лучше написать в ЛС одному из участников группы
, чем засорять тему. - Если Вы сами решили свою проблему, то напишите, как Вы ее решили.
- Если Вас просят выложить код функций, то используйте для этого сервис pastebin.com
Скриптерам: - Не оскорблять новичков.
- Не засорять тему сообщениями, подобные этому: "Закрой PAWNO и иди делай уроки".
- Не посылать в поиск. Пользователь итак уже пришёл сюда из поиска. Если решение проблемы уже было опубликовано, то указать в какой теме
- Как можно понятней объяснять решение той, или иной проблемы, по возможности приводить примеры.
Инструкции: - [cut noguest=Краткая инструкция для вшивания FS в мод]
1) Все из callback OnFilterScriptInit вставляем в конец callback OnGameModeInit перед словом return. 2) Все из callback OnFilterScriptExit вставляем в конец callback OnGameModeExit перед словом return. 3) Все объявления переменных (new ...) и констант (const ...; #define ... ...) в начало мода. 4) Все прототипы (forward ...(...) ) ко всем прототипам. 5) Все описания нестандартных функций (public ...(...); stock ...(...); ...(...){...} ), которых нет в моде, вставляем в конец мода.
P.S. Данный мануал не гарантирует, что после копирования все будет работать, так как еще потребуется подгонять одни системы под другие. P.P.S Если в одном из callback`ов Вы не обнаружили кода, то переходите к следующему пункту инструкции. [/cut] - [cut noguest=Защита от ботов]
В OnPlayerConnect [pwn]if(GetPlayersSameIp(playerid) > 3) Kick(playerid);[/pwn] В конец мода [pwn]stock GetPlayersSameIp(playerid) {//by Weddew //Возвращает количество подключенных игроков с таким же IP как у playerid new count = 0, p_ip[16], i_ip[16]; GetPlayerIp(playerid, p_ip, sizeof(p_ip)); for(new i = 0; i < MAX_PLAYERS; i++) { GetPlayerIp(playerid, i_ip, sizeof(i_ip)); if(i != playerid) { if(!strcmp(p_ip, i_ip, false)) count++; } } return count; }[/pwn] [/cut] - [cut noguest=Проверка на Role Play ник]
В конец мода: [pwn] stock IsARPNickname(playerid) { //by Weddew new p_n[MAX_PLAYER_NAME], dcount = 0; GetPlayerName(playerid, p_n, sizeof(p_n)) for(i = 0; i < strlen(p_n); i++) { if(p_n[i] == '_') dcount++; } if(dcount != 1 || p_n[0] == '_' || p_n[strlen(p_n)-1] == '_') return false; return true; }[/pwn]
В OnPlayerConnect
[pwn] if(!IsARPNickname(playerid)) Kick(playerid);[/pwn]
P.S.: Не пропустит: _Nick_Name_, _Nick_Name, NickName_ Пропустит: Nick_Name, NICK_NAME, NiCk_name, nick_name[/cut]
www.weddew-shop.ru
Сообщение отредактировал Weddew - Среда, 23.10.2013, 21:45 |
| |
|
|
| [[[WampiR]]] | Дата: Пятница, 12.04.2013, 13:37 | Сообщение # 316 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 202
Награды: 2
Город: Омск
Репутация: -22
Замечания: 20%
Статус: 
| Vsevolod, Попробуйте так:[pwn]if(PlayerInfo[playerid][pAdmin] > 0[/pwn] Добавлено (12.04.2013, 13:37) --------------------------------------------- Vsevolod, Вот так точнее. У меня так стоит [pwn]if(PlayerInfo[playerid][pAdmin] < 0)[/pwn]
|
| |
|
|
| Saibot | Дата: Пятница, 12.04.2013, 13:50 | Сообщение # 317 |
|
Освоившийся
Группа:
Продвинутые
Сообщений: 112
Награды: 0
Репутация: 34
Замечания: 0%
Статус: 
| Диалоговое окно:
public OnPlayerCommandText(playerid, cmdtext[]) [pwn]if(strcmp(cmd,"/donat",true)==0) { if(IsPlayerConnected(playerid)) { ShowPlayerDialog(playerid,1993,DIALOG_STYLE_LIST,"{3366ff}Донат","Деньги,"Далее","Отмена"); } return 1; }[/pwn] public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) [pwn]if(dialogid == 1993) { if(response) { if(listitem == 0) { ShowPlayerDialog(playerid,1993,DIALOG_STYLE_MSGBOX, "{3366ff}Деньги","бла бла бла", "Назад", ""); return 0; }[/pwn] Как зделать чтоб когда кто-то нажимал кнопку (назад),ему опять показывало окно /donat.
|
| |
|
|
| [[[WampiR]]] | Дата: Пятница, 12.04.2013, 14:00 | Сообщение # 318 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 202
Награды: 2
Город: Омск
Репутация: -22
Замечания: 20%
Статус: 
| Saibot, К вот этому [pwn] if(dialogid == 1993) { if(response) { if(listitem == 0) { ShowPlayerDialog(playerid,1993,DIALOG_STYLE_MSGBOX, "{3366ff}Деньги","бла бла бла", "Назад", ""); return 0; }[/pwn]
Добавь вниз вот это: [pwn] else if(dialogid == 1994) { if(response) { if(listitem == 0) { ShowPlayerDialog(playerid,1993,DIALOG_STYLE_LIST,"{3366ff}Донат","Деньги,"Далее","Назад"); } } }[/pwn] И замени ид диалога вот здесь: [pwn]ShowPlayerDialog(playerid,1993,DIALOG_STYLE_MSGBOX, "{3366ff}Деньги","бла бла бла", "Назад", ""); [/pwn] На 1994
|
| |
|
|
| Weddew | Дата: Пятница, 12.04.2013, 14:33 | Сообщение # 319 |
|
Группа:
Ангел Хранитель
Сообщений: 1251
Награды: 19
Город: Казань
Репутация: 1740
Замечания: 0%
Статус: 
| Vsevolod, Цитата (Vsevolod) if(PlayerInfo[playerid][pAdmin] > 1)
[pwn]if(PlayerInfo[playerid][pAdmin] >= 1)[/pwn]
www.weddew-shop.ru
|
| |
|
|
| MyatKO | Дата: Пятница, 12.04.2013, 14:35 | Сообщение # 320 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 156
Награды: 2
Город: Казань
Репутация: 121
Замечания: 0%
Статус: 
| Цитата (Vsevolod) В общем сделал проверку на администратора а она не работает. (( if(PlayerInfo[playerid][pAdmin] > 1) return 1; Не работает, разумеется. Ты пишешь: если(УровеньАдминистратора больше 1) Получается, что администратор не сможет сесть в машину. Если же ты хочешь сделать так, чтобы мог, то нужно использовать: if(PlayerInfo[playerid][pAdmin] < 1) return 1; аля если(УровеньАдминистратора меньше 1).
Цитата if(PlayerInfo[playerid][pAdmin] < 0) По этой проверке обычный игрок сесть сможет, ибо у него 0 уровень администратора, но возможно сделать так: if(PlayerInfo[playerid][pAdmin] <= 0) аля если(УровеньАдминистратора меньше или равен 0).
P.S. или я неправильно понял задание?
Сообщение отредактировал MyatKO - Пятница, 12.04.2013, 14:40 |
| |
|
|
| [[[WampiR]]] | Дата: Пятница, 12.04.2013, 14:36 | Сообщение # 321 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 202
Награды: 2
Город: Омск
Репутация: -22
Замечания: 20%
Статус: 
| MyatKO, Я это же писал ему.
|
| |
|
|
| Anthony | Дата: Пятница, 12.04.2013, 16:10 | Сообщение # 322 |
|
Уверенный в себе
Группа:
Publishers
Сообщений: 211
Награды: 4
Замечания: 0%
Статус: 
| Цитата (MyatKO) if(PlayerInfo[playerid][pAdmin] <= 0) Ага вот эта сработала спасибо!!:)
|
| |
|
|
| Saibot | Дата: Пятница, 12.04.2013, 17:05 | Сообщение # 323 |
|
Освоившийся
Группа:
Продвинутые
Сообщений: 112
Награды: 0
Репутация: 34
Замечания: 0%
Статус: 
| [[[WampiR]]], Спасибо!!!
|
| |
|
|
| Nikita01041997 | Дата: Пятница, 12.04.2013, 19:45 | Сообщение # 324 |
|
Новенький
Группа:
Пользователи
Сообщений: 74
Награды: 0
Город: Алейск
Репутация: -37
Замечания: 0%
Статус: 
| [[[WampiR]]], pawno закрывается диологи не повторяются, в чём беда, код на 21 странице!
люблю этот сайт
|
| |
|
|
| [[[WampiR]]] | Дата: Пятница, 12.04.2013, 19:55 | Сообщение # 325 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 202
Награды: 2
Город: Омск
Репутация: -22
Замечания: 20%
Статус: 
| Nikita01041997, Поставил не так значит. Вставь в начало public. Скорей всего неправильно закрытый public
|
| |
|
|
| zatypok | Дата: Пятница, 12.04.2013, 20:07 | Сообщение # 326 |
|
Новенький
Группа:
Пользователи
Сообщений: 2
Награды: 0
Репутация: 0
Замечания: 0%
Статус: 
| Как при игрока с сервера выходе убирать его личное авто , вот код создания авто при входе [pwn]for(new idx = 0; idx < SIMPLECARS; idx++) { if(GetString(SimpleCar[idx][cName],pn(playerid, 1))) { AddStaticVehicleEx(SimpleCar[idx][cModel], SimpleCar[idx][cCar_x], SimpleCar[idx][cCar_y], SimpleCar[idx][cCar_z]+1, SimpleCar[idx][cCar_a], -1, -1, 6000); new strings[256]; new nomer[4]; format(strings,sizeof(strings),"ID: %d\nÂëàäåëåö: %s",SimpleCar[idx][cUID],SimpleCar[idx][cName]); nomer[idx] = CreateDynamic3DTextLabel(strings, 0xBFF600FF, SimpleCar[idx][cCar_x], SimpleCar[idx][cCar_y], SimpleCar[idx][cCar_z]+1, 15.0, INVALID_PLAYER_ID,idx,0,-1,-1,-1,15.0); } }[/pwn]Добавлено (12.04.2013, 20:07) ---------------------------------------------
Цитата (zatypok) Как при игрока с сервера выходе убирать его личное авто , вот код создания авто при входе При выходе игрока с сервера* тупанул что то
|
| |
|
|
| Weddew | Дата: Пятница, 12.04.2013, 21:48 | Сообщение # 327 |
|
Группа:
Ангел Хранитель
Сообщений: 1251
Награды: 19
Город: Казань
Репутация: 1740
Замечания: 0%
Статус: 
| Цитата (zatypok) Как при игрока с сервера выходе убирать его личное авто , вот код создания авто при входе Присваивайте ID транспорта переменной, после выхода игрока удаляйте транспорт по этой переменной.
www.weddew-shop.ru
|
| |
|
|
| zatypok | Дата: Пятница, 12.04.2013, 22:31 | Сообщение # 328 |
|
Новенький
Группа:
Пользователи
Сообщений: 2
Награды: 0
Репутация: 0
Замечания: 0%
Статус: 
| Цитата (Weddew) ID транспорта переменной Покажи на примере плиз
|
| |
|
|
| SPACE_MAN | Дата: Пятница, 12.04.2013, 23:37 | Сообщение # 329 |
|
Новенький
Группа:
Пользователи
Сообщений: 35
Награды: 0
Репутация: 0
Замечания: 0%
Статус: 
| Регенерация здоровья, как вообще её сделать? этот код например у меня не работает (не компилируется)
Код SetTimer("RegHealth", 60000, 1); forward RegHealth(); public RegHealth() { new Float:PHealth; for(new i = 0; i < MAX_PLAYERS; i++) { GetPlayerHealth(i, PHealth); if(PHealth < 100) SetPlayerHealth(playerid, PHealth+0.5); } return true; }
Смерть SPACE_MAN-у
|
| |
|
|
| [[[WampiR]]] | Дата: Пятница, 12.04.2013, 23:50 | Сообщение # 330 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 202
Награды: 2
Город: Омск
Репутация: -22
Замечания: 20%
Статус: 
| Подскажите как сделать чтобы при подаче заявки на смену ника администрации выводилось окно с двумя кнопками: Одна сменить ник 2 отказать.(Ну и само собой если админ нажмет сменить то игроку сменится ник) Вот мой [cut noguest=Код][pwn] if(dialogid==1996) { if(response==1) { if(!strlen(inputtext)) return ShowPlayerDialog(playerid,9943,DIALOG_STYLE_INPUT,"Подача заявки на смену ника","Ваш ник должен подходить формату Имя_Фамилия\nВ ином случае Вам будет отказано в смене ника","Сменить","Отмена"); format(string,sizeof(string),"akk/%s.ini",inputtext); if(fexist(string)) { SendClientMessage(playerid,COLOR_GREY,"Такое имя уже есть на сервере!"); return true; } if(PlayerInfo[playerid][pReport] > 0) { SendClientMessage(playerid,COLOR_WHITE,"Подождите некоторое время. Команду можно использовать раз в 2 минуты."); return 1; } format(WantNickChange[playerid],MAX_PLAYER_NAME,"%s",inputtext); GetPlayerName(playerid, sendername, sizeof(sendername)); new msg[] = "[Заявка на смену ника]\nИгрок {FFFFFF}%s[%d]\n{FF6347}просит сменить ник на {FFFFFF}%s"; format(string, 500, msg, sendername,playerid,(inputtext)); ABroadCast(COLOR_LIGHTRED,string,1); new str[400]; new line1[60] = "Заявка успешно отправлена."; format(str,sizeof(str),"%s", line1); ShowPlayerDialog(playerid,573, 0, "{FFFFFF}Заявка на смену ника",str,"Выход",""); PlayerInfo[playerid][pReport] = 120; return true; } }[/pwn][/cut] Вот сама команда меняющая ники: [cut noguest=Клик][pwn] else if(strcmp(cmd, "/setname", true) == 0) { new newname[128]; new stringo[128]; if (PlayerInfo[playerid][pAdmin] >= 9) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_LIGHTRED, "Введите: /setname [id]"); giveplayerid = ReturnUser(tmp); if(giveplayerid != INVALID_PLAYER_ID) { GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] <= ' ')) { idx++; } { format(stringo,sizeof(stringo),"akk/%s.ini",newname); if(fexist(stringo)) return SendClientMessage(playerid,COLOR_GREY,"Такое имя уже есть на сервере!"); GetPlayerName(playerid, sendername, sizeof(sendername)); if(strlen(WantNickChange[giveplayerid]) < 3) return SendClientMessage(playerid,-1,"Этот игрок не хочет менять ник"); nick[giveplayerid] = 1; format(changenam,sizeof(changenam),"%s",WantNickChange[giveplayerid]); format(stringo,sizeof(stringo),"akk/%s.ini",WantNickChange[giveplayerid]); dini_Create(stringo); SendClientMessage(giveplayerid,COLOR_LIGHTBLUE,"Админ сменил вам ник. В течении пяти секунд изменения вступят в силу"); SendClientMessage(playerid,COLOR_LIGHTBLUE,"Вы сменили ник игроку. В течении пяти секунд изменения всупят в силу"); namechan[giveplayerid] = 5;
/* format(stringo,sizeof(stringo),"akk/%s.ini",newname); dini_Create(stringo); format(string,sizeof(string),"akk/%s.ini",giveplayer); new File = iniOpen(string); iniGet(File,"Key",pass); iniClose(File); SetPlayerName(giveplayerid, newname); OnPlayerUpdate_GF(giveplayerid); File = iniOpen(stringo); iniSet(File,"Key",pass); iniClose(File); format(string,sizeof(string),"akk/%s.ini",giveplayer); dini_Remove(string);*/ SaveAccounts();
} } else if(giveplayerid == INVALID_PLAYER_ID){ SendClientMessage(playerid, COLOR_GREY, "Нет такого игрока!");} } return true; }[/pwn][/cut]
|
| |
|
|
|
 |
|
 | |
| |
|