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

 



 
        
[SA-MP] Hosted Tab (116)
DieSeL 17.05.2017 17:33
Физрук (15)
Lanablogger1 16.05.2017 16:00
 





Рекомендуем:
Добавить IP: 95.172.59.51:7777





Последние Файлы 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
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
Скачать GTA SAMP 0.3.7 - Кл... 20.07.2015
Страница 56 из 152«125455565758151152»
Модератор форума: AXE, Weddew 
Форум SAMP о мультиплеерах для GTA. » SAMP скачивание и обсуждение » Вопросы и Проблемы » Вопросы и ответы по GTA SAMP [от 19.03.2013]
Вопросы и ответы по GTA SAMP [от 19.03.2013]
WeddewДата: Вторник, 19.03.2013, 15:11 | Сообщение # 1
Группа: Ангел Хранитель
Сообщений: 1242
Награды: 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
Nikita01041997Дата: Пятница, 24.05.2013, 10:33 | Сообщение # 826
Новенький
Группа: Пользователи
Сообщений: 74
Награды: 0
Город: Алейск
Репутация: -37
Замечания: 0%
Статус:
Великс, вот держимод!!!


люблю этот сайт
GeryyДата: Пятница, 24.05.2013, 14:52 | Сообщение # 827
Советчик
Группа: Ангел Хранитель
Сообщений: 1187
Награды: 24
Город: Москва
Репутация: 785
Замечания: 0%
Статус:
Цитата (Nikita01041997)
сначала деньги снимаются и через секунду они возвращаются! Что делать? Если надо мод залью!

Пробуй так: GiveMoney(playerid, -150);



Добавить SAMP сервер в спец. вкладку HOSTED 450-500 р.
Fen1ksДата: Пятница, 24.05.2013, 15:16 | Сообщение # 828
Новенький
Группа: Пользователи
Сообщений: 26
Награды: 0
Репутация: 0
Замечания: 0%
Статус:
Как это делать? Когда игрок написал /bb ему вышло сообщение что его кикнуло, а сам кик был через 2 сек.
GeryyДата: Пятница, 24.05.2013, 15:23 | Сообщение # 829
Советчик
Группа: Ангел Хранитель
Сообщений: 1187
Награды: 24
Город: Москва
Репутация: 785
Замечания: 0%
Статус:
Цитата (Fen1ks)
Как это делать? Когда игрок написал /bb ему вышло сообщение что его кикнуло, а сам кик был через 2 сек.

В команду /bb добавить:

SendClientMessage(playerid,0x0FFDD349, "Тебя кикнули!");
SetTimerEx("KickBB", 2000, 0, "i", playerid);

Можно в конец мода:

forward KickBB(playerid);
public KickBB(playerid)
{
Kick(playerid);
}



Добавить SAMP сервер в спец. вкладку HOSTED 450-500 р.
ClydeWДата: Пятница, 24.05.2013, 15:24 | Сообщение # 830
Новенький
Группа: Пользователи
Сообщений: 3
Награды: 0
Репутация: 0
Замечания: 0%
Статус:
Подскажите пожалуйста, как убрать быстрое отнимание ХП ну или сделать что бы по медленее отнималось,прошу помощи
Мод - GF

GeryyДата: Пятница, 24.05.2013, 15:28 | Сообщение # 831
Советчик
Группа: Ангел Хранитель
Сообщений: 1187
Награды: 24
Город: Москва
Репутация: 785
Замечания: 0%
Статус:
ClydeW, что значит быстрое отнимание ХП, в каком случае? Выложи код или мод или хоть что-то...


Добавить SAMP сервер в спец. вкладку HOSTED 450-500 р.
ClydeWДата: Пятница, 24.05.2013, 15:33 | Сообщение # 832
Новенький
Группа: Пользователи
Сообщений: 3
Награды: 0
Репутация: 0
Замечания: 0%
Статус:
Geryy, ну типо голод,но только как то очень уж быстро здоровье отнимается),помоему надо найти какой то таймер отнимание ХП(здоровья) ,но искал искал так и не нашёл(((
GeryyДата: Пятница, 24.05.2013, 15:39 | Сообщение # 833
Советчик
Группа: Ангел Хранитель
Сообщений: 1187
Награды: 24
Город: Москва
Репутация: 785
Замечания: 0%
Статус:
Выкладывай мод, посмотрим.


Добавить SAMP сервер в спец. вкладку HOSTED 450-500 р.
Nikita01041997Дата: Пятница, 24.05.2013, 17:33 | Сообщение # 834
Новенький
Группа: Пользователи
Сообщений: 74
Награды: 0
Город: Алейск
Репутация: -37
Замечания: 0%
Статус:
Geryy, К сожалению не получилось, может вы посмотрите анти-чит???
[cut noguest=анти-чит]
Код
public GetMoney()
{
     for(new i = 0; i < MAX_PLAYERS; i++)
     {
         if(IsPlayerConnected(i))
        {
   new money = GetPlayerMoney(i);
  if(PlayerInfo[i][pCash] < money) // условие: если у игрока денег выданных сервером больше чем игровых.
          {
   ResetPlayerMoney(i);
     GivePlayerMoney(i, PlayerInfo[i][pCash]);
       }
          else if(PlayerInfo[i][pCash] > money) // условие: если игровых денег у игрока больше чем выданных сервером.
        {
         ResetPlayerMoney(i);
     GivePlayerMoney(i, PlayerInfo[i][pCash]);
      }
   }
  }
  return ;
}
[/cut]



люблю этот сайт
WeddewДата: Пятница, 24.05.2013, 18:30 | Сообщение # 835
Группа: Ангел Хранитель
Сообщений: 1242
Награды: 19
Город: Казань
Репутация: 1740
Замечания: 0%
Статус:
Nikita01041997, отнимайте деньги следующим образом:
[pwn]PlayerInfo[playerid][pCash]-=150;[/pwn]




www.weddew-shop.ru
Nikita01041997Дата: Пятница, 24.05.2013, 20:48 | Сообщение # 836
Новенький
Группа: Пользователи
Сообщений: 74
Награды: 0
Город: Алейск
Репутация: -37
Замечания: 0%
Статус:
Да это без разницы, дело в том что у меня все деньги которые отнимаются они возвращаются!


люблю этот сайт
BorogДата: Пятница, 24.05.2013, 21:36 | Сообщение # 837
Долгожитель
Группа: I'm V.I.P.
Сообщений: 1362
Награды: 43
Город: Москва
Репутация: 1249
Замечания: 20%
Статус:
Weddew, у него ж проверка на эту переменную стоит. Нужно комбинировать:
GivePlayerMoney(playerid, -150);
PlayerInfo[playerid][pCash]-=150;
А лучше создать фунцию и использовать ее вместо GivePlayerMoney, например:
MyGivePlayerMoney(playerid, money)
{
GivePlayerMoney(playerid, money);
PlayerInfo[playerid][pCash]+=money;
}



Silver Break
http://s-break.ru/
http://vk.com/sbreak
Nikita01041997Дата: Пятница, 24.05.2013, 22:11 | Сообщение # 838
Новенький
Группа: Пользователи
Сообщений: 74
Награды: 0
Город: Алейск
Репутация: -37
Замечания: 0%
Статус:
Я сделал так
Код
public GetMoney()
{
      for(new i = 0; i < MAX_PLAYERS; i++)
      {
          if(IsPlayerConnected(i))
         {
    new money = GetPlayerMoney(i);
   if(PlayerInfo[i][pCash] -= money)
         {
         ResetPlayerMoney(i);
         GivePlayerMoney(i, PlayerInfo[i][pCash]);
         }
   else if(PlayerInfo[i][pCash] += money)
         {
          ResetPlayerMoney(i);
          GivePlayerMoney(i, PlayerInfo[i][pCash]);
         }
    }
   }
   return ;
}

И у меня теперь стали деньги сколько отнимается столько и ставится!!!! Что я сделал не так???



люблю этот сайт
SAMP---RUSДата: Пятница, 24.05.2013, 22:14 | Сообщение # 839
Новенький
Группа: Пользователи
Сообщений: 29
Награды: 0
Город: stavropol
Репутация: -16
Замечания: 0%
Статус:
Цитата (SAMP---RUS)
Помогите не компилится
Код
/OnDialog[playerid]=0;
  //äëÿ ëè÷êè íà÷àëî
else if(dialogid == 10012)
{
//------------------------------------------------------------------------------
if(response)

if(!strlen(inputtext))
{
if(listitem == 0)

    {
     new strnam[255];
        format(strnam,sizeof(strnam),"личка для%s(%d)",PlayerName(PM[playerid]),PM[playerid]);
        OnDialog[playerid]=1;
     return ShowPlayerDialog(playerid,0,DIALOG_STYLE_INPUT,strnam,"ввод сообщения.......................................................................\n","отправить","выход");
    }

    SetPlayerSpecialAction(playerid,SPECIAL_ACTION_NONE);
    new id=PM[playerid];
    if(id==playerid) return 1;
    new strMy[255];
    format(strMy, sizeof(strMy), " от %s для %s: %s",PlayerName(playerid),PlayerName(id),inputtext);
    Logs(4,strMy);

вот ошибки
Код
C:\Users\Àäìèíèñòðàòîð\Desktop\Íîâàÿ ïàïêà\CityLife2.0.3\lvdmMM - êîïèÿ.pwn(6363) : warning 217: loose indentation
C:\Users\Àäìèíèñòðàòîð\Desktop\Íîâàÿ ïàïêà\CityLife2.0.3\lvdmMM - êîïèÿ.pwn(6378) : warning 217: loose indentation
C:\Users\Àäìèíèñòðàòîð\Desktop\Íîâàÿ ïàïêà\CityLife2.0.3\lvdmMM - êîïèÿ.pwn(7162) : error 029: invalid expression, assumed zero
C:\Users\Àäìèíèñòðàòîð\Desktop\Íîâàÿ ïàïêà\CityLife2.0.3\lvdmMM - êîïèÿ.pwn(7162) : warning 215: expression has no effect
C:\Users\Àäìèíèñòðàòîð\Desktop\Íîâàÿ ïàïêà\CityLife2.0.3\lvdmMM - êîïèÿ.pwn(7162) : error 001: expected token: ";", but found "if"
C:\Users\Àäìèíèñòðàòîð\Desktop\Íîâàÿ ïàïêà\CityLife2.0.3\lvdmMM - êîïèÿ.pwn(7178) : warning 217: loose indentation
C:\Users\Àäìèíèñòðàòîð\Desktop\Íîâàÿ ïàïêà\CityLife2.0.3\lvdmMM - êîïèÿ.pwn(7274) : warning 217: loose indentation
C:\Users\Àäìèíèñòðàòîð\Desktop\Íîâàÿ ïàïêà\CityLife2.0.3\lvdmMM - êîïèÿ.pwn(18791) : warning 217: loose indentation
C:\Users\Àäìèíèñòðàòîð\Desktop\Íîâàÿ ïàïêà\CityLife2.0.3\lvdmMM - êîïèÿ.pwn(21040) : warning 213: tag mismatch
C:\Users\Àäìèíèñòðàòîð\Desktop\Íîâàÿ ïàïêà\CityLife2.0.3\lvdmMM - êîïèÿ.pwn(23322) : warning 203: symbol is never used: "ST"
C:\Users\Àäìèíèñòðàòîð\Desktop\Íîâàÿ ïàïêà\CityLife2.0.3\lvdmMM - êîïèÿ.pwn(23322) : warning 203: symbol is never used: "spedom"
Pawn compiler 3.2.3664     Copyright © 1997-2006, ITB CompuPhase

FiLEДата: Суббота, 25.05.2013, 00:42 | Сообщение # 840
Группа: Разработчики
Сообщений: 679
Награды: 70
Город: Днепропетровск
Замечания: 0%
Статус:
SAMP---RUS, выдели красным на какой конкретно строчке ошибка. Кашу-малашу, да еще цитатой написал, ужас...

Добавлено (25.05.2013, 00:42)
---------------------------------------------
Nikita01041997, вопрос на засыпку, где вызывается паблик: GetMoney(); ? У тебя какой-то сложный античит:)

Как вариант могу предложить следующие действия:
1. Удалить паблик, форвард GetMoney(), убрать его из паблика таймера.
2. Добавить в конец мода следующее:

Код

forward ReloadPlayerMoney(playerid);
public ReloadPlayerMoney(playerid)
{
  if (!IsPlayerConnected(playerid)) return 1;
  ResetPlayerMoney(playerid);
  GivePlayerMoney(playerid,PlayerInfo[playerid][pCash]);
  return 1;
}
forward Checkkk();
public Checkkk()
{
  for(new i=0; i<MAX_PLAYERS; i++) ReloadPlayerMoney(i);
         return 1;
}

3. В паблике OnGameModeInit() где-то вставь строчку: SetTimer("Checkkk",1000,1);

Чтобы отнять или прибавить игроку деньги: PlayerInfo[playerid][pCash] += цифра; или PlayerInfo[playerid][pCash] += цифра;
По идее должно работать.
Да, и если соображаешь в коде, то можно оптимизировать код, можно отдельно паблик для таймера и таймер не создавать. А всунуть уже где-то в существующий.
Дерзай.




Форум SAMP о мультиплеерах для GTA. » SAMP скачивание и обсуждение » Вопросы и Проблемы » Вопросы и ответы по GTA SAMP [от 19.03.2013]
Страница 56 из 152«125455565758151152»
Поиск:





 


 


 
Хостинг от uCoz SAMP-RUS.COM