Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 7 из 7 ПерваяПервая ... 5 6 7
Показано с 61 по 70 из 70
  1. #61
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от [ForD] Посмотреть сообщение
    Не-не,имя пикапа берется из БД,и так не получиться сделать,в БД имя/id пикапа Rpikap1 например,и вот как сделать что-бы код выполнялся исходя из этого имени/id`a
    Стандартными методами - никак :) DestroyPickup работает исключительно с ID. Можно написать функцию, которая будет искать нужный тебе пикап по имени, но, по моему, гораздо проще как-то систематизировать создание пикапов, дабы знать точно под какой ячейкой в массиве скрывается какой пикап, и удалять уже напрямую, через обращение к нужной ячейке. Но если очень нужно через имя, можно так

    PHP код:
    #define MAX_PICKUPS_CREATE 10//Число пикапов, которые будут извлекаться из БД
    enum PickupInfo
    {
        
    PicupName[максимальная_длинна_имени_пикапа],
        
    PickUpId
    };
    new 
    picInfo[MAX_PICKUPS_CREATE][PickupInfo]; 

    При создании пикапа записываем ID в нашу "ячейку" Enum и задаём пикапу имя
    PHP код:
    picInfo[id][PickUpId] = CreatePickup...
    strmid(picInfo[id][PicupName], "Name"0); 
    PHP код:
    stock GetPickUpId(const name[])
    {
        for(new 
    iMAX_PICKUPS_CREATEi++)
        {
            if(
    strcmp(picInfo[i][PicupName], namefalse)) continue;
            return 
    picInfo[i][PickUpId];
        }
        
    printf("Пикап с именем \"%s\" не найден"name);
        return -
    1;

    Ну и используй так
    PHP код:
    DestroyPickup(GetPickUpId("Имя Пикапа")); 
    Работоспособность не проверял :)
    И соглашусь с постом выше. Всё это - элементарные основы и ничего сверхсложного тут нет
    Последний раз редактировалось DeimoS; 10.02.2014 в 13:04.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  2. #62
    Аватар для [ForD]
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.11.2013
    Адрес
    Свердловская обл.
    Сообщений
    688
    Репутация:
    103 ±
    На счет сложного,кому как,у меня нету времени читать и вникать в мануалы,я учусь на примерах,да и ладно уж,надоело мне с этим возиться,туму можно закрывать.
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

    25% времени в программировании уходит на размышления о том, что пользователь может сделать не так.[HR]/Брайан Хьюмс/





    #FIXSAMP

  3. #63
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от [ForD] Посмотреть сообщение
    На счет сложного,кому как,у меня нету времени читать и вникать в мануалы,я учусь на примерах,да и ладно уж,надоело мне с этим возиться,туму можно закрывать.
    То есть прочесть и разобраться времени нет, а сидеть и сначала разбираться в коде примера, а после в функциях, используемых в примере, время есть? :) Без нужных теоретических знаний ты будешь очень долго овладевать языком (и не факт, что овладеешь им верно). Но это так, совет из зала
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  4. #64
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    551
    Репутация:
    274 ±
    у меня нету времени читать и вникать в мануалы
    можешь забыть о программировании.

  5. #65
    Аватар для [ForD]
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.11.2013
    Адрес
    Свердловская обл.
    Сообщений
    688
    Репутация:
    103 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    То есть прочесть и разобраться времени нет, а сидеть и сначала разбираться в коде примера, а после в функциях, используемых в примере, время есть? :) Без нужных теоретических знаний ты будешь очень долго овладевать языком (и не факт, что овладеешь им верно). Но это так, совет из зала
    я не имел ввиду что я не читаю и т.п.
    Я просматриваю уроки\мануалы и т.п. но на примере мне проще разобраться,чем сидеть и раз 10 перечитывать одно и тоже,и то не факт что урок\мануал будет написан без ошибок..


    Цитата Сообщение от Seregamil Посмотреть сообщение
    можешь забыть о программировании.
    Хм,даже не подумаю,у тебя всегда какой-то пессимистический настрой,скушай мандаринок :3
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

    25% времени в программировании уходит на размышления о том, что пользователь может сделать не так.[HR]/Брайан Хьюмс/





    #FIXSAMP

  6. #66
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    551
    Репутация:
    274 ±
    Цитата Сообщение от [ForD] Посмотреть сообщение
    я не имел ввиду что я не читаю и т.п.
    Я просматриваю уроки\мануалы и т.п. но на примере мне проще разобраться,чем сидеть и раз 10 перечитывать одно и тоже,и то не факт что урок\мануал будет написан без ошибок..




    Хм,даже не подумаю,у тебя всегда какой-то пессимистический настрой,скушай мандаринок :3
    Я реалист, с таким отношением далеко не уйдешь.

  7. #67
    Аватар для [ForD]
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.11.2013
    Адрес
    Свердловская обл.
    Сообщений
    688
    Репутация:
    103 ±
    Цитата Сообщение от Seregamil Посмотреть сообщение
    Я реалист, с таким отношением далеко не уйдешь.
    Ндаа,реалист,и помогает тебе твой реалистический взгляд?
    Я пока не собираюсь так сказать "далеко идти",да и с pawn вообще никуда не уйдешь,это даже не ЯП а некое подобие,это для меня пока-что чисто "хобби" и не более.
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

    25% времени в программировании уходит на размышления о том, что пользователь может сделать не так.[HR]/Брайан Хьюмс/





    #FIXSAMP

  8. #68
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2590 ±
    Цитата Сообщение от [ForD] Посмотреть сообщение
    Не-не,имя пикапа берется из БД,и так не получиться сделать,в БД имя/id пикапа Rpikap1 например,и вот как сделать что-бы код выполнялся исходя из этого имени/id`a
    Если я правильно понял, нужно создавать пикапы по названию в БД и по этому же имени обрабатывать?

    Немного сложная система, но всё же:
    PHP код:
    enum db_pickup_info{
        
    dbpName[31],// имя пикапа
        
    dbpHandle    // сам пикап
    };

    new 
    db_pickups[][db_pickup_info] = {
        {
    "RPICKUP0"0}, // 0 означает, что пикап ещё не создан
        
    {"RPICKUP1"0},
        {
    "RPICKUP2"0},
        {
    "RPICKUP3"0}
    }; 
    Дальше в OnGameModeInit считываешь из БД свойства каждого пикапа и создаёшь эти пикапы. Точно сказать, как всё это считывать, я не могу, поскольку с базами данных не работал, но всё же вот примерный набросок:
    PHP код:
    for(new i=0,j,name[31],modeltype,Float:x,Float:y,Float:zi<sizeof(db_pickups); ++i)
    {
        
    // взять из таблицы строку с именем пикапа, моделью, типом и его координатами
        // ... // какие-то манипуляции с чтением строки из БД
        
        // по названию найти номер места под пикап
        
    for(j=0j<sizeof(db_pickups); ++j)
        {
            if(
    strcmp(namedb_pickups[j][dbpName]) == 0)
            {
                
    // если место найдено - создать пикап и выйти из цикла (прервать поиск)
                
    db_pickups[j][dbpHandle] = CreatePickup(modeltypexyz0);
                break;
            }
        }

    И затем обрабатываешь пикапы в OnPlayerPickUpPickup:
    PHP код:
    for(new i=0i<sizeof(db_pickups); ++i)
        if(
    pickupid == db_pickups[i][dbpHandle])
        {
            if(
    strcmp(db_pickups[i][dbpName], "RPICKUP0") == 0)
            {
                
    // ...
            
    }
            else if(
    strcmp(db_pickups[i][dbpName], "RPICKUP1") == 0)
            {
                
    // ...
            
    }
        } 
    Система не самая простая и будет теряться много времени на strcmp, НО строковых операций можно избежать, используя y_stringhash. В ближайшее время попробую выложить мануал по этому инклуду.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  9. Пользователь сказал cпасибо:
    [ForD] (10.02.2014)
  10. #69
    Аватар для [ForD]
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.11.2013
    Адрес
    Свердловская обл.
    Сообщений
    688
    Репутация:
    103 ±
    Цитата Сообщение от Daniel_Cortez Посмотреть сообщение
    Если я правильно понял, нужно создавать пикапы по названию в БД и по этому же имени обрабатывать?

    Немного сложная система, но всё же:
    PHP код:
    enum db_pickup_info{
        
    dbpName[31],// имя пикапа
        
    dbpHandle    // сам пикап
    };

    new 
    db_pickups[][db_pickup_info] = {
        {
    "RPICKUP0"0}, // 0 означает, что пикап ещё не создан
        
    {"RPICKUP1"0},
        {
    "RPICKUP2"0},
        {
    "RPICKUP3"0}
    }; 
    Дальше в OnGameModeInit считываешь из БД свойства каждого пикапа и создаёшь эти пикапы. Точно сказать, как всё это считывать, я не могу, поскольку с базами данных не работал, но всё же вот примерный набросок:
    PHP код:
    for(new i=0,j,name[31],modeltype,Float:x,Float:y,Float:zi<sizeof(db_pickups); ++i)
    {
        
    // взять из таблицы строку с именем пикапа, моделью, типом и его координатами
        // ... // какие-то манипуляции с чтением строки из БД
        
        // по названию найти номер места под пикап
        
    for(j=0j<sizeof(db_pickups); ++j)
        {
            if(
    strcmp(namedb_pickups[j][dbpName]) == 0)
            {
                
    // если место найдено - создать пикап и выйти из цикла (прервать поиск)
                
    db_pickups[j][dbpHandle] = CreatePickup(modeltypexyz0);
                break;
            }
        }

    И затем обрабатываешь пикапы в OnPlayerPickUpPickup:
    PHP код:
    for(new i=0i<sizeof(db_pickups); ++i)
        if(
    pickupid == db_pickups[i][dbpHandle])
        {
            if(
    strcmp(db_pickups[i][dbpName], "RPICKUP0") == 0)
            {
                
    // ...
            
    }
            else if(
    strcmp(db_pickups[i][dbpName], "RPICKUP1") == 0)
            {
                
    // ...
            
    }
        } 
    Система не самая простая и будет теряться много времени на strcmp, НО строковых операций можно избежать, используя y_stringhash. В ближайшее время попробую выложить мануал по этому инклуду.
    Большое спасибо,посмотрим что выйдет.
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

    25% времени в программировании уходит на размышления о том, что пользователь может сделать не так.[HR]/Брайан Хьюмс/





    #FIXSAMP

  11. #70
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    Закрыто.

 

 
Страница 7 из 7 ПерваяПервая ... 5 6 7

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •