 |
|
 |
|
|
|
Последние Файлы 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 |
| |
|
|
| _BigSm0ke_ | Дата: Вторник, 16.07.2013, 01:02 | Сообщение # 1231 |
|
Местный
Группа:
I'm V.I.P.
Сообщений: 674
Награды: 5
Город: Москва
Репутация: 127
Замечания: 0%
Статус: 
| Хотел бы узнать какая максимальная длина строки в 0.3Х? А то параметров у аккаунта становится все больше и больше и sql запрос становится все длиннее и длиннее.. если sql запрос будет длиннее чем максимальная длина строки, придется загружать и сохранять аккаунты в 2 и более запросов? или есть другой выход?
LifeVegas: vk.com/lvgta - Покори вершины Лас-Вегаса в новом РП проекте. COMING SOON Продаю РП мод: подробнее тут Решаю задачи по техническим дисциплинам, подробнее тут
|
| |
|
|
| Weddew | Дата: Вторник, 16.07.2013, 01:07 | Сообщение # 1232 |
|
Группа:
Ангел Хранитель
Сообщений: 1251
Награды: 19
Город: Казань
Репутация: 1740
Замечания: 0%
Статус: 
| Цитата (_BigSm0ke_) Хотел бы узнать какая максимальная длина строки в 0.3Х? Ограничения не имеется, ограничено лишь физическими возможностями машины. Цитата (_BigSm0ke_) придется загружать и сохранять аккаунты в 2 и более запросов? или есть другой выход? Я не думаю, что у вас слишком много параметров аккаунта. 2-ух запросов будет достаточно.
www.weddew-shop.ru
|
| |
|
|
| ZiGGi | Дата: Вторник, 16.07.2013, 02:00 | Сообщение # 1233 |
|
Мастер джэдай
Группа:
Продвинутые
Сообщений: 2652
Награды: 34
Город: St. Petersburg
Репутация: 2102
Замечания: 20%
Статус: 
| Цитата (Weddew) Ограничения не имеется, ограничено лишь физическими возможностями машины. Ограничено размером стека.
Бложе [indent]Мой блог Уроки по Pawn[/indent]
Open-GTO [indent]Блог разработчиков GitHub: https://github.com/Open-GTO/Open-GTO Сборки мода с сервером тут[/indent]
|
| |
|
|
| Saibot | Дата: Вторник, 16.07.2013, 10:34 | Сообщение # 1234 |
|
Освоившийся
Группа:
Продвинутые
Сообщений: 112
Награды: 0
Репутация: 34
Замечания: 0%
Статус: 
| Цитата (миха121) Ну а чуть подробнее? Команда: [pwn]if(strcmp(cmd, "/zbruchanska", true) == 0) { if(IsPlayerConnected(playerid)) { new Float:health; GetPlayerHealth(playerid, health); if(health >= 100) { } else if(health+25 > 100.0) SetPlayerHealth(playerid, 100.0); else SetPlayerHealth(playerid, health+25); ApplyAnimation(playerid,"GANGS","drnkbr_prtl",3.0, 0, 0, 0, 0, 0); PlayerPlaySound(playerid, 1055, 0.0, 0.0, 0.0); GivePlayerCash(playerid, - 5); GameTextForPlayer(playerid, "~r~ - 5 $", 5000, 1); } return 1; }[/pwn] Дальше в public OnPlayerKeyStateChange(playerid, newkeys,oldkeys) if(newkeys == KEY_WALK) { if(PlayerToPoint(0.3, playerid, Кординаты)) { OnPlayerCommandText(playerid,"/zbruchanska"); } }
|
| |
|
|
| _BigSm0ke_ | Дата: Вторник, 16.07.2013, 19:36 | Сообщение # 1235 |
|
Местный
Группа:
I'm V.I.P.
Сообщений: 674
Награды: 5
Город: Москва
Репутация: 127
Замечания: 0%
Статус: 
| Цитата (ZiGGi) Ограничено размером стека. А что такое стек?
а да.. и параметров - 59 столбцов в таблице accounts.. и это я еще не все сделал, что хочу))
LifeVegas: vk.com/lvgta - Покори вершины Лас-Вегаса в новом РП проекте. COMING SOON Продаю РП мод: подробнее тут Решаю задачи по техническим дисциплинам, подробнее тут
Сообщение отредактировал _BigSm0ke_ - Вторник, 16.07.2013, 19:38 |
| |
|
|
| Weddew | Дата: Вторник, 16.07.2013, 20:17 | Сообщение # 1236 |
|
Группа:
Ангел Хранитель
Сообщений: 1251
Награды: 19
Город: Казань
Репутация: 1740
Замечания: 0%
Статус: 
| Цитата (_BigSm0ke_) А что такое стек? Стэк (стопка) - один из способов хранения данных. Принцип работы - Last In First Out (LIFO, на русском: Последний пришел, первый ушел).Добавлено (16.07.2013, 20:17) ---------------------------------------------
Цитата (_BigSm0ke_) а да.. и параметров - 59 столбцов в таблице accounts.. и это я еще не все сделал, что хочу)) Если не умещается, то делить на несколько запросов.
www.weddew-shop.ru
|
| |
|
|
| _BigSm0ke_ | Дата: Среда, 17.07.2013, 10:14 | Сообщение # 1237 |
|
Местный
Группа:
I'm V.I.P.
Сообщений: 674
Награды: 5
Город: Москва
Репутация: 127
Замечания: 0%
Статус: 
| Еще один глупый вопрос.. 1 километр примерно по карте кто может показать?) а то делаю работу таксиста с счетчиком по расстоянию и сколько плату делать за 1 км не могу определиться)
LifeVegas: vk.com/lvgta - Покори вершины Лас-Вегаса в новом РП проекте. COMING SOON Продаю РП мод: подробнее тут Решаю задачи по техническим дисциплинам, подробнее тут
|
| |
|
|
| Geryy | Дата: Среда, 17.07.2013, 11:23 | Сообщение # 1238 |
|
Советчик
Группа:
Ангел Хранитель
Сообщений: 1187
Награды: 24
Город: Москва
Репутация: 785
Замечания: 0%
Статус: 
| Цитата (_BigSm0ke_) Еще один глупый вопрос.. 1 километр примерно по карте кто может показать?) а то делаю работу таксиста с счетчиком по расстоянию и сколько плату делать за 1 км не могу определиться)
Расстояние надо высчитывать используя скорость и время.
Для этого можно завести глобальную переменную, в которой будет храниться пробег авто: new Float:VehDistance[MAX_VEHICLES];
затем в секундном таймере высчитывать расстояние: VehDistance[vehicleid] += GetPlayerSpeed(playerid) / 3.6;
Код GetPlayerSpeed(playerid) { new Float:ST[4]; if(IsPlayerInAnyVehicle(playerid))GetVehicleVelocity(GetPlayerVehicleID(playerid),ST[0],ST[1],ST[2]); else GetPlayerVelocity(playerid,ST[0],ST[1],ST[2]); ST[3] = floatsqroot(floatpower(floatabs(ST[0]), 2.0) + floatpower(floatabs(ST[1]), 2.0) + floatpower(floatabs(ST[2]), 2.0)) * 200.0;// Ñêîðîñòü òà÷åê return floatround(ST[3]); }
Т.о. в переменной VehDistance[vehicleid] будет храниться пробег авто (в метрах). Это значение можно использовать как угодно: конвертировать в км, обнулять, показывать через текстдрав и т.д.
Добавить SAMP сервер в спец. вкладку HOSTED 450-500 р.
Сообщение отредактировал Geryy - Среда, 17.07.2013, 14:32 |
| |
|
|
| _BigSm0ke_ | Дата: Среда, 17.07.2013, 14:57 | Сообщение # 1239 |
|
Местный
Группа:
I'm V.I.P.
Сообщений: 674
Награды: 5
Город: Москва
Репутация: 127
Замечания: 0%
Статус: 
| Да у меня как бы все так и сделано, вопрос внимательней читай , я спрашивал чему наглядно равен 1 км
LifeVegas: vk.com/lvgta - Покори вершины Лас-Вегаса в новом РП проекте. COMING SOON Продаю РП мод: подробнее тут Решаю задачи по техническим дисциплинам, подробнее тут
|
| |
|
|
| Geryy | Дата: Среда, 17.07.2013, 15:42 | Сообщение # 1240 |
|
Советчик
Группа:
Ангел Хранитель
Сообщений: 1187
Награды: 24
Город: Москва
Репутация: 785
Замечания: 0%
Статус: 
| Цитата (_BigSm0ke_) я спрашивал чему наглядно равен 1 км Это насколько фантазия позволяет.
Добавить SAMP сервер в спец. вкладку HOSTED 450-500 р.
|
| |
|
|
| ABATAP | Дата: Среда, 17.07.2013, 16:49 | Сообщение # 1241 |
|
Советчик
Группа:
Продвинутые
Сообщений: 1007
Награды: 14
Город: Новосибирск
Репутация: 729
Замечания: 0%
Статус: 
| [pwn]#define DIALOG_POKUPKA_AUTO 3754[/pwn]
[pwn]public OnPlayerStateChange(playerid, newstate, oldstate) { new string[128]; if(newstate == PLAYER_STATE_DRIVER) { if(IsAOwnableVehicle(GetPlayerVehicleID(playerid))) { new number = GetVehicleID(GetPlayerVehicleID(playerid)); if(!strcmp(FP_CarInfo[number][ocOwner],"The State",true)) { format(string, sizeof(string), "Транспорт на продажу\nМодель: %s\nЦена: %d$",VehiclesName[GetVehicleModel(FP_OwnableCar[number])-400], FP_CarInfo[number][ocCost]); ShowPlayerDialog(playerid,DIALOG_POKUPKA_AUTO,DIALOG_STYLE_MSGBOX,"Авторынок",string,"Купить","Выйти"); TogglePlayerControllable(playerid,0); } } } return 1; }[/pwn]
[pwn]public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == DIALOG_POKUPKA_AUTO) { if(response) OnPlayerCommandText(playerid,"/v buy"); else RemovePlayerFromVehicle(playerid); }[/pwn]
OnPlayerCommandText
[pwn] if(strcmp(x_job,"buy",true) == 0) { if(FP_CarKey[playerid] != 0)return SendClientMessage(playerid,COLOR_GREY,"Ó âàñ óæå åñòü ëè÷íûé òðàíñïîðò."); if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Òû äîëæåí íàõîäèòüñÿ â òðàíñïîðòå!"); new buycar = GetPlayerVehicleID(playerid),number = GetVehicleID(buycar); if(!IsAOwnableVehicle(buycar))return SendClientMessage(playerid,COLOR_GREY,"Ýòîò òðàíñïîðò íå äëÿ ïðîäàæè."); if(!strcmp(FP_CarInfo[number][ocOwner],"The State",true)) { if(GetPlayerMoney(playerid) < FP_CarInfo[number][ocCost]) { SendClientMessage(playerid, COLOR_GREY, "Ó âàñ íåäîñòàòî÷íî äåíåã äëÿ ïîêóïêè."); RemoveFromVehicle(playerid); return 1; } SendClientMessage(playerid, COLOR_WHITE, "Ïîçäðàâëÿþ! Òåïåðü ýòîò òðàíñïîðò ïðèíàäëåæèò òåáå!"); GivePlayerMoney(playerid,-FP_CarInfo[number][ocCost]); strmid(FP_CarInfo[number][ocOwner], name, 0, strlen(name), 999); FP_CarInfo[number][ocLock] = 1; GetVehicleParamsEx(buycar,engine,lights,alarm,doors,bonnet,boot,objective); SetVehicleParamsEx(buycar,engine,lights,alarm,1,bonnet,boot,objective); FP_CarKey[playerid] = number; SaveOwnableCars(); TogglePlayerControllable(playerid,1); format(string, sizeof(string), "[Âëàäåëåö: %s]",FP_CarInfo[number][ocOwner]); Update3DTextLabelText(vehicle3Dtext[number], 0xFFA500AA,string); return 1; } return 1; }[/pwn]
При нажатии на кнопку "купить" ничего не происходит. Вводишь команду - все работает. В чем может быть проблема?
|
| |
|
|
| Borog | Дата: Среда, 17.07.2013, 19:39 | Сообщение # 1242 |
|
Долгожитель
Группа:
I'm V.I.P.
Сообщений: 1362
Награды: 43
Город: Москва
Репутация: 1249
Замечания: 20%
Статус: 
| ABATAP, Попробуй вместо OnPlayerCommandText(playerid,"/v buy"); поставить отправку сообщения. Если все успешно отправит, то нужно копаться в самом паблике OnPlayerCommandText. И начать это дело с проверки на саму команду "/v"
Silver Break http://s-break.ru/ http://vk.com/sbreak
|
| |
|
|
| ABATAP | Дата: Среда, 17.07.2013, 19:54 | Сообщение # 1243 |
|
Советчик
Группа:
Продвинутые
Сообщений: 1007
Награды: 14
Город: Новосибирск
Репутация: 729
Замечания: 0%
Статус: 
| Borog,
[pwn]public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { if(dialogid == DIALOG_POKUPKA_AUTO) { if(response) SendClientMessage(playerid, COLOR_WHITE, "1111111111111"); else RemovePlayerFromVehicle(playerid); }[/pwn]
Не отправляет.
|
| |
|
|
| Weddew | Дата: Четверг, 18.07.2013, 01:28 | Сообщение # 1244 |
|
Группа:
Ангел Хранитель
Сообщений: 1251
Награды: 19
Город: Казань
Репутация: 1740
Замечания: 0%
Статус: 
| ABATAP, значит показывается диалог не с ID`oм DIALOG_POKUPKA_AUTO
www.weddew-shop.ru
Сообщение отредактировал Weddew - Четверг, 18.07.2013, 01:29 |
| |
|
|
| Geryy | Дата: Четверг, 18.07.2013, 01:55 | Сообщение # 1245 |
|
Советчик
Группа:
Ангел Хранитель
Сообщений: 1187
Награды: 24
Город: Москва
Репутация: 785
Замечания: 0%
Статус: 
| ABATAP, покажи, что там дальше в public OnDialogResponse
Добавить SAMP сервер в спец. вкладку HOSTED 450-500 р.
|
| |
|
|
|
 |
|
 | |
| |
|