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

 



 
          





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





Последние Файлы 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
  • Страница 1 из 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
VagrantДата: Пятница, 23.09.2011, 13:29 | Сообщение # 2
Уважаемый человек
Группа: I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус:
SendFormatMessage(playerid,color,const format[],{Float,_}:...); - Отправляет сообщение с выводом значений переменных игроку.
Code

#if !defined SendFormatMessage
          new FALSE = false;
          #pragma unused FALSE
          #define SendFormatMessage(%0,%1,%2,%3) do{ new str[128]; format(str, 128, %2, %3); SendClientMessage(%0, %1, str); } while(FALSE)
#endif

Пример:
Quote

new Float:pHealth;
GetPlayerHealth(playerid,pHealth);
SendFormatMessage(playerid,0xFFFFFFAA,"Здоровье: %.0f",pHealth);
Выведет в чат:
Здоровье: 100


SendFormatMessageToAll(color,const format[],{Float,_}:...); - Отправляет сообщение с выводом значений переменных всем.
Code

#if !defined SendFormatMessageToAll
          new FALSE = false;
          #pragma unused FALSE
          #define SendFormatMessageToAll(%0,%1,%2,%3) do{ new str[128]; format(str, 128, %2, %3); SendClientMessageToAll(%0, %1, str); } while(FALSE)
#endif


Узнать и вернуть ник игрока.
Code
stock GetName(playerid)
{
        new PlayerName[MAX_PLAYER_NAME];
        GetPlayerName(playerid,PlayerName,sizeof(PlayerName));
        return PlayerName;
}



Человек учась ходить падает, и только падая, он учится ходить!
Мои работы:
[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 - Пятница, 23.09.2011, 17:13
stepmexДата: Пятница, 23.09.2011, 16:34 | Сообщение # 3
Мастер джэдай
Группа: Продвинутые
Сообщений: 2914
Награды: 35
Город: Е-бург
Репутация: 1032
Замечания: 0%
Статус:
Quote (Vagrant)
#define SendFormatMessage(%0,%1,%2,%3) do{new str[128];format(_str,128,%2,%3);SendClientMessage(%0,%1,_str);}while(FALSE)
:)



И создал Бог женщину!.. Существо получилось злобное, но симпатичное...

Сообщение отредактировал stepmex - Пятница, 23.09.2011, 16:34
VagrantДата: Пятница, 23.09.2011, 17:05 | Сообщение # 4
Уважаемый человек
Группа: I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус:
Кароче SendFormatMessage в другом исполнении немного. :) stepmex, там и FALSE не определён.


Человек учась ходить падает, и только падая, он учится ходить!
Мои работы:
[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%

Принимаю заказы на помощь в скриптинге!
ImperealДата: Пятница, 23.09.2011, 17:30 | Сообщение # 5
Мастер джэдай
Группа: I'm V.I.P.
Сообщений: 2677
Награды: 51
Город: Санкт-Петербург
Репутация: 1868
Замечания: 100%
Статус:
Quote (Vagrant)
stepmex, там и FALSE не определён.

ставь 0, варнинг будет, но работает корректно.



Прощай самп-рус =Р
VagrantДата: Суббота, 24.09.2011, 07:26 | Сообщение # 6
Уважаемый человек
Группа: I'm V.I.P.
Сообщений: 904
Награды: 21
Город: Находка
Репутация: 489
Замечания: 0%
Статус:
Impereal, Я код заменил, уже всё работает правильно. Был ещё другой вариант этой функции (нашёл на sa-mp.com) но там он выводит неверную информацию.


Человек учась ходить падает, и только падая, он учится ходить!
Мои работы:
[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%

Принимаю заказы на помощь в скриптинге!
ZiGGiДата: Суббота, 24.09.2011, 10:41 | Сообщение # 7
Мастер джэдай
Группа: Продвинутые
Сообщений: 2652
Награды: 34
Город: St. Petersburg
Репутация: 2102
Замечания: 20%
Статус:
Quote (Fus1)
stock fwriteRUS(File:file,string[])
{
       for(new i ; i < strlen(string); i++)
       fputchar(file,string[i],false);
       return 1;
}

Где оптимизация?
Надо так
Code

stock fwriteRUS(File:file,string[])  
{  
        for(new i,len=strlen(string) ; i < len; i++)  
               fputchar(file,string[i],false);  
        return 1;  
}

Quote (Fus1)
stock bool: GetLeftString(const string[],const center[],leftside[],sizeof_leftside)
{
    strmid(leftside,string,0,strfind(string,center,true),sizeof_leftside);
    return true;
}

Зачем здесь вообще bool???



Бложе
[indent]Мой блог
Уроки по Pawn
[/indent]

Open-GTO
[indent]Блог разработчиков
GitHub: https://github.com/Open-GTO/Open-GTO
Сборки мода с сервером тут
[/indent]
AlcoholikДата: Суббота, 24.09.2011, 11:02 | Сообщение # 8
Мастер джэдай
Группа: Администратор
Сообщений: 8299
Награды: 111
Город: Санкт-Петербург
Репутация: 6085
Статус:
Quote (ZiGGi)
stock fwriteRUS(File:file,string[])   {          for(new i,len=strlen(string) ; i < len; i++)                 fputchar(file,string[i],false);          return 1;   }

Что это за оптимизация?



if(isset($beer)&&isset($girl)) { drink($beer);fuck($girl); }else die();
Мониторинг sa:mp серверов


Приватно никого не консультирую, моды также не пишу, ни так, ни за деньги.
Моя ICQ 675715, пишу только с неё. Все остальные Роачи фейки, ничего я не продаю и продавать не буду, вас разводят.
ZiGGiДата: Суббота, 24.09.2011, 11:12 | Сообщение # 9
Мастер джэдай
Группа: Продвинутые
Сообщений: 2652
Награды: 34
Город: St. Petersburg
Репутация: 2102
Замечания: 20%
Статус:
Quote (KroN)
Что это за оптимизация?

Ну в первом случае команда strlen(string) выполнялась strlen(string) раз, поэтому я вынес её из условия и она теперь выполняется 1 раз



Бложе
[indent]Мой блог
Уроки по Pawn
[/indent]

Open-GTO
[indent]Блог разработчиков
GitHub: https://github.com/Open-GTO/Open-GTO
Сборки мода с сервером тут
[/indent]
Fus1Дата: Суббота, 24.09.2011, 13:22 | Сообщение # 10
Группа: Продвинутые
Сообщений: 2704
Награды: 121
Город: Melbourne Australia
Репутация: 3103
Замечания: 0%
Статус:
ZiGGi, хватит умничать ?
Можно и так, есть и другие варианты.

Code
stock GetLeftString(string[],center[])
{
  new leftside[64];
  new poss = strfind(string,center,true);
  strmid(leftside,string,0,poss,sizeof(leftside));
  return leftside;
}

ZiGGiДата: Суббота, 24.09.2011, 19:31 | Сообщение # 11
Мастер джэдай
Группа: Продвинутые
Сообщений: 2652
Награды: 34
Город: St. Petersburg
Репутация: 2102
Замечания: 20%
Статус:
Quote (Fus1)
ZiGGi, хватит умничать ?

Способ, который указал ты, очень хреновый и использование его, даже в средних количествах, может навредить серверу.



Бложе
[indent]Мой блог
Уроки по Pawn
[/indent]

Open-GTO
[indent]Блог разработчиков
GitHub: https://github.com/Open-GTO/Open-GTO
Сборки мода с сервером тут
[/indent]
DiSEДата: Суббота, 19.11.2011, 12:17 | Сообщение # 12
Группа: I'm V.I.P.
Сообщений: 1759
Награды: 23
Город: Уфа
Репутация: 337
Замечания: 80%
Статус:
Author: Daniel Rubin(Darnell / Spenzo )

http://pastebin.com/Q6x6XBQn

Создаёт счётчик
Пример

Code
dcmd_count(playerid,params[])
{
  new time,soundid
  if(sscanf(params,"dd",time,soundid)) return SendClientMessage(playerid,COLOR_GREY,"/count [Time][soundID]")
  if(time < 0) CreateCountdown(time,soundid)
  else StopCountdown()
  return 1
}

-Mike_S-Дата: Воскресенье, 20.11.2011, 00:25 | Сообщение # 13
Новенький
Группа: Пользователи
Сообщений: 27
Награды: 1
Город: Москва
Репутация: -35
Замечания: 0%
Статус:
Возвращает кол-во строк из таблицы (очень удобно для sizeinfo(), можно сделать динамическую систему домов, машин и пр. которые будут хранится в MySQL)
Code

forward GetMysqlNumRows(table[]);
public GetMysqlNumRows(table[])
{
  new query[64];
  format(query,sizeof(query),"SELECT * FROM %s",table);
  samp_mysql_query(query);
  samp_mysql_store_result();
  if (samp_mysql_num_rows()==0)
  {
   return 0;
  }
  else
  {
   return samp_mysql_num_rows();
  }
}



[B]Контакте - http://vkontakte.ru/id125129202
Виски по оптовым ценам [Москва] - http://vkontakte.ru/whiskey_seales
В разработке - www.LA-RP.ru
"Репутация была изменена [-]" - Да мне пох*й (trollface).
PraДата: Воскресенье, 20.11.2011, 10:05 | Сообщение # 14
Уверенный в себе
Группа: Продвинутые
Сообщений: 216
Награды: 9
Город: Северная Столица
Репутация: 211
Замечания: 100%
Статус:
-Mike_S-, ужасно, для чего получать все данные таблицы, если нужно только кол-во?
Code
stock GetMysqlNumRows(table[])  
  {  
   new query[32], result[32];  
   format(query,sizeof(query),"SELECT COUNT(*) AS count FROM %s",table);  
   mysql_query(query);
   mysql_store_result();
   mysql_fetch_row(result);
   mysql_free_result();
   return strval(result);
  }

DiSEДата: Воскресенье, 20.11.2011, 11:38 | Сообщение # 15
Группа: I'm V.I.P.
Сообщений: 1759
Награды: 23
Город: Уфа
Репутация: 337
Замечания: 80%
Статус:
Code
stock GW(weaponid)
{
               new gunname[32]
               GetWeaponName(weaponid,gunname,sizeof(gunname))
  return gunname
}


Узнаёт имя оружия по его ID.

  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:





 


 


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