SA-MP Forums Archive
Проблемка при записи string в переменную. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Проблемка при записи string в переменную. (/showthread.php?tid=325584)



Проблемка при записи string в переменную. - safari - 13.03.2012

Доброго времени суток!

Проблемка такая.Хочу записать в переменную playerid Ник(ReturnUser()) а в переменную ReturnUserа ник(playerid)

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

PHP код:
new pname[24],tname[24];
GetPlayerName(playerid,pname,sizeof(pname));
GetPlayerName(tgt,tname,sizeof(tname));
strins(Premen[playerid],tname,0);
strins(Peremen[tgt],pname,0); 



Re: Проблемка при записи string в переменную. - jhonyxakep - 13.03.2012

Quote:

strins(Premen[playerid],tname,0);

а чего это 0 в конце? strins(Premen[playerid],tname,strlen(tname)+strlen(Premen[playerid]));


Re: Проблемка при записи string в переменную. - safari - 13.03.2012

PHP код:
string[] - переменная в которую добавляем .
const 
substr[] - текст\переменная которою добавляем.
pos позиция первого символа добавляемого
maxlength 
размер переменой в которою вписываем
получается так наверно
PHP код:
strins(Premen[playerid],tname,0,strlen(Premen[playerid])) 
PHP код:
strmid 
вроде записывает норм одному если. Но когда сразу двоим записываю мой ник и у меня и у него записывается вот так hn_Rembo а должно John_Rembo!


Re: Проблемка при записи string в переменную. - stabker - 14.04.2012

Зачем получать имя в переменную чтобы потом опять записать в другую переменную?
Через GetPlayerName сразу записывай в нужные переменные


Re: Проблемка при записи string в переменную. - OKStyle - 15.04.2012

pawn Код:
GetPlayerName(playerid, Premen[playerid], MAX_PLAYER_NAME);
GetPlayerName(tgt, Peremen[tgt], MAX_PLAYER_NAME);



Re: Проблемка при записи string в переменную. - iEnemY - 15.04.2012

Можно упростить до максимума:
pawn Код:
stock ReturnName(_p) // ну или для краткости RN(_p)
{
    new _n[24];
    GetPlayerName(_p, _n, sizeof(_n));
    return _n;
}
// Использование, к примеру:
new _s[256];
format(_s, sizeof(_s), "Игрок %s умер", ReturnName(_p));
SendClientMessageToAll(0xFF0000F6, _s);
// Или же...
format(PlayerInfo[playerid][pName], 20, "%s", ReturnName(playerid)); // Запись ника в переменную...



Re: Проблемка при записи string в переменную. - OKStyle - 15.04.2012

Это далеко не максимум. Можно без кастомных функций записывать имя в переменную. Уже давно проскакивало на форуме.


Re: Проблемка при записи string в переменную. - iEnemY - 15.04.2012

Да, где то даже видел вариант с хранением имён в переменных. Но это наиболее удобный вариант.


Re: Проблемка при записи string в переменную. - Stepashka - 15.04.2012

Quote:
Originally Posted by iEnemY
Посмотреть сообщение
Да, где то даже видел вариант с хранением имён в переменных. Но это наиболее удобный вариант.
жги ещё


Re: Проблемка при записи string в переменную. - stabker - 15.04.2012

Quote:
Originally Posted by iEnemY
Посмотреть сообщение
Да, где то даже видел вариант с хранением имён в переменных. Но это наиболее удобный вариант.
При коннекте/авторизации можно сразу имя получать и в переменную записывать, а потом использовать где надо. Помоему если об этом говорить, то это самый лучший вариант


Re: Проблемка при записи string в переменную. - iEnemY - 15.04.2012

Ну я его упоминал... а товарищ на s делает вид, что есть еще что-то лучше.


Re: Проблемка при записи string в переменную. - OKStyle - 15.04.2012

Quote:
Originally Posted by iEnemY
Посмотреть сообщение
Ну я его упоминал... а товарищ на s делает вид, что есть еще что-то лучше.
Чет я не видел, чтобы ты про это говорил. Или "сохранение имён в переменных" и было тем самым упоминанием?


Re: Проблемка при записи string в переменную. - iEnemY - 15.04.2012

Так. Сохранение имени (ника) в переменную (массив), в какой либо момент. И дальнейшее использования содержимого массива по айди игрока. Мы об этом говорим? Я сразу об этом и начал.


Re: Проблемка при записи string в переменную. - Stepashka - 15.04.2012

Quote:
Originally Posted by iEnemY
Посмотреть сообщение
Можно упростить до максимума:
pawn Код:
stock ReturnName(_p) // ну или для краткости RN(_p)
{
    new _n[24];
    GetPlayerName(_p, _n, sizeof(_n));
    return _n;
}
// Использование, к примеру:
new _s[256];
format(_s, sizeof(_s), "Игрок %s умер", ReturnName(_p));
SendClientMessageToAll(0xFF0000F6, _s);
// Или же...
format(PlayerInfo[playerid][pName], 20, "%s", ReturnName(playerid)); // Запись ника в переменную...
Quote:
Originally Posted by iEnemY
Посмотреть сообщение
Да, где то даже видел вариант с хранением имён в переменных. Но это наиболее удобный вариант.
ты вообще за своими мыслями следишь? Или у тебя раздвоение личности?

Ты говоришь что видел сохранение в переменную, но предложенный тобой вариант наиболее удобный. Вот я тебе и говорю: "жги ещё!". Твои показания путаются.


Re: Проблемка при записи string в переменную. - iEnemY - 16.04.2012

Когда я говорил "наиболее удобный", я имел ввиду для меня. Для остальных, вероятно, удобны другие варианты. В следующий раз надо будет дописывать ИМХО...


Re: Проблемка при записи string в переменную. - safari - 16.04.2012

Ребят доброго времени суток!Спасибо всем я тут разобрался!

решение:

PHP код:
new Nick[max_players][24];//переменная
new pname[24],tname[24],string[24];
     
GetPlayerName(playerid,pname,sizeof(pname));//ник игрока
     
GetPlayerName(tg,tname,sizeof(tname));//ник 2-го игрока
     
     
strmid(Nick[tg], pname0strlen(pname), 255);//ко 2-игроку имя 1-го
     
strmid(Nick[playerid], tname0strlen(tname), 255);//к 1-му имя 2-го 
все пашет!


Re: Проблемка при записи string в переменную. - Stepashka - 16.04.2012

Quote:
Originally Posted by safari
Посмотреть сообщение
Ребят доброго времени суток!Спасибо всем я тут разобрался!

решение:

PHP код:
new Nick[max_players][24];//переменная
new pname[24],tname[24],string[24];
     
GetPlayerName(playerid,pname,sizeof(pname));//ник игрока
     
GetPlayerName(tg,tname,sizeof(tname));//ник 2-го игрока
     
     
strmid(Nick[tg], pname0strlen(pname), 255);//ко 2-игроку имя 1-го
     
strmid(Nick[playerid], tname0strlen(tname), 255);//к 1-му имя 2-го 
все пашет!
оставь в покое промежуточные переменные!

pawn Код:
new Nick[max_players][24];//переменная

GetPlayerName(playerid, Nick[tg], MAX_PLAYER_NAME);//ко 2-игроку имя 1-го
GetPlayerName(tg, Nick[playerid], MAX_PLAYER_NAME);//к 1-му имя 2-го