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

 



 
          





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





Последние Файлы 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
artemganin1999Дата: Суббота, 07.09.2013, 13:01 | Сообщение # 1546
Уверенный в себе
Группа: Пользователи
Сообщений: 184
Награды: 0
Репутация: -28
Замечания: 0%
Статус:
большое спасибо, ну и заодно вопросик, у меня в моде давно стоит античит на тюнинг кара через собейт, я попробывал на улице затюнить все нормально тюнится,не кикает
[pwn] if(GetPlayerInterior(playerid) == 0)
{
SendClientMessage(playerid,COLOR_RED,"Вы были кикнуты за тюнинг кара через собейт.");
Kick(playerid);
}[/pwn] if(GetPlayerInterior(playerid) == 0)
это у меня стоит в public OnVehicleMod(playerid,vehicleid,componentid)

GeryyДата: Суббота, 07.09.2013, 13:22 | Сообщение # 1547
Советчик
Группа: Ангел Хранитель
Сообщений: 1187
Награды: 24
Город: Москва
Репутация: 785
Замечания: 0%
Статус:
Цитата (artemganin1999)
у меня в моде давно стоит античит на тюнинг кара через собейт, я попробывал на улице затюнить все нормально тюнится,не кикает

[pwn]
public OnVehicleMod(playerid, vehicleid, componentid)
{
if(GetPlayerInterior(playerid) == 0)
{
RemoveVehicleComponent(vehicleid,componentid);
}
return 1;
}[/pwn]



Добавить SAMP сервер в спец. вкладку HOSTED 450-500 р.
artemganin1999Дата: Воскресенье, 08.09.2013, 11:19 | Сообщение # 1548
Уверенный в себе
Группа: Пользователи
Сообщений: 184
Награды: 0
Репутация: -28
Замечания: 0%
Статус:
В общем я хз почему, все должно работать, администратор запускает cs зону, и когда человек входит в зону (/incs) у него в любой каманде (синих и красных) выполняется
Код
CSPlayers += 1;

И есть команда /killme когда игрок остается один он должен набрать и его объявят победителем, но проблема в том что, даже если на зоне человек 2,10 и т.п. он ее набирает и его объявляет победителем
[pwn] if(strcmp(string, "/killme", true) == 0)
{
if(NaCS[playerid] == 0) return SendClientMessage(playerid, COLOR_RED, "Вы не на КС зоне!");
if(CSPlayers == 1) return SendClientMessage(playerid,COLOR_RED,"Вы ещё не одни в зоне!");
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, 256, "Region73: Зона окончена, победил: %s!",sendername);
SendClientMessageToAll(COLOR_LIGHTBLUE, string);
SetPlayerHealth(playerid, 0);
return true;
} [/pwn]

GeryyДата: Воскресенье, 08.09.2013, 11:41 | Сообщение # 1549
Советчик
Группа: Ангел Хранитель
Сообщений: 1187
Награды: 24
Город: Москва
Репутация: 785
Замечания: 0%
Статус:
artemganin1999,
Проблема в том, что условие if(CSPlayers == 1) не выполняется.
Переменная CSPlayers ++; должна не только увеличиваться при входе игрока на CS, но и уменьшаться при выходе/дисконнекте CSPlayers --;



Добавить SAMP сервер в спец. вкладку HOSTED 450-500 р.

Сообщение отредактировал Geryy - Воскресенье, 08.09.2013, 11:41
artemganin1999Дата: Воскресенье, 08.09.2013, 14:33 | Сообщение # 1550
Уверенный в себе
Группа: Пользователи
Сообщений: 184
Награды: 0
Репутация: -28
Замечания: 0%
Статус:
и как это поправить (
GeryyДата: Воскресенье, 08.09.2013, 15:48 | Сообщение # 1551
Советчик
Группа: Ангел Хранитель
Сообщений: 1187
Награды: 24
Город: Москва
Репутация: 785
Замечания: 0%
Статус:
Цитата (artemganin1999)
и как это поправить (

Для начала изменить условие:

[pwn]

if(strcmp(string, "/killme", true) == 0)
{
if(NaCS[playerid] == 0) return SendClientMessage(playerid, COLOR_RED, "Вы не на КС зоне!");
if(CSPlayers == 1)
{
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string, 256, "Region73: Зона окончена, победил: %s!",sendername);
SendClientMessageToAll(COLOR_LIGHTBLUE, string);
SetPlayerHealth(playerid, 0);
}
return true;
}
[/pwn]

Вобще завершение зоны по команде игрока это глупо, лучше сделать это все автоматически используя OnPlayerDeath



Добавить SAMP сервер в спец. вкладку HOSTED 450-500 р.

Сообщение отредактировал Geryy - Воскресенье, 08.09.2013, 15:52
artemganin1999Дата: Вторник, 10.09.2013, 15:27 | Сообщение # 1552
Уверенный в себе
Группа: Пользователи
Сообщений: 184
Награды: 0
Репутация: -28
Замечания: 0%
Статус:
а вот возможно следующие, вот я использую диалог для хилки
[pwn] if(dialogid == 2626)
{
if(response)
{
PlayerInfo[playerid][pMoney] -= 500;
SetPlayerHealth(playerid, 100.0);
SendClientMessage(playerid, COLOR_GREEN, "Вы успешно похилились.");
}
else
{
SetPlayerPos(playerid,1461.0078,2767.1785,10.8203);
SendClientMessage(playerid, COLOR_RED, "Вы отменили хилку.");
}
}[/pwn]
но делать для каждой фракции диалог с разной SetPlayerPos не удобно, можно как нибудь сделать чтобы просто его телепортровало рядом к тому месту где он был

Добавлено (10.09.2013, 12:20)
---------------------------------------------
сам разобрался

Добавлено (10.09.2013, 15:27)
---------------------------------------------
а как сделать чтобы ник скрывался нормально, то есть вот допустим у меня стоит
[pwn] if(listitem == 0)
{
foreach(Player,i)
{
if(IsPlayerConnected(i))
{
ShowPlayerNameTagForPlayer(i, playerid, 0);
}
}
SetPlayerSkin(playerid,29);
PlayerInfo[playerid][pMaskuse] = 1;
format(string, sizeof(string), "Íåèçâåñòíûé íàäåë ìàñêèðîâêó.");
ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
}[/pwn]
а когда этот игрок заходит и выходит из здания то ник опять виден

SaibotДата: Вторник, 10.09.2013, 15:41 | Сообщение # 1553
Освоившийся
Группа: Продвинутые
Сообщений: 112
Награды: 0
Репутация: 34
Замечания: 0%
Статус:
artemganin1999,

Попробуй так. Вставь это в конец мода:

Код

Tomas_ReedДата: Четверг, 12.09.2013, 15:09 | Сообщение # 1554
Новенький
Группа: Пользователи
Сообщений: 8
Награды: 0
Город: *LVIV*
Репутация: 0
Замечания: 0%
Статус:
Всем привет, обьясните нубу как запихнуть всё это в .so, если кто может, запихните и скиньте ссылочку, буду очень благодарен :)
(Просто в комплекте с серваком был только .dll, а мне нужен линуксовский, вот нашёл его клона для запихивания, хееелп)

artemganin1999Дата: Четверг, 12.09.2013, 21:59 | Сообщение # 1555
Уверенный в себе
Группа: Пользователи
Сообщений: 184
Награды: 0
Репутация: -28
Замечания: 0%
Статус:
Как правильно написать команду для отправки пароля на mail ? Пробывал
[pwn] if(strcmp(string, "/команда",true) == 0)
{
SendClientMessage(playerid,COLOR_LIGHTBLUE,"Пароль был выслан на указанный Mail");
format(string,sizeof(string),"Ваш текущий пароль: %s",pKey);
SendMail(pMail,"admin@rpg.ru","Восстановление пароля",string);
return true;
}[/pwn]
выводит сообщение пароль выслан, и выдает Uknow comand, а на мыло присылается заместо пароля .000

SolitarioniДата: Четверг, 12.09.2013, 22:09 | Сообщение # 1556
Постоялец
Группа: I'm V.I.P.
Сообщений: 350
Награды: 12
Город: Ростов-на-Дону
Репутация: 198
Замечания: 0%
Статус:
Подскажите анимацию, чтобы посадить игрока на стул. Анимации сиденья из библиотеки FOOD погружаются на половину под землю. Так же если игрока поставить на стул и включить анимацию, он хоть и погрузиться в стул, но недостаточно силоно. Вообщем как посадить игрока на стул? Эксперементировал с TogglePlayerControllable, всеравно нечего не получилось.






Справочник стандартных функций:

a_vehicles
file.inc
a_sampdb.inc
a_samp callbacks
a_players.inc
a_objects.inc
4o_kavoДата: Пятница, 13.09.2013, 11:50 | Сообщение # 1557
Постоялец
Группа: I'm V.I.P.
Сообщений: 354
Награды: 2
Город: Красноярск
Репутация: 216
Замечания: 0%
Статус:
Как все это вписать в мод? кто сможет подробно объямнить какие строки и куда нужно прописывать?

Код
/*
              Prohibido TOTALMENTE el Robo de Créditos o la
             Publicación de este FILTERSCRIPT sin Mi Permiso.

         SIMPLE FILTERSCRIPT --> Flatulencias en SA-MP 'Troll'
         CREDITOS: OTACON <img rel="usm" src="http://www.samp-rus.com/Smiles_for_forum/wink.gif" border="0" align="absmiddle" alt=";)" />
         NOTA: Menos Creditos para los que me los critican.. JO'PUTAS! <img rel="usm" src="http://www.samp-rus.com/Smiles_for_forum/lol.gif" border="0" align="absmiddle" alt=":D" /> xD <img rel="usm" src="http://www.samp-rus.com/Smiles_for_forum/wink.gif" border="0" align="absmiddle" alt=";)" />
*/
#include <a_samp>
#include <zcmd>

new MatarFlatulencia[MAX_PLAYERS][2];
new FlatulenciaTroll[MAX_PLAYERS][2];
#define EfectoPedo (18687)
#define EfectoEructo (18729)

public OnFilterScriptInit() {
         print("\n**************************************");
         print("      Flatulencias en SA-MP 'Troll'     ");
         print("           Fecha: 12/07/2013            ");
         print("             Autor: OTACON              ");
         print("      --* Cargado con Exito!!. *--      ");
         print("***************************************\n");
         return true;
}
public OnFilterScriptExit() {
         print("\n**************************************");
         print("      Flatulencias en SA-MP 'Troll'     ");
         print("           Fecha: 12/07/2013            ");
         print("             Autor: OTACON              ");
         print("    --* Descargado con Exito!!. *--     ");
         print("***************************************\n");
         return true;
}
COMMAND:pedo(playerid, params[]) {
     if(!IsPlayerConnected(playerid) || GetPlayerState(playerid)!=PLAYER_STATE_ONFOOT) return true;
     new Float:pos[3];
         GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
         DestroyObject(FlatulenciaTroll[playerid][0]);
         FlatulenciaTroll[playerid][0]=CreateObject(EfectoPedo, pos[0], pos[1], pos[2], 0.000, 0.000, 0.000);
         AttachObjectToPlayer(FlatulenciaTroll[playerid][0], playerid, 0.0, 0.0, -1.9, 0.0, 0.0, 180.0);
     PlayAudioStreamForPlayerEx(playerid, 8.0, "http://www.sonidosmp3gratis.com/sounds/los-frijoles_1.mp3");
     KillTimer(MatarFlatulencia[playerid][0]);
         MatarFlatulencia[playerid][0]=SetTimerEx("MatarFlatulencia_1", 1000, false, "d", playerid);
     return true;
}
COMMAND:eructo(playerid, params[]) {
     if(!IsPlayerConnected(playerid) || GetPlayerState(playerid)!=PLAYER_STATE_ONFOOT) return true;
     new Float:pos[3];
         GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
         DestroyObject(FlatulenciaTroll[playerid][1]);
         FlatulenciaTroll[playerid][1]=CreateObject(EfectoEructo, pos[0], pos[1], pos[2], 0.000, 0.000, 0.000);
         AttachObjectToPlayer(FlatulenciaTroll[playerid][1], playerid, 0.0, 0.0, -0.9, 0.0, 0.0, 360.0);
         PlayAudioStreamForPlayerEx(playerid, 8.0, "http://www.sonidosmp3gratis.com/sounds/burp3.mp3");
         KillTimer(MatarFlatulencia[playerid][1]);
         MatarFlatulencia[playerid][1]=SetTimerEx("MatarFlatulencia_2", 1000, false, "d", playerid);
     return true;
}
forward MatarFlatulencia_1(playerid);
public MatarFlatulencia_1(playerid) {
KillTimer(MatarFlatulencia[playerid][0]);
DestroyObject(FlatulenciaTroll[playerid][0]); }
forward MatarFlatulencia_2(playerid);
public MatarFlatulencia_2(playerid) {
KillTimer(MatarFlatulencia[playerid][1]);
DestroyObject(FlatulenciaTroll[playerid][1]); }
/*
              Prohibido TOTALMENTE el Robo de Créditos o la
             Publicación de este FILTERSCRIPT sin Mi Permiso.

         SIMPLE FILTERSCRIPT --> Flatulencias en SA-MP 'Troll'
         CREDITOS: OTACON <img rel="usm" src="http://www.samp-rus.com/Smiles_for_forum/wink.gif" border="0" align="absmiddle" alt=";)" />
         NOTA: Menos Creditos para los que me los critican.. JO'PUTAS! <img rel="usm" src="http://www.samp-rus.com/Smiles_for_forum/lol.gif" border="0" align="absmiddle" alt=":D" /> xD <img rel="usm" src="http://www.samp-rus.com/Smiles_for_forum/wink.gif" border="0" align="absmiddle" alt=";)" />
*/
stock PlayAudioStreamForPlayerEx(playerid, Float:Distancia, url[]) { //By OTACON
     new Float:Pos[3];
     GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
     if(IsPlayerConnected(playerid)) {
         StopAudioStreamForPlayer(playerid);
         PlayAudioStreamForPlayer(playerid, url, Pos[0], Pos[1], Pos[2]);
             for(new player=0; player<GetMaxPlayers(); player++) {
             if(!IsPlayerConnected(player)) continue;
             if(GetPlayerInterior(playerid) == GetPlayerInterior(player) && GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(player)) {
                         if(IsPlayerConnected(player) && (player != playerid) && IsPlayerStreamedIn(playerid,player)) {
                         if(IsPlayerInRangeOfPoint(player, Distancia, Pos[0], Pos[1], Pos[2])) {
                         StopAudioStreamForPlayer(player);
                         PlayAudioStreamForPlayer(player, url, Pos[0], Pos[1], Pos[2]);
                         }
                             }
                 }
         }
     }
     return true;
}
/*
              Prohibido TOTALMENTE el Robo de Créditos o la
             Publicación de este FILTERSCRIPT sin Mi Permiso.

         SIMPLE FILTERSCRIPT --> Flatulencias en SA-MP 'Troll'
         CREDITOS: OTACON <img rel="usm" src="http://www.samp-rus.com/Smiles_for_forum/wink.gif" border="0" align="absmiddle" alt=";)" />
         NOTA: Menos Creditos para los que me los critican.. JO'PUTAS! <img rel="usm" src="http://www.samp-rus.com/Smiles_for_forum/lol.gif" border="0" align="absmiddle" alt=":D" /> xD <img rel="usm" src="http://www.samp-rus.com/Smiles_for_forum/wink.gif" border="0" align="absmiddle" alt=";)" />
*/



-=»>Русский Дрифт Серввер «<=- IP: 176.32.36.131:7777

GTA-Rus.com - Grand Theft Auto
WeddewДата: Пятница, 13.09.2013, 18:23 | Сообщение # 1558
Группа: Ангел Хранитель
Сообщений: 1251
Награды: 19
Город: Казань
Репутация: 1740
Замечания: 0%
Статус:
4o_kavo,
Цитата (Weddew)
[ Краткая инструкция для вшивания 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`ов Вы не обнаружили кода, то переходите к следующему пункту инструкции.




www.weddew-shop.ru
artemganin1999Дата: Пятница, 13.09.2013, 20:50 | Сообщение # 1559
Уверенный в себе
Группа: Пользователи
Сообщений: 184
Награды: 0
Репутация: -28
Замечания: 0%
Статус:
Цитата (artemganin1999)
Как правильно написать команду для отправки пароля на mail ? Пробывал

up

Добавлено (13.09.2013, 20:50)
---------------------------------------------
так
[pwn]if(strcmp(string, "/команда",true) == 0)
{
SendClientMessage(playerid,COLOR_LIGHTBLUE,"Пароль был выслан на указанный Mail");
format(string,sizeof(string),"Ваш текущий пароль: %s",pKey);
SendMail(pMail,"admin@rpg.ru","Восстановление пароля",string);
return true;
}[/pwn]

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

Файл с расширением so - библиотека семейства ОС Linux.
В статье, ссылку на которую вы указали, указаны функции по работе с файлами. Также там есть описание каждой функции.

Добавлено (13.09.2013, 22:09)
---------------------------------------------
Lonely_Tramp, попробуйте поэксперементировать с координатами, а именно с координатой Z (высота).



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





 


 


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