Вторник, 02.12.2008, 19:22
 
 
Приветствую Вас Проезжий | RSS
[ Новые сообщения · Участники · Правила форума · Поиск! · RSS ]
Статистика Форума
Последние ответы Популярные темы Лучшие пользователи TOP 7
  • GTA 4 уже можно с... [GTA 4]
  • [FS] CS_Radio [Скрипты]
  • Вопрос,Где мне вз... [Вопросы и Проблемы]
  • Как сделать систе... [Вопросы и Проблемы]
  • под Линуксом не з... [Админ-раздел]
  • Подскажите хостер... [Админ-раздел]
  • Как спастись? [Системы и Сети]
  • Вопрос - Ответ (Ответов: 960)
  • Обсуждение мода CityLi... (Ответов: 923)
  • Задавайте сюда ваши во... (Ответов: 919)
  • Помощь новечкам по скр... (Ответов: 611)
  • Пошли всех на хуй тут! (Ответов: 513)
  • Обратный отщёт от 500 (Ответов: 512)
  • Pen1 LS v1.4 by ONEhel... (Ответов: 386)
  • MiX (Сообщений: 2609)
  • AXE (Сообщений: 2262)
  • OKStyle™ (Сообщений: 1934)
  • fAkm4n (Сообщений: 1728)
  • RockStarGamer (Сообщений: 1608)
  • DarkByte (Сообщений: 1316)
  • MAK (Сообщений: 1293)
  • Страница 1 из 212»
    Модератор форума: XAOC 
    Форум о GTA Multiplayers. GTA SA-MP, MTA, VC-MP, IV-MP. » San Andreas MultiPlayer » Wiki-Samp-Rus » Дополнительные фунции (0.0 - X 34.0 - Y 1000.0 - Z)
    Дополнительные фунции
    [SFD]EvilRiazДата: Вторник, 19.08.2008, 13:42 | Сообщение # 1
    Советчик

    Группа: Разработчики
    Сообщений: 1103
    Город: City of Los Angeles
    Статус: status
    AddAllClass - добавляет все скины 1 коммандой.

    Code
    public AddAllClass(Float:x,Float:y,Float:z,Float:r,w1,a1,w2,a2,w3,a3)
      for(new i; i < 300; i++)
          if(IsValidSkin(i)) AddPlayerClass(i,x,y,z,r,w1,a1,w2,a2,w3,a3);
    public IsValidSkin(skinid)
    {
      #define    MAX_BAD_SKINS   14
      new badSkins[MAX_BAD_SKINS] = {
       3, 4, 5, 6, 8, 42, 65, 74, 86,
       119, 149, 208, 273, 289
      };
      if  (skinid < 0 || skinid > 299) return false;
      for (new i = 0; i < MAX_BAD_SKINS; i++) {
          if (skinid == badSkins[i]) return false;
      }
      #undef MAX_BAD_SKINS
      return true;
    }

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

    Code
    AddAllClass(0.0,34.0,1000.0,50.0,46,1,24,100,15,1);

    0.0 - X
    34.0 - Y
    1000.0 - Z
    50.0 - поворот
    46 - 1 оружие
    1 - патроны 1 оружия
    24 - 2 оружие
    100 - патроны 2 оружия
    15 - 3 оружие
    1 - патроны 3 оружия


    Где моя репа 0_o???
    Мои работы

    Кто хочет такую штучку смотрим сюда
    Current Developments: [SFD] TDM Mode, [GolNet] Big City Life [GF Mod]
     
    JIeXaДата: Вторник, 19.08.2008, 19:51 | Сообщение # 2
    Местный

    Группа: Продвинутые
    Сообщений: 719
    Город: Челябинск
    Статус: status
    public AddAllClass(Float:x,Float:y,Float:z,Float:r,w1,a1,w2,a2,w3,a3)
    {
    for(new i; i < 300; i++) {if(IsValidSkin(i)) AddPlayerClass(i,x,y,z,r,w1,a1,w2,a2,w3,a3);}
    return 1;
    }
    public IsValidSkin(skinid)
    {
    new badSkins[14] = { 3, 4, 5, 6, 8, 42, 65, 74, 86, 119, 149, 208, 273, 289 };
    if (skinid < 0 || skinid > 299) return 0;
    for (new i = 0; i < 14; i++) { if (skinid == badSkins[i]) return 0; }
    return 1;
    }
    более валидный код

    My works:
    [FS]Otmichka
    [FS]Music
    [FS]Clans & Spawn
    [FS]Time and Date
    [FS]Fireworks
    [FS]FixRus
    [FS]Fond
    [FS]Kill
    [FS]Lop&veh
    Scripts Package
    My ICQ 444154563
     
    SpiritДата: Суббота, 30.08.2008, 10:29 | Сообщение # 3
    Освоившийся

    Группа: Продвинутые
    Сообщений: 129
    Город: Омск
    Статус: status
    Code

    Float:abs(Float:x)
    {
      return x<0?x*(-1):x;
    }
    forward CameraMove(playerid,Float:PosX,Float:PosY,Float:PosZ,Float:ToX,Float:ToY,Float:ToZ,Float:LookX,Float:LookY,Float:LookZ,Float:speed);
    public CameraMove(playerid,Float:PosX,Float:PosY,Float:PosZ,Float:ToX,Float:ToY,Float:ToZ,Float:LookX,Float:LookY,Float:LookZ,Float:speed)
    {
      new  Float:Speed = speed/100;
      if(PosX < ToX)
          PosX = (abs(PosX - ToX) < Speed)?ToX:PosX + Speed;
      else if(PosX > ToX)
       PosX = (abs(ToX - PosX) < Speed)?ToX:PosX - Speed;
        
         if(PosY < ToY)
          PosY = (abs(PosY - ToY) < Speed)?ToY:PosY + Speed;
      else if(PosY > ToY)
       PosY = (abs(ToY - PosY) < Speed)?ToY:PosY - Speed;
        
         if(PosZ < ToZ)
          PosZ = (abs(PosZ - ToZ) < Speed)?ToZ:PosZ + Speed;
      else if(PosZ > ToZ)
       PosZ = (abs(ToZ - PosZ) < Speed)?ToZ:PosZ - Speed;
      SetPlayerCameraPos(playerid,PosX,PosY,PosZ);
      SetPlayerCameraLookAt(playerid,LookX,LookY,LookZ);
      printf("%f|%f|%f",PosX,PosY,PosZ);
      printf("^%f|%f|%f",ToX,ToY,ToZ);
      if(PosX != ToX || PosY != ToY || PosZ != ToZ)
          SetTimerEx("CameraMove",10,0,"dffffffffff",playerid,PosX,PosY,PosZ,ToX,ToY,ToZ,LookX,LookY,LookZ,speed);
    }

    Функция движения камера игрока на подобие передвижения объектов, функцию можно доработать если знать как имея координаты на которые направлена камера получить угол её поворота по всем 3 осям, задача для математиков(геометрия).
    Использовать её туго так как нет функции позволяющей получить координаты камеры игрока приходится самостоятельно высчитывать стартовые координаты, но вообще как вариант использования это перед стартом гонок, идёт отсчёт времени и камера передвигается за машину игрока. Помните что после того как движение будет закончено необходимо вернуть камеру игроку для этого используется функция SetCameraBehindPlayer(playerid) в случае с гонками можно дописать следующий код.

    Code

    forward CameraBehind(playerid);
    public CameraBehind(playerid)
    {
    SetCameraBehindPlayer(playerid);
    }

    Немного меняем конец функции движения камеры
    Code

    f(PosX != ToX || PosY != ToY || PosZ != ToZ)
          SetTimerEx("CameraMove",10,0,"dffffffffff",playerid,PosX,PosY,PosZ,ToX,ToY,ToZ,LookX,LookY,LookZ,speed);
    else
                 SetTimerEx("CameraBehind",1000,0,"d",playerid);//Теперь через секунду после окончания движения камеры она будет возвращена игроку

    Добавлено (30.08.2008, 10:29)
    ---------------------------------------------
    Другая функция на подобие движения объектов только эта их поворачивает (незнаю на сколько она новая, химичил сам), применение пока придумал только одно открытие/закрытие шлагбаумов, скоро скриптик выложу:

    Code

    Float:abs(Float:x)
    {
      return x<0?x*(-1):x;
    }

    new TimerObjects[MAX_OBJECTS];
    forward RotObjectMove(objectid,Float:ToRx,Float:ToRy,Float:ToRz,Float:speed);
    public RotObjectMove(objectid,Float:ToRx,Float:ToRy,Float:ToRz,Float:speed)
    {
      KillTimer(TimerObjects[objectid]);
      new Float:Speed = speed/10;
      new Float:Rx,Float:Ry,Float:Rz;
      GetObjectRot(objectid,Rx,Ry,Rz);
      if(Rx < ToRx)
          Rx = (abs(Rx - ToRx) < Speed)?ToRx:Rx + Speed;
      else if(Rx > ToRx)
       Rx = (abs(ToRx - Rx) < Speed)?ToRx:Rx - Speed;

         if(Ry < ToRy)
          Ry = (abs(Ry - ToRy) < Speed)?ToRy:Ry + Speed;
      else if(Ry > ToRy)
       Ry = (abs(ToRy - Ry) < Speed)?ToRy:Ry - Speed;

         if(Rz < ToRz)
          Rz = (abs(Rz - ToRz) < Speed)?ToRz:Rz + Speed;
      else if(Rz > ToRz)
       Rz = (abs(ToRz - Rz) < Speed)?ToRz:Rz - Speed;
      SetObjectRot(objectid,Rx,Ry,Rz);
      if(Rx != ToRx || Ry != ToRy || Rz != ToRz)
          TimerObjects[objectid] = SetTimerEx("RotObjectMove",10,0,"dffff",objectid,ToRx,ToRy,ToRz,speed);
      else
          TimerObjects[objectid] = -1;
    }

    Перед этим все элементы таймера желательно бы приравнять к (-1), а то ещё снесёт вам в моде таймер какой нужный.


    Любиш садизм люби и мазахизм :)
     
    OrangeДата: Среда, 03.09.2008, 19:47 | Сообщение # 4
    Местный

    Группа: Ангел Хранитель
    Сообщений: 693
    Город: Город? ГОРОД?!?
    Статус: status
    простенько и со вкусом :)
    Получить имя игрока
    Code
    stock GetSimplePlayerName(playerid)
    {
       new playername[24];
       GetPlayerName(playerid, playername, sizeof(playername));
       return playername;
    }

    это упрощает код, чем писать там new name... GetPlayerName в каждом куске мода можно просто использовать эу функцию. например format(string,sizeof(string)," Самый крутой чувак: %s", GetSimplePlayerName(playerid));

    Добавлено (03.09.2008, 19:47)
    ---------------------------------------------
    или еще мелочь:

    Code
    stock GivePlayerScore(playerid, score)
    {
          SetPlayerScore(playerid,GetPlayerScore(playerid)+score);
    }

    ну это тоже просто, можно самому писать подобные функции упрощающие и укорачивающие код.

    P.S 555 пост cool




    Сообщение отредактировал Mishanzanza - Среда, 03.09.2008, 19:48
     
    [SFD]EvilRiazДата: Пятница, 05.09.2008, 18:09 | Сообщение # 5
    Советчик

    Группа: Разработчики
    Сообщений: 1103
    Город: City of Los Angeles
    Статус: status
    Code
    stock SetPlayerMoney(playerid, money)
    {
           GivePlayerMoney(playerid,ResetPlayerMoney(playerid)+money);
    }

    Устанавливает кол-во денег игроку.


    Где моя репа 0_o???
    Мои работы

    Кто хочет такую штучку смотрим сюда
    Current Developments: [SFD] TDM Mode, [GolNet] Big City Life [GF Mod]
     
    MadCatДата: Пятница, 05.09.2008, 19:11 | Сообщение # 6
    Освоившийся

    Группа: Продвинутые
    Сообщений: 84
    Город: Екатеринбург
    Статус: status
    Или
    Code

    stock SetPlayerMoney(playerid,money) {
       GivePlayerMoney(playerid,money-GetPlayerMoney(playerid));
    }

    :)

    MultiGTA
     
    LuxurYДата: Суббота, 06.09.2008, 22:20 | Сообщение # 7
    Уверенный

    Группа: Продвинутые
    Сообщений: 268
    Город: OZ
    Статус: status
    Code
    stock GetRandomOnlinePlayer ( )
    {
         new
             online[MAX_PLAYERS],
             loop;
         for ( new i; i < MAX_PLAYERS; i++ )
         {
             if ( IsPlayerConnected ( i ) == 1 ) online[loop++] = i;
         }
         return ( loop == 0 ) ? ( INVALID_PLAYER_ID ) : ( online[random ( loop )] );
    }

    ну вообщем название говорит за себя. если игроков нет возвращает неправильный ид игрока.


    www.gtascript.ru admin
    www.gtascript.ru - профессиональный скриптинг SA-MP, MTA
     
    OrangeДата: Воскресенье, 07.09.2008, 17:16 | Сообщение # 8
    Местный

    Группа: Ангел Хранитель
    Сообщений: 693
    Город: Город? ГОРОД?!?
    Статус: status
    LuxurY, блин сидел мучался как такое замутить, а тут вуаля!

     
    stepmexДата: Понедельник, 08.09.2008, 15:54 | Сообщение # 9
    Освоившийся

    Группа: Продвинутые
    Сообщений: 115
    Статус: status
    Возвращает ID игрока который сидит за рулем машины:
    Code
    stock IsVehicleDriver(vehicleid)
    {
         for(new i = 0; i < MAX_PLAYERS; i++)
      {
       if(IsPlayerConnected(i) && IsPlayerInVehicle(i,vehicleid) && GetPlayerState(i) == 2)
       {
        return i;
       }
      }
      return INVALID_PLAYER_ID;
    }


    Играй у нас:

     
    LOGOTiPiKДата: Понедельник, 08.09.2008, 20:28 | Сообщение # 10
    Уважаемый

    Группа: Продвинутые
    Сообщений: 831
    Статус: status
    Напишите программный код пожайлуста, чтобы когда ты ВНН не мог садится за руль транспорта

     
    stepmexДата: Понедельник, 08.09.2008, 21:07 | Сообщение # 11
    Освоившийся

    Группа: Продвинутые
    Сообщений: 115
    Статус: status
    Quote (LOgotipik)
    Напишите программный код пожайлуста, чтобы когда ты ВНН не мог садится за руль транспорта
    такое пишиться индивидуально для каждого мода, т.к. ВНН встроенно в мод и передать его в другой код нереал.
    Юзай OnPlayerEnterVehicle

    Играй у нас:

     
    LOGOTiPiKДата: Вторник, 09.09.2008, 00:18 | Сообщение # 12
    Уважаемый

    Группа: Продвинутые
    Сообщений: 831
    Статус: status
    Я хочу это реализовать в PEN: LS+SF v1.5.3
    Если можеш, помоги wink

     
    MadCatДата: Вторник, 09.09.2008, 06:19 | Сообщение # 13
    Освоившийся

    Группа: Продвинутые
    Сообщений: 84
    Город: Екатеринбург
    Статус: status
    А я бы это сделал через OnPlayerStateChange... Вот так, например.
    Code

      if (gPublicEnemy != INVALID_PLAYER_ID){
       if (gPublicEnemy == playerid && newstate == PLAYER_STATE_DRIVER){
        RemovePlayerFromVehicle(playerid);
        SendClientMessage(playerid,COLOUR_RED,"ВВН не может садиться за руль!");
       }
      }


    MultiGTA
     
    LOGOTiPiKДата: Вторник, 09.09.2008, 07:11 | Сообщение # 14
    Уважаемый

    Группа: Продвинутые
    Сообщений: 831
    Статус: status
    Параллельный вопрос!
    Вот это что за эррор?
    Code
    local variable "newstate" shadows a variable at a preceding level




    Сообщение отредактировал LOgotipik - Вторник, 09.09.2008, 07:15
     
    MadCatДата: Вторник, 09.09.2008, 08:38 | Сообщение # 15
    Освоившийся

    Группа: Продвинутые
    Сообщений: 84
    Город: Екатеринбург
    Статус: status
    Это варнинг... Переменная уже есть в коде... Покажи несколько строчек до и после той, на которой этот варнинг... Если это от вставки моего кода - покажи, куда вставил...

    MultiGTA
     
    Форум о GTA Multiplayers. GTA SA-MP, MTA, VC-MP, IV-MP. » San Andreas MultiPlayer » Wiki-Samp-Rus » Дополнительные фунции (0.0 - X 34.0 - Y 1000.0 - Z)
    Страница 1 из 212»
    Поиск:

    Copyright SAMP-RUS© 2008