Обрезание int при конвертации из char

Mr_panica

XenForo one 💖
Сообщения
924
Реакции
441
Всем привет.

У меня возникла проблема.
Допустим, есть код:
C-подобный:
char String[32];
GetCmdArg(1, String, sizeof(String));
int Index = StringToInt(String);

Допустим, в переменную String входит значение 100, после перевода в int, мы получим 100 уже в инте, вроде всё норм.
Но если значение, которое входит в String начинается с нуля, то при конвертации в int все нули убираются.
Например, в String входит значение 08018, после конвертации в int, оно будет не 08018, а 8018.
Так вот, как мне сделать, чтоб после конвертации любое число никоем образом не изменялось, не обрезалось и т.п?
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,921
  • Команда форума
  • #2
Оно не обрезается. Ведущие ноли просто убираются, но это никак не страшно. Чисто технически-то, 08018 == 8018.
 

Mr_panica

XenForo one 💖
Сообщения
924
Реакции
441
Для меня важно.
Я выдаю предметы по номеру их ID.
Есть ID 8018 и есть ID 08018, а из-за обрезания не получается выдать второе, т.к всё время выдаётся первое)
 

White Wolf

🍉
Сообщения
2,382
Реакции
2,187
  • Команда форума
  • #4
Для меня важно.
Я выдаю предметы по номеру их ID.
Есть ID 8018 и есть ID 08018, а из-за обрезания не получается выдать второе, т.к всё время выдаётся первое)
Тогда раз вы начали использовать строчное представление, то зачем конвертируете в инт?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,544
Реакции
5,011
никак
При использовании int незначащие нули всегда отбрасываются (иначе у тебя всегда были бы десятизначные числа).

Если тебя интересует вывод текста с незначащими нулями, то почитай про форматирование текста: чтобы отображались незначащие нули нужно после знака % писать 0, а чтобы показывало не меньше определённого количества знаков, то нужно добавить цифру.
Т.е. «%07i» для вывода не менее 7 символов с незначащими нулями (если ноль убрать, то вместо нулей будут подставлены пробелы).
 

Mr_panica

XenForo one 💖
Сообщения
924
Реакции
441
Тогда раз вы начали использовать строчное представление, то зачем конвертируете в инт?
ID (index) предметов хранится в int в игре, выдаются и т.п тоже.

Если тебя интересует вывод текста с незначащими нулями, то почитай про форматирование текста
Да, об этом знаю, но нет, нужен не вывод текста.

Ладно, жаль конечно, что нельзя.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,544
Реакции
5,011
Т.е. отсюда вывод: либо не использовать незначащие нули в идентификаторах, либо не конвертировать в int (можно просто делать проверку валидности без конвертации, например)

Где можно почитать про эти идентификаторы?
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,921
  • Команда форума
  • #8
@Mr_panica, ты сейчас именно про предметы TF2 говоришь? Что это такой за айтем, у которого ноль в начале?
 

Mr_panica

XenForo one 💖
Сообщения
924
Реакции
441
@Mr_panica, ты сейчас именно про предметы TF2 говоришь? Что это такой за айтем, у которого ноль в начале?
Да, предметы ТФ.
Таких предметов нет в игре.
Это кастомные.

Знаешь же, что есть tf2items_giveweapon?
Там есть валвовские оружия, например, ракетамёт с индексом 8018.
Всё было норм, пока я не решил написать свой плагин по выдачи предметов, и пока я не решил сделать выдачу не только оружек, но и шапок.
Этот ID 8018 оказался какой-то медалькой)
Да и другие кастомные ID тоже конфликтовали.
Я хотел просто прибавить к кастомным ID 0 в начале, чтоб админом было легче, типа, раньше выдавали ID 8018, теперь будет 08018, чтоб не запоминать новые, так вроде легко.
А не, не получилось)
Нет, ну можно прибавить и другое число, но всё же, хотел пойти лёгким путём)
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,921
  • Команда форума
  • #10
Там есть валвовские оружия, например, ракетамёт с индексом 8018.
Это ненастоящие предметы. Их на самом деле в игре нет. Это «костыль» именно от плагина giveweapon. Про них ничего не знает даже сам TF2Items.
 

Mr_panica

XenForo one 💖
Сообщения
924
Реакции
441
Это я знаю.
Я брал код именно из плагина giveweapon)
Поэтому и написал, что хотел бы пойти "лёгким путём"и брать ID кастомных предметов тоже в int, чтоб уже плагин не переписывать.
Но я получил уже всю необходимую мне информацию.
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,544
Реакции
5,011
хотел бы пойти "лёгким путём"и брать ID кастомных предметов тоже в int, чтоб уже плагин не переписывать.
Так добавляй не ноль, а 10, например. Или любую другую цифру, чтобы не было совпадений.
 

tonline_kms65_1

Участник
Сообщения
565
Реакции
225
Интересный вопрос.
Зачем, а главное - как дать id какой либо ent, вообще, как движек это извращение отрабатывать умудряется?
Это движек назначает id, иначе как он с ними работать то будет?
Если своей ENT назначить свой индекс, например в массиве, а назначение id доверить движку - это еще можно понять.

А если такой id уже существует, а ты ему его же пытаешься втулить?
Очень странный способ пытаться сломать работу движка.
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,921
  • Команда форума
  • #14
@tonline_kms65_1, если Вы не понимаете, о чем идёт речь, лучше не влезайте.

Говорится не об индексах энтити, а о уникальных индексах именно самих объявлений типов оружия. В TF2 помимо класснеймов энтити используется Item Definition Index, вот о нём и речь.
 

White Wolf

🍉
Сообщения
2,382
Реакции
2,187
  • Команда форума
  • #15
Интересный вопрос.
Зачем, а главное - как дать id какой либо ent, вообще, как движек это извращение отрабатывать умудряется?
Это движек назначает id, иначе как он с ними работать то будет?
Если своей ENT назначить свой индекс, например в массиве, а назначение id доверить движку - это еще можно понять.

А если такой id уже существует, а ты ему его же пытаешься втулить?
Очень странный способ пытаться сломать работу движка.
HammerId для этого не поможет?
 

tonline_kms65_1

Участник
Сообщения
565
Реакции
225
Говорится не об индексах энтити, а о уникальных индексах именно самих объявлений типов оружия. В TF2 помимо класснеймов энтити используется Item Definition Index, вот о нём и речь.
Возможно и есть такое, но у этих ENT по любому есть свой, внутренний ID(общий для всех ENT в движке), обертку можно любую сделать, я же не про обертку говорю, суть в любом случае останется.

Или я неправ? Что там, в tf, 2 движка что ли? Не поверю.
Item Definition Index - индексы у них статичные, а человек пытается дать им(дополнительным) динамичные, или я что то не понимаю?
Сообщения автоматически склеены:

HammerId для этого не поможет?
Я не знаю что это такое, предполагаю что это индекс, который присваивается при создании карты в хаммере, хотя не буду утверждать, не пользовался таким.
 
Последнее редактирование:

Madness aka null138

Участник
Сообщения
713
Реакции
734
HammerİD присваивается всем энтити, которые прописаны в самой карте. А те, что создаются после вручную - имеют значение 0.
 
Сверху Снизу