Просмотр полной версии : [FS] PawnoWoker v0.1 от Тузика | Разработка
Пишу сразу, прошу не удалять тему, а лучше вообще закрыть))
Здесь будет дневник введения об обновлении FS.
Сама его суть (возможно не все выполню :D Но это моя мечта и мой план):
1) Создание фракционного транспорта.
1.1) Нет возможности в него сесть, если игрок не находится в этой фракции.
1.2) Есть возможность установки сирены.
1.3) Есть возможность завести/заглушить двигатель или фары, если игрок имеет ключи (Ключ = фракции).
2) Создание точки появления (spawn).
3) Создание пикапов
3.1) Создание пикапа с точкой телепортации (с самого пикапа в другое место (не второй пикап))
3.2) Создание пикапа с выдачей оружия/здоровья/брони... (можете предлагать что добавить, кроме объектов (насчет денег - думаю массив Info[playerid][cMoney] сами добавите))
(Не буду делать диалоговое, сами напишите :3)
Обновление 28.07:
Сделал сохранение позиций: игрока, транспорта, пикапа с телепортом, пикапа с выдачей.
Сделал функцию получения идентификатора :3 (Это было убийство, то 0,10,20, то 0,5,15. Теперь 0,1,2,3 :*)
Обновление 29.07: Сделал выгрузку транспорта на сервер.
new.pwn (Яндекс Диск) (https://yadi.sk/d/o5_lo59CthknL)
new.pwn (Pastebin) (http://pastebin.com/0988JgmM)
TheMallard
28.07.2016, 22:35
почему сток?! сток это модификатор!
почему сток?! сток это модификатор!
Ты про что? Там функции
Desulaid
28.07.2016, 23:29
https://pp.vk.me/c7001/v7001169/24bda/WBnx5fQdmLI.jpg
Котик в ужасе 0Ao
if(weapon) weapon = 0, format(string, sizeof(string), "не выдавать");
else weapon = 1, format(string, sizeof(string), "выдавать");
Вы по РЛС учились кодить? Или это все ваше пристрастие к тяжелым наркотикам?
Вот. Можно сделать куда проще.
string = ((weapon) ? ("не выдавать") : ("выдавать"));
От форматирования можно отказаться, сцепляя строки.
https://pp.vk.me/c7001/v7001169/24bda/WBnx5fQdmLI.jpg
Котик в ужасе 0Ao
if(weapon) weapon = 0, format(string, sizeof(string), "не выдавать");
else weapon = 1, format(string, sizeof(string), "выдавать");
Вы по РЛС учились кодить? Или это все ваше пристрастие к тяжелым наркотикам?
Вот. Можно сделать куда проще.
string = ((weapon) ? ("не выдавать") : ("выдавать"));
От форматирования можно отказаться, сцепляя строки.
Сир, упакуйте вашу строку
1) это все будет редактироваться.
2) сир, ты знаешь почему я писал через лог.оператор
3) а вот за string = (.. спасибо :3 А то я писал бред "weapon == 0? .." ну и шли ошибки :3
Так то мысль была.
Но я повторю: это только дневник, в котором может копаться каждый и ловить функции дорабатывать/делать))
LoadPickupFloatInfoFromFile(pickupid, condition)
{
new File:file_ptr, loadinfo[60];
new gpickupid, interiorid, modelid, pickuptype, Float:X,Float:Y,Float:Z, Float:R, Float:infoload;
new pc_type, pc_weapon, pc_health, pc_armour;
file_ptr = fopen("Pickups.txt",filemode:io_read);
if(!file_ptr) return 0;
while(fread(file_ptr, loadinfo, sizeof(loadinfo)))
{
if(sscanf(loadinfo, "p<,>iiiiiiiifffp<;>f", gpickupid, interiorid, pc_type, modelid, pickuptype, pc_weapon,pc_health,pc_armour, X,Y,Z, R))
{
continue;
}
if(gpickupid == pickupid)
{
switch(condition)
{
case 0: infoload = X;
case 1: infoload = Y;
case 2: infoload = Z;
case 3: infoload = R;
}
}
}
return infoload; // ***
}
Как бы мне возвратить дробное число?
*** В "return infoload;" пишет 213 предупреждение (пропущен tag).
Или можно это запихнуть в одну функцию? (Сомневаюсь)
LoadPickupIntegerInfoFromFile(pickupid, infoload)
{
new File:file_ptr, loadinfo[60];
new gpickupid, interiorid, modelid, pickuptype;
new pc_type, pc_weapon, pc_health, pc_armour;
file_ptr = fopen("Pickups.txt",filemode:io_read);
if(!file_ptr) return 0;
while(fread(file_ptr, loadinfo, sizeof(loadinfo)))
{
if(sscanf(loadinfo, "p<,>iiiiiiii", gpickupid, interiorid, pc_type, modelid, pickuptype, pc_weapon,pc_health,pc_armour))
{
continue;
}
if(gpickupid == pickupid)
{
switch(infoload)
{
case 0: infoload = interiorid;
case 1: infoload = pc_type;
case 2: infoload = modelid;
case 3: infoload = pickuptype;
case 4: infoload = pc_weapon;
case 5: infoload = pc_health;
case 6: infoload = pc_armour;
}
}
}
return infoload;
}
Seregamil
29.07.2016, 10:50
Float:LoadPickupFloatInfoFromFile(pickupid, condition)
Чтобы дробное вернуть
Float:LoadPickupFloatInfoFromFile(pickupid, condition)
Чтобы дробное вернуть
https://3.downloader.disk.yandex.ru/disk/314d9a48dd37cdcf3b285f6d1c3c55c32be314e1ab7e1fa103f82a314d960823/579b4550/syJj0PZoLTtva7Uk8vrl_j46yByEM1EpW2sfwt4Z7PjtVMa1ox2Ix9VAVSTl61ZOftkvZ3TOlFG8ZovVafCEoA%3D%3D?uid=0&filename=2016-07-29_11-58-50.png&disposition=inline&hash=&limit=0&content_type=image%2Fpng&fsize=17532&hid=8d112709a23453e180350a2b17113d7e&media_type=image&tknv=v2&etag=f6688dd4718f38a1358f6def7aaf623f
Что-то обломно :С
С (540) return 0.0; избежит предупреждение, но верно ли так будет? :D
Забыл про этот варнинг. Нужно объявлять функцию до ее использования. .__.
1) это все будет редактироваться.
2) сир, ты знаешь почему я писал через лог.оператор
3) а вот за string = (.. спасибо :3 А то я писал бред "weapon == 0? .." ну и шли ошибки :3
Так то мысль была.
Но я повторю: это только дневник, в котором может копаться каждый и ловить функции дорабатывать/делать))
Можно так:
format(string, sizeof(string), "[1] Вы выбрали %s аргумент weapon.", (weapon == 0 ? ("не выдавать") : ("выдавать")));
weapon = (weapon == 0 ? 1 : 0);
Безобразие вида:
if(weapon) weapon = 0, format(string, sizeof(string), "не выдавать");
else weapon = 1, format(string, sizeof(string), "выдавать");
format(string, sizeof(string), "[1] Вы выбрали %s агрумент weapon.", string);
и
format(pg_string, sizeof(pg_string),
"Выберите что хотите выдавать игроку:\n\
[1] %s оружие\n\
[2] %s здоровье\n\
[3] %s броню\n\
[4] Создать Pickup",
weapon == 1? ("{BF0000}Не выдавать") : ("{009900}Выдавать"),
health == 1? ("{BF0000}Не выдавать") : ("{009900}Выдавать"),
armour == 1? ("{BF0000}Не выдавать") : ("{009900}Выдавать"));
нужно заменить на что-то вроде этого:
Вверх:
new
gTextSelect[2][] = {"не выдавать", "выдавать"},
gTextSelectDialog[2][] = {"{BF0000}Не выдавать", "{009900}Выдавать"};
format(string, sizeof(string), "[1] Вы выбрали %s агрумент weapon.", gTextSelect[weapon]);
weapon = !weapon;
format(pg_string, sizeof(pg_string),
"Выберите что хотите выдавать игроку:\n\
[1] %s оружие\n\
[2] %s здоровье\n\
[3] %s броню\n\
[4] Создать Pickup",
gTextSelectDialog[weapon],
gTextSelectDialog[health],
gTextSelectDialog[armour]);
Ну и ещё куча мелочей, таких как лишние вызовы IsPlayerInAnyVehicle, ведь достаточно использовать результат GetPlayerVehicleID сверяя его с нулём.
Ещё у скрипта будут серьёзные проблемы, если им одновременно будут пользоваться два или более игроков.
Когда я буду оптимизировать, тогда я и напишу)
А сейчас это разработка (для общего доступа)
new aVehicle[MAX_PLAYERS] = -1
Вы сделали инициализацию только нулевой ячейке в массиве, остальные будут со значением 0.
Дабы инициализировать весь массив нужно сделать так:
new aVehicle[MAX_PLAYERS] = {-1,...};
new aVehicle[MAX_PLAYERS] = -1
Вы сделали инициализацию только нулевой ячейке в массиве, остальные будут со значением 0.
Дабы инициализировать весь массив нужно сделать так:
new aVehicle[MAX_PLAYERS] = {-1,...};
При удалении транспорта aVehicle будет равна -1.
Это я делал команду для тестирования транспорта, просто в мод по какой-то неизвестной мне причине не смог добавить -__-
Вроде эта версия (может изменил) (http://pro-pawn.ru/showthread.php?13980-Создание-транспорта-с-3-функциями-информация-%28-createvehicle%29)
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot