SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Русский/Russian

Reply
 
Thread Tools Display Modes
Old 07/05/2016, 10:41 PM   #641
georJik
Little Clucker
 
georJik's Avatar
 
Join Date: Jul 2013
Posts: 15
Reputation: 0
Default Re: Коллекция функций / макросов

Конвертирование unixtime, и не только

PHP Code:
date(_format[] = ""timestamp 0, &day 0, &month 0, &year 0, &hour 0, &minute 0, &second 0)
{
    if(!
numargs()) return gettime();
    if(!
timestamptimestamp gettime();
    
day timestamp/86400+1;
    
year 1970;
    new 
days_per_year DaysPerYear(year);
    while(
day days_per_year)
    {
        
day -= days_per_year;
        ++
year;
        
days_per_year DaysPerYear(year);
    }
    
month 1;
    new 
days_per_month DaysPerMonth(yearmonth);
    while(
day days_per_month)
    {
        
day -= days_per_month;
        if(++
month 12) ++yearmonth 1;
        
days_per_month DaysPerMonth(yearmonth);
    }
    new 
seconds_since_midnight timestamp 86400;
    
hour seconds_since_midnight 3600;
    
second seconds_since_midnight 3600;
    
minute second 60;
    
second second 60;
    if(
_format[0] != EOS)
    {
        switch(
_format[0])
        {
            case 
0x440x64: return day;
            case 
0x4D: return month;
            case 
0x590x79: return year;
            case 
0x480x68: return hour;
            case 
0x6D: return minute;
            case 
0x530x73: return second;
        }
    }
    return 
0;
}


LeapYear(year) return !(year 3);


DaysPerMonth(yearmonth)
{
    if(
month == 2) return 28 LeapYear(year);
    return 
30 + ( (month _:(month 7) ) & 1);
}


DaysPerYear(year) return 365 LeapYear(year); 
Использование:

PHP Code:
date(_gettime(), daymonthyearhourminutesecond);
// Или
date(_gettime(), daymonthyear);
// Или
date(); // вернет gettime()
// Или
tmp date("M"); // Вернет месяц

/*

     Синтаксис

D, d - День
M - Месяц
Y, y - Год
H, h - Час
m - Минута
S, s- Секунда

*/ 
Автор: я.
georJik is offline   Reply With Quote
Old 07/05/2016, 10:43 PM   #642
georJik
Little Clucker
 
georJik's Avatar
 
Join Date: Jul 2013
Posts: 15
Reputation: 0
Default Re: Коллекция функций / макросов

Залагал, 2 раза отправилось сообщение
georJik is offline   Reply With Quote
Old 08/05/2016, 08:11 PM   #643
Untonyst
Big Clucker
 
Untonyst's Avatar
 
Join Date: Dec 2015
Posts: 66
Reputation: 9
Default Re: Коллекция функций / макросов

0x44? Понтокодом попахивает.
__________________

GitHub account.
Untonyst is offline   Reply With Quote
Old 09/05/2016, 07:52 AM   #644
georJik
Little Clucker
 
georJik's Avatar
 
Join Date: Jul 2013
Posts: 15
Reputation: 0
Default Re: Коллекция функций / макросов

Quote:
Originally Posted by Untonyst View Post
0x44? Понтокодом попахивает.
Так и есть
georJik is offline   Reply With Quote
Old 02/06/2016, 02:54 PM   #645
Untonyst
Big Clucker
 
Untonyst's Avatar
 
Join Date: Dec 2015
Posts: 66
Reputation: 9
Default Re: Коллекция функций / макросов

PHP Code:
/* 
    Узнаем самое маленькое число и самое большое.

    GetIntMin(10, 0, 7, -5) - вернет -5.
    GetIntMax(10, 0, 7, -5) - вернет 10.

    Автор я.
*/

GetIntMin(...) {

    new
        
args numargs(),
        
argmin,
        
i;

    while (
i++ < args) {
        static 
argmin_old;
        
argmin_old min(getarg(i), getarg((args) ? (i-1):(i+1)));
        
argmin = (argmin_old argmin) ? argmin argmin_old;
    }
    
    return 
argmin;
}

GetIntMax(...) {

    new
        
args numargs(),
        
argmax,
        
i;

    while (
i++ < args) {
        static 
argmax_old;
        
argmax_old max(getarg(i), getarg((args) ? (i-1):(i+1)));
        
argmax = (argmax_old argmax) ? argmax argmax_old;
    }
    
    return 
argmax;

__________________

GitHub account.
Untonyst is offline   Reply With Quote
Old 02/06/2016, 06:50 PM   #646
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,466
Reputation: 131
Default Re: Коллекция функций / макросов

Quote:
Originally Posted by Untonyst View Post
PHP Code:
/* 
    Узнаем самое маленькое число и самое большое.

    GetIntMin(10, 0, 7, -5) - вернет -5.
    GetIntMax(10, 0, 7, -5) - вернет 10.

    Автор я.
*/

GetIntMin(...) {

    new
        
args numargs(),
        
argmin,
        
i;

    while (
i++ < args) {
        static 
argmin_old;
        
argmin_old min(getarg(i), getarg((args) ? (i-1):(i+1)));
        
argmin = (argmin_old argmin) ? argmin argmin_old;
    }
    
    return 
argmin;
}

GetIntMax(...) {

    new
        
args numargs(),
        
argmax,
        
i;

    while (
i++ < args) {
        static 
argmax_old;
        
argmax_old max(getarg(i), getarg((args) ? (i-1):(i+1)));
        
argmax = (argmax_old argmax) ? argmax argmax_old;
    }
    
    return 
argmax;

Чем не угодили встроенные функции min и max?
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is offline   Reply With Quote
Old 02/06/2016, 06:58 PM   #647
stabker
High-roller
 
stabker's Avatar
 
Join Date: Mar 2012
Location: Andromeda Galaxy
Posts: 1,320
Reputation: 86
Default Re: Коллекция функций / макросов

Quote:
Originally Posted by Stepashka View Post
Чем не угодили встроенные функции min и max?
А такие есть?

---

Меня больше интересует, почему эта фигня с getarg и numargs так привлекает народ. Массив же лучше передавать.
stabker is offline   Reply With Quote
Old 02/06/2016, 07:37 PM   #648
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,466
Reputation: 131
Default Re: Коллекция функций / макросов

Quote:
Originally Posted by stabker View Post
А такие есть?

---

Меня больше интересует, почему эта фигня с getarg и numargs так привлекает народ. Массив же лучше передавать.
Да, в ядре, рядом с функциями getarg и numargs и ещё парочкой полезных функций:
Code:
native numargs();
native getarg(arg, index=0);
native setarg(arg, index=0, value);

native tolower(c);
native toupper(c);
native swapchars(c);

native random(max);

native min(value1, value2);
native max(value1, value2);
native clamp(value, min=cellmin, max=cellmax);
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is offline   Reply With Quote
Old 02/06/2016, 07:46 PM   #649
SoNikMells
Huge Clucker
 
SoNikMells's Avatar
 
Join Date: Feb 2014
Location: Belarus
Posts: 281
Reputation: 62
Default Re: Коллекция функций / макросов

Столько ненужного кода.... GetMaxValue()
__________________

Code:
[FilterScript] aview — Animations Browser
[FilterScript] SearchCode
SoNikMells is offline   Reply With Quote
Old 02/06/2016, 08:08 PM   #650
Mutha_X
Gangsta
 
Join Date: Sep 2009
Location: recursion
Posts: 640
Reputation: 26
Default Re: Коллекция функций / макросов

Те, что в ядре сравнивают только пару переменных (у автора почти произвольное кол-во, ограниченное макс числом аргументов функции), хотя их всё-равно можно вставить в его код.
PHP Code:
#define PROTECT_GETMAXMIN
GetIntMin(...) {
    new 
=  numargs()-1;
#if defined PROTECT_GETMAXMIN
    
if(i==-1){return 0;}
#endif
    
new val getarg(i);
    while(
i--) {val min(val,getarg(i));}
    return 
val;

GetIntMax(...) { 
    new 
=  numargs()-1;
#if defined PROTECT_GETMAXMIN
    
if(i==-1){return 0;}
#endif
    
new val getarg(i);
    while(
i--) {val max(val,getarg(i));}
    return 
val;

В таком виде при большом кол-ве итераций должен быть выигрыш по времени выполнения, т.к. меньше операций с памятью в пределах p-кода... хотя стоит проверить.

SoNikMells, твой код будет неадекватным в случае, если будут заданы только отрицательные числа.
__________________
Russian forums: asking question - taking grammar notations.
Учитесь задавать вопросы по существу и изучать матчасть: иначе приобретайте лекарство "НИБОМБИН".

Last edited by Mutha_X; 03/06/2016 at 12:19 PM.
Mutha_X is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
SA-MP для Anderius, Criminal Russia, United и Gostown6 dimonml Русский/Russian 1004 09/06/2018 01:05 PM
Проблема с прорисовкой некоторых объект& ONIXS Русский/Russian 29 23/11/2011 04:24 PM
Символы, буковки, горячая замена ^Woozie^ Русский/Russian 23 27/02/2010 01:25 PM


All times are GMT. The time now is 06:51 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.