 |
|
 |
|
|
|
Последние Файлы 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 |
| |
|
|
| SPACE_MAN | Дата: Суббота, 13.04.2013, 21:40 | Сообщение # 346 |
|
Новенький
Группа:
Пользователи
Сообщений: 35
Награды: 0
Репутация: 0
Замечания: 0%
Статус: 
| Как делать вот такие диалоговые окна[img]C:\Users\SPACEMAN\Documents\pic.png[/img] Добавлено (13.04.2013, 21:38) ---------------------------------------------
 Добавлено (13.04.2013, 21:39) ---------------------------------------------
Такие Добавлено (13.04.2013, 21:40) --------------------------------------------- хз как изо добавлять  Добавлено (13.04.2013, 21:40) --------------------------------------------- http://dfiles.ru/files/7dho1dgxz
Смерть SPACE_MAN-у
|
| |
|
|
| Geryy | Дата: Воскресенье, 14.04.2013, 01:49 | Сообщение # 347 |
|
Советчик
Группа:
Ангел Хранитель
Сообщений: 1187
Награды: 24
Город: Москва
Репутация: 785
Замечания: 0%
Статус: 
| SPACE_MAN, DIALOG_STYLE_LIST http://wiki.sa-mp.com/wiki/ShowPlayerDialog_RU
Добавить SAMP сервер в спец. вкладку HOSTED 450-500 р.
|
| |
|
|
| [[[WampiR]]] | Дата: Воскресенье, 14.04.2013, 08:43 | Сообщение # 348 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 202
Награды: 2
Город: Омск
Репутация: -22
Замечания: 20%
Статус: 
| Подскажите. Вот на одном сервере такая система НонРП ников допустим если игрок 3 уровня випки то его не кикает а если без випки то его кикает за нонрп и там уже при коннекте кикает. Я пытался поставить при коннекте проверку ну ничего не выходит. Если кто знает подскажите пожалуйста. Вот что у меня стоит при [cut noguest=коннекте][pwn] new plname[MAX_PLAYER_NAME]; if(!IsRPNick(playerid)) { GetPlayerName(playerid, plname, sizeof(plname)); Kick(playerid); // Кикаем игрока с нонРП ником return 1; }[/pwn][/cut] А вот и сама [cut noguest=проверка][pwn]IsRPNick(playerid) { new plname[MAX_PLAYER_NAME]; GetPlayerName(playerid, plname, MAX_PLAYER_NAME); for(new i=0;i<strlen(plname);i++){ if( !((plname[i]>='a'&&plname[i]<='z') || (plname[i]>='A'&&plname[i]<='Z') || plname[i]=='_') ){ return 0; // недопустимые символы в нике } } new d = strfind(plname, "_"); if( d==-1 ) return 0; // нет _ в нике if(strfind(plname, "_", false, d+1) != -1) return 0; // больше одного _ в нике new name[10]; strmid(name, plname, 0, d, sizeof name); new surname[10]; strmid(surname, plname, d+1, strlen(plname), sizeof surname); if(strlen(name)<3 || strlen(name)>9) return 0; // неверная длина имени if(strlen(surname)<3 || strlen(surname)>9) return 0; // неверная длина фамилии if(!(name[0]>='A' && name[0]<='Z')) return 0; // первая буква имени не заглавная if(!(surname[0]>='A' && surname[0]<='Z')) return 0; // первая буква фамилии не заглавная for(new i=1;i<strlen(name);i++){ if(!(name[i]>='a'&&name[i]<='z')) return 0; // неверные буквы в имени } for(new i=1;i<strlen(surname);i++){ if(!(surname[i]>='a'&&surname[i]<='z')) return 0; // неверные буквы в фамилии } return 1; // все ok }[/pwn][/cut]
|
| |
|
|
| Life-Story | Дата: Воскресенье, 14.04.2013, 09:24 | Сообщение # 349 |
|
Освоившийся
Группа:
Продвинутые
Сообщений: 93
Награды: 3
Репутация: 89
Замечания: 20%
Статус: 
| Цитата (|||WampiR|||) Подскажите. Вот на одном сервере такая система НонРП ников допустим если игрок 3 уровня випки то его не кикает а если без випки то его кикает за нонрп и там уже при коннекте кикает. Я пытался поставить при коннекте проверку ну ничего не выходит. Если кто знает подскажите пожалуйста. Вот что у меня стоит при
В public OnPlayerConnect(playerid) вставь это:
[pwn]if(!IsRPNick(playerid)) { GetPlayerName(playerid, plname, sizeof(plname)); Kick(playerid); // Кикаем игрока с нонРП ником return 1; }[/pwn]
и добавь ко всем stock :
[pwn]stock NonRpName(playerid) { new plname[MAX_PLAYER_NAME]; GetPlayerName(playerid, plname, MAX_PLAYER_NAME); for(new i = 0; i < strlen(plname); i++) { if(!((plname[i]>='a'&&plname[i]<='z') || (plname[i]>='A'&&plname[i]<='Z') || plname[i]=='_')) { return false; // недопустимые символы в нике } } new d = strfind(plname, "_"); if( d == -1 ) return false; // нет _ в нике if(strfind(plname, "_", false, d+1) != -1) return false; // больше одного _ в нике new name[10]; strmid(name, plname, 0, d, sizeof name); new surname[10]; strmid(surname, plname, d+1, strlen(plname), sizeof surname); if(strlen(name) < 3 || strlen(name) > 9) return false; // неверная длина имени if(strlen(surname) <3 || strlen(surname) > 9) return false; // неверная длина фамилии if(!(name[0]>='A' && name[0]<='Z')) return false; // первая буква имени не заглавная if(!(surname[0]>='A' && surname[0]<='Z')) return false; // первая буква фамилии не заглавная for(new i=1;i<strlen(name);i++) { if(!(name[i]>='a'&&name[i]<='z')) return false; // неверные буквы в имени } for(new i=1;i<strlen(surname);i++) { if(!(surname[i]>='a'&&surname[i]<='z')) return false; // неверные буквы в фамилии } return true; }[/pwn]
и все у тебя будет тип-топ  Добавлено (14.04.2013, 09:24) --------------------------------------------- P.s. так же посоветовал бы тебе использовать оптимизированный код:
В OnPlayerConnect вставь это:
[pwn]if(strfind(PlayerName(playerid), "_", true) == -1) SendClientMessage(playerid,0xFFFFFFAA,"Твой ник не является РП ником,правильно будет Имя_Фамилия") && Kick(playerid); [/pwn]
В конец мода или ко всем stock :
[pwn]stock PlayerName(playerid) { new nameoo[MAX_PLAYER_NAME]; GetPlayerName(playerid,nameoo,sizeof(nameoo)); return nameoo; } [/pwn]
|
| |
|
|
| [[[WampiR]]] | Дата: Воскресенье, 14.04.2013, 09:33 | Сообщение # 350 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 202
Награды: 2
Город: Омск
Репутация: -22
Замечания: 20%
Статус: 
| Life-Story, Нифига. Я ставлю вот так: [pwn]new plname[MAX_PLAYER_NAME]; if(PlayerInfo[playerid][pDonateRank] <= 2) { if(!NonRpName(playerid)) { GetPlayerName(playerid, plname, sizeof(plname)); Kick(playerid); return 1; } }[/pwn] И у меня все равно кикает вип игрока.
|
| |
|
|
| Saibot | Дата: Воскресенье, 14.04.2013, 09:38 | Сообщение # 351 |
|
Освоившийся
Группа:
Продвинутые
Сообщений: 112
Награды: 0
Репутация: 34
Замечания: 0%
Статус: 
| Цитата (makr0o) OnPlayerDeath() { if(playerinfo[playerid][rozisk] == 1 && тут делаешь условие, если игрок Fbi(я хз как у тебя)) { //тпшишь его куда нибудь, замораживаешь и тп. } } У меня в OnPlayerDeath вот так стоит: [cut noguest=Код][pwn]if(IsACop(killerid)) { if(GetPlayerWantedLevel(playerid) > 0) { //SetPlayerInterior(playerid, 6); //SetPlayerPos(playerid,264.6288,77.5742,1001.0391); PlayerInfo[playerid][pJailed] = 1; PlayerInfo[playerid][pJailTime] = GetPlayerWantedLevel(playerid)* 10 * 60; //SetPlayerHealth(playerid,0) //SetPlayerFree(suspect,playerid, " Арестованы!*"); GivePlayerMoney(playerid,2500); GivePlayerMoney(killerid,-2500); if(PlayerInfo[killerid][pMember] == 1 || PlayerInfo[killerid][pLeader] == 1) format(string,sizeof(string), "<< Полицейский LS %s[%d] арестовал(а) подозреваемого %s[%d] >>",killername,killerid,playername,playerid,GetPlayerWantedLevel(killerid)*2500); if(PlayerInfo[killerid][pMember] == 2 || PlayerInfo[killerid][pLeader] == 2) format(string,sizeof(string), "<< Агент ФБР %s[%d] арестовал(а) подозреваемого %s[%d] >>",killername,killerid,playername,playerid,GetPlayerWantedLevel(killerid)*2500); if(PlayerInfo[killerid][pMember] == 3 || PlayerInfo[killerid][pLeader] == 3) format(string,sizeof(string), "<< Армеец %s[%d] арестовал(а) подозреваемого %s[%d] >>",killername,killerid,playername,playerid,GetPlayerWantedLevel(killerid)*2500); if(PlayerInfo[killerid][pMember] == 21 || PlayerInfo[killerid][pLeader] == 21) format(string,sizeof(string), "<< Полицейский LV %s[%d] арестовал(а) подозреваемого %s[%d] >>",killername,killerid,playername,playerid,GetPlayerWantedLevel(killerid)*2500); SendClientMessageToAll(COLOR_LIGHTRED,string); format(string, sizeof(string), "Ты посадил игрока %s[%d] в тюрьму и получил 2500$.",playername,playerid,GetPlayerWantedLevel(killerid)*2500); SendClientMessage(killerid,COLOR_YELLOW,string); format(string, sizeof(string), "Тебя посадил в тюрьму %s[%d].",killername,killerid); SendClientMessage(playerid,COLOR_YELLOW,string); PlayerInfo[playerid][pWanted] = 0; ResetPlayerWeapons(playerid); SetPlayerWantedLevel(playerid,0); SendDeathMessage(killerid,playerid,reason); R2SPP(playerid); return 1; } else { SendDeathMessage(killerid,playerid,reason); R2SPP(playerid); return 1; } }[/pwn][/cut] Непойму как вот это туда правильно вставить: [pwn]OnPlayerDeath() { if(playerinfo[playerid][rozisk] == 1 && тут делаешь условие, если игрок Fbi(я хз как у тебя)) { //тпшишь его куда нибудь, замораживаешь и тп. } } [/pwn]
|
| |
|
|
| Geryy | Дата: Воскресенье, 14.04.2013, 10:53 | Сообщение # 352 |
|
Советчик
Группа:
Ангел Хранитель
Сообщений: 1187
Награды: 24
Город: Москва
Репутация: 785
Замечания: 0%
Статус: 
| [[[WampiR]]], При выполнении твоей проверки в OnPlayerConnect, скорее всего значение переменной PlayerInfo[playerid][pDonateRank] еще равно 0. Поэтому тебе нужно получить значение DonateRank из аккаунта до проверки на ник.
Добавить SAMP сервер в спец. вкладку HOSTED 450-500 р.
|
| |
|
|
| [[[WampiR]]] | Дата: Воскресенье, 14.04.2013, 10:59 | Сообщение # 353 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 202
Награды: 2
Город: Омск
Репутация: -22
Замечания: 20%
Статус: 
| Geryy, Подскажи пожалуйста как это сделать?
|
| |
|
|
| SPACE_MAN | Дата: Воскресенье, 14.04.2013, 11:59 | Сообщение # 354 |
|
Новенький
Группа:
Пользователи
Сообщений: 35
Награды: 0
Репутация: 0
Замечания: 0%
Статус: 
| Как сделать собственный include? какие define или forward вводить, что делать если функция уже существует в другом include?
Смерть SPACE_MAN-у
|
| |
|
|
| [[[WampiR]]] | Дата: Воскресенье, 14.04.2013, 12:09 | Сообщение # 355 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 202
Награды: 2
Город: Омск
Репутация: -22
Замечания: 20%
Статус: 
| SPACE_MAN, Если функция уже существует в инклуде то тебе прийдется удалить ее либо с твоего нового инклуда либо со старого.
|
| |
|
|
| SPACE_MAN | Дата: Воскресенье, 14.04.2013, 12:14 | Сообщение # 356 |
|
Новенький
Группа:
Пользователи
Сообщений: 35
Награды: 0
Репутация: 0
Замечания: 0%
Статус: 
| [[[WampiR]]] , а что писать вначале include ?
Смерть SPACE_MAN-у
|
| |
|
|
| [[[WampiR]]] | Дата: Воскресенье, 14.04.2013, 12:17 | Сообщение # 357 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 202
Награды: 2
Город: Омск
Репутация: -22
Замечания: 20%
Статус: 
| SPACE_MAN, Извини это уже я не знаю.
|
| |
|
|
| Geryy | Дата: Воскресенье, 14.04.2013, 13:17 | Сообщение # 358 |
|
Советчик
Группа:
Ангел Хранитель
Сообщений: 1187
Награды: 24
Город: Москва
Репутация: 785
Замечания: 0%
Статус: 
| [[[WampiR]]], Для стандартного режима РП: В начало OnPlayerConnect Код new ViP; new string2[64]; new playername2[MAX_PLAYER_NAME]; GetPlayerName(playerid, playername2, sizeof(playername2)); format(string2, sizeof(string2), "users/%s.ini", playername2); new File: UserFile = fopen(string2, io_read); if ( UserFile ) { new key[ 256 ] , val[ 256 ]; new Data[ 256 ]; while ( fread( UserFile , Data , sizeof( Data ) ) ) { key = ini_GetKey( Data ); if( strcmp( key , "DonateRank" , true ) == 0 ) { val = ini_GetValue( Data ); ViP = strval( val ); } } fclose(UserFile); }
if(ViP < 3 && !NonRpName(playerid)) //ViP=значение DonateRank { Kick(playerid); return 1; }
Добавить SAMP сервер в спец. вкладку HOSTED 450-500 р.
Сообщение отредактировал Geryy - Воскресенье, 14.04.2013, 14:11 |
| |
|
|
| Weddew | Дата: Воскресенье, 14.04.2013, 13:49 | Сообщение # 359 |
|
Группа:
Ангел Хранитель
Сообщений: 1251
Награды: 19
Город: Казань
Репутация: 1740
Замечания: 0%
Статус: 
| [[[WampiR]]], добавьте проверку на РП ник после кода авторизации игрока. Добавлено (14.04.2013, 13:49) ---------------------------------------------
Цитата (SPACE_MAN) [[[WampiR]]] , а что писать вначале include ? Откройте любой include и посмотрите что там написано.
www.weddew-shop.ru
|
| |
|
|
| [[[WampiR]]] | Дата: Воскресенье, 14.04.2013, 13:55 | Сообщение # 360 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 202
Награды: 2
Город: Омск
Репутация: -22
Замечания: 20%
Статус: 
| Weddew, Ну это игрок уже подключиться успеет и потом его только кикнет?
|
| |
|
|
|
 |
|
 | |
| |
|