Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Получилось как-то так:
case DLG_ID_VEH_BUY: { if(response) { new if(player[playerid][p_money] < veh[i][v_price]) { SCM(playerid, COLOR_RED, !"[SERVER] У вас недостаточно денег, чтобы купить этот транспорт!"); } else { player[playerid][p_money]-=veh[i][v_price]; SavePlayer(playerid, "Money", player[playerid][p_money], "d"); new string[128+1]; format(string, sizeof(string), "UPDATE `vehicles` SET `ownerid` = '%d' WHERE `id` = '%d'", player[playerid][p_id], veh[i][v_id]); mysql_function_query(connect_mysql, string, false, "", ""); format(string, sizeof(string), "UPDATE `accounts` SET `vehid` = '%d' WHERE `id` = '%d'", veh[i][v_id], player[playerid][p_id]); mysql_function_query(connect_mysql, string, false, "", ""); } } else }
@_LoadVehs(playerid, vehicleid); @_LoadVehs(playerid, vehicleid) { new rows, fields; cache_get_data(rows, fields); if(rows) { new veh_id, veh_model, Float:veh_x, Float:veh_y, Float:veh_z, Float:veh_a, Float:veh_hp, veh_color1, veh_color2, veh_dmg1, veh_dmg2, veh_dmg3, veh_dmg4, veh_paintjob; veh_model = cache_get_field_content_int(0, "model"); veh_x = cache_get_field_content_float(0, "x"); veh_y = cache_get_field_content_float(0, "y"); veh_z = cache_get_field_content_float(0, "z"); veh_a = cache_get_field_content_float(0, "a"); veh_hp = cache_get_field_content_float(0, "hp"); veh_color1 = cache_get_field_content_int(0, "color1"); veh_color2 = cache_get_field_content_int(0, "color2"); veh_dmg1 = cache_get_field_content_int(0, "dmg1"); veh_dmg2 = cache_get_field_content_int(0, "dmg2"); veh_dmg3 = cache_get_field_content_int(0, "dmg3"); veh_dmg4 = cache_get_field_content_int(0, "dmg4"); veh_paintjob = cache_get_field_content_int(0, "paintjob"); if(veh_id != INVALID_VEHICLE_ID) return true; if(veh_paintjob > 0) ChangeVehiclePaintjob(veh_id, veh_paintjob-1); // 1, 2, 3 - нумерация винилов по порядку, 4 - отсутствие винил allvehs++; veh[veh_id][v_price] = ModelPrice[veh_model-400]; veh[veh_id][v_model] = veh_model; veh[veh_id][v_x] = veh_x; veh[veh_id][v_y] = veh_y; veh[veh_id][v_z] = veh_z; veh[veh_id][v_a] = veh_a; veh[veh_id][v_hp] = veh_hp; veh[veh_id][v_color1] = veh_color1; veh[veh_id][v_color2] = veh_color2; veh[veh_id][v_dmg1] = veh_dmg1; veh[veh_id][v_dmg2] = veh_dmg2; veh[veh_id][v_dmg3] = veh_dmg3; veh[veh_id][v_dmg4] = veh_dmg4; veh[veh_id][v_paintjob] = veh_paintjob; veh[veh_id][v_class] = cache_get_field_content_int(0, "class"); veh[veh_id][v_ownerid] = playerid; veh[veh_id][v_id] = vehicleid; } return true; }
{ if(newstate == PLAYER_STATE_DRIVER) { new if(IsABicycle(vehicleid) || IsAHelicopter(vehicleid)) { } for(new i; i < allvehs; i++) { if(vehicleid < i) continue; if(veh[vehicleid][v_id] == SALE_VEHICLE_ID) { static fmt_str[] = "{00C0FF}Желаете ли вы купить данный транспорт?\ \n\ \n{00C0FF}Модель:\t\t{F81414}%s\ \n{00C0FF}ID:\t\t{F81414}%d"; new string[sizeof(fmt_str)-4+4+20+1]; SPD(playerid, DLG_ID_VEH_BUY, DSM, !"{00C0FF}Покупка транспорта", string, !"{00C0FF}Да", !"{00C0FF}Нет"); } else { if(veh[vehicleid][v_ownerid] != playerid) } } } return true; }
Опять же, не вчитывался в код особо (то есть, могут быть и другие проблемы, помимо перечисленных).
Два запроса можно объединить в один:
new string[90+10+10+1]; "UPDATE vehicles AS v, accounts AS a SET a.vehid=v.id, v.ownerid=a.id WHERE v.id=%d AND a.id=%d", veh[i][v_id], player[playerid][p_id]); mysql_function_query(connect_mysql, string, false, "", "");
Для MySQL это будут всё те же 2 запроса, но сервер, при этом, меньше действий совершать будет.
И зачем в OnPlayerStateChange цикл?
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Не мог бы ты объяснить смысл этого запроса? Как и где использовать "AS, v" и точки в запросах?
Когда писал сам не знал, а сейчас не обратил на это внимания
Вот так будет правильнее:
{ if(newstate == PLAYER_STATE_DRIVER) { new if(IsABicycle(vehicleid) || IsAHelicopter(vehicleid)) { engine_veh{vehicleid} = true; } if(veh[vehicleid][v_id] == SALE_VEHICLE_ID) { static fmt_str[] = "{00C0FF}Желаете ли вы купить данный транспорт?\ \n\ \n{00C0FF}Модель:\t\t{F81414}%s\ \n{00C0FF}ID:\t\t{F81414}%d"; new string[sizeof(fmt_str)-4+4+20+1]; SPD(playerid, DLG_ID_VEH_BUY, DSM, !"{00C0FF}Покупка транспорта", string, !"{00C0FF}Да", !"{00C0FF}Нет"); } else { if(veh[vehicleid][v_ownerid] != playerid) } } return true; }
Последний раз редактировалось SteveStage; 10.12.2019 в 18:56.
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)