 |
|
 |
|
|
|
Последние Файлы 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 |
| |
|
|
| Anthony | Дата: Четверг, 18.04.2013, 18:41 | Сообщение # 421 |
|
Уверенный в себе
Группа:
Publishers
Сообщений: 211
Награды: 4
Замечания: 0%
Статус: 
| Weddew Спасибо!
|
| |
|
|
| Cruiser | Дата: Четверг, 18.04.2013, 18:45 | Сообщение # 422 |
|
Новенький
Группа:
Пользователи
Сообщений: 25
Награды: 0
Город: Армавир
Репутация: 0
Замечания: 0%
Статус: 
| Цитата (Weddew) Cruiser, естественно Вы ничего не выведите, так как Вы не кэшируете полученные данные и не выводите результат запроса в поток. Там где нужно: format(string, sizeof(string), "SELECT * FROM `Accounts` WHERE `Name` = '%s'", Name(playerid)); mysql_function_query(connectionHandle, string, true, "LoadAccount","d", playerid);
Ко всем public функциям: forward LoadAccount(playerid); public LoadAccount(playerid) { new rows, fields; cache_get_data(rows, fields); if(rows != 0) { new maximum[128], starmail[256]; cache_get_field_content(0, "Email", starmail); format(string, sizeof(string), "Mail: %s", starmail); SendClientMessage(playerid, COLOR_YELLOW, string);
cache_get_field_content(0, "Key", maximum), PlayerInfo[playerid][pKey] = strval(maximum); format(string, sizeof(string), "Пароль: %s", PlayerInfo[playerid][pKey]); SendClientMessage(playerid, COLOR_YELLOW, string); } } Все что я писал это все строки из одного диалога, мне надо чтобы можно было вытащить email и пароль в одном диалоге, это возможно? или просто для того чтобы вывести надо обязательно создавать отдельный паблик?
|
| |
|
|
| [[[WampiR]]] | Дата: Четверг, 18.04.2013, 19:05 | Сообщение # 423 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 202
Награды: 2
Город: Омск
Репутация: -22
Замечания: 20%
Статус: 
| Вот нормальная проверка но почемуто выкидывает даже с фракционных машин и который на нубореспе. А так если есть ключ то можно ездить. Можно ли как нибуть сделать чтобы не выкидывало с фракционных и который на нубореспе машин? [pwn] if(PlayerInfo[playerid][pCarKey] != vehicleid) { if(PlayerInfo[playerid][pAdmin] > 0) { SendClientMessage(playerid,COLOR_LIGHTGREEN,"(( Т.к. вы админ, вы можете ехать на авто! ))"); } else { SendClientMessage(playerid,COLOR_LIGHTGREEN,"Нет ключа от автомобиля!"); RemovePlayerFromVehicle(playerid); TogglePlayerControllable(playerid, 1); } }[/pwn]
|
| |
|
|
| SPACE_MAN | Дата: Четверг, 18.04.2013, 20:37 | Сообщение # 424 |
|
Новенький
Группа:
Пользователи
Сообщений: 35
Награды: 0
Репутация: 0
Замечания: 0%
Статус: 
| Почему если ставить вместо (i, PHealth+1), (i, PHealth+0.5) то реген не работает? Код forward ReHealth(); public ReHealth() { new Float:PHealth; for(new i = 0; i < MAX_PLAYERS; i++) { GetPlayerHealth(i, PHealth); if(PHealth < 100) SetPlayerHealth(i, PHealth+1); } return true; }
Смерть SPACE_MAN-у
|
| |
|
|
| Weddew | Дата: Четверг, 18.04.2013, 21:25 | Сообщение # 425 |
|
Группа:
Ангел Хранитель
Сообщений: 1251
Награды: 19
Город: Казань
Репутация: 1740
Замечания: 0%
Статус: 
| Цитата (Cruiser) Все что я писал это все строки из одного диалога, мне надо чтобы можно было вытащить email и пароль в одном диалоге, это возможно? или просто для того чтобы вывести надо обязательно создавать отдельный паблик? Вы в любом случае выведите. Здесь работает метод FILO (First in last out) или иначе говоря stack (если не понятно что это за термины, то читайте статьи в wikipedia).
www.weddew-shop.ru
|
| |
|
|
| Nikita01041997 | Дата: Пятница, 19.04.2013, 00:20 | Сообщение # 426 |
|
Новенький
Группа:
Пользователи
Сообщений: 74
Награды: 0
Город: Алейск
Репутация: -37
Замечания: 0%
Статус: 
| Weddew, ещё раз вставил и вот что у меня получилось: [pwn]C:\Users\Íèêèòà\Desktop\Genix Role Play version 7.0 FINAL\gamemodes\GenixRp.pwn(25433) : error 032: array index out of bounds (variable "coronoscar") C:\Users\Íèêèòà\Desktop\Genix Role Play version 7.0 FINAL\gamemodes\GenixRp.pwn(28051) : error 032: array index out of bounds (variable "coronoscar") C:\Users\Íèêèòà\Desktop\Genix Role Play version 7.0 FINAL\gamemodes\GenixRp.pwn(28055) : warning 225: unreachable code C:\Users\Íèêèòà\Desktop\Genix Role Play version 7.0 FINAL\gamemodes\GenixRp.pwn(67088) : error 010: invalid function or declaration Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase 3 Errors.[/pwn] Вставил как вы писали код и в канец мода вставил код который писал geryy! Объясните что не так?
люблю этот сайт
|
| |
|
|
| Weddew | Дата: Пятница, 19.04.2013, 00:28 | Сообщение # 427 |
|
Группа:
Ангел Хранитель
Сообщений: 1251
Награды: 19
Город: Казань
Репутация: 1740
Замечания: 0%
Статус: 
| Цитата (Nikita01041997) Вставил как вы писали код и в канец мода вставил код который писал geryy! Объясните что не так? Вам писали пример, а не готовый код. Перед тем как что-то вставлять в свой мод, читайте внимательно то, что Вам пишут.
www.weddew-shop.ru
Сообщение отредактировал Weddew - Пятница, 19.04.2013, 00:28 |
| |
|
|
| Nikita01041997 | Дата: Пятница, 19.04.2013, 08:46 | Сообщение # 428 |
|
Новенький
Группа:
Пользователи
Сообщений: 74
Награды: 0
Город: Алейск
Репутация: -37
Замечания: 0%
Статус: 
| Weddew, я внимательно прочитал, поменял всё на своё, всё ровно не получается! Добавлено (19.04.2013, 08:46) --------------------------------------------- спасибо geryy! Всё получилось!
люблю этот сайт
|
| |
|
|
| [[[WampiR]]] | Дата: Пятница, 19.04.2013, 12:00 | Сообщение # 429 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 202
Награды: 2
Город: Омск
Репутация: -22
Замечания: 20%
Статус: 
| Ну подскажите тут не как нельзя сделать чтобы выкидывало только с тех машин для которых требуется ключ? [pwn]1 2 3 4 5 6 7 8 9 10 11 12 13 if(PlayerInfo[playerid][pCarKey] != vehicleid) { if(PlayerInfo[playerid][pAdmin] > 0) { SendClientMessage(playerid,COLOR_LIGHTGREEN,"(( Т.к. вы админ, вы можете ехать на авто! ))"); } else { SendClientMessage(playerid,COLOR_LIGHTGREEN,"Нет ключа от автомобиля!"); RemovePlayerFromVehicle(playerid); TogglePlayerControllable(playerid, 1); } }[/pwn]
|
| |
|
|
| Weddew | Дата: Пятница, 19.04.2013, 12:14 | Сообщение # 430 |
|
Группа:
Ангел Хранитель
Сообщений: 1251
Награды: 19
Город: Казань
Репутация: 1740
Замечания: 0%
Статус: 
| Цитата (|||WampiR|||) Ну подскажите тут не как нельзя сделать чтобы выкидывало только с тех машин для которых требуется ключ? Смотря что храниться в элементе pCarKey. Если храниться ID транспорта, то условие должно быть следующим: [pwn]public OnPlayerStateChange(playerid, newstate, oldstate) { if(newstate == PLAYER_STATE_DRIVER) { if(PlayerInfo[playerid][pCarKey] != vehicleid && PlayerInfo[playerid][pCarKey2] != vehicleid) { // Действие, которое будем совершать с игроком. } } return true; }[/pwn]
www.weddew-shop.ru
|
| |
|
|
| Nikita01041997 | Дата: Пятница, 19.04.2013, 12:14 | Сообщение # 431 |
|
Новенький
Группа:
Пользователи
Сообщений: 74
Награды: 0
Город: Алейск
Репутация: -37
Замечания: 0%
Статус: 
| Цитата (|||WampiR|||) выкидывало только с тех машин для которых требуется ключ? вот это вставь: [pwn]if(newcar >= "переменная для машины" && newcar <= "переменная для машины") { }[/pwn]
люблю этот сайт
|
| |
|
|
| Weddew | Дата: Пятница, 19.04.2013, 12:36 | Сообщение # 432 |
|
Группа:
Ангел Хранитель
Сообщений: 1251
Награды: 19
Город: Казань
Репутация: 1740
Замечания: 0%
Статус: 
| Цитата (|||WampiR|||) Ну подскажите тут не как нельзя сделать чтобы выкидывало только с тех машин для которых требуется ключ? Прочитал внимательнее, тут есть несколько вариантов: 1) Ограничить ID`ы транспорта, т. е. проверку делать в пределах ID`ов с ключами. (Вариант не оптимальный). Пример: [pwn]public OnPlayerStateChange(playerid, newstate, oldstate) { if(newstate == PLAYER_STATE_DRIVER) { new vehicleid = GetPlayerVehicleID(playerid); if(vehicleid >= Начало границы && vehicleid <= Конец границы) { if(PlayerInfo[playerid][pCarKey] != vehicleid && PlayerInfo[playerid][pCarKey2] != vehicleid) { // Действие, которое будем совершать с игроком. } } } return true; }[/pwn] 2) Объявить массив для всех транспортов, который будет указывать, требуется ли ключ для данного авто или нет. (Самый оптимальный вариант на мой взгляд). Пример:
В начало: [pwn]new lockedvehicle[MAX_VEHICLES];[/pwn]
В то место, где происходит подгрузка личного транспорта: [pwn]new tmpvehicle = CreateVehicle(...); lockedvehicle[tmpvehicle] = true;[/pwn]
Сама проверка: [pwn]public OnPlayerStateChange(playerid, newstate, oldstate) { if(newstate == PLAYER_STATE_DRIVER) { new vehicleid = GetPlayerVehicleID(playerid); if(lockedvehicle[vehicleid] && PlayerInfo[playerid][pCarKey] != vehicleid && PlayerInfo[playerid][pCarKey2] != vehicleid) { // Действие, которое будем совершать с игроком. } } return true; }[/pwn]
www.weddew-shop.ru
|
| |
|
|
| Anthony | Дата: Пятница, 19.04.2013, 13:17 | Сообщение # 433 |
|
Уверенный в себе
Группа:
Publishers
Сообщений: 211
Награды: 4
Замечания: 0%
Статус: 
| Цитата (Weddew) Удаление по окончанию движения нужно делать в callback`e OnObjectMoved. В общем не вышло с этим, наверно из за того что объект создается при вводе команды и сразу начинает двигаться "object1". Можно ли сделать проверку на то что объект находиться рядом другого?Добавлено (19.04.2013, 13:17) --------------------------------------------- [off]рядом другого объекта[/off]
|
| |
|
|
| Weddew | Дата: Пятница, 19.04.2013, 13:17 | Сообщение # 434 |
|
Группа:
Ангел Хранитель
Сообщений: 1251
Награды: 19
Город: Казань
Репутация: 1740
Замечания: 0%
Статус: 
| Цитата (Vsevolod) В общем не вышло с этим, наверно из за того что объект создается при вводе команды и сразу начинает двигаться "object1". Объект случайно не динамический?
www.weddew-shop.ru
|
| |
|
|
| [[[WampiR]]] | Дата: Пятница, 19.04.2013, 14:03 | Сообщение # 435 |
|
Уверенный в себе
Группа:
Продвинутые
Сообщений: 202
Награды: 2
Город: Омск
Репутация: -22
Замечания: 20%
Статус: 
| Почему в SAMP'E некоторые буквы вообще поидеи английские а их показывает по русски? Чаще всего первая буква предложения.
|
| |
|
|
|
 |
|
 | |
| |
|