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

 



 
          





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





Последние Файлы 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
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: Dima-kun  
Функции,макросы,массивы
Fus1Дата: Пятница, 23.09.2011, 01:11 | Сообщение # 1
Группа: Продвинутые
Сообщений: 2704
Награды: 121
Город: Melbourne Australia
Репутация: 3103
Замечания: 0%
Статус:
Прошу поднять и закрепить тему.

Многие ищут всякие функции для создания сервера и т.д, давайте без оффтопа и флуда, просто выклыдываем свои функции,макросы,массивы или из интернета и пишим для чего они предназначены, это намного облегчит поиск.
Так-же в этой теме предлогаю чтобы любой мог написать функции которая ему нужна (если ещё её не выкладывали) это также позволит пополнять список функций.

Извлекаем левую часть строки в leftside
Code
stock bool: GetLeftString(const string[],const center[],leftside[],sizeof_leftside)
{
    strmid(leftside,string,0,strfind(string,center,true),sizeof_leftside);
    return true;
}


Извлекаем правую часть строки в rightside
Code
stock bool: GetRightString(const string[],const center[],rightside[],sizeof_rightside)
{
    strmid(rightside,string,strfind(string,center,true)+1,strlen(string),sizeof_rightside);
    return true;
}


Записывает в лог русскими буквами (кириллица)
Code
stock fwriteRUS(File:file,string[])
{
       for(new i ; i < strlen(string); i++)
       fputchar(file,string[i],false);
       return 1;
}


Функция дописывает строку string в файл filename
Code
stock WriteLog(string[],filename[])
{
    new File:hFile;
    hFile = fopen(filename, io_append);
    fwriteRUS(hFile, string);
    fclose(hFile);
    return 1;
}

Quote

Например:
WriteLog("Тестируем лог\n","test.log");
В файл с именем "test.log" в скриптфайлах, допишется строка "Тестируем лог"
Если этого файла нет - он автоматически будет создан


Действие '/me'
Code
stock MeAction(playerid,string[],Float:radius)
{
   new p = GetMaxPlayers();
   for(new i; i < p; i++)
   {
       if(IsPlayerNearPlayer(playerid,i,radius))
          SendClientMessage(i,0xC2A2DAAA,string);
   }
   return 1;
}


Возвращает имя игрока
Code
stock FirstName(string[])
{
   new end = strfind(string,"_",true),
   result[MAX_PLAYER_NAME];
   strmid(result,string,0,end,MAX_PLAYER_NAME);
   return result;
}


Возвращает фамилию игрока
Code
stock LastName(string[])
{
   new start = strfind(string,"_",true),
   result[MAX_PLAYER_NAME];
   strmid(result,string,start+1,strlen(string),MAX_PLAYER_NAME);
   return result;
}


Возвращает скорость транспортного средства
Code
stock GetVehicleSpeed(carid)
{
      new Float:Vx,Float:Vy,Float:Vz,Float:rtn;
      GetVehicleVelocity(carid,Vx,Vy,Vz);
      rtn = floatsqroot(Vx*Vx+Vy*Vy+Vz*Vz);
      return floatround(rtn * 100);
}


Узнать наибольшее ИД автомобиля
Code
stock GetMaxVehicleID()
{
   for(new i = 1; i < MAX_VEHICLES; i ++)
   {
       if(GetVehicleModel(i) < 400 || GetVehicleModel(i) > 611)
       return i-1;
   }
   return MAX_VEHICLES;
}



Сообщение отредактировал Fus1 - Пятница, 23.09.2011, 01:11
psychoДата: Пятница, 09.12.2011, 19:23 | Сообщение # 16
16 | 13
Группа: I'm V.I.P.
Сообщений: 327
Награды: 11
Репутация: 645
Замечания: 20%
Статус:
Code
stock SetIntAndPlayerPos(playerid, int, Float:posx, Float:posy, Float:posz)
{
  SetPlayerInterior(playerid, int);
  SetPlayerPos(playerid, posx, posy, posz);
}

Даёт игроку не только позицию,но ещё и инт сразу,удобно юзать. :)

toneysixДата: Воскресенье, 11.12.2011, 15:32 | Сообщение # 17
Джэдай
Группа: I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус:
:: Предистория ::
Когда-то в далеком прошлом я почувствовал острую нехватку функционала стандартных таймеров:
нехватка идентификационного номера таймера в теле функции. Тогда ещё не было никаких Y_LESS'овских решений.
Незадолго до этого я разработал собственное решение, которое решило и упростило задачу в управлении таймерами для меня.
Этот мини-инклуд полностью работает на директивах препроцессора и двух созданных переменных в нем.

:: Функции ::
timerFInit:funcname<interval>[types]({Float,_}:...);
timerInit:funcname<interval>;
timerDestroy:<timerid>;
getWorkTimers();
getCountTimers();

:: Аргументы ::
funcname - Название функции;
interval - Интервал активации таймерной функции;
types - Типы для аргументов таймерной функции:
i\d Десятичное число.
a Массив, где следующий параметр (тип, аргумент) должен указывать на размер массива.
s Строка.
f Вещественное число или число с точкой.
b Булевое значение (false or true);
timerid - Идентификационный номер таймера;

:: Ипользование ::
Создание простых таймерных функций без аргументов осуществляется методом timerInit:
Code
main()
{
       timerInit:testCheck<1000>;    // Создаем обычный таймер с интервалом 1000 миллисекунд.
}

// Создаем вызов таймерной функции, в которой прописываем проверку на удаление таймера через 10 секунд.
timer:testCheck( )
{
       static count;
       if( ++count == 10 ) timerDestroy:<this>;
}

Также, можно присвоить, как и обычным образом какой-либо переменной айди созданного таймера:
Code
new ourTime = timerInit:testCheck<1000>;    // Создаем обычный таймер с интервалом 1000 миллисекунд.
timerDestroy:<ourTime>;    // Уничтожаем таймер сразу после создания.


Теперь создадим таймер с передачей аргументов, с помощью метода timerFInit:

Code
main()
{
       timerFInit:testCheck<1000>[df](10, 15.0);    // Создаем таймер с интервалом 1000 миллисекунд, куда отправляем два аргумента (десятичное число и число с дробью).
}

// Создаем вызов таймерной функции c аргументами, таймер которой будет уничтожаем, если аргумент value будет равен 10.
timerF:testCheck( value, Float: floValue )
{
       if( value == 10 ) timerDestroy:<this>;
}


Функция getWorkTimers() - возвращает текущее количество рабочих таймеров;
Функция getCountTimers() - возвращает количество таймеров, которые были созданы за текущую работу сессии мода;

:: Примечание ::
Для корректного использования данных методов вы должны полностью изменить все таймеры на методы данного инклуда,
в противном случаи правильная работа не гарантируется. Также неизвестный исход с работой в фильтрскриптах, а также их влияния.

:: Скачать ::
Скачать библиотеку упрощенных таймерных функций можно по ссылке - http://solidfiles.com/d/44e1fac553/
Для работы подключите инклуд с помощью директивы препроцессора #include:
#include <timers.inc>
UPD: Убраны повторы в таймерах. Для создания одиночного вызова используйте процедуру в конце функции тела таймера destroyTimer:<this>;



Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru

Сообщение отредактировал toneysix - Воскресенье, 11.12.2011, 16:15
МолорищеДата: Воскресенье, 11.12.2011, 23:52 | Сообщение # 18
Молор
Группа: Продвинутые
Сообщений: 427
Награды: 11
Город: Санкт Петербург
Замечания: 0%
Статус:
Я не понял...
Чем это лучше например SetTimerEx?
По мне ничем...



Мне нечего делать.
toneysixДата: Понедельник, 12.12.2011, 00:05 | Сообщение # 19
Джэдай
Группа: I'm V.I.P.
Сообщений: 1731
Награды: 77
Город: Салават
Репутация: 1825
Замечания: 0%
Статус:
Fiskar чтобы понять суть таких вещей, требуется более активная и широкая работа в данной деятельности. Я все прекрасно расписал и привел примеры, даже написал предысторию, в которой четко и ясно написаны главные причины, поразившие на создание данного инклуда и упростившие мои задачи с работой таймеров в разы, главным преимуществом которой является возможность ликвидации таймера непосредственно в самой функции таймера, единым методом, без создания кучи идентификационных массивов с таймером на каждого игрока, который привязывается к нему, или к какому-то другому действию.
P.S: Для сравнения ещё раз:
Code
new playerTimer[MAX_PLAYERS char];
playerTimer{playerid} = SetTimerEx("checkOnce", 1000, true, "dd", playerid, 10);
forward checkOnce( const playerid, const value );
public checkOnce( const playerid, const value )
{
      if ( !IsPlayerConnected ( playerid ) || value == 10 )    // Проверка действительности выполнения тех или иных условий для существования таймера.
      {
       KillTimer(playerTimer{playerid});
       playerTimer{playerid} = 0;
       return;
      }
      // Действие...
}

Мой метод:
Code

timerFInit:checkOnce<1000>[dd](playerid, 10);

timerF:checkOnce( playerid, value )
{
          if ( !IsPlayerConnected ( playerid ) || value == 10 )    // Проверка действительности выполнения тех или иных условий для существования таймера.
          {
           timerDestroy:<this>;
           return;
          }
           // Действие...  
}



Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru

Сообщение отредактировал toneysix - Понедельник, 12.12.2011, 00:15
ВеликсДата: Среда, 21.12.2011, 22:26 | Сообщение # 20
Мастер джэдай
Группа: Модераторы
Сообщений: 3931
Награды: 287
Город: Мухосранск
Репутация: 8429
Замечания: 0%
Статус:
#define AddScoreToPlayer(%0,%1) SetPlayerScore(%0,GetPlayerScore(%0)+%1)
Прибавление игроку одного очка, синтаксис: ID игрока, сколько очков прибавить.
#define ShowMessageDialog(%0,%1,%2,%3,%4) ShowPlayerDialog(%0,%1,0,%2,%3,%4,"")
Вывод диалога с сообщением, синтаксис: ID игрока, ID диалога, Заголовок, Текст, Кнопка.



[cut=freestyle]
ПРИНЕСЛА СОРОКА В РОТЕ ПРИВОРОТ ,
СВЯЗАЛАСЬ НА ШЕЕ ЛОЗА И БЫЛ ПОЛНЫЙ ПИ**ЕЦ,
ОСЕНЬ С ЗИМОЙ, ЛЕТО С ВЕСНОЙ,
ГУСЬ С ЛИСОЙ, ЕБ**ИСЬ ВО ТЬМЕ НОЧНОЙ.
УЗЕЛ ЗАВЯЗАЛСЯ, ПЕПЕЛ РАЗМЕТАЛСЯ И ЛИСА ЗАБЕРЕМЕНЕЛА.
ВМЕСТЕ ВЕК ВЕКОВАТЬ, ПУТУ НЕ РАЗВЯЗАТЬ.
ТРАВА ПЕРЕПЛЕТИСЬ, УЗЕЛ ЗАВОРОЖИСЬ.
ЛЕНАРУ ДАЙ УМА И ЛЕНУ
НА ВЕЛЕ НЕ ОТРАЗИСЬ,ЕБ*СЬ ЕБ*СЬ ЕБ*СЬ
© Хасан
[/cut]
psychoДата: Пятница, 30.12.2011, 15:08 | Сообщение # 21
16 | 13
Группа: I'm V.I.P.
Сообщений: 327
Награды: 11
Репутация: 645
Замечания: 20%
Статус:
Макросы:
Добавляет указанное значение к PVar'у.
Code
#define AddPVarInt(%0,%1,%2) SetPVarInt(%0, %1, GetPVarInt(%0, %1) + %2)


Пример использования:
Code

SetPVarInt(playerid,"Velix", 5);
AddPVarInt(playerid,"Velix",5);



Сообщение отредактировал Princip - Суббота, 31.12.2011, 11:58
ВеликсДата: Пятница, 30.12.2011, 15:12 | Сообщение # 22
Мастер джэдай
Группа: Модераторы
Сообщений: 3931
Награды: 287
Город: Мухосранск
Репутация: 8429
Замечания: 0%
Статус:
Code
stock SetVehicleSpeed(vehicleid, Float:speed)
{
     new Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2, Float:a;
     GetVehicleVelocity(vehicleid, x1, y1, z1);
     GetVehiclePos(vehicleid, x2, y2, z2);
     GetVehicleZAngle(vehicleid, a); a = 360 - a;
     x1 = (floatsin(a, degrees) * (speed/100) + floatcos(a, degrees) * 0 + x2) - x2;
     y1 = (floatcos(a, degrees) * (speed/100) + floatsin(a, degrees) * 0 + y2) - y2;
     SetVehicleVelocity(vehicleid, x1, y1, z1);
}

Устанавливает скорость транспорта.



[cut=freestyle]
ПРИНЕСЛА СОРОКА В РОТЕ ПРИВОРОТ ,
СВЯЗАЛАСЬ НА ШЕЕ ЛОЗА И БЫЛ ПОЛНЫЙ ПИ**ЕЦ,
ОСЕНЬ С ЗИМОЙ, ЛЕТО С ВЕСНОЙ,
ГУСЬ С ЛИСОЙ, ЕБ**ИСЬ ВО ТЬМЕ НОЧНОЙ.
УЗЕЛ ЗАВЯЗАЛСЯ, ПЕПЕЛ РАЗМЕТАЛСЯ И ЛИСА ЗАБЕРЕМЕНЕЛА.
ВМЕСТЕ ВЕК ВЕКОВАТЬ, ПУТУ НЕ РАЗВЯЗАТЬ.
ТРАВА ПЕРЕПЛЕТИСЬ, УЗЕЛ ЗАВОРОЖИСЬ.
ЛЕНАРУ ДАЙ УМА И ЛЕНУ
НА ВЕЛЕ НЕ ОТРАЗИСЬ,ЕБ*СЬ ЕБ*СЬ ЕБ*СЬ
© Хасан
[/cut]
DiSEДата: Вторник, 17.01.2012, 17:05 | Сообщение # 23
Группа: I'm V.I.P.
Сообщений: 1759
Награды: 23
Город: Уфа
Репутация: 337
Замечания: 80%
Статус:
Code
GivePlayerWeaponEx(...)
{
      if (numargs() % 2 == 0) return 0;
      for (new i = 1; i < numargs(); i++)
      {
          if (getarg(i + 1) && getarg(i)) {
              GivePlayerWeapon(getarg(0), getarg(i), getarg(i + 1));
              i++;
          }
      }
      return 1;
}


хоть сколько оружия можно прописать. Типа
GivePlayerWeaponEx(игрок,29,450,30,894,24,15)

Функцию оптимизировал Stepashka, разработал sk47



Сообщение отредактировал DiSE - Вторник, 17.01.2012, 21:00
ВеликсДата: Пятница, 27.01.2012, 23:23 | Сообщение # 24
Мастер джэдай
Группа: Модераторы
Сообщений: 3931
Награды: 287
Город: Мухосранск
Репутация: 8429
Замечания: 0%
Статус:
Code
stock intIns(iNum1, iNum2, iPos)
{
     static
         iLength[2]
     ;
     iLength[0] = intLen(iNum1);
     iLength[1] = intLen(iNum2);
      
     if((0 <= (iLength[0] + iLength[1]) <= 9) && (0 <= (iLength[0] -= iPos) <= 9))
     {
         iLength[0] = floatround(floatpower(10.0, iLength[0]));
         iLength[1] = floatround(floatpower(10.0, iLength[1]));
              
         return ((((iNum1 / iLength[0]) * iLength[1]) + iNum2) * iLength[0]) + (iNum1 % iLength[0]);
     }
     return 0;
}


http://pastebin.com/z1GJ4CDb

Вставляет одно число, в другое, и выводит конечный результат.

iNum1 - Число 1.
iNum2 - Число 2.
iPos - Позиция для вставки.

Работает только на целых цислах.

Пример:
Code
printf("%d", intIns(1245, 3, 2)); // Выведет 12345
printf("%d", intIns(666666, 999, 3)); // Выведет 666999666


Автор: RyDeR`



[cut=freestyle]
ПРИНЕСЛА СОРОКА В РОТЕ ПРИВОРОТ ,
СВЯЗАЛАСЬ НА ШЕЕ ЛОЗА И БЫЛ ПОЛНЫЙ ПИ**ЕЦ,
ОСЕНЬ С ЗИМОЙ, ЛЕТО С ВЕСНОЙ,
ГУСЬ С ЛИСОЙ, ЕБ**ИСЬ ВО ТЬМЕ НОЧНОЙ.
УЗЕЛ ЗАВЯЗАЛСЯ, ПЕПЕЛ РАЗМЕТАЛСЯ И ЛИСА ЗАБЕРЕМЕНЕЛА.
ВМЕСТЕ ВЕК ВЕКОВАТЬ, ПУТУ НЕ РАЗВЯЗАТЬ.
ТРАВА ПЕРЕПЛЕТИСЬ, УЗЕЛ ЗАВОРОЖИСЬ.
ЛЕНАРУ ДАЙ УМА И ЛЕНУ
НА ВЕЛЕ НЕ ОТРАЗИСЬ,ЕБ*СЬ ЕБ*СЬ ЕБ*СЬ
© Хасан
[/cut]
ВеликсДата: Понедельник, 19.03.2012, 21:00 | Сообщение # 25
Мастер джэдай
Группа: Модераторы
Сообщений: 3931
Награды: 287
Город: Мухосранск
Репутация: 8429
Замечания: 0%
Статус:
Code
#define IsASemi(%0)         ((%0) == 403 || (%0) == 514 || (%0) == 515 || (%0) == 443)
#define IsATrailor(%0)      ((%0) == 435 || (%0) == 450 || (%0) == 584 || (%0) == 591 || (%0) == 606 || (%0) == 607 || (%0) == 608 || (%0) == 610 || (%0) == 611)
#define IsACopCar(%0)       ((%0) == 523 || (%0) == 427 || (%0) == 490 || (%0) == 528 || (%0) == 596 || (%0) == 598 || (%0) == 597 || (%0) == 599 || (%0) == 601)
#define IsAMotorBike(%0)    ((%0) == 462 || (%0) == 448 || (%0) == 581 || (%0) == 522 || (%0) == 461 || (%0) == 521 || (%0) == 523 || (%0) == 463 || (%0) == 586 || (%0) == 468)
#define IsABike(%0)         ((%0) == 809 || (%0) == 481 || (%0) == 510)
#define IsAPizzaBike(%0)    ((%0) == 448)
#de[code]fine IsAFireTruck(%0)    ((%0) == 407 || (%0) == 544)
#define IsATaxi(%0)         ((%0) == 438 || (%0) == 420)
#define IsABus(%0)          ((%0) == 431 || (%0) == 437)
#define IsAAmbulance(%0)    ((%0) == 416)
#define IsALimo(%0)         ((%0) == 409)
#define IsAPlane(%0)        ((%0) == 460 || (%0) == 476 || (%0) == 511 || (%0) == 512 || (%0) == 513 || (%0) == 519 || (%0) == 520 || (%0) == 553 || (%0) == 577 || (%0) == 592 || (%0) == 593)
#define IsAHeli(%0)         ((%0) == 542 || (%0) == 425 || (%0) == 417 || (%0) == 487 || (%0) == 488 || (%0) == 497 || (%0) == 563 || (%0) == 447 || (%0) == 469)
#define IsABoat(%0)         ((%0) == 472 || (%0) == 473 || (%0) == 493 || (%0) == 595 || (%0) == 484 || (%0) == 430 || (%0) == 453 || (%0) == 452 || (%0) == 446 || (%0) == 454)
#define IsATrashTruck(%0)   ((%0) == 408)

Нашел на оффе, куча проверок на модели авто. Надеюсь как использовать объяснять не надо?



[cut=freestyle]
ПРИНЕСЛА СОРОКА В РОТЕ ПРИВОРОТ ,
СВЯЗАЛАСЬ НА ШЕЕ ЛОЗА И БЫЛ ПОЛНЫЙ ПИ**ЕЦ,
ОСЕНЬ С ЗИМОЙ, ЛЕТО С ВЕСНОЙ,
ГУСЬ С ЛИСОЙ, ЕБ**ИСЬ ВО ТЬМЕ НОЧНОЙ.
УЗЕЛ ЗАВЯЗАЛСЯ, ПЕПЕЛ РАЗМЕТАЛСЯ И ЛИСА ЗАБЕРЕМЕНЕЛА.
ВМЕСТЕ ВЕК ВЕКОВАТЬ, ПУТУ НЕ РАЗВЯЗАТЬ.
ТРАВА ПЕРЕПЛЕТИСЬ, УЗЕЛ ЗАВОРОЖИСЬ.
ЛЕНАРУ ДАЙ УМА И ЛЕНУ
НА ВЕЛЕ НЕ ОТРАЗИСЬ,ЕБ*СЬ ЕБ*СЬ ЕБ*СЬ
© Хасан
[/cut]
Dima-kunДата: Вторник, 04.06.2013, 17:14 | Сообщение # 26
Группа: Разработчики
Сообщений: 6269
Награды: 72
Репутация: 3512
Замечания: 0%
Статус:
Мой набор макросов для работы с PVar'ами.
Установка:
  • - скопировать файл в pawno/includes;
  • - в начале скрипта: #include .
    Использование:
    Integer:
  • Установить значение: si:pvarname[playerid](1234);
  • Узнать значение: gi:pvarname[playerid] (Результат:1234)
    Float:
  • Установить значение: psf:varname[playerid](1234.5678);
  • Узнать значение: gf:pvarname[playerid] (Результат:1234.5678)
    String:
  • Установить значение: ss:pvarname[playerid]("Some Text");
  • Узнать значение: gs:pvarname[playerid] (Результат:Some Text)

  • Удалить PVar: delpvar:pvarname[playerid];
    Прикрепления: pvars.inc (1.7 Kb)


    Мои работы:
    [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
  • VagrantДата: Понедельник, 09.12.2013, 12:07 | Сообщение # 27
    Уважаемый человек
    Группа: I'm V.I.P.
    Сообщений: 904
    Награды: 21
    Город: Находка
    Репутация: 489
    Замечания: 0%
    Статус:
    Пара моих функций.
    Аналог функции strtok. Но в 2 раза быстрее + seperator.
    strvag(const string[], &index, seperator=' ') - Возвращает значение строки до seperator (стандартно - ' ' (пробела)).
    Код

    stock strvag(const string[], &index, seperator=' ')
    {
    new res[20],i,k = string[index];
    for(;k != seperator;index++,i++,k = string[index])
    switch(k)
    {
    case '\0','\n','\r': break;
    default: res[i] = string[index];
    }
    i = 0;
    index++;
    return res;
    }

    Аналогичная функция, но без возможности установить seperator (запись идёт до пробела).
    strvagns(res[], const string[], &index) - Записывает в res[] значение строки до пробела.
    Код
    stock strvagns(res[], const string[], &index)
    {
    new i,k = string[index];
    for(;k != ' ' && k != '\0';k = string[++index],i++) res[i] = string[index];
    res[i] = '\0';
    i = 0;
    index++;
    }

    Скорость аналогична функции strvag. Аналог этой функции u_strtok, но эта функция немного быстрее.
    Цель создания этих 2-х функций, это сделать функции быстрее стандартных и уже всем привычных strtok и strcharsplit а так же u_strtok. Функций, быстрее этих, пока не видел.



    Человек учась ходить падает, и только падая, он учится ходить!
    Мои работы:
    [GM] W.F.S.A. V. 1.0 - 100%
    [GM] San Fierro Enigmatic (TDM) V. 1.0 - 100%
    [FS] Clan House V. 1.0 - 100%
    [FS] Save Car Tun System V. 1.0 - 100%
    [FS] Vagrant Anti-CapsLock V. 2.1 - 100%
    [FS] Vagrant Anti-Advertise V. 1.1, V. 2.0 - 100%
    [APP] SA-MP Interior Viewer V. 1.0 - 100%

    Принимаю заказы на помощь в скриптинге!


    Сообщение отредактировал Vagrant - Понедельник, 09.12.2013, 12:10
    • Страница 2 из 2
    • «
    • 1
    • 2
    Поиск:





     


     


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