Косой_Карлик
Умник
привет, была проблема с командой /coins в ней я допустил ошибку вместо
вот моя команда чтобы вы понимали о чем я
вот я нашел в интернете, но там не написано можно ли использовать 2 спецификатора в одной команде или 1 общий
Вот тебе еще ряд некоторых спецификаторов,которыми ты можешь воспользоваться:
u - не знаю как расшифровать,но может ты встречал команды,где допустим пишут: /s [id/имя] [текст],так вот спецификатор u - будет хранить в себе либо число либо текст,я его не особо использую и по правде говоря о нем толком сам ничего не знаю
f - (float) вещественное число (дробное число 12.3 и т.д)
d - (расшифровку хз) целое число (десятичное число)
s - (string) строка
c – (char) один символ. Это может быть одна буква или одна цифра. Если ты введешь например под этот спецификатор слово: Привет. Он возьмет только букву П.
i - (integer)целое число в любом формате (десятичное,восьмеричное или шестнадцатиричное) (если не ошибаюсь еще хранит до 255 значений,если будет 256,то фейл)
x - шестнадцатиричная сис-ма счисления. То есть например цвет: 0xFFFFFFAA, встречал ведь?!
if(sscanf(params, "uf", targetid, coins)) return 1; использовал вообще if(sscanf(params, "dd", params[0], params[1])) return 1; благо люди помогли большое им спасибо, Но сейчас вопрос в другом, у меня проблема, есть у меня команда /dice и она не такая как у всех, еще даже не до конца написано но не суть. вообщем в ней можно играть в кости с ботами, даже когда нету игроков на сервере ,еще в добавок ко всему можно и с игроками играть и это все в одной команде /dice, и она сделана следующим образом, там сделал я и игру на вирты, и игру на койны, и вот в чем мой вопрос, например на вирты $ у меня if(sscanf(params, "dd", params[0], params[1])) return 1; идеально работает как и должно, но на койны у меня с ней беда тоесть я не могу использовать "dd" надо использовать "uf" как мне можно сделать 2 спецификатора в одной команде, или есть какой то спецификатор которые именно можно использовать в этой команде, гуглил нечего кроме этого не нашелвот моя команда чтобы вы понимали о чем я
C++:
CMD:dice(playerid, params[])
{
if(sscanf(params, "dd", params[0], params[1]))
return SendClientMessage(playerid, -1, !"Используйте: /dice [ID] [Ставка]");
if(IsPlayerInRangeOfPoint(playerid, 2.4, 1960.2296,1026.6403,993.5042))//Игра с ботом на вирты через /dice 301 [сумма]
{
if(params[0] == 301)
{
if(GetPVarInt(playerid,"AntiFloodDice") > gettime())
return SendClientMessage(playerid,COLOR_GREY, !"В данный момент Вы не можете играть");
if(!(5_000 <= params[1] <= 100_000_000))
return SendClientMessage(playerid, COLOR_GREY, !"Ошибка: Сумма ставки от 5.000$ до 100.000.000$");
if(PlayerInfo[playerid][pCash] < params[1])
return SendClientMessage(playerid, COLOR_GREY,!"Ошибка: Не достаточно денег для игры.");
new
dice_one = (random(6) + 1),
dice_two = (random(6) + 1),
string[110]
;
format(string, sizeof(string), "Thomas_Perry и %s бросили кости. Результат: {CC9900}%i:%i",PlayerInfo[playerid][pNames], dice_one, dice_two);
ProxDetector(playerid, 20.0, COLOR_PURPLE, string);
ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 0, 4500, 1);
SetTimerEx("KostiTime", 4500, false, "i", playerid);
PlayerPlaySound(playerid, 33401, 0.0, 0.0, 0.0);
switch(dice_two)
{
case 1: SetPlayerAttachedObject(playerid, 1, 1851, 1, 0.062400, 0.453750, 0.000000, 360.0000, 90.0000, 0.0000);
case 2: SetPlayerAttachedObject(playerid, 1, 1851, 1, 0.062400, 0.453750, 0.000000, 360.0000, 180.0000, 0.0000);
case 3: SetPlayerAttachedObject(playerid, 1, 1851, 1, 0.062400, 0.453750, 0.000000, 360.0000, 360.0000, 90.0000);
case 4: SetPlayerAttachedObject(playerid, 1, 1851, 1, 0.062400, 0.453750, 0.000000, 360.0000, 360.0000, 270.0000);
case 5: SetPlayerAttachedObject(playerid, 1, 1851, 1, 0.062400, 0.453750, 0.000000, 360.0000, 360.0000, 0.0000);
case 6: SetPlayerAttachedObject(playerid, 1, 1851, 1, 0.062400, 0.453750, 0.000000, 360.0000, 270.0000, 0.0000);
}
if(dice_one > dice_two)
{
PlayerInfo[playerid][pCash] -= params[1];
SendClientMessage(playerid, 0xFF6600AA, "К сожалению, Вы проиграли!");
format(stringer1,sizeof(stringer1),"~r~-%i$",params[1]);
GameTextForPlayer(playerid,stringer1, 5000, 1);
}
else if(dice_one < dice_two)
{
PlayerInfo[playerid][pCash] += params[1];
SendClientMessage(playerid, 0x63cb00FF, "Поздравляем, Вы выиграли!");
format(stringer1,sizeof(stringer1),"~g~+%i$",params[1]);
GameTextForPlayer(playerid,stringer1, 5000, 1);
}
else
{
SendClientMessage(playerid, 0xd78a38AA, "Игра закончилась в ничью!");
}
format(string, sizeof(string), "Выпало: %i", dice_two);
SetPlayerChatBubble(playerid, string, 0x1CEF00AA, 20.0, 3000);
SetPVarInt(playerid,"AntiFloodDice",gettime() + 7);
return 1;
}
}
if(IsPlayerInRangeOfPoint(playerid, 2.4, 1959.9445,1020.7394,993.5042))//Игра с ботом на койны через /dice 302 [сумма]
{
if(params[0] == 302)
{
if(GetPVarInt(playerid,"AntiFloodDice") > gettime())
return SendClientMessage(playerid,COLOR_GREY, !"В данный момент Вы не можете играть");
if(!(1 <= params[1] <= 1000000))
return SendClientMessage(playerid, COLOR_GREY, !"Ошибка: Сумма ставки от 1 coins до 1.000.000 coins");
if(PlayerInfo[playerid][pCoins] < params[1])
return SendClientMessage(playerid, COLOR_GREY,!"Ошибка: Не достаточно Coins для игры.");
new
dice_one = (random(6) + 1),
dice_two = (random(6) + 1),
string[110]
;
format(string, sizeof(string), "Kevin_Martinez и %s бросили кости. Результат: {CC9900}%i:%i",PlayerInfo[playerid][pNames], dice_one, dice_two);
ProxDetector(playerid, 20.0, COLOR_PURPLE, string);
ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 0, 4500, 1);
SetTimerEx("KostiTime", 4500, false, "i", playerid);
PlayerPlaySound(playerid, 33401, 0.0, 0.0, 0.0);
switch(dice_two)
{
case 1: SetPlayerAttachedObject(playerid, 1, 1851, 1, 0.062400, 0.453750, 0.000000, 360.0000, 90.0000, 0.0000);
case 2: SetPlayerAttachedObject(playerid, 1, 1851, 1, 0.062400, 0.453750, 0.000000, 360.0000, 180.0000, 0.0000);
case 3: SetPlayerAttachedObject(playerid, 1, 1851, 1, 0.062400, 0.453750, 0.000000, 360.0000, 360.0000, 90.0000);
case 4: SetPlayerAttachedObject(playerid, 1, 1851, 1, 0.062400, 0.453750, 0.000000, 360.0000, 360.0000, 270.0000);
case 5: SetPlayerAttachedObject(playerid, 1, 1851, 1, 0.062400, 0.453750, 0.000000, 360.0000, 360.0000, 0.0000);
case 6: SetPlayerAttachedObject(playerid, 1, 1851, 1, 0.062400, 0.453750, 0.000000, 360.0000, 270.0000, 0.0000);
}
if(dice_one > dice_two)
{
new Float:coins = PlayerInfo[playerid][pCoins] -= params[1];
PlayerInfo[playerid][pCoins] -= coins;
SendClientMessage(playerid, 0xFF6600AA, "К сожалению, Вы проиграли!");
format(stringer1,sizeof(stringer1),"~r~-%.06f coins",coins);
GameTextForPlayer(playerid,stringer1, 5000, 1);
}
else if(dice_one < dice_two)
{
new Float:coins = PlayerInfo[playerid][pCoins] += params[1];
PlayerInfo[playerid][pCoins] += coins;
SendClientMessage(playerid, 0x63cb00FF, "Поздравляем, Вы выиграли!");
format(stringer1,sizeof(stringer1),"+%.06f coins",coins);
GameTextForPlayer(playerid,stringer1, 5000, 1);
}
else
{
SendClientMessage(playerid, 0xd78a38AA, "Игра закончилась в ничью!");
}
format(string, sizeof(string), "Выпало: %i", dice_two);
SetPlayerChatBubble(playerid, string, 0x1CEF00AA, 20.0, 3000);
SetPVarInt(playerid,"AntiFloodDice",gettime() + 7);
return 1;
}
}
if(IsPlayerInRangeOfPoint(playerid, 2.4, 1960.2296,1026.6403,993.5042))//Игра с другим игроком на вирты через /dice id [сумма]
{
if(!(1 <= params[1] <= 100_000_000))
return SendClientMessage(playerid, COLOR_GREY, !"Ошибка: Сумма ставки от 1$ до 100.000.000$.");
if(!IsPlayerConnected(params[0]))
return SendClientMessage(playerid, COLOR_GREY, !"Ошибка: Такого игрока не существует.");
if(!ProxDetectorS(8.0, playerid, params[0]))
return SendClientMessage(playerid, COLOR_GREY, !"Ошибка: Вы далеко друг от друга.");
if(params[0] == playerid)
return SendClientMessage(playerid, COLOR_GREY, !"Ошибка: Вы указали свой ID.");
if(PlayerInfo[playerid][pCash] < params[1])
return SendClientMessage(playerid, COLOR_GREY, !"Ошибка: У Вас недостаточно денег для игры.");
if(PlayerInfo[params[0]][pCash] < params[1])
return SendClientMessage(playerid, COLOR_GREY, !"Ошибка: У игрока нету столько денег для игры.");
SendMes(playerid, C_BLUE, "Вы предложили %s[%i] бросить кости. Ставка: $%i", PlayerInfo[params[0]][pNames], params[0], params[1]);
SendMes(params[0], C_BLUE, "%s[%i] предлагает Вам бросить кости. Ставка: $%i", PlayerInfo[playerid][pNames], playerid, params[1]);
SendClientMessage(params[0], -1, !"Нажмите {03c03c}Y {FFFFFF}чтобы согласиться или {ff7518}N {FFFFFF}для отказа");
SetPVarInt(playerid, "Select", 1);
SetPVarInt(playerid, "price_dice", params[1]);
SetPVarInt(params[0], "SelectType", 4);
pSelectTemp2[params[0]] = playerid;
PlayerPlaySound(playerid, 33401, 0.0, 0.0, 10.0);
PlayerPlaySound(params[0], 33401, 0.0, 0.0, 10.0);
}
if(IsPlayerInRangeOfPoint(playerid, 2.4, 1959.9445,1020.7394,993.5042))//Игра с другим игроком на койны через /dice id [сумма]
{
if(!(1 <= params[1] <= 10_000_000))
return SendClientMessage(playerid, COLOR_GREY, !"Ошибка: Сумма ставки от 1 Coins до 10.000.000 Coins.");
if(!IsPlayerConnected(params[0]))
return SendClientMessage(playerid, COLOR_GREY, !"Ошибка: Такого игрока не существует.");
if(!ProxDetectorS(8.0, playerid, params[0]))
return SendClientMessage(playerid, COLOR_GREY, !"Ошибка: Вы далеко друг от друга.");
if(params[0] == playerid)
return SendClientMessage(playerid, COLOR_GREY, !"Ошибка: Вы указали свой ID.");
if(PlayerInfo[playerid][pCoins] < params[1])
return SendClientMessage(playerid, COLOR_GREY, !"Ошибка: У Вас недостаточно Coins для игры.");
if(PlayerInfo[params[0]][pCoins] < params[1])
return SendClientMessage(playerid, COLOR_GREY, !"Ошибка: У игрока нету столько Coins для игры.");
SendMes(playerid, C_BLUE, "Вы предложили %s[%i] бросить кости. Ставка: %.06f Coins", PlayerInfo[params[0]][pNames], params[0], params[1]);
SendMes(params[0], C_BLUE, "%s[%i] предлагает Вам бросить кости. Ставка: %.06f Coins", PlayerInfo[playerid][pNames], playerid, params[1]);
SendClientMessage(params[0], -1, !"Нажмите {03c03c}Y {FFFFFF}чтобы согласиться или {ff7518}N {FFFFFF}для отказа");
SetPVarInt(playerid, "Select", 1);
SetPVarInt(playerid, "price_dice1", params[1]);
SetPVarInt(params[0], "SelectType", 7);
pSelectTemp2[params[0]] = playerid;
PlayerPlaySound(playerid, 33401, 0.0, 0.0, 10.0);
PlayerPlaySound(params[0], 33401, 0.0, 0.0, 10.0);
}
return 1;
}
вот я нашел в интернете, но там не написано можно ли использовать 2 спецификатора в одной команде или 1 общий
Вот тебе еще ряд некоторых спецификаторов,которыми ты можешь воспользоваться:
u - не знаю как расшифровать,но может ты встречал команды,где допустим пишут: /s [id/имя] [текст],так вот спецификатор u - будет хранить в себе либо число либо текст,я его не особо использую и по правде говоря о нем толком сам ничего не знаю
f - (float) вещественное число (дробное число 12.3 и т.д)
d - (расшифровку хз) целое число (десятичное число)
s - (string) строка
c – (char) один символ. Это может быть одна буква или одна цифра. Если ты введешь например под этот спецификатор слово: Привет. Он возьмет только букву П.
i - (integer)целое число в любом формате (десятичное,восьмеричное или шестнадцатиричное) (если не ошибаюсь еще хранит до 255 значений,если будет 256,то фейл)
x - шестнадцатиричная сис-ма счисления. То есть например цвет: 0xFFFFFFAA, встречал ведь?!
Последнее редактирование:
