 |
|
 |
|
|
|
Последние Файлы 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 |
| |
|
|
| brebvix | Дата: Понедельник, 03.03.2014, 22:11 | Сообщение # 1966 |
|
Новенький
Группа:
Продвинутые
Сообщений: 46
Награды: 2
Репутация: 126
Замечания: 0%
Статус: 
| Steep_Nk, большое спасибо за ответ, всё работает, но частично Приведу реальный код: [pwn]enum info { Name[50], IP[20] } new data[1000][info];
public OnFilterScriptInit() { data[0][Name] = "User_Test"; return 1; }[/pwn] При выполнении получаю ошибку: Код error 047: array sizes do not match, or destination array is too small Причем если Name или IP будут типа integer - то данные запишет нормально.
Blog: http://brebvix.com E-Mail: admin@brebvix.com
|
| |
|
|
| Dima-kun | Дата: Понедельник, 03.03.2014, 22:14 | Сообщение # 1967 |
|
Группа:
Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус: 
| Steep_Nk, ой зачем столько лишних телодвижений?? Не ну я понимаю сейчас компьютеры мощные и такие операции не будут сложны, но и не стоит разбрасываться памятью. [pwn]public OnPlayerConnect(playerid) {
GetPlayerIp( playerid, data[playerid][IP], 15 ); return 1; }[/pwn]Добавлено (03.03.2014, 22:14) ---------------------------------------------
Цитата brebvix (  ) data[0][Name] = "User_Test"; вот так: [pwn]strmid( data[0][Name], "User_Test", 0, strlen( "User_Test" ), 255 ); [/pwn]
Мои работы: [INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники, [FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos, [GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
|
| |
|
|
| brebvix | Дата: Понедельник, 03.03.2014, 22:17 | Сообщение # 1968 |
|
Новенький
Группа:
Продвинутые
Сообщений: 46
Награды: 2
Репутация: 126
Замечания: 0%
Статус: 
| Цитата Dima-kun (  ) strmid( data[0][Name], "User_Test", 0, strlen( "User_Test" ), 255 ); Огромное спасибо, проверил - это именно то что нужно Пользуясь тем, что я уже в теме, задам еще один вопрос. Как можно осуществить поиск по массиву, не перебирая его через for? К примеру получить ИП адресс пользователя User_Test (из примера выше)
Blog: http://brebvix.com E-Mail: admin@brebvix.com
|
| |
|
|
| Vito_Thompson | Дата: Вторник, 04.03.2014, 17:34 | Сообщение # 1969 |
|
Новенький
Группа:
Пользователи
Сообщений: 2
Награды: 0
Город: Пермь
Репутация: 0
Замечания: 0%
Статус: 
| Здравствуйте подскажите как сделать открытие меню через клавишу ALT или через другую. У меня мод RP
|
| |
|
|
| Max | Дата: Вторник, 04.03.2014, 17:50 | Сообщение # 1970 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 172
Награды: 0
Город: Казань
Репутация: 59
Замечания: 0%
Статус: 
| Dima-kun, неплохо выпендрился! Но речь идет не об оптимизации сейчас! Я просто привел пример!
|
| |
|
|
| Dima-kun | Дата: Вторник, 04.03.2014, 18:06 | Сообщение # 1971 |
|
Группа:
Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус: 
| Steep_Nk, твой пример не работоспособен
Мои работы: [INC] Сборник d_includes [LAST],[FS] New Demage Effect,[FS]Авто-Поворотники, [FS]mp3player,[FS] Fun Chat Game,[FS] Car Buy Syst,[FS] Anti-AirBrk,[INC] d_setpos, [GM] Game Move v0.1,[FS+include]Super-Armour [0.3z],[FS + Include] Multi Checkpoints
|
| |
|
|
| [BGD]John_RUS | Дата: Вторник, 04.03.2014, 19:21 | Сообщение # 1972 |
|
Освоившийся
Группа:
Продвинутые
Сообщений: 143
Награды: 1
Репутация: 39
Замечания: 0%
Статус: 
| Намутил прикольную вещь на свой админкар, с частотой в полсекунды создается взрыв, машина выглядит как летящий астероид по дороге, но одно но, SetVehicleHealth 1000 не спасает от рандомного взрыва машины Как её сделать совсем неуязвимой?
|
| |
|
|
| Geryy | Дата: Среда, 05.03.2014, 02:32 | Сообщение # 1973 |
|
Советчик
Группа:
Ангел Хранитель
Сообщений: 1187
Награды: 24
Город: Москва
Репутация: 785
Замечания: 0%
Статус: 
| Цитата [BGD]John_RUS (  ) Намутил прикольную вещь на свой админкар, с частотой в полсекунды создается взрыв, машина выглядит как летящий астероид по дороге, но одно но, SetVehicleHealth 1000 не спасает от рандомного взрыва машины crazy Как её сделать совсем неуязвимой? RepairVehicle(GetPlayerVehicleID(playerid));
Цитата Vito_Thompson (  ) Здравствуйте подскажите как сделать открытие меню через клавишу ALT или через другую. У меня мод RP В public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) добавить условие if (newkeys == KEY_WALK) { //открыть меню }
Добавить SAMP сервер в спец. вкладку HOSTED 450-500 р.
|
| |
|
|
| Vito_Thompson | Дата: Среда, 05.03.2014, 17:56 | Сообщение # 1974 |
|
Новенький
Группа:
Пользователи
Сообщений: 2
Награды: 0
Город: Пермь
Репутация: 0
Замечания: 0%
Статус: 
| Киньте пожалуйста инклуд "samp-rp"
|
| |
|
|
| Jokermania | Дата: Суббота, 08.03.2014, 17:37 | Сообщение # 1975 |
|
Новенький
Группа:
Пользователи
Сообщений: 2
Награды: 0
Репутация: 0
Замечания: 0%
Статус: 
| Скрипт офигенный! Но,поставлю + тому ,кто поможет мне с одной проблемкой.которую я не могу понять уже как 2 дня... Вообщем скачал скрипт на кар меню,на изминение цвет ника,скачал вот этот скрипт на создание банд,и ВЕЗДЕ когда я выбираю что то в диалоговом окне,окно исчезает и ничего не происходит.Очень прошу,помогите пожалуйста решить эту проблему! Буду очень благодарен и поставлю +!
|
| |
|
|
| Weddew | Дата: Суббота, 08.03.2014, 17:53 | Сообщение # 1976 |
|
Группа:
Ангел Хранитель
Сообщений: 1251
Награды: 19
Город: Казань
Репутация: 1740
Замечания: 0%
Статус: 
| Цитата brebvix (  ) Огромное спасибо, проверил - это именно то что нужно Пользуясь тем, что я уже в теме, задам еще один вопрос. Как можно осуществить поиск по массиву, не перебирая его через for? К примеру получить ИП адресс пользователя User_Test (из примера выше) Записывать IP не в массив, а в PVar:
[pwn] new ip[16]; GetPlayerIp(playerid, ip, sizeof(ip)); SetPVarString(playerid, "PlayerIP", ip); [/pwn]
После уже получать IP из PVar:
[pwn] new ip[16]; GetPVarString(playerid, "PlayerIP", ip, sizeof(ip)); [/pwn]Добавлено (08.03.2014, 17:53) ---------------------------------------------
Цитата Steep_Nk (  ) неплохо выпендрился!
Человек показал, как избежать подобного быдлокода: Цитата Steep_Nk (  ) data[playerid][IP] = plrIP;
Советую хоть чему-нибудь научиться у этого человека.
www.weddew-shop.ru
|
| |
|
|
| slamboy2012 | Дата: Суббота, 08.03.2014, 21:21 | Сообщение # 1977 |
|
Новенький
Группа:
Пользователи
Сообщений: 4
Награды: 0
Город: Нижний Новгород
Репутация: 0
Замечания: 0%
Статус: 
| как заканчивается бензин морозит игрока в машине
[pwn]if (strcmp("/en", cmdtext, true) == 0) { new caridi = GetPlayerVehicleID(playerid); if(zavodis[GetPlayerVehicleID(playerid)] == false) { if (Fuell[caridi] <= 0) return SendClientMessage(playerid, COLOR_REDD, "Вызовите механика или заправьтесь с канистры!"); if(GetPlayerVehicleID(playerid) != INVALID_VEHICLE_ID) { if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid) ,VEHICLE_PARAMS_ON,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective); zavodis[GetPlayerVehicleID(playerid)] = true; } } } else if(zavodis[GetPlayerVehicleID(playerid)] == true) { if(GetPlayerVehicleID(playerid) != INVALID_VEHICLE_ID) { if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid),VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective); zavodis[GetPlayerVehicleID(playerid)] = false; } } } return true;[/pwn]
[pwn]if(Fuell[carid] < 0) { Fuell[carid] = 0; GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid),VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective); SendClientMessage(playerid, COLOR_REDD, "У вас закончился бензин!"); SendClientMessage(playerid, COLOR_GREEN, "{62AD50}Используйте телефон {FFFFFF}(( /menu » [8] Управление телефоном » Служебные номера )) {62AD50}Что бы вызвать таксиста/механика"); zavodis[GetPlayerVehicleID(playerid)] = false; } TextDrawSetString(TextdrawFuel[playerid],str4); TextDrawSetString(TextdrawSpeed[playerid],str); TextDrawSetString(TextdrawStatus[playerid],str2); TextDrawSetString(TextdrawEngine[playerid],str5); } }[/pwn]Добавлено (08.03.2014, 21:04) ---------------------------------------------
Цитата slamboy2012 (  ) как заканчивается бензин морозит игрока в машине
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 if (strcmp("/en", cmdtext, true) == 0) { new caridi = GetPlayerVehicleID(playerid); if(zavodis[GetPlayerVehicleID(playerid)] == false) { if (Fuell[caridi] <= 0) return SendClientMessage(playerid, COLOR_REDD, "Вызовите механика или заправьтесь с канистры!"); if(GetPlayerVehicleID(playerid) != INVALID_VEHICLE_ID) { if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid) ,VEHICLE_PARAMS_ON,VEHICLE_PARAMS_ON,alarm,doors,bonnet,boot,objective); zavodis[GetPlayerVehicleID(playerid)] = true; } } } else if(zavodis[GetPlayerVehicleID(playerid)] == true) { if(GetPlayerVehicleID(playerid) != INVALID_VEHICLE_ID) { if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) { GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid),VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective) ; zavodis[GetPlayerVehicleID(playerid)] = false; } } } return true;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if(Fuell[carid] < 0) { Fuell[carid] = 0; GetVehicleParamsEx(GetPlayerVehicleID(playerid),engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(GetPlayerVehicleID(playerid),VEHICLE_PARAMS_OFF,VEHICLE_PARAMS_OFF,alarm,doors,bonnet,boot,objective); SendClientMessage(playerid, COLOR_REDD, "У вас закончился бензин!"); SendClientMessage(playerid, COLOR_GREEN, "{62AD50}Используйте телефон {FFFFFF}(( /menu » [8] Управление телефоном » Служебные номера )) {62AD50}Что бы вызвать таксиста/механика"); zavodis[GetPlayerVehicleID(playerid)] = false; } TextDrawSetString(TextdrawFuel[playerid],str4); TextDrawSetString(TextdrawSpeed[playerid],str); TextDrawSetString(TextdrawStatus[playerid],str2); TextDrawSetString(TextdrawEngine[playerid],str5); } }
Помогите пожалуйстаДобавлено (08.03.2014, 21:21) --------------------------------------------- Помогите пожалуйста, почему морозит игрока, когда бензин кончается?
|
| |
|
|
| Weddew | Дата: Воскресенье, 09.03.2014, 01:19 | Сообщение # 1978 |
|
Группа:
Ангел Хранитель
Сообщений: 1251
Награды: 19
Город: Казань
Репутация: 1740
Замечания: 0%
Статус: 
| slamboy2012, заморозка игрока выполняется следующей функцией: [pwn]TogglePlayerControllable(playerid, 0);[/pwn] В приведенном вами коде я этого не заметил.
www.weddew-shop.ru
|
| |
|
|
| slamboy2012 | Дата: Воскресенье, 09.03.2014, 18:45 | Сообщение # 1979 |
|
Новенький
Группа:
Пользователи
Сообщений: 4
Награды: 0
Город: Нижний Новгород
Репутация: 0
Замечания: 0%
Статус: 
| Цитата Weddew (  ) 1 TogglePlayerControllable(playerid, 0);
В приведенном вами коде я этого не заметил.
Спасибо нашёл, в чём проблема, проблема была в том когда машину к дому спавнил у неё бенз пропадал а тогда переглючило от этого)Добавлено (09.03.2014, 08:29) --------------------------------------------- Личное авто не пропадает когда ты выходишь с сервера, а когда заходишь появляется новое, второе, ещё раз перезайдёшь третье появляется и т.д Помогите где искать эту проблему и как примерно её решить можно.....  Добавлено (09.03.2014, 16:24) --------------------------------------------- Личное авто не пропадает когда ты выходишь с сервера, а когда заходишь появляется новое, второе, ещё раз перезайдёшь третье появляется и т.д Помогите где искать эту проблему и как примерно её решить можно....  Добавлено (09.03.2014, 18:45) ---------------------------------------------

|
| |
|
|
| Weddew | Дата: Воскресенье, 09.03.2014, 19:14 | Сообщение # 1980 |
|
Группа:
Ангел Хранитель
Сообщений: 1251
Награды: 19
Город: Казань
Репутация: 1740
Замечания: 0%
Статус: 
| Цитата slamboy2012 (  ) Личное авто не пропадает когда ты выходишь с сервера, а когда заходишь появляется новое, второе, ещё раз перезайдёшь третье появляется и т.д Помогите где искать эту проблему и как примерно её решить можно.... Удаление транспорта выполняется функцией [pwn]DestroyVehicle(vehicleid);[/pwn] вместо vehicle - переменная с ID`ом транспорта. Функцию в вашем случае необходимо вызывать в OnPlayerDisconnect(playerid);
www.weddew-shop.ru
|
| |
|
|
|
 |
|
 | |
| |
|