10:53
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
Модератор форума: AXE, Weddew  
Вопросы и ответы по 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, неплохо выпендрился! Laie_98
Но речь идет не об оптимизации сейчас! Я просто привел пример!

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 не спасает от рандомного взрыва машины crazy Как её сделать совсем неуязвимой?
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)
---------------------------------------------
Личное авто не пропадает когда ты выходишь с сервера, а когда заходишь появляется новое, второе, ещё раз перезайдёшь третье появляется и т.д Помогите где искать эту проблему и как примерно её решить можно..... suicide2

Добавлено (09.03.2014, 16:24)
---------------------------------------------
Личное авто не пропадает когда ты выходишь с сервера, а когда заходишь появляется новое, второе, ещё раз перезайдёшь третье появляется и т.д Помогите где искать эту проблему и как примерно её решить можно.... suicide2 suicide2 suicide2 suicide2

Добавлено (09.03.2014, 18:45)
---------------------------------------------
suicide2 suicide2 wall

WeddewДата: Воскресенье, 09.03.2014, 19:14 | Сообщение # 1980
Группа: Ангел Хранитель
Сообщений: 1251
Награды: 19
Город: Казань
Репутация: 1740
Замечания: 0%
Статус:
Цитата slamboy2012 ()
Личное авто не пропадает когда ты выходишь с сервера, а когда заходишь появляется новое, второе, ещё раз перезайдёшь третье появляется и т.д Помогите где искать эту проблему и как примерно её решить можно....

Удаление транспорта выполняется функцией
[pwn]DestroyVehicle(vehicleid);[/pwn]
вместо vehicle - переменная с ID`ом транспорта.
Функцию в вашем случае необходимо вызывать в OnPlayerDisconnect(playerid);




www.weddew-shop.ru
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua