PDA

Просмотр полной версии : [Вопрос] Вопрос по реализации



Витёк
30.05.2017, 10:20
Добрый день
Задался таким вопросом
Есть строка

CreateDynamicObject(19464, 0.024787,-11.852722,0.000000, 0.0,0.0,0.0);
как можно её поделить на переменные?
к примеру:


new
model,
Float:X,
Float:Y,
Float:Z,
Float:RotX,
Float:RotY,
Float:RotZ;
CreateDynamicObject(model, X,Y,Z,RotX,RotY,RotZ);
а точнее как мне из строки узнать все пораметры и записать в переменные

DeimoS
30.05.2017, 11:15
Перехват функций, часть 1: основы (http://pro-pawn.ru/showthread.php?10447-%D0%9F%D0%B5%D1%80%D0%B5%D1%85%D0%B2%D0%B0%D1%82-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9-%D1%87%D0%B0%D1%81%D1%82%D1%8C-1-%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B)
Перехват функций, часть 2: практика - пишем античит на HP (http://pro-pawn.ru/showthread.php?10611-%D0%9F%D0%B5%D1%80%D0%B5%D1%85%D0%B2%D0%B0%D1%82-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9-%D1%87%D0%B0%D1%81%D1%82%D1%8C-2-%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D0%B0-%D0%BF%D0%B8%D1%88%D0%B5%D0%BC-%D0%B0%D0%BD%D1%82%D0%B8%D1%87%D0%B8%D1%82-%D0%BD%D0%B0-HP)

Seregamil
30.05.2017, 11:16
Добрый день
Задался таким вопросом
Есть строка

CreateDynamicObject(19464, 0.024787,-11.852722,0.000000, 0.0,0.0,0.0);
как можно её поделить на переменные?
к примеру:


new
model,
Float:X,
Float:Y,
Float:Z,
Float:RotX,
Float:RotY,
Float:RotZ;
CreateDynamicObject(model, X,Y,Z,RotX,RotY,RotZ);
а точнее как мне из строки узнать все пораметры и записать в переменные
GetDynamicObjectPos, GetDynamicObjectRot, GetDynamicObjectModel

Витёк
30.05.2017, 11:21
Перехват функций, часть 1: основы (http://pro-pawn.ru/showthread.php?10447-%D0%9F%D0%B5%D1%80%D0%B5%D1%85%D0%B2%D0%B0%D1%82-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9-%D1%87%D0%B0%D1%81%D1%82%D1%8C-1-%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B)
Перехват функций, часть 2: практика - пишем античит на HP (http://pro-pawn.ru/showthread.php?10611-%D0%9F%D0%B5%D1%80%D0%B5%D1%85%D0%B2%D0%B0%D1%82-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9-%D1%87%D0%B0%D1%81%D1%82%D1%8C-2-%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D0%B0-%D0%BF%D0%B8%D1%88%D0%B5%D0%BC-%D0%B0%D0%BD%D1%82%D0%B8%D1%87%D0%B8%D1%82-%D0%BD%D0%B0-HP)

мне не перехват надо а к примеру как работает функция
format(str, sizeof str, "CreateDynamicObject(%d, %f,%f,%f,%f,%f,%f);", model, X,Y,Z,RotX,RotY,RotZ); а токо на оборот

- - - Добавлено - - -


GetDynamicObjectPos, GetDynamicObjectRot, GetDynamicObjectModel

а если к примеру я захочу поставить там за место CreateDynamicObject любую другую (не стандарт) функцию
P.S написал выше пример может кто поймёт

DeimoS
30.05.2017, 11:25
GetDynamicObjectPos, GetDynamicObjectRot, GetDynamicObjectModel

Или же просто сохранить ID объекта и потом доставать нужную информацию при помощи

native Streamer_GetFloatData(type, STREAMER_ALL_TAGS id, data, &Float:result);
native Streamer_SetFloatData(type, STREAMER_ALL_TAGS id, data, Float:value);
native Streamer_GetIntData(type, STREAMER_ALL_TAGS id, data);
native Streamer_SetIntData(type, STREAMER_ALL_TAGS id, data, value);
native Streamer_GetArrayData(type, STREAMER_ALL_TAGS id, data, dest[], maxdest = sizeof dest);
native Streamer_SetArrayData(type, STREAMER_ALL_TAGS id, data, const src[], maxsrc = sizeof src);
не создавая дополнительных глобальных массивов :wizard:

- - - Добавлено - - -


мне не перехват надо а к примеру как работает функция
format(str, sizeof str, "CreateDynamicObject(%d, %f,%f,%f,%f,%f,%f);", model, X,Y,Z,RotX,RotY,RotZ); а токо на оборот

Это в перехвате можно сделать. Ну или макрос:

#define CreateDynamicObject(%0,%1,%2,%3,%4,%5,%6) format(str, sizeof str, "CreateDynamicObject(%d, %f,%f,%f,%f,%f,%f);", %0,%1,%2,%3,%4,%5,%6)
Но тогда вообще все CreateDynamicObject после макроса станут format

Скажи конкретно что ты хочешь

Витёк
30.05.2017, 11:28
Или же просто сохранить ID объекта и потом доставать нужную информацию при помощи

native Streamer_GetFloatData(type, STREAMER_ALL_TAGS id, data, &Float:result);
native Streamer_SetFloatData(type, STREAMER_ALL_TAGS id, data, Float:value);
native Streamer_GetIntData(type, STREAMER_ALL_TAGS id, data);
native Streamer_SetIntData(type, STREAMER_ALL_TAGS id, data, value);
native Streamer_GetArrayData(type, STREAMER_ALL_TAGS id, data, dest[], maxdest = sizeof dest);
native Streamer_SetArrayData(type, STREAMER_ALL_TAGS id, data, const src[], maxsrc = sizeof src);
не создавая дополнительных глобальных массивов :wizard:

- - - Добавлено - - -



Это в перехвате можно сделать. Ну или макрос:

#define CreateDynamicObject(%0,%1,%2,%3,%4,%5,%6) format(str, sizeof str, "CreateDynamicObject(%d, %f,%f,%f,%f,%f,%f);", %0,%1,%2,%3,%4,%5,%6)
Но тогда вообще все CreateDynamicObject после макроса станут format

Скажи конкретно что ты хочешь
ну я так вижу не кто и не понял что надо
вотк примеру есть масив str в нём будет строка записана "CreateDynamicObject(19464, 0.024787,-11.852722,0.000000, 0.0,0.0,0.0);" ну вот и её надо будет как-то поделить по переменным (тоесть что-бы каждый параметр был в переменной)

Fallen A.
30.05.2017, 11:32
ну я так вижу не кто и не понял что надо
вотк примеру есть масив str в нём будет строка записана "CreateDynamicObject(19464, 0.024787,-11.852722,0.000000, 0.0,0.0,0.0);" ну вот и её надо будет как-то поделить по переменным (тоесть что-бы каждый параметр был в переменной)

И зачем в массив записывать всю строку? Бред.

Для чего весь этот сыр бор и в каком месте необходимо применение?

Витёк
30.05.2017, 11:36
И зачем в массив записывать всю строку? Бред.

Для чего весь этот сыр бор и в каком месте необходимо применение?

у меня есть функция она загружает объекты из файла в 1 строку (не токо объекты и много чего другова)
Ну вот мне надо как-то форматирнуть строку чтобы всё было в переменных ну а потом я уже создал сам объект ну или что-то другое

DeimoS
30.05.2017, 11:38
Ну так используй sscanf

Витёк
30.05.2017, 11:44
Ну так используй sscanf

я токо знаю что ссканф может расспоковать строки типо 23|23.02|test тоесть p<|>dfs[4]
а такие как я выше предоставил я не знаю как именно расспоковать

Nexius_Tailer
30.05.2017, 12:21
я токо знаю что ссканф может расспоковать строки типо 23|23.02|test тоесть p<|>dfs[4]
а такие как я выше предоставил я не знаю как именно расспоковать
Вот пример (https://github.com/fusez/Map-Editor/blob/master/mapedit/mparse/functions.pwn#L273) загрузки CreateObject из файла с помощью sscanf'а