Проблема с PVarInt
#1

PHP код:
CMD:changebizness(playerid,params[])
{
    new 
str[32],string[144];
    if(
Player[playerid][Bizness] == 0)return SCM(playerid,-1,"У вас нету бизнеса");
    switch(
Player[playerid][Bizness])
    {
        case 
1:format(str,sizeof(str),"Ammo Los Santos");
    }
    new 
idplayer,cash;
    if(
sscanf(params,"dd",idplayer,cash))return SCM(playerid,-1,"Введите /changebizness [id покупателя] [сумма]");
    
//if(idplayer == playerid)return SCM(playerid,-1,"Вы не можете продать бизнес себе");
    
SendFormatedMessage(idplayer,-1,"%s предложил купить его бизнесс %s за %d. Введите Y для согласия или N для отмены",Player[playerid][Nick],str,cash);
    
SetPVarInt(idplayer,"Bizness",Player[playerid][Bizness]);
    
SetPVarInt(idplayer,"bID",playerid);
    
SetPVarInt(idplayer,"Cash",cash);
    
SetPVarInt(idplayer,"TypeArgeement",1);
    
format(string,sizeof(string),"%d",GetPVarInt(idplayer,"TypeArgeement"));
    
SCM(idplayer,-1,string);
    return 
true;

Вместо 1 выводит 0
Reply
#2

Нельзя установить PVar и сразу затребовать его, он будет доступен только после отправки пакета и получении следующего. Используй локальную переменную.
А для преобразования числа в строку используйте valstr
Reply
#3

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Нельзя установить PVar и сразу затребовать его, он будет доступен только после отправки пакета и получении следующего. Используй локальную переменную.
А для преобразования числа в строку используйте valstr
С чего это нельзя то? Он не на клиенте хранится
Reply
#4

Quote:
Originally Posted by Jon_De
Посмотреть сообщение
С чего это нельзя то? Он не на клиенте хранится
Но клиент подтверждает информацию о записи.
Reply
#5

Забавно, если бы это было правдой

pawn Код:
public OnPlayerConnect (playerid)
{
    SetPVarInt(playerid, "Test", 255);
   
    printf("Test = %i", GetPVarInt(playerid, "Test"));
}
Можеш проверить, выведет 255
Reply
#6

Quote:
Originally Posted by Ru-user
Посмотреть сообщение
Забавно, если бы это было правдой

pawn Код:
public OnPlayerConnect (playerid)
{
    SetPVarInt(playerid, "Test", 255);
   
    printf("Test = %i", GetPVarInt(playerid, "Test"));
}
Можеш проверить, выведет 255
А теперь это в других колбеках проверьте.
Reply
#7

Не надо тут выделываться. Степашка тащит. Помог бы мне степашка с загрузкой билбордов
Reply
#8

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
А теперь это в других колбеках проверьте.
Прекрасно работает.

Почему ты считаешь, что сервер должен спрашивать у клиента разрешение, на хранение данных у себя в памяти?
Кроме того, чтобы потроллить программистов.
Reply
#9

Quote:
Originally Posted by Ru-user
Посмотреть сообщение
Почему ты считаешь, что сервер должен спрашивать у клиента разрешение, на хранение данных у себя в памяти?
Сервер не разрешение спрашивает, а синхронизирует данные, PVar живет пока клиент подключен к серверу, вот эта сама проверка и тормозит сохранение.

PS и для чистоты эксперимента проверять надо не на локальной машине.
Reply
#10

Зачем же клиенту эти данные? Не вижу смысла.
Сервер выделяет память под PVar, а при закрытии соединения с клиентом освобождает её. Нафига ему синхронизировать эти данные?!
Reply
#11

Quote:
Originally Posted by Ru-user
Посмотреть сообщение
Зачем же клиенту эти данные? Не вижу смысла.
Сервер выделяет память под PVar, а при закрытии соединения с клиентом освобождает её. Нафига ему синхронизировать эти данные?!
Читайте внимательно, синхронизируются не данные, проверяется подключен ли клиент к серверу.
Reply
#12

В SetPVar... в качестве аргумента мы указываем ид игрока, а точнее ид слота. Серверу хорошо известно занят слот или нет, и для этого ему ненужно отправлять запросы в другой конец планеты.

Все-таки решил проверить на удаленном сервере, работает нормально.

В общем, не хочу дальше спорить
Reply
#13

Quote:
Originally Posted by Ru-user
Посмотреть сообщение
В SetPVar... в качестве аргумента мы указываем ид игрока, а точнее ид слота. Серверу хорошо известно занят слот или нет, и для этого ему ненужно отправлять запросы в другой конец планеты.

Все-таки решил проверить на удаленном сервере, работает нормально.

В общем, не хочу дальше спорить
поверьте на слово, не первый раз сталкиваемся когда нельзя получить PVar сразу после его записи.
Но согласен что стоит прекратить спорить.
Reply
#14

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Но клиент подтверждает информацию о записи.
Почему у меня тогда всё и всегда работает на пварах как надо? Сразу устанавливает и сразу выдает новое значение? (Пс: не на локальном сервере, на рабочем)

А у автора либо игрок не подключен под этим ид, либо ссканф тупит
Reply
#15

Всё нормально должно работать даже в пределах одного колбэка, не говоря уже об установке и получении следующей строкой. Просто Aizov засрал раздел тупыми темами.
Reply
#16

Quote:
Originally Posted by OKStyle
Посмотреть сообщение
Всё нормально должно работать даже в пределах одного колбэка, не говоря уже об установке и получении следующей строкой. Просто Aizov засрал раздел тупыми темами.
Я пишу свой мод. Если у меня не получается я создаю тему с вопросом. Вроде форум для этого предназначен.
Перевел все на переменные работает нормально.
Для теста подключите DC_CM как у меня все и затребуйте данные с Pvar'a
Reply
#17

Если не получается - юзай поиск, а не засоряй форум беспонтовыми вопросами. Форум не для тебя одного тут создан, чтобы твой мод писал весь раздел.
А dc_cmd обнови до последней версии.
Reply
#18

Quote:
Originally Posted by OKStyle
Посмотреть сообщение
Если не получается - юзай поиск, а не засоряй форум беспонтовыми вопросами. Форум не для тебя одного тут создан, чтобы твой мод писал весь раздел.
А dc_cmd обнови до последней версии.
Сначала я пользуюсь поиском. Потом уже создаю тему
Reply
#19

Quote:
Originally Posted by Aizov
Посмотреть сообщение
Сначала я пользуюсь поиском. Потом уже создаю тему
Пора единую тему создать, "Вопросы от Aizov", "Решение проблем Aizov-а", "Пишем мод Aizov-у".

Изучай то, с чем ты работаешь, бессмысленные попытки "авось заработает", как я уже говорил, ни к чему хорошему не приводят. Гвоздодёром и гвозди можно забивать, только он не для этого предназначен.
Reply
#20

Quote:
Originally Posted by White_116
Посмотреть сообщение
Пора единую тему создать, "Вопросы от Aizov", "Решение проблем Aizov-а", "Пишем мод Aizov-у".

Изучай то, с чем ты работаешь, бессмысленные попытки "авось заработает", как я уже говорил, ни к чему хорошему не приводят. Гвоздодёром и гвозди можно забивать, только он не для этого предназначен.
Улыбнуло). Дело в том что я написал большую часть кода. Я делаю то чего нету не в пабликах ни в других модах.
У меня часто бывают проблемы со сложными системами
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)