SA-MP Forums

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

Reply
 
Thread Tools Display Modes
Old 13/08/2018, 11:27 AM   #1
Johhnyllll
Huge Clucker
 
Johhnyllll's Avatar
 
Join Date: Sep 2014
Posts: 252
Reputation: 12
Question Работа с аргументами.

Хочу перевести stock с использованием y_va:
PHP Code:
stock Message_ToAdmins(color, const fmat[], va_args<>)
{
    foreach(new 
Player)
        if (
P[i][p_access] >= 1)
            
SendClientMessage(icolorva_return(fmatva_start<2>));

На функцию без лишних "зависимостей".
PHP Code:
stock Message_ToAdmins(color, const fmat[], {Float_}:...){
    foreach(new 
Player)
        if(
P[i][p_access] >= 1)
            
Lang_SendText(icolorfmat_);

Проблема в том что я не могу понять как выводить аргументы, количество которых нельзя определить заранее.
__________________
Мои проекты: GitHub
Johhnyllll is offline   Reply With Quote
Old 13/08/2018, 01:50 PM   #2
Romz
Banned
 
Join Date: Jun 2013
Location: Ukraine
Posts: 1,050
Reputation: 64
Default Re: Работа с аргументами.

Для получения значений аргументов есть такая функция: getarg
Romz is offline   Reply With Quote
Old 13/08/2018, 01:58 PM   #3
Diman777
Huge Clucker
 
Diman777's Avatar
 
Join Date: Aug 2011
Location: Ростов-на-Дону
Posts: 438
Reputation: 22
Default Re: Работа с аргументами.

Посмотри здесь:
http://forum.sa-mp.com/showpost.php?...&postcount=631
Diman777 is offline   Reply With Quote
Old 13/08/2018, 10:29 PM   #4
Johhnyllll
Huge Clucker
 
Johhnyllll's Avatar
 
Join Date: Sep 2014
Posts: 252
Reputation: 12
Default Re: Работа с аргументами.

Quote:
Originally Posted by Romz View Post
Для получения значений аргументов есть такая функция: getarg
Quote:
Originally Posted by Diman777 View Post
Спасибо за подсказку!
__________________
Мои проекты: GitHub
Johhnyllll is offline   Reply With Quote
Old 13/08/2018, 11:12 PM   #5
Johhnyllll
Huge Clucker
 
Johhnyllll's Avatar
 
Join Date: Sep 2014
Posts: 252
Reputation: 12
Default Re: Работа с аргументами.

PHP Code:
main() {
    
SomeFunc(1"forum.sa-mp.com"37);

PHP Code:
SomeFunc(...)
{
    
printf("%s"getarg(1,0));

Выводит:
PHP Code:

Если 0 изменить на 1, уже будет показана буква u. Можно ли как-то автоматически считывать все буквы, без "ручного" метода? Не знаю как более правильно выразится.
__________________
Мои проекты: GitHub
Johhnyllll is offline   Reply With Quote
Old 14/08/2018, 03:58 AM   #6
kennydalglish
Big Clucker
 
Join Date: Dec 2014
Posts: 152
Reputation: 8
Default Re: Работа с аргументами.

Как то так:
PHP Code:
exampleFunc("test");

stock exampleFunc({_}:...)
{
    new 
string[10];

    for(new 
0; ; i++)
    {
        if(
getarg(0i) == EOS)
            break;
        
string[i] = getarg(0i);
    }
    
printf("%s"string);

kennydalglish is offline   Reply With Quote
Old 14/08/2018, 06:18 AM   #7
Eims
Huge Clucker
 
Eims's Avatar
 
Join Date: May 2013
Location: Восточный Мордор
Posts: 474
Reputation: 19
Default Re: Работа с аргументами.

Отсутствием "лишних" зависимостей ты не делаешь лучше Такой код будет довольно медленно работать даже относительно y_va (можно было бы догадаться, так как если бы было иначе, уже давно все пользовались бы такими самописными функциями и ****** не изобретал бы велосипед).
Уж если действительно хочешь избавиться от лишних зависимостей - прописывай напрямую format и SendClientMessage.
__________________
- How many IT Engineers does it take to fix a broken light bulb?
- None, the light bulb works fine in my office, I cannot replicate the issue.
Eims is offline   Reply With Quote
Old 14/08/2018, 09:03 AM   #8
OKStyle
High-roller
 
OKStyle's Avatar
 
Join Date: May 2008
Location: Russia, Orenburg Money: GTA$ 999,999,999
Posts: 3,095
Reputation: 140
Default Re: Работа с аргументами.

y_va - это и есть лишняя зависимость)
__________________
O.K.Style™ Laboratory
Kalcor: "... it's makes the game look like it's not GTA. This mod is called San Andreas Multiplayer. It's not a custom game engine which you can script..."
OKStyle is offline   Reply With Quote
Old 14/08/2018, 10:36 AM   #9
Johhnyllll
Huge Clucker
 
Johhnyllll's Avatar
 
Join Date: Sep 2014
Posts: 252
Reputation: 12
Default Re: Работа с аргументами.

Quote:
Originally Posted by kennydalglish View Post
Как то так:
PHP Code:
exampleFunc("test");

stock exampleFunc({_}:...)
{
    new 
string[10];

    for(new 
0; ; i++)
    {
        if(
getarg(0i) == EOS)
            break;
        
string[i] = getarg(0i);
    }
    
printf("%s"string);

Спасибо!

Quote:
Originally Posted by Eims View Post
Отсутствием "лишних" зависимостей ты не делаешь лучше Такой код будет довольно медленно работать даже относительно y_va (можно было бы догадаться, так как если бы было иначе, уже давно все пользовались бы такими самописными функциями и ****** не изобретал бы велосипед).
Уж если действительно хочешь избавиться от лишних зависимостей - прописывай напрямую format и SendClientMessage.
Не хотелось бы использовать всю библиотеку YSI, так как она мне не нужна. Если получится запустить y_va отдельно - будет отлично.
__________________
Мои проекты: GitHub
Johhnyllll is offline   Reply With Quote
Old 17/08/2018, 12:19 AM   #10
Johhnyllll
Huge Clucker
 
Johhnyllll's Avatar
 
Join Date: Sep 2014
Posts: 252
Reputation: 12
Default Re: Работа с аргументами.

Удалось добится нужного эффекта используя дефолтные возможности zlang.

PHP Code:
Message_ToAdmin("MESSAGE_ADMIN_REPORT",P[playerid][p_name],playerid,inputtext); 
PHP Code:
stock Message_ToAdmin(var[], lang_args<>){
    static
        
text[MAX_LANG_MFORMAT_STRING];
    foreach(new 
Player){
        if(
P[i][p_access] >= 1){
            
Lang_GetText(Lang_GetPlayerLang(i), var, text);
            
Lang_format(textsizeof(text), textlang_start<1>);

            
SendClientMessage(i, -1text);
        }
    }

__________________
Мои проекты: GitHub
Johhnyllll 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
Нестабильная работа игрового сервера. Johhnyllll Русский/Russian 4 09/07/2018 05:55 PM
[Tool/Web/Other] Работа с IMG архивами на стороне клиента Seregamil1 Релизы/Releases 9 25/11/2015 05:59 PM
Удаленная работа. pozitiv4eg Русский/Russian 2 26/11/2013 02:48 PM
Работа сервера(Number of vehicle models) Mr.4o-4o Русский/Russian 10 11/10/2012 08:39 AM


All times are GMT. The time now is 02:44 AM.


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